@curless/agentbank-merchant-mcp 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  // GENERATED by apps/api/mcp-ui (`npm run build`). Do not edit by hand.
2
2
  // Same merchant-kit MCP App card, embedded into the standalone merchant stdio
3
3
  // MCP so it serves the identical widget. Regenerate after changing the card UI.
4
- export const MERCHANT_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIFRoZW1lIG9mZiB0aGUgaG9zdCdzIG93biBkZXNpZ24gdG9rZW5zICh0aGUgU0RLIGluamVjdHMgdGhlbSkgc28gdGhlCiAgICAgICAgIGNhcmQgc2l0cyBuYXRpdmVseSBpbnNpZGUgQ2xhdWRlIOKAlCBsaWdodC9kYXJrLCBmb250cywgcmFkaWkgYWxsIG1hdGNoLgogICAgICAgICBGYWxsYmFja3Mga2VlcCBpdCB0YXN0ZWZ1bCBhbnl3aGVyZS4gKi8KICAgICAgOnJvb3QgewogICAgICAgIC0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgI2ZmZmZmZik7CiAgICAgICAgLS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgI2Y3ZjdmOCk7CiAgICAgICAgLS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMTgxODFiKTsKICAgICAgICAtLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNzE3MTdhKTsKICAgICAgICAtLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCAjYTFhMWFhKTsKICAgICAgICAtLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCAjZThlOGViKTsKICAgICAgICAtLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgIzE1ODAzZCk7CiAgICAgICAgLS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsICNmMGZkZjQpOwogICAgICAgIC0tcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnLCAxNHB4KTsKICAgICAgICAtLXJhZGl1cy1zbTogdmFyKC0tYm9yZGVyLXJhZGl1cy1zbSwgN3B4KTsKICAgICAgICAtLWZvbnQ6IHZhcigKICAgICAgICAgIC0tZm9udC1zYW5zLAogICAgICAgICAgc3lzdGVtLXVpLAogICAgICAgICAgLWFwcGxlLXN5c3RlbSwKICAgICAgICAgICdTZWdvZSBVSScsCiAgICAgICAgICBSb2JvdG8sCiAgICAgICAgICBzYW5zLXNlcmlmCiAgICAgICAgKTsKICAgICAgICAtLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAnU0YgTW9ubycsIE1lbmxvLCBtb25vc3BhY2UpOwogICAgICB9CiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KICAgICAgYm9keSB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250KTsKICAgICAgICBjb2xvcjogdmFyKC0tZmcpOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICB9CiAgICAgIC5jYXJkIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMpOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTsKICAgICAgICBwYWRkaW5nOiAyMHB4IDIycHg7CiAgICAgICAgbWF4LXdpZHRoOiA1NjBweDsKICAgICAgfQogICAgICAuaGVhZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxOHB4OwogICAgICB9CiAgICAgIC5oZWFkIC5sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgICAgLmhlYWQgLm1lcmNoYW50IHsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgfQogICAgICAuaGVhZCAubG9nbyB7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLnBpbGwgewogICAgICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICB9CiAgICAgIC5waWxsLnNwYWNlciB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAvKiBCYWxhbmNlIOKAlCBvbmUgZWxlZ2FudCByb3cgcGVyIGN1cnJlbmN5LCBzZXR0bGVkIGVtcGhhc2l6ZWQgKi8KICAgICAgLmJhbCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTRweDsKICAgICAgfQogICAgICAuYmFsLXJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDRweCAwOwogICAgICB9CiAgICAgIC5iYWwtcm93IC5jY3kgewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGdyaWQtcm93OiBzcGFuIDI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CiAgICAgIC5iYWwtcm93IC5zZXR0bGVkIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICBmb250LXdlaWdodDogNjUwOwogICAgICAgIGNvbG9yOiB2YXIoLS1nb29kKTsKICAgICAgfQogICAgICAuYmFsLXJvdyAuc2V0dGxlZCAudW5pdCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4OwogICAgICB9CiAgICAgIC5iYWwtcm93IC5zdWIgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgfQogICAgICAuYmFsLXJvdyAuc3ViIGIgewogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQoKICAgICAgLyogT3JkZXJzIOKAlCBxdWlldCBsaXN0LCBtb25vIGlkcyArIHRhYnVsYXIgYW1vdW50cyAqLwogICAgICAub3JkZXJzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KICAgICAgLm9yZGVyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87CiAgICAgICAgZ2FwOiAycHggMTJweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDA7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5vcmRlcjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICBwYWRkaW5nLXRvcDogMnB4OwogICAgICB9CiAgICAgIC5vcmRlciAubmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1NTA7CiAgICAgIH0KICAgICAgLm9yZGVyIC5tZXRhIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgIH0KICAgICAgLm9yZGVyIC5hbXQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgICAgLm9yZGVyIC5zdGF0dXMgewogICAgICAgIGp1c3RpZnktc2VsZjogZW5kOwogICAgICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgICAgICBwYWRkaW5nOiAxcHggN3B4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgfQogICAgICAub3JkZXIgLnN0YXR1cy5pcy1zZXR0bGVkLAogICAgICAub3JkZXIgLnN0YXR1cy5pcy1yZWNvbmNpbGVkLAogICAgICAub3JkZXIgLnN0YXR1cy5pcy1jb21wbGV0ZWQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvb2QtYmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1nb29kKTsKICAgICAgfQoKICAgICAgLyogT3JkZXJzIHBhZ2VyIOKAlCBxdWlldCBwcmV2L25leHQgKyBwYWdlIGluZGljYXRvciAqLwogICAgICAucGFnZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIG1hcmdpbi10b3A6IDE0cHg7CiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5wYWdlciBidXR0b24gewogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250KTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgICAgICBwYWRkaW5nOiA1cHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgLnBhZ2VyIGJ1dHRvbjpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC40OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQogICAgICAucGFnZXIgLnBhZ2VpbmZvIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICB9CgogICAgICAuZW1wdHkgewogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHBhZGRpbmc6IDZweCAwOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luPihmdW5jdGlvbigpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYobiYmbi5zdXBwb3J0cyYmbi5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKXJldHVybjtmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpbyhlKTtuZXcgTXV0YXRpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IGkgb2YgZSlpZihpLnR5cGU9PT0iY2hpbGRMaXN0Iilmb3IoY29uc3QgYSBvZiBpLmFkZGVkTm9kZXMpYS50YWdOYW1lPT09IkxJTksiJiZhLnJlbD09PSJtb2R1bGVwcmVsb2FkIiYmbyhhKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gcihlKXtjb25zdCBpPXt9O3JldHVybiBlLmludGVncml0eSYmKGkuaW50ZWdyaXR5PWUuaW50ZWdyaXR5KSxlLnJlZmVycmVyUG9saWN5JiYoaS5yZWZlcnJlclBvbGljeT1lLnJlZmVycmVyUG9saWN5KSxlLmNyb3NzT3JpZ2luPT09InVzZS1jcmVkZW50aWFscyI/aS5jcmVkZW50aWFscz0iaW5jbHVkZSI6ZS5jcm9zc09yaWdpbj09PSJhbm9ueW1vdXMiP2kuY3JlZGVudGlhbHM9Im9taXQiOmkuY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixpfWZ1bmN0aW9uIG8oZSl7aWYoZS5lcClyZXR1cm47ZS5lcD0hMDtjb25zdCBpPXIoZSk7ZmV0Y2goZS5ocmVmLGkpfX0pKCk7Y29uc3QgcG09Im1vZHVsZXByZWxvYWQiLGZtPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBVUkwodCxuKS5ocmVmfSxXYT17fSxnbT1mdW5jdGlvbihuLHIsbyl7bGV0IGU9UHJvbWlzZS5yZXNvbHZlKCk7aWYociYmci5sZW5ndGg+MCl7bGV0IGE9ZnVuY3Rpb24obCl7cmV0dXJuIFByb21pc2UuYWxsKGwubWFwKGc9PlByb21pc2UucmVzb2x2ZShnKS50aGVuKHY9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOnZ9KSx2PT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjp2fSkpKSl9O2NvbnN0IHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLHU9Yz8ubm9uY2V8fGM/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtlPWEoci5tYXAobD0+e2lmKGw9Zm0obCxvKSxsIGluIFdhKXJldHVybjtXYVtsXT0hMDtjb25zdCBnPWwuZW5kc1dpdGgoIi5jc3MiKSx2PWc/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgcT1zLmxlbmd0aC0xO3E+PTA7cS0tKXtjb25zdCBSPXNbcV07aWYoUi5ocmVmPT09bCYmKCFnfHxSLnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke2x9Il0ke3Z9YCkpcmV0dXJuO2NvbnN0IHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKHkucmVsPWc/InN0eWxlc2hlZXQiOnBtLGd8fCh5LmFzPSJzY3JpcHQiKSx5LmNyb3NzT3JpZ2luPSIiLHkuaHJlZj1sLHUmJnkuc2V0QXR0cmlidXRlKCJub25jZSIsdSksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh5KSxnKXJldHVybiBuZXcgUHJvbWlzZSgocSxSKT0+e3kuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscSkseS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PlIobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7bH1gKSkpfSl9KSl9ZnVuY3Rpb24gaShhKXtjb25zdCBzPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYocy5wYXlsb2FkPWEsd2luZG93LmRpc3BhdGNoRXZlbnQocyksIXMuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBhfXJldHVybiBlLnRoZW4oYT0+e2Zvcihjb25zdCBzIG9mIGF8fFtdKXMuc3RhdHVzPT09InJlamVjdGVkIiYmaShzLnJlYXNvbik7cmV0dXJuIG4oKS5jYXRjaChpKX0pfTt2YXIgQmE7Y29uc3QgWHI9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pO2Z1bmN0aW9uIGQodCxuLHIpe2Z1bmN0aW9uIG8ocyxjKXtpZihzLl96b2R8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJfem9kIix7dmFsdWU6e2RlZjpjLGNvbnN0cjphLHRyYWl0czpuZXcgU2V0fSxlbnVtZXJhYmxlOiExfSkscy5fem9kLnRyYWl0cy5oYXModCkpcmV0dXJuO3MuX3pvZC50cmFpdHMuYWRkKHQpLG4ocyxjKTtjb25zdCB1PWEucHJvdG90eXBlLGw9T2JqZWN0LmtleXModSk7Zm9yKGxldCBnPTA7ZzxsLmxlbmd0aDtnKyspe2NvbnN0IHY9bFtnXTt2IGluIHN8fChzW3ZdPXVbdl0uYmluZChzKSl9fWNvbnN0IGU9cj8uUGFyZW50Pz9PYmplY3Q7Y2xhc3MgaSBleHRlbmRzIGV7fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJuYW1lIix7dmFsdWU6dH0pO2Z1bmN0aW9uIGEocyl7dmFyIGM7Y29uc3QgdT1yPy5QYXJlbnQ/bmV3IGk6dGhpcztvKHUscyksKGM9dS5fem9kKS5kZWZlcnJlZD8/KGMuZGVmZXJyZWQ9W10pO2Zvcihjb25zdCBsIG9mIHUuX3pvZC5kZWZlcnJlZClsKCk7cmV0dXJuIHV9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJpbml0Iix7dmFsdWU6b30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6cz0+cj8uUGFyZW50JiZzIGluc3RhbmNlb2Ygci5QYXJlbnQ/ITA6cz8uX3pvZD8udHJhaXRzPy5oYXModCl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwibmFtZSIse3ZhbHVlOnR9KSxhfWNvbnN0IFlyPVN5bWJvbCgiem9kX2JyYW5kIik7Y2xhc3MgeGUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJFbmNvdW50ZXJlZCBQcm9taXNlIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZS4gVXNlIC5wYXJzZUFzeW5jKCkgaW5zdGVhZC4iKX19Y2xhc3MgRG4gZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihuKXtzdXBlcihgRW5jb3VudGVyZWQgdW5pZGlyZWN0aW9uYWwgdHJhbnNmb3JtIGR1cmluZyBlbmNvZGU6ICR7bn1gKSx0aGlzLm5hbWU9IlpvZEVuY29kZUVycm9yIn19KEJhPWdsb2JhbFRoaXMpLl9fem9kX2dsb2JhbENvbmZpZz8/KEJhLl9fem9kX2dsb2JhbENvbmZpZz17fSk7Y29uc3QgZnQ9Z2xvYmFsVGhpcy5fX3pvZF9nbG9iYWxDb25maWc7ZnVuY3Rpb24gSCh0KXtyZXR1cm4gdCYmT2JqZWN0LmFzc2lnbihmdCx0KSxmdH1mdW5jdGlvbiB2bSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBobSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBfbSh0KXt9ZnVuY3Rpb24gJG0odCl7dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIGluIGV4aGF1c3RpdmUgY2hlY2siKX1mdW5jdGlvbiBibSh0KXt9ZnVuY3Rpb24gUXIodCl7Y29uc3Qgbj1PYmplY3QudmFsdWVzKHQpLmZpbHRlcihvPT50eXBlb2Ygbz09Im51bWJlciIpO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5maWx0ZXIoKFtvLGVdKT0+bi5pbmRleE9mKCtvKT09PS0xKS5tYXAoKFtvLGVdKT0+ZSl9ZnVuY3Rpb24gJCh0LG49InwiKXtyZXR1cm4gdC5tYXAocj0+ayhyKSkuam9pbihuKX1mdW5jdGlvbiB6bih0LG4pe3JldHVybiB0eXBlb2Ygbj09ImJpZ2ludCI/bi50b1N0cmluZygpOm59ZnVuY3Rpb24gJHQodCl7cmV0dXJue2dldCB2YWx1ZSgpe3tjb25zdCBuPXQoKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInZhbHVlIix7dmFsdWU6bn0pLG59fX19ZnVuY3Rpb24gRGUodCl7cmV0dXJuIHQ9PW51bGx9ZnVuY3Rpb24gTm4odCl7Y29uc3Qgbj10LnN0YXJ0c1dpdGgoIl4iKT8xOjAscj10LmVuZHNXaXRoKCIkIik/dC5sZW5ndGgtMTp0Lmxlbmd0aDtyZXR1cm4gdC5zbGljZShuLHIpfWZ1bmN0aW9uIHpzKHQsbil7Y29uc3Qgcj10L24sbz1NYXRoLnJvdW5kKHIpLGU9TnVtYmVyLkVQU0lMT04qTWF0aC5tYXgoTWF0aC5hYnMociksMSk7cmV0dXJuIE1hdGguYWJzKHItbyk8ZT8wOnItb31jb25zdCBHYT1TeW1ib2woImV2YWx1YXRpbmciKTtmdW5jdGlvbiBUKHQsbixyKXtsZXQgbztPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtnZXQoKXtpZihvIT09R2EpcmV0dXJuIG89PT12b2lkIDAmJihvPUdhLG89cigpKSxvfSxzZXQoZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6ZX0pfSxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiB5bSh0KXtyZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpfWZ1bmN0aW9uIGtlKHQsbixyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTpyLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gbWUoLi4udCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBvZiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpO09iamVjdC5hc3NpZ24obixvKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sbil9ZnVuY3Rpb24ga20odCl7cmV0dXJuIG1lKHQuX3pvZC5kZWYpfWZ1bmN0aW9uIFNtKHQsbil7cmV0dXJuIG4/bi5yZWR1Y2UoKHIsbyk9PnI/LltvXSx0KTp0fWZ1bmN0aW9uIHdtKHQpe2NvbnN0IG49T2JqZWN0LmtleXModCkscj1uLm1hcChvPT50W29dKTtyZXR1cm4gUHJvbWlzZS5hbGwocikudGhlbihvPT57Y29uc3QgZT17fTtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyllW25baV1dPW9baV07cmV0dXJuIGV9KX1mdW5jdGlvbiBJbSh0PTEwKXtjb25zdCBuPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7bGV0IHI9IiI7Zm9yKGxldCBvPTA7bzx0O28rKylyKz1uW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpuLmxlbmd0aCldO3JldHVybiByfWZ1bmN0aW9uIFZyKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1mdW5jdGlvbiB4cyh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnRyaW0oKS5yZXBsYWNlKC9bXlx3XHMtXS9nLCIiKS5yZXBsYWNlKC9bXHNfLV0rL2csIi0iKS5yZXBsYWNlKC9eLSt8LSskL2csIiIpfWNvbnN0IGVpPSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZTooLi4udCk9Pnt9O2Z1bmN0aW9uIEFlKHQpe3JldHVybiB0eXBlb2YgdD09Im9iamVjdCImJnQhPT1udWxsJiYhQXJyYXkuaXNBcnJheSh0KX1jb25zdCBUcz0kdCgoKT0+e2lmKGZ0LmppdGxlc3N8fHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3I/LnVzZXJBZ2VudD8uaW5jbHVkZXMoIkNsb3VkZmxhcmUiKSlyZXR1cm4hMTt0cnl7Y29uc3QgdD1GdW5jdGlvbjtyZXR1cm4gbmV3IHQoIiIpLCEwfWNhdGNoe3JldHVybiExfX0pO2Z1bmN0aW9uIFRlKHQpe2lmKEFlKHQpPT09ITEpcmV0dXJuITE7Y29uc3Qgbj10LmNvbnN0cnVjdG9yO2lmKG49PT12b2lkIDB8fHR5cGVvZiBuIT0iZnVuY3Rpb24iKXJldHVybiEwO2NvbnN0IHI9bi5wcm90b3R5cGU7cmV0dXJuIShBZShyKT09PSExfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwiaXNQcm90b3R5cGVPZiIpPT09ITEpfWZ1bmN0aW9uIEVuKHQpe3JldHVybiBUZSh0KT97Li4udH06QXJyYXkuaXNBcnJheSh0KT9bLi4udF06dCBpbnN0YW5jZW9mIE1hcD9uZXcgTWFwKHQpOnQgaW5zdGFuY2VvZiBTZXQ/bmV3IFNldCh0KTp0fWZ1bmN0aW9uIHptKHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmbisrO3JldHVybiBufWNvbnN0IHhtPXQ9Pntjb25zdCBuPXR5cGVvZiB0O3N3aXRjaChuKXtjYXNlInVuZGVmaW5lZCI6cmV0dXJuInVuZGVmaW5lZCI7Y2FzZSJzdHJpbmciOnJldHVybiJzdHJpbmciO2Nhc2UibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzTmFOKHQpPyJuYW4iOiJudW1iZXIiO2Nhc2UiYm9vbGVhbiI6cmV0dXJuImJvb2xlYW4iO2Nhc2UiZnVuY3Rpb24iOnJldHVybiJmdW5jdGlvbiI7Y2FzZSJiaWdpbnQiOnJldHVybiJiaWdpbnQiO2Nhc2Uic3ltYm9sIjpyZXR1cm4ic3ltYm9sIjtjYXNlIm9iamVjdCI6cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImFycmF5Ijp0PT09bnVsbD8ibnVsbCI6dC50aGVuJiZ0eXBlb2YgdC50aGVuPT0iZnVuY3Rpb24iJiZ0LmNhdGNoJiZ0eXBlb2YgdC5jYXRjaD09ImZ1bmN0aW9uIj8icHJvbWlzZSI6dHlwZW9mIE1hcDwidSImJnQgaW5zdGFuY2VvZiBNYXA/Im1hcCI6dHlwZW9mIFNldDwidSImJnQgaW5zdGFuY2VvZiBTZXQ/InNldCI6dHlwZW9mIERhdGU8InUiJiZ0IGluc3RhbmNlb2YgRGF0ZT8iZGF0ZSI6dHlwZW9mIEZpbGU8InUiJiZ0IGluc3RhbmNlb2YgRmlsZT8iZmlsZSI6Im9iamVjdCI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGF0YSB0eXBlOiAke259YCl9fSx4bj1uZXcgU2V0KFsic3RyaW5nIiwibnVtYmVyIiwic3ltYm9sIl0pLGpzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJiaWdpbnQiLCJib29sZWFuIiwic3ltYm9sIiwidW5kZWZpbmVkIl0pO2Z1bmN0aW9uIHZlKHQpe3JldHVybiB0LnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIil9ZnVuY3Rpb24gb2UodCxuLHIpe2NvbnN0IG89bmV3IHQuX3pvZC5jb25zdHIobj8/dC5fem9kLmRlZik7cmV0dXJuKCFufHxyPy5wYXJlbnQpJiYoby5fem9kLnBhcmVudD10KSxvfWZ1bmN0aW9uIGgodCl7Y29uc3Qgbj10O2lmKCFuKXJldHVybnt9O2lmKHR5cGVvZiBuPT0ic3RyaW5nIilyZXR1cm57ZXJyb3I6KCk9Pm59O2lmKG4/Lm1lc3NhZ2UhPT12b2lkIDApe2lmKG4/LmVycm9yIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBgbWVzc2FnZWAgYW5kIGBlcnJvcmAgcGFyYW1zIik7bi5lcnJvcj1uLm1lc3NhZ2V9cmV0dXJuIGRlbGV0ZSBuLm1lc3NhZ2UsdHlwZW9mIG4uZXJyb3I9PSJzdHJpbmciP3suLi5uLGVycm9yOigpPT5uLmVycm9yfTpufWZ1bmN0aW9uIFRtKHQpe2xldCBuO3JldHVybiBuZXcgUHJveHkoe30se2dldChyLG8sZSl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5nZXQobixvLGUpfSxzZXQocixvLGUsaSl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5zZXQobixvLGUsaSl9LGhhcyhyLG8pe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuaGFzKG4sbyl9LGRlbGV0ZVByb3BlcnR5KHIsbyl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShuLG8pfSxvd25LZXlzKHIpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3Qub3duS2V5cyhuKX0sZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsbyl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKX0sZGVmaW5lUHJvcGVydHkocixvLGUpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZGVmaW5lUHJvcGVydHkobixvLGUpfX0pfWZ1bmN0aW9uIGsodCl7cmV0dXJuIHR5cGVvZiB0PT0iYmlnaW50Ij90LnRvU3RyaW5nKCkrIm4iOnR5cGVvZiB0PT0ic3RyaW5nIj9gIiR7dH0iYDpgJHt0fWB9ZnVuY3Rpb24gVXModCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcihuPT50W25dLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiJiZ0W25dLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIil9Y29uc3QgUHM9e3NhZmVpbnQ6W051bWJlci5NSU5fU0FGRV9JTlRFR0VSLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXSxpbnQzMjpbLTIxNDc0ODM2NDgsMjE0NzQ4MzY0N10sdWludDMyOlswLDQyOTQ5NjcyOTVdLGZsb2F0MzI6Wy0zNDAyODIzNDY2Mzg1Mjg4NmUyMiwzNDAyODIzNDY2Mzg1Mjg4NmUyMl0sZmxvYXQ2NDpbLU51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1BWF9WQUxVRV19LE9zPXtpbnQ2NDpbQmlnSW50KCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpLEJpZ0ludCgiOTIyMzM3MjAzNjg1NDc3NTgwNyIpXSx1aW50NjQ6W0JpZ0ludCgwKSxCaWdJbnQoIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IildfTtmdW5jdGlvbiBEcyh0LG4pe2NvbnN0IHI9dC5fem9kLmRlZixvPXIuY2hlY2tzO2lmKG8mJm8ubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIucGljaygpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBpPW1lKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGE9e307Zm9yKGNvbnN0IHMgaW4gbil7aWYoIShzIGluIHIuc2hhcGUpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7c30iYCk7bltzXSYmKGFbc109ci5zaGFwZVtzXSl9cmV0dXJuIGtlKHRoaXMsInNoYXBlIixhKSxhfSxjaGVja3M6W119KTtyZXR1cm4gb2UodCxpKX1mdW5jdGlvbiBOcyh0LG4pe2NvbnN0IHI9dC5fem9kLmRlZixvPXIuY2hlY2tzO2lmKG8mJm8ubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIub21pdCgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBpPW1lKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGE9ey4uLnQuX3pvZC5kZWYuc2hhcGV9O2Zvcihjb25zdCBzIGluIG4pe2lmKCEocyBpbiByLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3N9ImApO25bc10mJmRlbGV0ZSBhW3NdfXJldHVybiBrZSh0aGlzLCJzaGFwZSIsYSksYX0sY2hlY2tzOltdfSk7cmV0dXJuIG9lKHQsaSl9ZnVuY3Rpb24gRXModCxuKXtpZighVGUobikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IHRvIGV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCByPXQuX3pvZC5kZWYuY2hlY2tzO2lmKHImJnIubGVuZ3RoPjApe2NvbnN0IGk9dC5fem9kLmRlZi5zaGFwZTtmb3IoY29uc3QgYSBpbiBuKWlmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxhKSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBvdmVyd3JpdGUga2V5cyBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzLiBVc2UgYC5zYWZlRXh0ZW5kKClgIGluc3RlYWQuIil9Y29uc3QgZT1tZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBpPXsuLi50Ll96b2QuZGVmLnNoYXBlLC4uLm59O3JldHVybiBrZSh0aGlzLCJzaGFwZSIsaSksaX19KTtyZXR1cm4gb2UodCxlKX1mdW5jdGlvbiBacyh0LG4pe2lmKCFUZShuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCByPW1lKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG89ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubn07cmV0dXJuIGtlKHRoaXMsInNoYXBlIixvKSxvfX0pO3JldHVybiBvZSh0LHIpfWZ1bmN0aW9uIFJzKHQsbil7aWYodC5fem9kLmRlZi5jaGVja3M/Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIi5tZXJnZSgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSAuc2FmZUV4dGVuZCgpIGluc3RlYWQuIik7Y29uc3Qgcj1tZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBvPXsuLi50Ll96b2QuZGVmLnNoYXBlLC4uLm4uX3pvZC5kZWYuc2hhcGV9O3JldHVybiBrZSh0aGlzLCJzaGFwZSIsbyksb30sZ2V0IGNhdGNoYWxsKCl7cmV0dXJuIG4uX3pvZC5kZWYuY2F0Y2hhbGx9LGNoZWNrczpuLl96b2QuZGVmLmNoZWNrcz8/W119KTtyZXR1cm4gb2UodCxyKX1mdW5jdGlvbiBDcyh0LG4scil7Y29uc3QgZT1uLl96b2QuZGVmLmNoZWNrcztpZihlJiZlLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3QgYT1tZShuLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBzPW4uX3pvZC5kZWYuc2hhcGUsYz17Li4uc307aWYocilmb3IoY29uc3QgdSBpbiByKXtpZighKHUgaW4gcykpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHt1fSJgKTtyW3VdJiYoY1t1XT10P25ldyB0KHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnNbdV19KTpzW3VdKX1lbHNlIGZvcihjb25zdCB1IGluIHMpY1t1XT10P25ldyB0KHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnNbdV19KTpzW3VdO3JldHVybiBrZSh0aGlzLCJzaGFwZSIsYyksY30sY2hlY2tzOltdfSk7cmV0dXJuIG9lKG4sYSl9ZnVuY3Rpb24gQXModCxuLHIpe2NvbnN0IG89bWUobi5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgZT1uLl96b2QuZGVmLnNoYXBlLGk9ey4uLmV9O2lmKHIpZm9yKGNvbnN0IGEgaW4gcil7aWYoIShhIGluIGkpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7YX0iYCk7clthXSYmKGlbYV09bmV3IHQoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6ZVthXX0pKX1lbHNlIGZvcihjb25zdCBhIGluIGUpaVthXT1uZXcgdCh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTplW2FdfSk7cmV0dXJuIGtlKHRoaXMsInNoYXBlIixpKSxpfX0pO3JldHVybiBvZShuLG8pfWZ1bmN0aW9uIHplKHQsbj0wKXtpZih0LmFib3J0ZWQ9PT0hMClyZXR1cm4hMDtmb3IobGV0IHI9bjtyPHQuaXNzdWVzLmxlbmd0aDtyKyspaWYodC5pc3N1ZXNbcl0/LmNvbnRpbnVlIT09ITApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gTHModCxuPTApe2lmKHQuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgcj1uO3I8dC5pc3N1ZXMubGVuZ3RoO3IrKylpZih0Lmlzc3Vlc1tyXT8uY29udGludWU9PT0hMSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBjZSh0LG4pe3JldHVybiBuLm1hcChyPT57dmFyIG87cmV0dXJuKG89cikucGF0aD8/KG8ucGF0aD1bXSksci5wYXRoLnVuc2hpZnQodCkscn0pfWZ1bmN0aW9uIG10KHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyI/dDp0Py5tZXNzYWdlfWZ1bmN0aW9uIGllKHQsbixyKXtjb25zdCBvPXQubWVzc2FnZT90Lm1lc3NhZ2U6bXQodC5pbnN0Py5fem9kLmRlZj8uZXJyb3I/Lih0KSk/P210KG4/LmVycm9yPy4odCkpPz9tdChyLmN1c3RvbUVycm9yPy4odCkpPz9tdChyLmxvY2FsZUVycm9yPy4odCkpPz8iSW52YWxpZCBpbnB1dCIse2luc3Q6ZSxjb250aW51ZTppLGlucHV0OmEsLi4uc309dDtyZXR1cm4gcy5wYXRoPz8ocy5wYXRoPVtdKSxzLm1lc3NhZ2U9byxuPy5yZXBvcnRJbnB1dCYmKHMuaW5wdXQ9YSksc31mdW5jdGlvbiBabih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0IGluc3RhbmNlb2YgTWFwPyJtYXAiOnQgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9ZnVuY3Rpb24gUm4odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImFycmF5Ijp0eXBlb2YgdD09InN0cmluZyI/InN0cmluZyI6InVua25vd24ifWZ1bmN0aW9uIFModCl7Y29uc3Qgbj10eXBlb2YgdDtzd2l0Y2gobil7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4odCk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZih0PT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4iYXJyYXkiO2NvbnN0IHI9dDtpZihyJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YocikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gciYmci5jb25zdHJ1Y3RvcilyZXR1cm4gci5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gbn1mdW5jdGlvbiBMZSguLi50KXtjb25zdFtuLHIsb109dDtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP3ttZXNzYWdlOm4sY29kZToiY3VzdG9tIixpbnB1dDpyLGluc3Q6b306ey4uLm59fWZ1bmN0aW9uIGptKHQpe3JldHVybiBPYmplY3QuZW50cmllcyh0KS5maWx0ZXIoKFtuLHJdKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludChuLDEwKSkpLm1hcChuPT5uWzFdKX1mdW5jdGlvbiBNcyh0KXtjb25zdCBuPWF0b2IodCkscj1uZXcgVWludDhBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspcltvXT1uLmNoYXJDb2RlQXQobyk7cmV0dXJuIHJ9ZnVuY3Rpb24gcXModCl7bGV0IG49IiI7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W3JdKTtyZXR1cm4gYnRvYShuKX1mdW5jdGlvbiBVbSh0KXtjb25zdCBuPXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikscj0iPSIucmVwZWF0KCg0LW4ubGVuZ3RoJTQpJTQpO3JldHVybiBNcyhuK3IpfWZ1bmN0aW9uIFBtKHQpe3JldHVybiBxcyh0KS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gT20odCl7Y29uc3Qgbj10LnJlcGxhY2UoL14weC8sIiIpO2lmKG4ubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkobi5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKz0yKXJbby8yXT1OdW1iZXIucGFyc2VJbnQobi5zbGljZShvLG8rMiksMTYpO3JldHVybiByfWZ1bmN0aW9uIERtKHQpe3JldHVybiBBcnJheS5mcm9tKHQpLm1hcChuPT5uLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIE5te2NvbnN0cnVjdG9yKC4uLm4pe319Y29uc3QgdGk9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLEJJR0lOVF9GT1JNQVRfUkFOR0VTOk9zLENsYXNzOk5tLE5VTUJFUl9GT1JNQVRfUkFOR0VTOlBzLGFib3J0ZWQ6emUsYWxsb3dzRXZhbDpUcyxhc3NlcnQ6Ym0sYXNzZXJ0RXF1YWw6dm0sYXNzZXJ0SXM6X20sYXNzZXJ0TmV2ZXI6JG0sYXNzZXJ0Tm90RXF1YWw6aG0sYXNzaWduUHJvcDprZSxiYXNlNjRUb1VpbnQ4QXJyYXk6TXMsYmFzZTY0dXJsVG9VaW50OEFycmF5OlVtLGNhY2hlZDokdCxjYXB0dXJlU3RhY2tUcmFjZTplaSxjbGVhbkVudW06am0sY2xlYW5SZWdleDpObixjbG9uZTpvZSxjbG9uZURlZjprbSxjcmVhdGVUcmFuc3BhcmVudFByb3h5OlRtLGRlZmluZUxhenk6VCxlc2M6VnIsZXNjYXBlUmVnZXg6dmUsZXhwbGljaXRseUFib3J0ZWQ6THMsZXh0ZW5kOkVzLGZpbmFsaXplSXNzdWU6aWUsZmxvYXRTYWZlUmVtYWluZGVyOnpzLGdldEVsZW1lbnRBdFBhdGg6U20sZ2V0RW51bVZhbHVlczpRcixnZXRMZW5ndGhhYmxlT3JpZ2luOlJuLGdldFBhcnNlZFR5cGU6eG0sZ2V0U2l6YWJsZU9yaWdpbjpabixoZXhUb1VpbnQ4QXJyYXk6T20saXNPYmplY3Q6QWUsaXNQbGFpbk9iamVjdDpUZSxpc3N1ZTpMZSxqb2luVmFsdWVzOiQsanNvblN0cmluZ2lmeVJlcGxhY2VyOnpuLG1lcmdlOlJzLG1lcmdlRGVmczptZSxub3JtYWxpemVQYXJhbXM6aCxudWxsaXNoOkRlLG51bUtleXM6em0sb2JqZWN0Q2xvbmU6eW0sb21pdDpOcyxvcHRpb25hbEtleXM6VXMscGFyc2VkVHlwZTpTLHBhcnRpYWw6Q3MscGljazpEcyxwcmVmaXhJc3N1ZXM6Y2UscHJpbWl0aXZlVHlwZXM6anMscHJvbWlzZUFsbE9iamVjdDp3bSxwcm9wZXJ0eUtleVR5cGVzOnhuLHJhbmRvbVN0cmluZzpJbSxyZXF1aXJlZDpBcyxzYWZlRXh0ZW5kOlpzLHNoYWxsb3dDbG9uZTpFbixzbHVnaWZ5OnhzLHN0cmluZ2lmeVByaW1pdGl2ZTprLHVpbnQ4QXJyYXlUb0Jhc2U2NDpxcyx1aW50OEFycmF5VG9CYXNlNjR1cmw6UG0sdWludDhBcnJheVRvSGV4OkRtLHVud3JhcE1lc3NhZ2U6bXR9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksRnM9KHQsbik9Pnt0Lm5hbWU9IiRab2RFcnJvciIsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl96b2QiLHt2YWx1ZTp0Ll96b2QsZW51bWVyYWJsZTohMX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJpc3N1ZXMiLHt2YWx1ZTpuLGVudW1lcmFibGU6ITF9KSx0Lm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkobix6biwyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidG9TdHJpbmciLHt2YWx1ZTooKT0+dC5tZXNzYWdlLGVudW1lcmFibGU6ITF9KX0sbmk9ZCgiJFpvZEVycm9yIixGcyksYWU9ZCgiJFpvZEVycm9yIixGcyx7UGFyZW50OkVycm9yfSk7ZnVuY3Rpb24gQ24odCxuPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17fSxvPVtdO2Zvcihjb25zdCBlIG9mIHQuaXNzdWVzKWUucGF0aC5sZW5ndGg+MD8ocltlLnBhdGhbMF1dPXJbZS5wYXRoWzBdXXx8W10scltlLnBhdGhbMF1dLnB1c2gobihlKSkpOm8ucHVzaChuKGUpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOnJ9fWZ1bmN0aW9uIEFuKHQsbj1yPT5yLm1lc3NhZ2Upe2NvbnN0IHI9e19lcnJvcnM6W119LG89KGUsaT1bXSk9Pntmb3IoY29uc3QgYSBvZiBlLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAocz0+byh7aXNzdWVzOnN9LFsuLi5pLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uaSwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLmksLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCBzPVsuLi5pLC4uLmEucGF0aF07aWYocy5sZW5ndGg9PT0wKXIuX2Vycm9ycy5wdXNoKG4oYSkpO2Vsc2V7bGV0IGM9cix1PTA7Zm9yKDt1PHMubGVuZ3RoOyl7Y29uc3QgbD1zW3VdO3U9PT1zLmxlbmd0aC0xPyhjW2xdPWNbbF18fHtfZXJyb3JzOltdfSxjW2xdLl9lcnJvcnMucHVzaChuKGEpKSk6Y1tsXT1jW2xdfHx7X2Vycm9yczpbXX0sYz1jW2xdLHUrK319fX07cmV0dXJuIG8odCkscn1mdW5jdGlvbiByaSh0LG49cj0+ci5tZXNzYWdlKXtjb25zdCByPXtlcnJvcnM6W119LG89KGUsaT1bXSk9Pnt2YXIgYSxzO2Zvcihjb25zdCBjIG9mIGUuaXNzdWVzKWlmKGMuY29kZT09PSJpbnZhbGlkX3VuaW9uIiYmYy5lcnJvcnMubGVuZ3RoKWMuZXJyb3JzLm1hcCh1PT5vKHtpc3N1ZXM6dX0sWy4uLmksLi4uYy5wYXRoXSkpO2Vsc2UgaWYoYy5jb2RlPT09ImludmFsaWRfa2V5IilvKHtpc3N1ZXM6Yy5pc3N1ZXN9LFsuLi5pLC4uLmMucGF0aF0pO2Vsc2UgaWYoYy5jb2RlPT09ImludmFsaWRfZWxlbWVudCIpbyh7aXNzdWVzOmMuaXNzdWVzfSxbLi4uaSwuLi5jLnBhdGhdKTtlbHNle2NvbnN0IHU9Wy4uLmksLi4uYy5wYXRoXTtpZih1Lmxlbmd0aD09PTApe3IuZXJyb3JzLnB1c2gobihjKSk7Y29udGludWV9bGV0IGw9cixnPTA7Zm9yKDtnPHUubGVuZ3RoOyl7Y29uc3Qgdj11W2ddLF89Zz09PXUubGVuZ3RoLTE7dHlwZW9mIHY9PSJzdHJpbmciPyhsLnByb3BlcnRpZXM/PyhsLnByb3BlcnRpZXM9e30pLChhPWwucHJvcGVydGllcylbdl0/PyhhW3ZdPXtlcnJvcnM6W119KSxsPWwucHJvcGVydGllc1t2XSk6KGwuaXRlbXM/PyhsLml0ZW1zPVtdKSwocz1sLml0ZW1zKVt2XT8/KHNbdl09e2Vycm9yczpbXX0pLGw9bC5pdGVtc1t2XSksXyYmbC5lcnJvcnMucHVzaChuKGMpKSxnKyt9fX07cmV0dXJuIG8odCkscn1mdW5jdGlvbiBKcyh0KXtjb25zdCBuPVtdLHI9dC5tYXAobz0+dHlwZW9mIG89PSJvYmplY3QiP28ua2V5Om8pO2Zvcihjb25zdCBvIG9mIHIpdHlwZW9mIG89PSJudW1iZXIiP24ucHVzaChgWyR7b31dYCk6dHlwZW9mIG89PSJzeW1ib2wiP24ucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoU3RyaW5nKG8pKX1dYCk6L1teXHckXS8udGVzdChvKT9uLnB1c2goYFske0pTT04uc3RyaW5naWZ5KG8pfV1gKToobi5sZW5ndGgmJm4ucHVzaCgiLiIpLG4ucHVzaChvKSk7cmV0dXJuIG4uam9pbigiIil9ZnVuY3Rpb24gaWkodCl7Y29uc3Qgbj1bXSxyPVsuLi50Lmlzc3Vlc10uc29ydCgobyxlKT0+KG8ucGF0aD8/W10pLmxlbmd0aC0oZS5wYXRoPz9bXSkubGVuZ3RoKTtmb3IoY29uc3QgbyBvZiByKW4ucHVzaChg4pyWICR7by5tZXNzYWdlfWApLG8ucGF0aD8ubGVuZ3RoJiZuLnB1c2goYCAg4oaSIGF0ICR7SnMoby5wYXRoKX1gKTtyZXR1cm4gbi5qb2luKGAKYCl9Y29uc3QgYnQ9dD0+KG4scixvLGUpPT57Y29uc3QgaT1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LGE9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB4ZTtpZihhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHM9bmV3KGU/LkVycj8/dCkoYS5pc3N1ZXMubWFwKGM9PmllKGMsaSxIKCkpKSk7dGhyb3cgZWkocyxlPy5jYWxsZWUpLHN9cmV0dXJuIGEudmFsdWV9LEtyPWJ0KGFlKSx5dD10PT5hc3luYyhuLHIsbyxlKT0+e2NvbnN0IGk9bz97Li4ubyxhc3luYzohMH06e2FzeW5jOiEwfTtsZXQgYT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0saSk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UmJihhPWF3YWl0IGEpLGEuaXNzdWVzLmxlbmd0aCl7Y29uc3Qgcz1uZXcoZT8uRXJyPz90KShhLmlzc3Vlcy5tYXAoYz0+aWUoYyxpLEgoKSkpKTt0aHJvdyBlaShzLGU/LmNhbGxlZSksc31yZXR1cm4gYS52YWx1ZX0sV3I9eXQoYWUpLGt0PXQ9PihuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sYXN5bmM6ITF9Onthc3luYzohMX0saT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0sZSk7aWYoaSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IHhlO3JldHVybiBpLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3KHQ/P25pKShpLmlzc3Vlcy5tYXAoYT0+aWUoYSxlLEgoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTppLnZhbHVlfX0sb2k9a3QoYWUpLFN0PXQ9PmFzeW5jKG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxhc3luYzohMH06e2FzeW5jOiEwfTtsZXQgaT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0sZSk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlJiYoaT1hd2FpdCBpKSxpLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3IHQoaS5pc3N1ZXMubWFwKGE9PmllKGEsZSxIKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6aS52YWx1ZX19LEhzPVN0KGFlKSxhaT10PT4obixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBidCh0KShuLHIsZSl9LEVtPWFpKGFlKSxzaT10PT4obixyLG8pPT5idCh0KShuLHIsbyksWm09c2koYWUpLGNpPXQ9PmFzeW5jKG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4geXQodCkobixyLGUpfSxSbT1jaShhZSksdWk9dD0+YXN5bmMobixyLG8pPT55dCh0KShuLHIsbyksQ209dWkoYWUpLGxpPXQ9PihuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIGt0KHQpKG4scixlKX0sQW09bGkoYWUpLGRpPXQ9PihuLHIsbyk9Pmt0KHQpKG4scixvKSxMbT1kaShhZSksbWk9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBTdCh0KShuLHIsZSl9LE1tPW1pKGFlKSxwaT10PT5hc3luYyhuLHIsbyk9PlN0KHQpKG4scixvKSxxbT1waShhZSksVnM9L15bY0NdWzAtOWEtel17Nix9JC8sS3M9L15bMC05YS16XSskLyxXcz0vXlswLTlBLUhKS01OUC1UVi1aYS1oamttbnAtdHYtel17MjZ9JC8sQnM9L15bMC05YS12QS1WXXsyMH0kLyxHcz0vXltBLVphLXowLTldezI3fSQvLFhzPS9eW2EtekEtWjAtOV8tXXsyMX0kLyxZcz0vXlAoPzooXGQrVyl8KD8hLipXKSg/PVxkfFRcZCkoXGQrWSk/KFxkK00pPyhcZCtEKT8oVCg/PVxkKShcZCtIKT8oXGQrTSk/KFxkKyhbLixdXGQrKT9TKT8pPykkLyxGbT0vXlstK10/UCg/ISQpKD86KD86Wy0rXT9cZCtZKXwoPzpbLStdP1xkK1suLF1cZCtZJCkpPyg/Oig/OlstK10/XGQrTSl8KD86Wy0rXT9cZCtbLixdXGQrTSQpKT8oPzooPzpbLStdP1xkK1cpfCg/OlstK10/XGQrWy4sXVxkK1ckKSk/KD86KD86Wy0rXT9cZCtEKXwoPzpbLStdP1xkK1suLF1cZCtEJCkpPyg/OlQoPz1bXGQrLV0pKD86KD86Wy0rXT9cZCtIKXwoPzpbLStdP1xkK1suLF1cZCtIJCkpPyg/Oig/OlstK10/XGQrTSl8KD86Wy0rXT9cZCtbLixdXGQrTSQpKT8oPzpbLStdP1xkKyg/OlsuLF1cZCspP1MpPyk/PyQvLFFzPS9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSkkLyxNZT10PT50P25ldyBSZWdFeHAoYF4oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tJHt0fVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9KSRgKTovXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS04XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMHxmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYpJC8sSm09TWUoNCksSG09TWUoNiksVm09TWUoNyksZWM9L14oPyFcLikoPyEuKlwuXC4pKFtBLVphLXowLTlfJytcLVwuXSopW0EtWmEtejAtOV8rLV1AKFtBLVphLXowLTldW0EtWmEtejAtOVwtXSpcLikrW0EtWmEtel17Mix9JC8sS209L15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sV209L14oKFtePD4oKVxbXF1cXC4sOzpcc0AiXSsoXC5bXjw+KClcW1xdXFwuLDs6XHNAIl0rKSopfCgiLisiKSlAKChcW1swLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31dKXwoKFthLXpBLVpcLTAtOV0rXC4pK1thLXpBLVpdezIsfSkpJC8sdGM9L15bXlxzQCJdezEsNjR9QFteXHNAXXsxLDI1NX0kL3UsQm09dGMsR209L15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sWG09Il4oXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxwe0Vtb2ppX0NvbXBvbmVudH0pKyQiO2Z1bmN0aW9uIG5jKCl7cmV0dXJuIG5ldyBSZWdFeHAoWG0sInUiKX1jb25zdCByYz0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8saWM9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyxvYz10PT57Y29uc3Qgbj12ZSh0Pz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke259KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke259KXs1fVswLTlhLWZdezJ9JGApfSxhYz0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8sc2M9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18Ojp8KFswLTlhLWZBLUZdezEsNH0pPzo6KFswLTlhLWZBLUZdezEsNH06Pyl7MCw2fSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8sY2M9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8sZmk9L15bQS1aYS16MC05Xy1dKiQvLHVjPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLyxsYz0vXihbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT9cLikrW2EtekEtWl17Mix9JC8sZ2k9L15odHRwcz8kLyxkYz0vXlwrWzEtOV1cZHs2LDE0fSQvLG1jPSIoPzooPzpcXGRcXGRbMjQ2OF1bMDQ4XXxcXGRcXGRbMTM1NzldWzI2XXxcXGRcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXGR7NH0tKD86KD86MFsxMzU3OF18MVswMl0pLSg/OjBbMS05XXxbMTJdXFxkfDNbMDFdKXwoPzowWzQ2OV18MTEpLSg/OjBbMS05XXxbMTJdXFxkfDMwKXwoPzowMiktKD86MFsxLTldfDFcXGR8MlswLThdKSkpIixwYz1uZXcgUmVnRXhwKGBeJHttY30kYCk7ZnVuY3Rpb24gZmModCl7Y29uc3Qgbj0iKD86WzAxXVxcZHwyWzAtM10pOlswLTVdXFxkIjtyZXR1cm4gdHlwZW9mIHQucHJlY2lzaW9uPT0ibnVtYmVyIj90LnByZWNpc2lvbj09PS0xP2Ake259YDp0LnByZWNpc2lvbj09PTA/YCR7bn06WzAtNV1cXGRgOmAke259OlswLTVdXFxkXFwuXFxkeyR7dC5wcmVjaXNpb259fWA6YCR7bn0oPzo6WzAtNV1cXGQoPzpcXC5cXGQrKT8pP2B9ZnVuY3Rpb24gZ2ModCl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2ZjKHQpfSRgKX1mdW5jdGlvbiB2Yyh0KXtjb25zdCBuPWZjKHtwcmVjaXNpb246dC5wcmVjaXNpb259KSxyPVsiWiJdO3QubG9jYWwmJnIucHVzaCgiIiksdC5vZmZzZXQmJnIucHVzaCgiKFsrLV0oPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQpIik7Y29uc3Qgbz1gJHtufSg/OiR7ci5qb2luKCJ8Iil9KWA7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke21jfVQoPzoke299KSRgKX1jb25zdCBoYz10PT57Y29uc3Qgbj10P2BbXFxzXFxTXXske3Q/Lm1pbmltdW0/PzB9LCR7dD8ubWF4aW11bT8/IiJ9fWA6IltcXHNcXFNdKiI7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke259JGApfSxfYz0vXi0/XGQrbj8kLywkYz0vXi0/XGQrJC8sdmk9L14tP1xkKyg/OlwuXGQrKT8kLyxiYz0vXig/OnRydWV8ZmFsc2UpJC9pLHljPS9ebnVsbCQvaSxrYz0vXnVuZGVmaW5lZCQvaSxTYz0vXlteQS1aXSokLyx3Yz0vXlteYS16XSokLyxJYz0vXlswLTlhLWZBLUZdKiQvO2Z1bmN0aW9uIHd0KHQsbil7cmV0dXJuIG5ldyBSZWdFeHAoYF5bQS1aYS16MC05Ky9deyR7dH19JHtufSRgKX1mdW5jdGlvbiBJdCh0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTlfLV17JHt0fX0kYCl9Y29uc3QgWW09L15bMC05YS1mQS1GXXszMn0kLyxRbT13dCgyMiwiPT0iKSxlcD1JdCgyMiksdHA9L15bMC05YS1mQS1GXXs0MH0kLyxucD13dCgyNywiPSIpLHJwPUl0KDI3KSxpcD0vXlswLTlhLWZBLUZdezY0fSQvLG9wPXd0KDQzLCI9IiksYXA9SXQoNDMpLHNwPS9eWzAtOWEtZkEtRl17OTZ9JC8sY3A9d3QoNjQsIiIpLHVwPUl0KDY0KSxscD0vXlswLTlhLWZBLUZdezEyOH0kLyxkcD13dCg4NiwiPT0iKSxtcD1JdCg4NiksTG49T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJhc2U2NDpjYyxiYXNlNjR1cmw6ZmksYmlnaW50Ol9jLGJvb2xlYW46YmMsYnJvd3NlckVtYWlsOkdtLGNpZHJ2NDphYyxjaWRydjY6c2MsY3VpZDpWcyxjdWlkMjpLcyxkYXRlOnBjLGRhdGV0aW1lOnZjLGRvbWFpbjpsYyxkdXJhdGlvbjpZcyxlMTY0OmRjLGVtYWlsOmVjLGVtb2ppOm5jLGV4dGVuZGVkRHVyYXRpb246Rm0sZ3VpZDpRcyxoZXg6SWMsaG9zdG5hbWU6dWMsaHRtbDVFbWFpbDpLbSxodHRwUHJvdG9jb2w6Z2ksaWRuRW1haWw6Qm0saW50ZWdlcjokYyxpcHY0OnJjLGlwdjY6aWMsa3N1aWQ6R3MsbG93ZXJjYXNlOlNjLG1hYzpvYyxtZDVfYmFzZTY0OlFtLG1kNV9iYXNlNjR1cmw6ZXAsbWQ1X2hleDpZbSxuYW5vaWQ6WHMsbnVsbDp5YyxudW1iZXI6dmkscmZjNTMyMkVtYWlsOldtLHNoYTFfYmFzZTY0Om5wLHNoYTFfYmFzZTY0dXJsOnJwLHNoYTFfaGV4OnRwLHNoYTI1Nl9iYXNlNjQ6b3Asc2hhMjU2X2Jhc2U2NHVybDphcCxzaGEyNTZfaGV4OmlwLHNoYTM4NF9iYXNlNjQ6Y3Asc2hhMzg0X2Jhc2U2NHVybDp1cCxzaGEzODRfaGV4OnNwLHNoYTUxMl9iYXNlNjQ6ZHAsc2hhNTEyX2Jhc2U2NHVybDptcCxzaGE1MTJfaGV4OmxwLHN0cmluZzpoYyx0aW1lOmdjLHVsaWQ6V3MsdW5kZWZpbmVkOmtjLHVuaWNvZGVFbWFpbDp0Yyx1cHBlcmNhc2U6d2MsdXVpZDpNZSx1dWlkNDpKbSx1dWlkNjpIbSx1dWlkNzpWbSx4aWQ6QnN9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksTT1kKCIkWm9kQ2hlY2siLCh0LG4pPT57dmFyIHI7dC5fem9kPz8odC5fem9kPXt9KSx0Ll96b2QuZGVmPW4sKHI9dC5fem9kKS5vbmF0dGFjaD8/KHIub25hdHRhY2g9W10pfSksemM9e251bWJlcjoibnVtYmVyIixiaWdpbnQ6ImJpZ2ludCIsb2JqZWN0OiJkYXRlIn0saGk9ZCgiJFpvZENoZWNrTGVzc1RoYW4iLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj16Y1t0eXBlb2Ygbi52YWx1ZV07dC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZyxpPShuLmluY2x1c2l2ZT9lLm1heGltdW06ZS5leGNsdXNpdmVNYXhpbXVtKT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO24udmFsdWU8aSYmKG4uaW5jbHVzaXZlP2UubWF4aW11bT1uLnZhbHVlOmUuZXhjbHVzaXZlTWF4aW11bT1uLnZhbHVlKX0pLHQuX3pvZC5jaGVjaz1vPT57KG4uaW5jbHVzaXZlP28udmFsdWU8PW4udmFsdWU6by52YWx1ZTxuLnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOnIsY29kZToidG9vX2JpZyIsbWF4aW11bTp0eXBlb2Ygbi52YWx1ZT09Im9iamVjdCI/bi52YWx1ZS5nZXRUaW1lKCk6bi52YWx1ZSxpbnB1dDpvLnZhbHVlLGluY2x1c2l2ZTpuLmluY2x1c2l2ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxfaT1kKCIkWm9kQ2hlY2tHcmVhdGVyVGhhbiIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPXpjW3R5cGVvZiBuLnZhbHVlXTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLGk9KG4uaW5jbHVzaXZlP2UubWluaW11bTplLmV4Y2x1c2l2ZU1pbmltdW0pPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi52YWx1ZT5pJiYobi5pbmNsdXNpdmU/ZS5taW5pbXVtPW4udmFsdWU6ZS5leGNsdXNpdmVNaW5pbXVtPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPW89Pnsobi5pbmNsdXNpdmU/by52YWx1ZT49bi52YWx1ZTpvLnZhbHVlPm4udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46cixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIG4udmFsdWU9PSJvYmplY3QiP24udmFsdWUuZ2V0VGltZSgpOm4udmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6bi5pbmNsdXNpdmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSkseGM9ZCgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKHQsbik9PntNLmluaXQodCxuKSx0Ll96b2Qub25hdHRhY2gucHVzaChyPT57dmFyIG87KG89ci5fem9kLmJhZykubXVsdGlwbGVPZj8/KG8ubXVsdGlwbGVPZj1uLnZhbHVlKX0pLHQuX3pvZC5jaGVjaz1yPT57aWYodHlwZW9mIHIudmFsdWUhPXR5cGVvZiBuLnZhbHVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG1peCBudW1iZXIgYW5kIGJpZ2ludCBpbiBtdWx0aXBsZV9vZiBjaGVjay4iKTsodHlwZW9mIHIudmFsdWU9PSJiaWdpbnQiP3IudmFsdWUlbi52YWx1ZT09PUJpZ0ludCgwKTp6cyhyLnZhbHVlLG4udmFsdWUpPT09MCl8fHIuaXNzdWVzLnB1c2goe29yaWdpbjp0eXBlb2Ygci52YWx1ZSxjb2RlOiJub3RfbXVsdGlwbGVfb2YiLGRpdmlzb3I6bi52YWx1ZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFRjPWQoIiRab2RDaGVja051bWJlckZvcm1hdCIsKHQsbik9PntNLmluaXQodCxuKSxuLmZvcm1hdD1uLmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IHI9bi5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPXI/ImludCI6Im51bWJlciIsW2UsaV09UHNbbi5mb3JtYXRdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKGE9Pntjb25zdCBzPWEuX3pvZC5iYWc7cy5mb3JtYXQ9bi5mb3JtYXQscy5taW5pbXVtPWUscy5tYXhpbXVtPWksciYmKHMucGF0dGVybj0kYyl9KSx0Ll96b2QuY2hlY2s9YT0+e2NvbnN0IHM9YS52YWx1ZTtpZihyKXtpZighTnVtYmVyLmlzSW50ZWdlcihzKSl7YS5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6byxmb3JtYXQ6bi5mb3JtYXQsY29kZToiaW52YWxpZF90eXBlIixjb250aW51ZTohMSxpbnB1dDpzLGluc3Q6dH0pO3JldHVybn1pZighTnVtYmVyLmlzU2FmZUludGVnZXIocykpe3M+MD9hLmlzc3Vlcy5wdXNoKHtpbnB1dDpzLGNvZGU6InRvb19iaWciLG1heGltdW06TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsbm90ZToiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS4iLGluc3Q6dCxvcmlnaW46byxpbmNsdXNpdmU6ITAsY29udGludWU6IW4uYWJvcnR9KTphLmlzc3Vlcy5wdXNoKHtpbnB1dDpzLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDp0LG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohbi5hYm9ydH0pO3JldHVybn19czxlJiZhLmlzc3Vlcy5wdXNoKHtvcmlnaW46Im51bWJlciIsaW5wdXQ6cyxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06ZSxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSkscz5pJiZhLmlzc3Vlcy5wdXNoKHtvcmlnaW46Im51bWJlciIsaW5wdXQ6cyxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOmksaW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLGpjPWQoIiRab2RDaGVja0JpZ0ludEZvcm1hdCIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdFtyLG9dPU9zW24uZm9ybWF0XTt0Ll96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgaT1lLl96b2QuYmFnO2kuZm9ybWF0PW4uZm9ybWF0LGkubWluaW11bT1yLGkubWF4aW11bT1vfSksdC5fem9kLmNoZWNrPWU9Pntjb25zdCBpPWUudmFsdWU7aTxyJiZlLmlzc3Vlcy5wdXNoKHtvcmlnaW46ImJpZ2ludCIsaW5wdXQ6aSxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cixpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSksaT5vJiZlLmlzc3Vlcy5wdXNoKHtvcmlnaW46ImJpZ2ludCIsaW5wdXQ6aSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm8saW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFVjPWQoIiRab2RDaGVja01heFNpemUiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFEZShlKSYmZS5zaXplIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi5tYXhpbXVtPGUmJihvLl96b2QuYmFnLm1heGltdW09bi5tYXhpbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2Uuc2l6ZTw9bi5tYXhpbXVtfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46Wm4oZSksY29kZToidG9vX2JpZyIsbWF4aW11bTpuLm1heGltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksUGM9ZCgiJFpvZENoZWNrTWluU2l6ZSIsKHQsbik9Pnt2YXIgcjtNLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIURlKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLm1pbmltdW0+ZSYmKG8uX3pvZC5iYWcubWluaW11bT1uLm1pbmltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7ZS5zaXplPj1uLm1pbmltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpabihlKSxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLE9jPWQoIiRab2RDaGVja1NpemVFcXVhbHMiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFEZShlKSYmZS5zaXplIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLm1pbmltdW09bi5zaXplLGUubWF4aW11bT1uLnNpemUsZS5zaXplPW4uc2l6ZX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlLGk9ZS5zaXplO2lmKGk9PT1uLnNpemUpcmV0dXJuO2NvbnN0IGE9aT5uLnNpemU7by5pc3N1ZXMucHVzaCh7b3JpZ2luOlpuKGUpLC4uLmE/e2NvZGU6InRvb19iaWciLG1heGltdW06bi5zaXplfTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4uc2l6ZX0saW5jbHVzaXZlOiEwLGV4YWN0OiEwLGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksRGM9ZCgiJFpvZENoZWNrTWF4TGVuZ3RoIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hRGUoZSkmJmUubGVuZ3RoIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi5tYXhpbXVtPGUmJihvLl96b2QuYmFnLm1heGltdW09bi5tYXhpbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2lmKGUubGVuZ3RoPD1uLm1heGltdW0pcmV0dXJuO2NvbnN0IGE9Um4oZSk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX2JpZyIsbWF4aW11bTpuLm1heGltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksTmM9ZCgiJFpvZENoZWNrTWluTGVuZ3RoIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hRGUoZSkmJmUubGVuZ3RoIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5taW5pbXVtPmUmJihvLl96b2QuYmFnLm1pbmltdW09bi5taW5pbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2lmKGUubGVuZ3RoPj1uLm1pbmltdW0pcmV0dXJuO2NvbnN0IGE9Um4oZSk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxFYz1kKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFEZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UubWluaW11bT1uLmxlbmd0aCxlLm1heGltdW09bi5sZW5ndGgsZS5sZW5ndGg9bi5sZW5ndGh9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZSxpPWUubGVuZ3RoO2lmKGk9PT1uLmxlbmd0aClyZXR1cm47Y29uc3QgYT1SbihlKSxzPWk+bi5sZW5ndGg7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsLi4ucz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpuLmxlbmd0aH06e2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLmxlbmd0aH0saW5jbHVzaXZlOiEwLGV4YWN0OiEwLGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksenQ9ZCgiJFpvZENoZWNrU3RyaW5nRm9ybWF0IiwodCxuKT0+e3ZhciByLG87TS5pbml0KHQsbiksdC5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGk9ZS5fem9kLmJhZztpLmZvcm1hdD1uLmZvcm1hdCxuLnBhdHRlcm4mJihpLnBhdHRlcm5zPz8oaS5wYXR0ZXJucz1uZXcgU2V0KSxpLnBhdHRlcm5zLmFkZChuLnBhdHRlcm4pKX0pLG4ucGF0dGVybj8ocj10Ll96b2QpLmNoZWNrPz8oci5jaGVjaz1lPT57bi5wYXR0ZXJuLmxhc3RJbmRleD0wLCFuLnBhdHRlcm4udGVzdChlLnZhbHVlKSYmZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6bi5mb3JtYXQsaW5wdXQ6ZS52YWx1ZSwuLi5uLnBhdHRlcm4/e3BhdHRlcm46bi5wYXR0ZXJuLnRvU3RyaW5nKCl9Ont9LGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfSk6KG89dC5fem9kKS5jaGVjaz8/KG8uY2hlY2s9KCk9Pnt9KX0pLFpjPWQoIiRab2RDaGVja1JlZ2V4IiwodCxuKT0+e3p0LmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e24ucGF0dGVybi5sYXN0SW5kZXg9MCwhbi5wYXR0ZXJuLnRlc3Qoci52YWx1ZSkmJnIuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsaW5wdXQ6ci52YWx1ZSxwYXR0ZXJuOm4ucGF0dGVybi50b1N0cmluZygpLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFJjPWQoIiRab2RDaGVja0xvd2VyQ2FzZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49U2MpLHp0LmluaXQodCxuKX0pLENjPWQoIiRab2RDaGVja1VwcGVyQ2FzZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49d2MpLHp0LmluaXQodCxuKX0pLEFjPWQoIiRab2RDaGVja0luY2x1ZGVzIiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0IHI9dmUobi5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiBuLnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHtuLnBvc2l0aW9ufX0ke3J9YDpyKTtuLnBhdHRlcm49byx0Ll96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgaT1lLl96b2QuYmFnO2kucGF0dGVybnM/PyhpLnBhdHRlcm5zPW5ldyBTZXQpLGkucGF0dGVybnMuYWRkKG8pfSksdC5fem9kLmNoZWNrPWU9PntlLnZhbHVlLmluY2x1ZGVzKG4uaW5jbHVkZXMsbi5wb3NpdGlvbil8fGUuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6bi5pbmNsdWRlcyxpbnB1dDplLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLExjPWQoIiRab2RDaGVja1N0YXJ0c1dpdGgiLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1uZXcgUmVnRXhwKGBeJHt2ZShuLnByZWZpeCl9LipgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49ciksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLnBhdHRlcm5zPz8oZS5wYXR0ZXJucz1uZXcgU2V0KSxlLnBhdHRlcm5zLmFkZChyKX0pLHQuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKG4ucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6bi5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxNYz1kKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPW5ldyBSZWdFeHAoYC4qJHt2ZShuLnN1ZmZpeCl9JGApO24ucGF0dGVybj8/KG4ucGF0dGVybj1yKSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UucGF0dGVybnM/PyhlLnBhdHRlcm5zPW5ldyBTZXQpLGUucGF0dGVybnMuYWRkKHIpfSksdC5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKG4uc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4Om4uc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSk7ZnVuY3Rpb24gWGEodCxuLHIpe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi5jZShyLHQuaXNzdWVzKSl9Y29uc3QgcWM9ZCgiJFpvZENoZWNrUHJvcGVydHkiLCh0LG4pPT57TS5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pntjb25zdCBvPW4uc2NoZW1hLl96b2QucnVuKHt2YWx1ZTpyLnZhbHVlW24ucHJvcGVydHldLGlzc3VlczpbXX0se30pO2lmKG8gaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBvLnRoZW4oZT0+WGEoZSxyLG4ucHJvcGVydHkpKTtYYShvLHIsbi5wcm9wZXJ0eSl9fSksRmM9ZCgiJFpvZENoZWNrTWltZVR5cGUiLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1uZXcgU2V0KG4ubWltZSk7dC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e28uX3pvZC5iYWcubWltZT1uLm1pbWV9KSx0Ll96b2QuY2hlY2s9bz0+e3IuaGFzKG8udmFsdWUudHlwZSl8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLm1pbWUsaW5wdXQ6by52YWx1ZS50eXBlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEpjPWQoIiRab2RDaGVja092ZXJ3cml0ZSIsKHQsbik9PntNLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e3IudmFsdWU9bi50eChyLnZhbHVlKX19KTtjbGFzcyBIY3tjb25zdHJ1Y3RvcihuPVtdKXt0aGlzLmNvbnRlbnQ9W10sdGhpcy5pbmRlbnQ9MCx0aGlzJiYodGhpcy5hcmdzPW4pfWluZGVudGVkKG4pe3RoaXMuaW5kZW50Kz0xLG4odGhpcyksdGhpcy5pbmRlbnQtPTF9d3JpdGUobil7aWYodHlwZW9mIG49PSJmdW5jdGlvbiIpe24odGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLG4odGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz1uLnNwbGl0KGAKYCkuZmlsdGVyKGE9PmEpLGU9TWF0aC5taW4oLi4uby5tYXAoYT0+YS5sZW5ndGgtYS50cmltU3RhcnQoKS5sZW5ndGgpKSxpPW8ubWFwKGE9PmEuc2xpY2UoZSkpLm1hcChhPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2EpO2Zvcihjb25zdCBhIG9mIGkpdGhpcy5jb250ZW50LnB1c2goYSl9Y29tcGlsZSgpe2NvbnN0IG49RnVuY3Rpb24scj10aGlzPy5hcmdzLGU9Wy4uLih0aGlzPy5jb250ZW50Pz9bIiJdKS5tYXAoaT0+YCAgJHtpfWApXTtyZXR1cm4gbmV3IG4oLi4ucixlLmpvaW4oYApgKSl9fWNvbnN0IFZjPXttYWpvcjo0LG1pbm9yOjQscGF0Y2g6M30sST1kKCIkWm9kVHlwZSIsKHQsbik9Pnt2YXIgcjt0Pz8odD17fSksdC5fem9kLmRlZj1uLHQuX3pvZC5iYWc9dC5fem9kLmJhZ3x8e30sdC5fem9kLnZlcnNpb249VmM7Y29uc3Qgbz1bLi4udC5fem9kLmRlZi5jaGVja3M/P1tdXTt0Ll96b2QudHJhaXRzLmhhcygiJFpvZENoZWNrIikmJm8udW5zaGlmdCh0KTtmb3IoY29uc3QgZSBvZiBvKWZvcihjb25zdCBpIG9mIGUuX3pvZC5vbmF0dGFjaClpKHQpO2lmKG8ubGVuZ3RoPT09MCkocj10Ll96b2QpLmRlZmVycmVkPz8oci5kZWZlcnJlZD1bXSksdC5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57dC5fem9kLnJ1bj10Ll96b2QucGFyc2V9KTtlbHNle2NvbnN0IGU9KGEscyxjKT0+e2xldCB1PXplKGEpLGw7Zm9yKGNvbnN0IGcgb2Ygcyl7aWYoZy5fem9kLmRlZi53aGVuKXtpZihMcyhhKXx8IWcuX3pvZC5kZWYud2hlbihhKSljb250aW51ZX1lbHNlIGlmKHUpY29udGludWU7Y29uc3Qgdj1hLmlzc3Vlcy5sZW5ndGgsXz1nLl96b2QuY2hlY2soYSk7aWYoXyBpbnN0YW5jZW9mIFByb21pc2UmJmM/LmFzeW5jPT09ITEpdGhyb3cgbmV3IHhlO2lmKGx8fF8gaW5zdGFuY2VvZiBQcm9taXNlKWw9KGw/P1Byb21pc2UucmVzb2x2ZSgpKS50aGVuKGFzeW5jKCk9Pnthd2FpdCBfLGEuaXNzdWVzLmxlbmd0aCE9PXYmJih1fHwodT16ZShhLHYpKSl9KTtlbHNle2lmKGEuaXNzdWVzLmxlbmd0aD09PXYpY29udGludWU7dXx8KHU9emUoYSx2KSl9fXJldHVybiBsP2wudGhlbigoKT0+YSk6YX0saT0oYSxzLGMpPT57aWYoemUoYSkpcmV0dXJuIGEuYWJvcnRlZD0hMCxhO2NvbnN0IHU9ZShzLG8sYyk7aWYodSBpbnN0YW5jZW9mIFByb21pc2Upe2lmKGMuYXN5bmM9PT0hMSl0aHJvdyBuZXcgeGU7cmV0dXJuIHUudGhlbihsPT50Ll96b2QucGFyc2UobCxjKSl9cmV0dXJuIHQuX3pvZC5wYXJzZSh1LGMpfTt0Ll96b2QucnVuPShhLHMpPT57aWYocy5za2lwQ2hlY2tzKXJldHVybiB0Ll96b2QucGFyc2UoYSxzKTtpZihzLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpe2NvbnN0IHU9dC5fem9kLnBhcnNlKHt2YWx1ZTphLnZhbHVlLGlzc3VlczpbXX0sey4uLnMsc2tpcENoZWNrczohMH0pO3JldHVybiB1IGluc3RhbmNlb2YgUHJvbWlzZT91LnRoZW4obD0+aShsLGEscykpOmkodSxhLHMpfWNvbnN0IGM9dC5fem9kLnBhcnNlKGEscyk7aWYoYyBpbnN0YW5jZW9mIFByb21pc2Upe2lmKHMuYXN5bmM9PT0hMSl0aHJvdyBuZXcgeGU7cmV0dXJuIGMudGhlbih1PT5lKHUsbyxzKSl9cmV0dXJuIGUoYyxvLHMpfX1UKHQsIn5zdGFuZGFyZCIsKCk9Pih7dmFsaWRhdGU6ZT0+e3RyeXtjb25zdCBpPW9pKHQsZSk7cmV0dXJuIGkuc3VjY2Vzcz97dmFsdWU6aS5kYXRhfTp7aXNzdWVzOmkuZXJyb3I/Lmlzc3Vlc319Y2F0Y2h7cmV0dXJuIEhzKHQsZSkudGhlbihhPT5hLnN1Y2Nlc3M/e3ZhbHVlOmEuZGF0YX06e2lzc3VlczphLmVycm9yPy5pc3N1ZXN9KX19LHZlbmRvcjoiem9kIix2ZXJzaW9uOjF9KSl9KSx4dD1kKCIkWm9kU3RyaW5nIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPVsuLi50Py5fem9kLmJhZz8ucGF0dGVybnM/P1tdXS5wb3AoKT8/aGModC5fem9kLmJhZyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9U3RyaW5nKHIudmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIHIudmFsdWU9PSJzdHJpbmcifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscn19KSxMPWQoIiRab2RTdHJpbmdGb3JtYXQiLCh0LG4pPT57enQuaW5pdCh0LG4pLHh0LmluaXQodCxuKX0pLEtjPWQoIiRab2RHVUlEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1RcyksTC5pbml0KHQsbil9KSxXYz1kKCIkWm9kVVVJRCIsKHQsbik9PntpZihuLnZlcnNpb24pe2NvbnN0IG89e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bbi52ZXJzaW9uXTtpZihvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke24udmVyc2lvbn0iYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPU1lKG8pKX1lbHNlIG4ucGF0dGVybj8/KG4ucGF0dGVybj1NZSgpKTtMLmluaXQodCxuKX0pLEJjPWQoIiRab2RFbWFpbCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49ZWMpLEwuaW5pdCh0LG4pfSksR2M9ZCgiJFpvZFVSTCIsKHQsbik9PntMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e3RyeXtjb25zdCBvPXIudmFsdWUudHJpbSgpO2lmKCFuLm5vcm1hbGl6ZSYmbi5wcm90b2NvbD8uc291cmNlPT09Z2kuc291cmNlJiYhL15odHRwcz86XC9cLy9pLnRlc3Qobykpe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBVUkwgZm9ybWF0IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pO3JldHVybn1jb25zdCBlPW5ldyBVUkwobyk7bi5ob3N0bmFtZSYmKG4uaG9zdG5hbWUubGFzdEluZGV4PTAsbi5ob3N0bmFtZS50ZXN0KGUuaG9zdG5hbWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgaG9zdG5hbWUiLHBhdHRlcm46bi5ob3N0bmFtZS5zb3VyY2UsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSksbi5wcm90b2NvbCYmKG4ucHJvdG9jb2wubGFzdEluZGV4PTAsbi5wcm90b2NvbC50ZXN0KGUucHJvdG9jb2wuZW5kc1dpdGgoIjoiKT9lLnByb3RvY29sLnNsaWNlKDAsLTEpOmUucHJvdG9jb2wpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgcHJvdG9jb2wiLHBhdHRlcm46bi5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSksbi5ub3JtYWxpemU/ci52YWx1ZT1lLmhyZWY6ci52YWx1ZT1vO3JldHVybn1jYXRjaHtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pLFhjPWQoIiRab2RFbW9qaSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49bmMoKSksTC5pbml0KHQsbil9KSxZYz1kKCIkWm9kTmFub0lEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1YcyksTC5pbml0KHQsbil9KSxRYz1kKCIkWm9kQ1VJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49VnMpLEwuaW5pdCh0LG4pfSksZXU9ZCgiJFpvZENVSUQyIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1LcyksTC5pbml0KHQsbil9KSx0dT1kKCIkWm9kVUxJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49V3MpLEwuaW5pdCh0LG4pfSksbnU9ZCgiJFpvZFhJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49QnMpLEwuaW5pdCh0LG4pfSkscnU9ZCgiJFpvZEtTVUlEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1HcyksTC5pbml0KHQsbil9KSxpdT1kKCIkWm9kSVNPRGF0ZVRpbWUiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXZjKG4pKSxMLmluaXQodCxuKX0pLG91PWQoIiRab2RJU09EYXRlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1wYyksTC5pbml0KHQsbil9KSxhdT1kKCIkWm9kSVNPVGltZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49Z2MobikpLEwuaW5pdCh0LG4pfSksc3U9ZCgiJFpvZElTT0R1cmF0aW9uIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1ZcyksTC5pbml0KHQsbil9KSxjdT1kKCIkWm9kSVB2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49cmMpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuZm9ybWF0PSJpcHY0In0pLHV1PWQoIiRab2RJUHY2IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1pYyksTC5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9ImlwdjYiLHQuX3pvZC5jaGVjaz1yPT57dHJ5e25ldyBVUkwoYGh0dHA6Ly9bJHtyLnZhbHVlfV1gKX1jYXRjaHtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX19KSxsdT1kKCIkWm9kTUFDIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1vYyhuLmRlbGltaXRlcikpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuZm9ybWF0PSJtYWMifSksZHU9ZCgiJFpvZENJRFJ2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49YWMpLEwuaW5pdCh0LG4pfSksbXU9ZCgiJFpvZENJRFJ2NiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49c2MpLEwuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlLnNwbGl0KCIvIik7dHJ5e2lmKG8ubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3I7Y29uc3RbZSxpXT1vO2lmKCFpKXRocm93IG5ldyBFcnJvcjtjb25zdCBhPU51bWJlcihpKTtpZihgJHthfWAhPT1pKXRocm93IG5ldyBFcnJvcjtpZihhPDB8fGE+MTI4KXRocm93IG5ldyBFcnJvcjtuZXcgVVJMKGBodHRwOi8vWyR7ZX1dYCl9Y2F0Y2h7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiY2lkcnY2IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX19KTtmdW5jdGlvbiAkaSh0KXtpZih0PT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KHQpfHx0Lmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IodCksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IHB1PWQoIiRab2RCYXNlNjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWNjKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0Iix0Ll96b2QuY2hlY2s9cj0+eyRpKHIudmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjQiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSk7ZnVuY3Rpb24gZnUodCl7aWYoIWZpLnRlc3QodCkpcmV0dXJuITE7Y29uc3Qgbj10LnJlcGxhY2UoL1stX10vZyxvPT5vPT09Ii0iPyIrIjoiLyIpLHI9bi5wYWRFbmQoTWF0aC5jZWlsKG4ubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gJGkocil9Y29uc3QgZ3U9ZCgiJFpvZEJhc2U2NFVSTCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49ZmkpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuY29udGVudEVuY29kaW5nPSJiYXNlNjR1cmwiLHQuX3pvZC5jaGVjaz1yPT57ZnUoci52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NHVybCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSx2dT1kKCIkWm9kRTE2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49ZGMpLEwuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gaHUodCxuPW51bGwpe3RyeXtjb25zdCByPXQuc3BsaXQoIi4iKTtpZihyLmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbb109cjtpZighbylyZXR1cm4hMTtjb25zdCBlPUpTT04ucGFyc2UoYXRvYihvKSk7cmV0dXJuISgidHlwImluIGUmJmU/LnR5cCE9PSJKV1QifHwhZS5hbGd8fG4mJighKCJhbGciaW4gZSl8fGUuYWxnIT09bikpfWNhdGNoe3JldHVybiExfX1jb25zdCBfdT1kKCIkWm9kSldUIiwodCxuKT0+e0wuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57aHUoci52YWx1ZSxuLmFsZyl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6Imp3dCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSwkdT1kKCIkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwodCxuKT0+e0wuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57bi5mbihyLnZhbHVlKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdCxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLGJpPWQoIiRab2ROdW1iZXIiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49dC5fem9kLmJhZy5wYXR0ZXJuPz92aSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1OdW1iZXIoci52YWx1ZSl9Y2F0Y2h7fWNvbnN0IGU9ci52YWx1ZTtpZih0eXBlb2YgZT09Im51bWJlciImJiFOdW1iZXIuaXNOYU4oZSkmJk51bWJlci5pc0Zpbml0ZShlKSlyZXR1cm4gcjtjb25zdCBpPXR5cGVvZiBlPT0ibnVtYmVyIj9OdW1iZXIuaXNOYU4oZSk/Ik5hTiI6TnVtYmVyLmlzRmluaXRlKGUpP3ZvaWQgMDoiSW5maW5pdHkiOnZvaWQgMDtyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im51bWJlciIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dCwuLi5pP3tyZWNlaXZlZDppfTp7fX0pLHJ9fSksYnU9ZCgiJFpvZE51bWJlckZvcm1hdCIsKHQsbik9PntUYy5pbml0KHQsbiksYmkuaW5pdCh0LG4pfSkseWk9ZCgiJFpvZEJvb2xlYW4iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49YmMsdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9ISFyLnZhbHVlfWNhdGNoe31jb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPT0iYm9vbGVhbiJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJib29sZWFuIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxraT1kKCIkWm9kQmlnSW50IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPV9jLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPUJpZ0ludChyLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiByLnZhbHVlPT0iYmlnaW50Inx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJpZ2ludCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHJ9fSkseXU9ZCgiJFpvZEJpZ0ludEZvcm1hdCIsKHQsbik9PntqYy5pbml0KHQsbiksa2kuaW5pdCh0LG4pfSksa3U9ZCgiJFpvZFN5bWJvbCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPT0ic3ltYm9sInx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN5bWJvbCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksU3U9ZCgiJFpvZFVuZGVmaW5lZCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1rYyx0Ll96b2QudmFsdWVzPW5ldyBTZXQoW3ZvaWQgMF0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU+InUifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidW5kZWZpbmVkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSx3dT1kKCIkWm9kTnVsbCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj15Yyx0Ll96b2QudmFsdWVzPW5ldyBTZXQoW251bGxdKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIGU9PT1udWxsfHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVsbCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksSXU9ZCgiJFpvZEFueSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9cj0+cn0pLHp1PWQoIiRab2RVbmtub3duIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT1yPT5yfSkseHU9ZCgiJFpvZE5ldmVyIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+KHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJuZXZlciIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHIpfSksVHU9ZCgiJFpvZFZvaWQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT4idSJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ2b2lkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxqdT1kKCIkWm9kRGF0ZSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1uZXcgRGF0ZShyLnZhbHVlKX1jYXRjaHt9Y29uc3QgZT1yLnZhbHVlLGk9ZSBpbnN0YW5jZW9mIERhdGU7cmV0dXJuIGkmJiFOdW1iZXIuaXNOYU4oZS5nZXRUaW1lKCkpfHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZGF0ZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLC4uLmk/e3JlY2VpdmVkOiJJbnZhbGlkIERhdGUifTp7fSxpbnN0OnR9KSxyfX0pO2Z1bmN0aW9uIFlhKHQsbixyKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4uY2Uocix0Lmlzc3VlcykpLG4udmFsdWVbcl09dC52YWx1ZX1jb25zdCBVdT1kKCIkWm9kQXJyYXkiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYXJyYXkiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO3IudmFsdWU9QXJyYXkoZS5sZW5ndGgpO2NvbnN0IGk9W107Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IHM9ZVthXSxjPW4uZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO2MgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChjLnRoZW4odT0+WWEodSxyLGEpKSk6WWEoYyxyLGEpfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pO2Z1bmN0aW9uIFRuKHQsbixyLG8sZSxpKXtjb25zdCBhPXIgaW4gbztpZih0Lmlzc3Vlcy5sZW5ndGgpe2lmKGUmJmkmJiFhKXJldHVybjtuLmlzc3Vlcy5wdXNoKC4uLmNlKHIsdC5pc3N1ZXMpKX1pZighYSYmIWUpe3QuaXNzdWVzLmxlbmd0aHx8bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoibm9ub3B0aW9uYWwiLGlucHV0OnZvaWQgMCxwYXRoOltyXX0pO3JldHVybn10LnZhbHVlPT09dm9pZCAwP2EmJihuLnZhbHVlW3JdPXZvaWQgMCk6bi52YWx1ZVtyXT10LnZhbHVlfWZ1bmN0aW9uIFB1KHQpe2NvbnN0IG49T2JqZWN0LmtleXModC5zaGFwZSk7Zm9yKGNvbnN0IG8gb2YgbilpZighdC5zaGFwZT8uW29dPy5fem9kPy50cmFpdHM/LmhhcygiJFpvZFR5cGUiKSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZWxlbWVudCBhdCBrZXkgIiR7b30iOiBleHBlY3RlZCBhIFpvZCBzY2hlbWFgKTtjb25zdCByPVVzKHQuc2hhcGUpO3JldHVybnsuLi50LGtleXM6bixrZXlTZXQ6bmV3IFNldChuKSxudW1LZXlzOm4ubGVuZ3RoLG9wdGlvbmFsS2V5czpuZXcgU2V0KHIpfX1mdW5jdGlvbiBPdSh0LG4scixvLGUsaSl7Y29uc3QgYT1bXSxzPWUua2V5U2V0LGM9ZS5jYXRjaGFsbC5fem9kLHU9Yy5kZWYudHlwZSxsPWMub3B0aW49PT0ib3B0aW9uYWwiLGc9Yy5vcHRvdXQ9PT0ib3B0aW9uYWwiO2Zvcihjb25zdCB2IGluIG4pe2lmKHY9PT0iX19wcm90b19fInx8cy5oYXModikpY29udGludWU7aWYodT09PSJuZXZlciIpe2EucHVzaCh2KTtjb250aW51ZX1jb25zdCBfPWMucnVuKHt2YWx1ZTpuW3ZdLGlzc3VlczpbXX0sbyk7XyBpbnN0YW5jZW9mIFByb21pc2U/dC5wdXNoKF8udGhlbih5PT5Ubih5LHIsdixuLGwsZykpKTpUbihfLHIsdixuLGwsZyl9cmV0dXJuIGEubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsa2V5czphLGlucHV0Om4saW5zdDppfSksdC5sZW5ndGg/UHJvbWlzZS5hbGwodCkudGhlbigoKT0+cik6cn1jb25zdCBEdT1kKCIkWm9kT2JqZWN0IiwodCxuKT0+e2lmKEkuaW5pdCh0LG4pLCFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sInNoYXBlIik/LmdldCl7Y29uc3Qgcz1uLnNoYXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzaGFwZSIse2dldDooKT0+e2NvbnN0IGM9ey4uLnN9O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic2hhcGUiLHt2YWx1ZTpjfSksY319KX1jb25zdCBvPSR0KCgpPT5QdShuKSk7VCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT57Y29uc3Qgcz1uLnNoYXBlLGM9e307Zm9yKGNvbnN0IHUgaW4gcyl7Y29uc3QgbD1zW3VdLl96b2Q7aWYobC52YWx1ZXMpe2NbdV0/PyhjW3VdPW5ldyBTZXQpO2Zvcihjb25zdCBnIG9mIGwudmFsdWVzKWNbdV0uYWRkKGcpfX1yZXR1cm4gY30pO2NvbnN0IGU9QWUsaT1uLmNhdGNoYWxsO2xldCBhO3QuX3pvZC5wYXJzZT0ocyxjKT0+e2E/PyhhPW8udmFsdWUpO2NvbnN0IHU9cy52YWx1ZTtpZighZSh1KSlyZXR1cm4gcy5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDp1LGluc3Q6dH0pLHM7cy52YWx1ZT17fTtjb25zdCBsPVtdLGc9YS5zaGFwZTtmb3IoY29uc3QgdiBvZiBhLmtleXMpe2NvbnN0IF89Z1t2XSx5PV8uX3pvZC5vcHRpbj09PSJvcHRpb25hbCIscT1fLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIixSPV8uX3pvZC5ydW4oe3ZhbHVlOnVbdl0saXNzdWVzOltdfSxjKTtSIGluc3RhbmNlb2YgUHJvbWlzZT9sLnB1c2goUi50aGVuKFplPT5UbihaZSxzLHYsdSx5LHEpKSk6VG4oUixzLHYsdSx5LHEpfXJldHVybiBpP091KGwsdSxzLGMsby52YWx1ZSx0KTpsLmxlbmd0aD9Qcm9taXNlLmFsbChsKS50aGVuKCgpPT5zKTpzfX0pLE51PWQoIiRab2RPYmplY3RKSVQiLCh0LG4pPT57RHUuaW5pdCh0LG4pO2NvbnN0IHI9dC5fem9kLnBhcnNlLG89JHQoKCk9PlB1KG4pKSxlPXY9Pntjb25zdCBfPW5ldyBIYyhbInNoYXBlIiwicGF5bG9hZCIsImN0eCJdKSx5PW8udmFsdWUscT1GPT57Y29uc3QgQz1WcihGKTtyZXR1cm5gc2hhcGVbJHtDfV0uX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRbJHtDfV0sIGlzc3VlczogW10gfSwgY3R4KWB9O18ud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBSPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IFplPTA7Zm9yKGNvbnN0IEYgb2YgeS5rZXlzKVJbRl09YGtleV8ke1plKyt9YDtfLndyaXRlKCJjb25zdCBuZXdSZXN1bHQgPSB7fTsiKTtmb3IoY29uc3QgRiBvZiB5LmtleXMpe2NvbnN0IEM9UltGXSxLPVZyKEYpLFZhPXZbRl0sS2E9VmE/Ll96b2Q/Lm9wdGluPT09Im9wdGlvbmFsIixtbT1WYT8uX3pvZD8ub3B0b3V0PT09Im9wdGlvbmFsIjtfLndyaXRlKGBjb25zdCAke0N9ID0gJHtxKEYpfTtgKSxLYSYmbW0/Xy53cml0ZShgCiAgICAgICAgaWYgKCR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgaWYgKCR7S30gaW4gaW5wdXQpIHsKICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtDfS5pc3N1ZXMubWFwKGlzcyA9PiAoewogICAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske0t9LCAuLi5pc3MucGF0aF0gOiBbJHtLfV0KICAgICAgICAgICAgfSkpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCR7Q30udmFsdWUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgaWYgKCR7S30gaW4gaW5wdXQpIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7S31dID0gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtLfV0gPSAke0N9LnZhbHVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgYCk6S2E/Xy53cml0ZShgCiAgICAgICAgaWYgKCR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtDfS5pc3N1ZXMubWFwKGlzcyA9PiAoewogICAgICAgICAgICAuLi5pc3MsCiAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7S30sIC4uLmlzcy5wYXRoXSA6IFske0t9XQogICAgICAgICAgfSkpKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCR7Q30udmFsdWUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgaWYgKCR7S30gaW4gaW5wdXQpIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7S31dID0gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtLfV0gPSAke0N9LnZhbHVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgYCk6Xy53cml0ZShgCiAgICAgICAgY29uc3QgJHtDfV9wcmVzZW50ID0gJHtLfSBpbiBpbnB1dDsKICAgICAgICBpZiAoJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0N9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtLfSwgLi4uaXNzLnBhdGhdIDogWyR7S31dCiAgICAgICAgICB9KSkpOwogICAgICAgIH0KICAgICAgICBpZiAoISR7Q31fcHJlc2VudCAmJiAhJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHsKICAgICAgICAgICAgY29kZTogImludmFsaWRfdHlwZSIsCiAgICAgICAgICAgIGV4cGVjdGVkOiAibm9ub3B0aW9uYWwiLAogICAgICAgICAgICBpbnB1dDogdW5kZWZpbmVkLAogICAgICAgICAgICBwYXRoOiBbJHtLfV0KICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR7Q31fcHJlc2VudCkgewogICAgICAgICAgaWYgKCR7Q30udmFsdWUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtLfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtLfV0gPSAke0N9LnZhbHVlOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgIGApfV8ud3JpdGUoInBheWxvYWQudmFsdWUgPSBuZXdSZXN1bHQ7IiksXy53cml0ZSgicmV0dXJuIHBheWxvYWQ7Iik7Y29uc3QgVj1fLmNvbXBpbGUoKTtyZXR1cm4oRixDKT0+Vih2LEYsQyl9O2xldCBpO2NvbnN0IGE9QWUscz0hZnQuaml0bGVzcyx1PXMmJlRzLnZhbHVlLGw9bi5jYXRjaGFsbDtsZXQgZzt0Ll96b2QucGFyc2U9KHYsXyk9PntnPz8oZz1vLnZhbHVlKTtjb25zdCB5PXYudmFsdWU7cmV0dXJuIGEoeSk/cyYmdSYmXz8uYXN5bmM9PT0hMSYmXy5qaXRsZXNzIT09ITA/KGl8fChpPWUobi5zaGFwZSkpLHY9aSh2LF8pLGw/T3UoW10seSx2LF8sZyx0KTp2KTpyKHYsXyk6KHYuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6eSxpbnN0OnR9KSx2KX19KTtmdW5jdGlvbiBRYSh0LG4scixvKXtmb3IoY29uc3QgaSBvZiB0KWlmKGkuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIG4udmFsdWU9aS52YWx1ZSxuO2NvbnN0IGU9dC5maWx0ZXIoaT0+IXplKGkpKTtyZXR1cm4gZS5sZW5ndGg9PT0xPyhuLnZhbHVlPWVbMF0udmFsdWUsZVswXSk6KG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0Om4udmFsdWUsaW5zdDpyLGVycm9yczp0Lm1hcChpPT5pLmlzc3Vlcy5tYXAoYT0+aWUoYSxvLEgoKSkpKX0pLG4pfWNvbnN0IE1uPWQoIiRab2RVbmlvbiIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLm9wdGlvbnMuc29tZShvPT5vLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4ub3B0aW9ucy5zb21lKG89Pm8uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksVCh0Ll96b2QsInZhbHVlcyIsKCk9PntpZihuLm9wdGlvbnMuZXZlcnkobz0+by5fem9kLnZhbHVlcykpcmV0dXJuIG5ldyBTZXQobi5vcHRpb25zLmZsYXRNYXAobz0+QXJyYXkuZnJvbShvLl96b2QudmFsdWVzKSkpfSksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT57aWYobi5vcHRpb25zLmV2ZXJ5KG89Pm8uX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgbz1uLm9wdGlvbnMubWFwKGU9PmUuX3pvZC5wYXR0ZXJuKTtyZXR1cm4gbmV3IFJlZ0V4cChgXigke28ubWFwKGU9Pk5uKGUuc291cmNlKSkuam9pbigifCIpfSkkYCl9fSk7Y29uc3Qgcj1uLm9wdGlvbnMubGVuZ3RoPT09MT9uLm9wdGlvbnNbMF0uX3pvZC5ydW46bnVsbDt0Ll96b2QucGFyc2U9KG8sZSk9PntpZihyKXJldHVybiByKG8sZSk7bGV0IGk9ITE7Y29uc3QgYT1bXTtmb3IoY29uc3QgcyBvZiBuLm9wdGlvbnMpe2NvbnN0IGM9cy5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LGUpO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKWEucHVzaChjKSxpPSEwO2Vsc2V7aWYoYy5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gYzthLnB1c2goYyl9fXJldHVybiBpP1Byb21pc2UuYWxsKGEpLnRoZW4ocz0+UWEocyxvLHQsZSkpOlFhKGEsbyx0LGUpfX0pO2Z1bmN0aW9uIGVzKHQsbixyLG8pe2NvbnN0IGU9dC5maWx0ZXIoaT0+aS5pc3N1ZXMubGVuZ3RoPT09MCk7cmV0dXJuIGUubGVuZ3RoPT09MT8obi52YWx1ZT1lWzBdLnZhbHVlLG4pOihlLmxlbmd0aD09PTA/bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OnIsZXJyb3JzOnQubWFwKGk9PmkuaXNzdWVzLm1hcChhPT5pZShhLG8sSCgpKSkpfSk6bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OnIsZXJyb3JzOltdLGluY2x1c2l2ZTohMX0pLG4pfWNvbnN0IEV1PWQoIiRab2RYb3IiLCh0LG4pPT57TW4uaW5pdCh0LG4pLG4uaW5jbHVzaXZlPSExO2NvbnN0IHI9bi5vcHRpb25zLmxlbmd0aD09PTE/bi5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7dC5fem9kLnBhcnNlPShvLGUpPT57aWYocilyZXR1cm4gcihvLGUpO2xldCBpPSExO2NvbnN0IGE9W107Zm9yKGNvbnN0IHMgb2Ygbi5vcHRpb25zKXtjb25zdCBjPXMuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxlKTtjIGluc3RhbmNlb2YgUHJvbWlzZT8oYS5wdXNoKGMpLGk9ITApOmEucHVzaChjKX1yZXR1cm4gaT9Qcm9taXNlLmFsbChhKS50aGVuKHM9PmVzKHMsbyx0LGUpKTplcyhhLG8sdCxlKX19KSxadT1kKCIkWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwodCxuKT0+e24uaW5jbHVzaXZlPSExLE1uLmluaXQodCxuKTtjb25zdCByPXQuX3pvZC5wYXJzZTtUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pntjb25zdCBlPXt9O2Zvcihjb25zdCBpIG9mIG4ub3B0aW9ucyl7Y29uc3QgYT1pLl96b2QucHJvcFZhbHVlcztpZighYXx8T2JqZWN0LmtleXMoYSkubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggIiR7bi5vcHRpb25zLmluZGV4T2YoaSl9ImApO2Zvcihjb25zdFtzLGNdb2YgT2JqZWN0LmVudHJpZXMoYSkpe2Vbc118fChlW3NdPW5ldyBTZXQpO2Zvcihjb25zdCB1IG9mIGMpZVtzXS5hZGQodSl9fXJldHVybiBlfSk7Y29uc3Qgbz0kdCgoKT0+e2NvbnN0IGU9bi5vcHRpb25zLGk9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBzPWEuX3pvZC5wcm9wVmFsdWVzPy5bbi5kaXNjcmltaW5hdG9yXTtpZighc3x8cy5zaXplPT09MCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggIiR7bi5vcHRpb25zLmluZGV4T2YoYSl9ImApO2Zvcihjb25zdCBjIG9mIHMpe2lmKGkuaGFzKGMpKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGRpc2NyaW1pbmF0b3IgdmFsdWUgIiR7U3RyaW5nKGMpfSJgKTtpLnNldChjLGEpfX1yZXR1cm4gaX0pO3QuX3pvZC5wYXJzZT0oZSxpKT0+e2NvbnN0IGE9ZS52YWx1ZTtpZighQWUoYSkpcmV0dXJuIGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im9iamVjdCIsaW5wdXQ6YSxpbnN0OnR9KSxlO2NvbnN0IHM9by52YWx1ZS5nZXQoYT8uW24uZGlzY3JpbWluYXRvcl0pO3JldHVybiBzP3MuX3pvZC5ydW4oZSxpKTpuLnVuaW9uRmFsbGJhY2t8fGkuZGlyZWN0aW9uPT09ImJhY2t3YXJkIj9yKGUsaSk6KGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGVycm9yczpbXSxub3RlOiJObyBtYXRjaGluZyBkaXNjcmltaW5hdG9yIixkaXNjcmltaW5hdG9yOm4uZGlzY3JpbWluYXRvcixvcHRpb25zOkFycmF5LmZyb20oby52YWx1ZS5rZXlzKCkpLGlucHV0OmEscGF0aDpbbi5kaXNjcmltaW5hdG9yXSxpbnN0OnR9KSxlKX19KSxSdT1kKCIkWm9kSW50ZXJzZWN0aW9uIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZSxpPW4ubGVmdC5fem9kLnJ1bih7dmFsdWU6ZSxpc3N1ZXM6W119LG8pLGE9bi5yaWdodC5fem9kLnJ1bih7dmFsdWU6ZSxpc3N1ZXM6W119LG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZXx8YSBpbnN0YW5jZW9mIFByb21pc2U/UHJvbWlzZS5hbGwoW2ksYV0pLnRoZW4oKFtjLHVdKT0+dHMocixjLHUpKTp0cyhyLGksYSl9fSk7ZnVuY3Rpb24gQnIodCxuKXtpZih0PT09bilyZXR1cm57dmFsaWQ6ITAsZGF0YTp0fTtpZih0IGluc3RhbmNlb2YgRGF0ZSYmbiBpbnN0YW5jZW9mIERhdGUmJit0PT0rbilyZXR1cm57dmFsaWQ6ITAsZGF0YTp0fTtpZihUZSh0KSYmVGUobikpe2NvbnN0IHI9T2JqZWN0LmtleXMobiksbz1PYmplY3Qua2V5cyh0KS5maWx0ZXIoaT0+ci5pbmRleE9mKGkpIT09LTEpLGU9ey4uLnQsLi4ubn07Zm9yKGNvbnN0IGkgb2Ygbyl7Y29uc3QgYT1Ccih0W2ldLG5baV0pO2lmKCFhLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbaSwuLi5hLm1lcmdlRXJyb3JQYXRoXX07ZVtpXT1hLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6ZX19aWYoQXJyYXkuaXNBcnJheSh0KSYmQXJyYXkuaXNBcnJheShuKSl7aWYodC5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IHI9W107Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGU9dFtvXSxpPW5bb10sYT1CcihlLGkpO2lmKCFhLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbbywuLi5hLm1lcmdlRXJyb3JQYXRoXX07ci5wdXNoKGEuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6cn19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiB0cyh0LG4scil7Y29uc3Qgbz1uZXcgTWFwO2xldCBlO2Zvcihjb25zdCBzIG9mIG4uaXNzdWVzKWlmKHMuY29kZT09PSJ1bnJlY29nbml6ZWRfa2V5cyIpe2U/PyhlPXMpO2Zvcihjb25zdCBjIG9mIHMua2V5cylvLmhhcyhjKXx8by5zZXQoYyx7fSksby5nZXQoYykubD0hMH1lbHNlIHQuaXNzdWVzLnB1c2gocyk7Zm9yKGNvbnN0IHMgb2Ygci5pc3N1ZXMpaWYocy5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIilmb3IoY29uc3QgYyBvZiBzLmtleXMpby5oYXMoYyl8fG8uc2V0KGMse30pLG8uZ2V0KGMpLnI9ITA7ZWxzZSB0Lmlzc3Vlcy5wdXNoKHMpO2NvbnN0IGk9Wy4uLm9dLmZpbHRlcigoWyxzXSk9PnMubCYmcy5yKS5tYXAoKFtzXSk9PnMpO2lmKGkubGVuZ3RoJiZlJiZ0Lmlzc3Vlcy5wdXNoKHsuLi5lLGtleXM6aX0pLHplKHQpKXJldHVybiB0O2NvbnN0IGE9QnIobi52YWx1ZSxyLnZhbHVlKTtpZighYS52YWxpZCl0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KGEubWVyZ2VFcnJvclBhdGgpfWApO3JldHVybiB0LnZhbHVlPWEuZGF0YSx0fWNvbnN0IFNpPWQoIiRab2RUdXBsZSIsKHQsbik9PntJLmluaXQodCxuKTtjb25zdCByPW4uaXRlbXM7dC5fem9kLnBhcnNlPShvLGUpPT57Y29uc3QgaT1vLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtpbnB1dDppLGluc3Q6dCxleHBlY3RlZDoidHVwbGUiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvO28udmFsdWU9W107Y29uc3QgYT1bXSxzPW5zKHIsIm9wdGluIiksYz1ucyhyLCJvcHRvdXQiKTtpZighbi5yZXN0KXtpZihpLmxlbmd0aDxzKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cyxpbmNsdXNpdmU6ITAsaW5wdXQ6aSxpbnN0OnQsb3JpZ2luOiJhcnJheSJ9KSxvO2kubGVuZ3RoPnIubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnIubGVuZ3RoLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6dCxvcmlnaW46ImFycmF5In0pfWNvbnN0IHU9bmV3IEFycmF5KHIubGVuZ3RoKTtmb3IobGV0IGw9MDtsPHIubGVuZ3RoO2wrKyl7Y29uc3QgZz1yW2xdLl96b2QucnVuKHt2YWx1ZTppW2xdLGlzc3VlczpbXX0sZSk7ZyBpbnN0YW5jZW9mIFByb21pc2U/YS5wdXNoKGcudGhlbih2PT57dVtsXT12fSkpOnVbbF09Z31pZihuLnJlc3Qpe2xldCBsPXIubGVuZ3RoLTE7Y29uc3QgZz1pLnNsaWNlKHIubGVuZ3RoKTtmb3IoY29uc3QgdiBvZiBnKXtsKys7Y29uc3QgXz1uLnJlc3QuX3pvZC5ydW4oe3ZhbHVlOnYsaXNzdWVzOltdfSxlKTtfIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goXy50aGVuKHk9PnJzKHksbyxsKSkpOnJzKF8sbyxsKX19cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9PmlzKHUsbyxyLGksYykpOmlzKHUsbyxyLGksYyl9fSk7ZnVuY3Rpb24gbnModCxuKXtmb3IobGV0IHI9dC5sZW5ndGgtMTtyPj0wO3ItLSlpZih0W3JdLl96b2Rbbl0hPT0ib3B0aW9uYWwiKXJldHVybiByKzE7cmV0dXJuIDB9ZnVuY3Rpb24gcnModCxuLHIpe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi5jZShyLHQuaXNzdWVzKSksbi52YWx1ZVtyXT10LnZhbHVlfWZ1bmN0aW9uIGlzKHQsbixyLG8sZSl7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IGE9dFtpXSxzPWk8by5sZW5ndGg7aWYoYS5pc3N1ZXMubGVuZ3RoKXtpZighcyYmaT49ZSl7bi52YWx1ZS5sZW5ndGg9aTticmVha31uLmlzc3Vlcy5wdXNoKC4uLmNlKGksYS5pc3N1ZXMpKX1uLnZhbHVlW2ldPWEudmFsdWV9Zm9yKGxldCBpPW4udmFsdWUubGVuZ3RoLTE7aT49by5sZW5ndGgmJihyW2ldLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIiYmbi52YWx1ZVtpXT09PXZvaWQgMCk7aS0tKW4udmFsdWUubGVuZ3RoPWk7cmV0dXJuIG59Y29uc3QgQ3U9ZCgiJFpvZFJlY29yZCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIVRlKGUpKXJldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoicmVjb3JkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscjtjb25zdCBpPVtdLGE9bi5rZXlUeXBlLl96b2QudmFsdWVzO2lmKGEpe3IudmFsdWU9e307Y29uc3Qgcz1uZXcgU2V0O2Zvcihjb25zdCB1IG9mIGEpaWYodHlwZW9mIHU9PSJzdHJpbmcifHx0eXBlb2YgdT09Im51bWJlciJ8fHR5cGVvZiB1PT0ic3ltYm9sIil7cy5hZGQodHlwZW9mIHU9PSJudW1iZXIiP3UudG9TdHJpbmcoKTp1KTtjb25zdCBsPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LG8pO2lmKGwgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKGwuaXNzdWVzLmxlbmd0aCl7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6bC5pc3N1ZXMubWFwKF89PmllKF8sbyxIKCkpKSxpbnB1dDp1LHBhdGg6W3VdLGluc3Q6dH0pO2NvbnRpbnVlfWNvbnN0IGc9bC52YWx1ZSx2PW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTplW3VdLGlzc3VlczpbXX0sbyk7diBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKHYudGhlbihfPT57Xy5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLmNlKHUsXy5pc3N1ZXMpKSxyLnZhbHVlW2ddPV8udmFsdWV9KSk6KHYuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi5jZSh1LHYuaXNzdWVzKSksci52YWx1ZVtnXT12LnZhbHVlKX1sZXQgYztmb3IoY29uc3QgdSBpbiBlKXMuaGFzKHUpfHwoYz1jPz9bXSxjLnB1c2godSkpO2MmJmMubGVuZ3RoPjAmJnIuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDplLGluc3Q6dCxrZXlzOmN9KX1lbHNle3IudmFsdWU9e307Zm9yKGNvbnN0IHMgb2YgUmVmbGVjdC5vd25LZXlzKGUpKXtpZihzPT09Il9fcHJvdG9fXyJ8fCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxzKSljb250aW51ZTtsZXQgYz1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnMsaXNzdWVzOltdfSxvKTtpZihjIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtpZih0eXBlb2Ygcz09InN0cmluZyImJnZpLnRlc3QocykmJmMuaXNzdWVzLmxlbmd0aCl7Y29uc3QgZz1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOk51bWJlcihzKSxpc3N1ZXM6W119LG8pO2lmKGcgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2cuaXNzdWVzLmxlbmd0aD09PTAmJihjPWcpfWlmKGMuaXNzdWVzLmxlbmd0aCl7bi5tb2RlPT09Imxvb3NlIj9yLnZhbHVlW3NdPWVbc106ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6Yy5pc3N1ZXMubWFwKGc9PmllKGcsbyxIKCkpKSxpbnB1dDpzLHBhdGg6W3NdLGluc3Q6dH0pO2NvbnRpbnVlfWNvbnN0IGw9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmVbc10saXNzdWVzOltdfSxvKTtsIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2gobC50aGVuKGc9PntnLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4uY2UocyxnLmlzc3VlcykpLHIudmFsdWVbYy52YWx1ZV09Zy52YWx1ZX0pKToobC5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLmNlKHMsbC5pc3N1ZXMpKSxyLnZhbHVlW2MudmFsdWVdPWwudmFsdWUpfX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KSxBdT1kKCIkWm9kTWFwIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighKGUgaW5zdGFuY2VvZiBNYXApKXJldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscjtjb25zdCBpPVtdO3IudmFsdWU9bmV3IE1hcDtmb3IoY29uc3RbYSxzXW9mIGUpe2NvbnN0IGM9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTphLGlzc3VlczpbXX0sbyksdT1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO2MgaW5zdGFuY2VvZiBQcm9taXNlfHx1IGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goUHJvbWlzZS5hbGwoW2MsdV0pLnRoZW4oKFtsLGddKT0+e29zKGwsZyxyLGEsZSx0LG8pfSkpOm9zKGMsdSxyLGEsZSx0LG8pfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pO2Z1bmN0aW9uIG9zKHQsbixyLG8sZSxpLGEpe3QuaXNzdWVzLmxlbmd0aCYmKHhuLmhhcyh0eXBlb2Ygbyk/ci5pc3N1ZXMucHVzaCguLi5jZShvLHQuaXNzdWVzKSk6ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoibWFwIixpbnB1dDplLGluc3Q6aSxpc3N1ZXM6dC5pc3N1ZXMubWFwKHM9PmllKHMsYSxIKCkpKX0pKSxuLmlzc3Vlcy5sZW5ndGgmJih4bi5oYXModHlwZW9mIG8pP3IuaXNzdWVzLnB1c2goLi4uY2UobyxuLmlzc3VlcykpOnIuaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OmUsaW5zdDppLGtleTpvLGlzc3VlczpuLmlzc3Vlcy5tYXAocz0+aWUocyxhLEgoKSkpfSkpLHIudmFsdWUuc2V0KHQudmFsdWUsbi52YWx1ZSl9Y29uc3QgTHU9ZCgiJFpvZFNldCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIShlIGluc3RhbmNlb2YgU2V0KSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7aW5wdXQ6ZSxpbnN0OnQsZXhwZWN0ZWQ6InNldCIsY29kZToiaW52YWxpZF90eXBlIn0pLHI7Y29uc3QgaT1bXTtyLnZhbHVlPW5ldyBTZXQ7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3Qgcz1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6YSxpc3N1ZXM6W119LG8pO3MgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChzLnRoZW4oYz0+YXMoYyxyKSkpOmFzKHMscil9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24gYXModCxuKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4udC5pc3N1ZXMpLG4udmFsdWUuYWRkKHQudmFsdWUpfWNvbnN0IE11PWQoIiRab2RFbnVtIiwodCxuKT0+e0kuaW5pdCh0LG4pO2NvbnN0IHI9UXIobi5lbnRyaWVzKSxvPW5ldyBTZXQocik7dC5fem9kLnZhbHVlcz1vLHQuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtyLmZpbHRlcihlPT54bi5oYXModHlwZW9mIGUpKS5tYXAoZT0+dHlwZW9mIGU9PSJzdHJpbmciP3ZlKGUpOmUudG9TdHJpbmcoKSkuam9pbigifCIpfSkkYCksdC5fem9kLnBhcnNlPShlLGkpPT57Y29uc3QgYT1lLnZhbHVlO3JldHVybiBvLmhhcyhhKXx8ZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnIsaW5wdXQ6YSxpbnN0OnR9KSxlfX0pLHF1PWQoIiRab2RMaXRlcmFsIiwodCxuKT0+e2lmKEkuaW5pdCh0LG4pLG4udmFsdWVzLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY3JlYXRlIGxpdGVyYWwgc2NoZW1hIHdpdGggbm8gdmFsaWQgdmFsdWVzIik7Y29uc3Qgcj1uZXcgU2V0KG4udmFsdWVzKTt0Ll96b2QudmFsdWVzPXIsdC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke24udmFsdWVzLm1hcChvPT50eXBlb2Ygbz09InN0cmluZyI/dmUobyk6bz92ZShvLnRvU3RyaW5nKCkpOlN0cmluZyhvKSkuam9pbigifCIpfSkkYCksdC5fem9kLnBhcnNlPShvLGUpPT57Y29uc3QgaT1vLnZhbHVlO3JldHVybiByLmhhcyhpKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOm4udmFsdWVzLGlucHV0OmksaW5zdDp0fSksb319KSxGdT1kKCIkWm9kRmlsZSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIGUgaW5zdGFuY2VvZiBGaWxlfHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksSnU9ZCgiJFpvZFRyYW5zZm9ybSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIix0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IERuKHQuY29uc3RydWN0b3IubmFtZSk7Y29uc3QgZT1uLnRyYW5zZm9ybShyLnZhbHVlLHIpO2lmKG8uYXN5bmMpcmV0dXJuKGUgaW5zdGFuY2VvZiBQcm9taXNlP2U6UHJvbWlzZS5yZXNvbHZlKGUpKS50aGVuKGE9PihyLnZhbHVlPWEsci5mYWxsYmFjaz0hMCxyKSk7aWYoZSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IHhlO3JldHVybiByLnZhbHVlPWUsci5mYWxsYmFjaz0hMCxyfX0pO2Z1bmN0aW9uIHNzKHQsbil7cmV0dXJuIG49PT12b2lkIDAmJih0Lmlzc3Vlcy5sZW5ndGh8fHQuZmFsbGJhY2spP3tpc3N1ZXM6W10sdmFsdWU6dm9pZCAwfTp0fWNvbnN0IHdpPWQoIiRab2RPcHRpb25hbCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIix0Ll96b2Qub3B0b3V0PSJvcHRpb25hbCIsVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uaW5uZXJUeXBlLl96b2QudmFsdWVzLHZvaWQgMF0pOnZvaWQgMCksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT57Y29uc3Qgcj1uLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIHI/bmV3IFJlZ0V4cChgXigke05uKHIuc291cmNlKX0pPyRgKTp2b2lkIDB9KSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmlubmVyVHlwZS5fem9kLm9wdGluPT09Im9wdGlvbmFsIil7Y29uc3QgZT1yLnZhbHVlLGk9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PnNzKGEsZSkpOnNzKGksZSl9cmV0dXJuIHIudmFsdWU9PT12b2lkIDA/cjpuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfX0pLEh1PWQoIiRab2RFeGFjdE9wdGlvbmFsIiwodCxuKT0+e3dpLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pm4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9KSxWdT1kKCIkWm9kTnVsbGFibGUiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxUKHQuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCByPW4uaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gcj9uZXcgUmVnRXhwKGBeKCR7Tm4oci5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ubi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsbnVsbF0pOnZvaWQgMCksdC5fem9kLnBhcnNlPShyLG8pPT5yLnZhbHVlPT09bnVsbD9yOm4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9KSxLdT1kKCIkWm9kRGVmYXVsdCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtpZihyLnZhbHVlPT09dm9pZCAwKXJldHVybiByLnZhbHVlPW4uZGVmYXVsdFZhbHVlLHI7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+Y3MoaSxuKSk6Y3MoZSxuKX19KTtmdW5jdGlvbiBjcyh0LG4pe3JldHVybiB0LnZhbHVlPT09dm9pZCAwJiYodC52YWx1ZT1uLmRlZmF1bHRWYWx1ZSksdH1jb25zdCBXdT1kKCIkWm9kUHJlZmF1bHQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fHIudmFsdWU9PT12b2lkIDAmJihyLnZhbHVlPW4uZGVmYXVsdFZhbHVlKSxuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pKX0pLEJ1PWQoIiRab2ROb25PcHRpb25hbCIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+e2NvbnN0IHI9bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIHI/bmV3IFNldChbLi4ucl0uZmlsdGVyKG89Pm8hPT12b2lkIDApKTp2b2lkIDB9KSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT51cyhpLHQpKTp1cyhlLHQpfX0pO2Z1bmN0aW9uIHVzKHQsbil7cmV0dXJuIXQuaXNzdWVzLmxlbmd0aCYmdC52YWx1ZT09PXZvaWQgMCYmdC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoibm9ub3B0aW9uYWwiLGlucHV0OnQudmFsdWUsaW5zdDpufSksdH1jb25zdCBHdT1kKCIkWm9kU3VjY2VzcyIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IERuKCJab2RTdWNjZXNzIik7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+KHIudmFsdWU9aS5pc3N1ZXMubGVuZ3RoPT09MCxyKSk6KHIudmFsdWU9ZS5pc3N1ZXMubGVuZ3RoPT09MCxyKX19KSxYdT1kKCIkWm9kQ2F0Y2giLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLnZhbHVlLGkuaXNzdWVzLmxlbmd0aCYmKHIudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi5yLGVycm9yOntpc3N1ZXM6aS5pc3N1ZXMubWFwKGE9PmllKGEsbyxIKCkpKX0saW5wdXQ6ci52YWx1ZX0pLHIuaXNzdWVzPVtdLHIuZmFsbGJhY2s9ITApLHIpKTooci52YWx1ZT1lLnZhbHVlLGUuaXNzdWVzLmxlbmd0aCYmKHIudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi5yLGVycm9yOntpc3N1ZXM6ZS5pc3N1ZXMubWFwKGk9PmllKGksbyxIKCkpKX0saW5wdXQ6ci52YWx1ZX0pLHIuaXNzdWVzPVtdLHIuZmFsbGJhY2s9ITApLHIpfX0pLFl1PWQoIiRab2ROYU4iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT4oKHR5cGVvZiByLnZhbHVlIT0ibnVtYmVyInx8IU51bWJlci5pc05hTihyLnZhbHVlKSkmJnIuaXNzdWVzLnB1c2goe2lucHV0OnIudmFsdWUsaW5zdDp0LGV4cGVjdGVkOiJuYW4iLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxyKX0pLElpPWQoIiRab2RQaXBlIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmluLl96b2QudmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmluLl96b2Qub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLm91dC5fem9kLm9wdG91dCksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmluLl96b2QucHJvcFZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCBpPW4ub3V0Ll96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT5rbihhLG4uaW4sbykpOmtuKGksbi5pbixvKX1jb25zdCBlPW4uaW4uX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PmtuKGksbi5vdXQsbykpOmtuKGUsbi5vdXQsbyl9fSk7ZnVuY3Rpb24ga24odCxuLHIpe3JldHVybiB0Lmlzc3Vlcy5sZW5ndGg/KHQuYWJvcnRlZD0hMCx0KTpuLl96b2QucnVuKHt2YWx1ZTp0LnZhbHVlLGlzc3Vlczp0Lmlzc3VlcyxmYWxsYmFjazp0LmZhbGxiYWNrfSxyKX1jb25zdCB6aT1kKCIkWm9kQ29kZWMiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW4uX3pvZC52YWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW4uX3pvZC5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4ub3V0Ll96b2Qub3B0b3V0KSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW4uX3pvZC5wcm9wVmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZigoby5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IGk9bi5pbi5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+U24oYSxuLG8pKTpTbihpLG4sbyl9ZWxzZXtjb25zdCBpPW4ub3V0Ll96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT5TbihhLG4sbykpOlNuKGksbixvKX19fSk7ZnVuY3Rpb24gU24odCxuLHIpe2lmKHQuaXNzdWVzLmxlbmd0aClyZXR1cm4gdC5hYm9ydGVkPSEwLHQ7aWYoKHIuZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBlPW4udHJhbnNmb3JtKHQudmFsdWUsdCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT53bih0LGksbi5vdXQscikpOnduKHQsZSxuLm91dCxyKX1lbHNle2NvbnN0IGU9bi5yZXZlcnNlVHJhbnNmb3JtKHQudmFsdWUsdCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT53bih0LGksbi5pbixyKSk6d24odCxlLG4uaW4scil9fWZ1bmN0aW9uIHduKHQsbixyLG8pe3JldHVybiB0Lmlzc3Vlcy5sZW5ndGg/KHQuYWJvcnRlZD0hMCx0KTpyLl96b2QucnVuKHt2YWx1ZTpuLGlzc3Vlczp0Lmlzc3Vlc30sbyl9Y29uc3QgUXU9ZCgiJFpvZFByZXByb2Nlc3MiLCh0LG4pPT57SWkuaW5pdCh0LG4pfSksZWw9ZCgiJFpvZFJlYWRvbmx5IiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihscyk6bHMoZSl9fSk7ZnVuY3Rpb24gbHModCl7cmV0dXJuIHQudmFsdWU9T2JqZWN0LmZyZWV6ZSh0LnZhbHVlKSx0fWNvbnN0IHRsPWQoIiRab2RUZW1wbGF0ZUxpdGVyYWwiLCh0LG4pPT57SS5pbml0KHQsbik7Y29uc3Qgcj1bXTtmb3IoY29uc3QgbyBvZiBuLnBhcnRzKWlmKHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwpe2lmKCFvLl96b2QucGF0dGVybil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0LCBubyBwYXR0ZXJuIGZvdW5kOiAke1suLi5vLl96b2QudHJhaXRzXS5zaGlmdCgpfWApO2NvbnN0IGU9by5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHA/by5fem9kLnBhdHRlcm4uc291cmNlOm8uX3pvZC5wYXR0ZXJuO2lmKCFlKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7by5fem9kLnRyYWl0c31gKTtjb25zdCBpPWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxhPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3IucHVzaChlLnNsaWNlKGksYSkpfWVsc2UgaWYobz09PW51bGx8fGpzLmhhcyh0eXBlb2Ygbykpci5wdXNoKHZlKGAke299YCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvfWApO3QuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke3Iuam9pbigiIil9JGApLHQuX3pvZC5wYXJzZT0obyxlKT0+dHlwZW9mIG8udmFsdWUhPSJzdHJpbmciPyhvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6dCxleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbyk6KHQuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLHQuX3pvZC5wYXR0ZXJuLnRlc3Qoby52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDp0LGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6bi5mb3JtYXQ/PyJ0ZW1wbGF0ZV9saXRlcmFsIixwYXR0ZXJuOnQuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLG8pfSksbmw9ZCgiJFpvZEZ1bmN0aW9uIiwodCxuKT0+KEkuaW5pdCh0LG4pLHQuX2RlZj1uLHQuX3pvZC5kZWY9bix0LmltcGxlbWVudD1yPT57aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gZnVuY3Rpb24oLi4ubyl7Y29uc3QgZT10Ll9kZWYuaW5wdXQ/S3IodC5fZGVmLmlucHV0LG8pOm8saT1SZWZsZWN0LmFwcGx5KHIsdGhpcyxlKTtyZXR1cm4gdC5fZGVmLm91dHB1dD9Lcih0Ll9kZWYub3V0cHV0LGkpOml9fSx0LmltcGxlbWVudEFzeW5jPXI9PntpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudEFzeW5jKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uIik7cmV0dXJuIGFzeW5jIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IGU9dC5fZGVmLmlucHV0P2F3YWl0IFdyKHQuX2RlZi5pbnB1dCxvKTpvLGk9YXdhaXQgUmVmbGVjdC5hcHBseShyLHRoaXMsZSk7cmV0dXJuIHQuX2RlZi5vdXRwdXQ/YXdhaXQgV3IodC5fZGVmLm91dHB1dCxpKTppfX0sdC5fem9kLnBhcnNlPShyLG8pPT50eXBlb2Ygci52YWx1ZSE9ImZ1bmN0aW9uIj8oci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoiZnVuY3Rpb24iLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscik6KHQuX2RlZi5vdXRwdXQmJnQuX2RlZi5vdXRwdXQuX3pvZC5kZWYudHlwZT09PSJwcm9taXNlIj9yLnZhbHVlPXQuaW1wbGVtZW50QXN5bmMoci52YWx1ZSk6ci52YWx1ZT10LmltcGxlbWVudChyLnZhbHVlKSxyKSx0LmlucHV0PSguLi5yKT0+e2NvbnN0IG89dC5jb25zdHJ1Y3RvcjtyZXR1cm4gQXJyYXkuaXNBcnJheShyWzBdKT9uZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0Om5ldyBTaSh7dHlwZToidHVwbGUiLGl0ZW1zOnJbMF0scmVzdDpyWzFdfSksb3V0cHV0OnQuX2RlZi5vdXRwdXR9KTpuZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0OnJbMF0sb3V0cHV0OnQuX2RlZi5vdXRwdXR9KX0sdC5vdXRwdXQ9cj0+e2NvbnN0IG89dC5jb25zdHJ1Y3RvcjtyZXR1cm4gbmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDp0Ll9kZWYuaW5wdXQsb3V0cHV0OnJ9KX0sdCkpLHJsPWQoIiRab2RQcm9taXNlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+UHJvbWlzZS5yZXNvbHZlKHIudmFsdWUpLnRoZW4oZT0+bi5pbm5lclR5cGUuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxvKSl9KSxpbD1kKCIkWm9kTGF6eSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwiaW5uZXJUeXBlIiwoKT0+e2NvbnN0IHI9bjtyZXR1cm4gci5fY2FjaGVkSW5uZXJ8fChyLl9jYWNoZWRJbm5lcj1uLmdldHRlcigpKSxyLl9jYWNoZWRJbm5lcn0pLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ucGF0dGVybiksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5wcm9wVmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRpbj8/dm9pZCAwKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0Pz92b2lkIDApLHQuX3pvZC5wYXJzZT0ocixvKT0+dC5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfSksb2w9ZCgiJFpvZEN1c3RvbSIsKHQsbik9PntNLmluaXQodCxuKSxJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PnIsdC5fem9kLmNoZWNrPXI9Pntjb25zdCBvPXIudmFsdWUsZT1uLmZuKG8pO2lmKGUgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBlLnRoZW4oaT0+ZHMoaSxyLG8sdCkpO2RzKGUscixvLHQpfX0pO2Z1bmN0aW9uIGRzKHQsbixyLG8pe2lmKCF0KXtjb25zdCBlPXtjb2RlOiJjdXN0b20iLGlucHV0OnIsaW5zdDpvLHBhdGg6Wy4uLm8uX3pvZC5kZWYucGF0aD8/W11dLGNvbnRpbnVlOiFvLl96b2QuZGVmLmFib3J0fTtvLl96b2QuZGVmLnBhcmFtcyYmKGUucGFyYW1zPW8uX3pvZC5kZWYucGFyYW1zKSxuLmlzc3Vlcy5wdXNoKExlKGUpKX19Y29uc3QgcHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itit2LHZgSIsdmVyYjoi2KPZhiDZitit2YjZiiJ9LGZpbGU6e3VuaXQ6Itio2KfZitiqIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sYXJyYXk6e3VuaXQ6Iti52YbYtdixIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sc2V0Ont1bml0OiLYudmG2LXYsSIsdmVyYjoi2KPZhiDZitit2YjZiiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLZhdiv2K7ZhCIsZW1haWw6Itio2LHZitivINil2YTZg9iq2LHZiNmG2YoiLHVybDoi2LHYp9io2LciLGVtb2ppOiLYpdmK2YXZiNis2YoiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Itiq2KfYsdmK2K4g2YjZiNmC2Kog2KjZhdi52YrYp9ixIElTTyIsZGF0ZToi2KrYp9ix2YrYriDYqNmF2LnZitin2LEgSVNPIix0aW1lOiLZiNmC2Kog2KjZhdi52YrYp9ixIElTTyIsZHVyYXRpb246ItmF2K/YqSDYqNmF2LnZitin2LEgSVNPIixpcHY0OiLYudmG2YjYp9mGIElQdjQiLGlwdjY6Iti52YbZiNin2YYgSVB2NiIsY2lkcnY0OiLZhdiv2Ykg2LnZhtin2YjZitmGINio2LXZiti62KkgSVB2NCIsY2lkcnY2OiLZhdiv2Ykg2LnZhtin2YjZitmGINio2LXZiti62KkgSVB2NiIsYmFzZTY0OiLZhtmO2LUg2KjYqtix2YXZitiyIGJhc2U2NC1lbmNvZGVkIixiYXNlNjR1cmw6ItmG2Y7YtSDYqNiq2LHZhdmK2LIgYmFzZTY0dXJsLWVuY29kZWQiLGpzb25fc3RyaW5nOiLZhtmO2LUg2LnZhNmJINmH2YrYptipIEpTT04iLGUxNjQ6Itix2YLZhSDZh9in2KrZgSDYqNmF2LnZitin2LEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZhdiv2K7ZhCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7c31gOmDZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEICR7aX3YjCDZiNmE2YPZhiDYqtmFINil2K/Yrtin2YQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCAke2soZS52YWx1ZXNbMF0pfWA6YNin2K7YqtmK2KfYsSDYutmK2LEg2YXZgtio2YjZhDog2YrYqtmI2YLYuSDYp9mG2KrZgtin2KEg2KPYrdivINmH2LDZhyDYp9mE2K7Zitin2LHYp9iqOiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gINij2YPYqNixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INij2YYg2KrZg9mI2YYgJHtlLm9yaWdpbj8/Itin2YTZgtmK2YXYqSJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2LXYsSJ9YDpg2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2Uub3JpZ2luPz8i2KfZhNmC2YrZhdipIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNij2LXYutixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INmE2YAgJHtlLm9yaWdpbn0g2KPZhiDZitmD2YjZhiAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNij2LXYutixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INmE2YAgJHtlLm9yaWdpbn0g2KPZhiDZitmD2YjZhiAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqNiv2KMg2KjZgCAiJHtlLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YbYqtmH2Yog2KjZgCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqti22YXZkdmO2YYgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYt9in2KjZgiDYp9mE2YbZhdi3ICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDYutmK2LEg2YXZgtio2YjZhGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYsdmC2YUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YPZiNmGINmF2YYg2YXYttin2LnZgdin2KogJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2YXYudix2YEke2Uua2V5cy5sZW5ndGg+MT8i2KfYqiI6IiJ9INi62LHZitioJHtlLmtleXMubGVuZ3RoPjE/ItipIjoiIn06ICR7JChlLmtleXMsItiMICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNmF2LnYsdmBINi62YrYsSDZhdmC2KjZiNmEINmB2YogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItmF2K/YrtmEINi62YrYsSDZhdmC2KjZiNmEIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNmF2K/YrtmEINi62YrYsSDZhdmC2KjZiNmEINmB2YogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItmF2K/YrtmEINi62YrYsSDZhdmC2KjZiNmEIn19fTtmdW5jdGlvbiBmcCgpe3JldHVybntsb2NhbGVFcnJvcjpwcCgpfX1jb25zdCBncD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoic2ltdm9sIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sc2V0Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJvbG1hbMSxZMSxciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBkYXhpbCBvbGFuICR7c31gOmBZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7aX0sIGRheGlsIG9sYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiAke2soZS52YWx1ZXNbMF0pfWA6YFlhbmzEscWfIHNlw6dpbTogYcWfYcSfxLFkYWvEsWxhcmRhbiBiaXJpIG9sbWFsxLFkxLFyOiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudCJ9YDpgw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dveCBracOnaWs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YMOHb3gga2nDp2lrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BZYW5sxLHFnyBtyZl0bjogIiR7aS5wcmVmaXh9IiBpbMmZIGJhxZ9sYW1hbMSxZMSxcmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gWWFubMSxxZ8gbcmZdG46ICIke2kuc3VmZml4fSIgaWzJmSBiaXRtyZlsaWRpcmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BZYW5sxLHFnyBtyZl0bjogIiR7aS5pbmNsdWRlc30iIGRheGlsIG9sbWFsxLFkxLFyYDppLmZvcm1hdD09PSJyZWdleCI/YFlhbmzEscWfIG3JmXRuOiAke2kucGF0dGVybn0gxZ9hYmxvbnVuYSB1ecSfdW4gb2xtYWzEsWTEsXJgOmBZYW5sxLHFnyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gWWFubMSxxZ8gyZlkyZlkOiAke2UuZGl2aXNvcn0gaWzJmSBiw7Zsw7xuyZkgYmlsyZluIG9sbWFsxLFkxLFyYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVGFuxLFubWF5YW4gYcOnYXIke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGF4aWxpbmTJmSB5YW5sxLHFnyBhw6dhcmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iWWFubMSxxZ8gZMmZecmZciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGTJmXnJmXJgO2RlZmF1bHQ6cmV0dXJuIllhbmzEscWfIGTJmXnJmXIifX19O2Z1bmN0aW9uIHZwKCl7cmV0dXJue2xvY2FsZUVycm9yOmdwKCl9fWZ1bmN0aW9uIG1zKHQsbixyLG8pe2NvbnN0IGU9TWF0aC5hYnModCksaT1lJTEwLGE9ZSUxMDA7cmV0dXJuIGE+PTExJiZhPD0xOT9vOmk9PT0xP246aT49MiYmaTw9ND9yOm99Y29uc3QgaHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToi0YHRltC80LLQsNC7IixmZXc6ItGB0ZbQvNCy0LDQu9GLIixtYW55OiLRgdGW0LzQstCw0LvQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxhcnJheTp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtGLIixtYW55OiLRjdC70LXQvNC10L3RgtCw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9LHNldDp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtGLIixtYW55OiLRjdC70LXQvNC10L3RgtCw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9LGZpbGU6e3VuaXQ6e29uZToi0LHQsNC50YIiLGZldzoi0LHQsNC50YLRiyIsbWFueToi0LHQsNC50YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0YPQstC+0LQiLGVtYWlsOiJlbWFpbCDQsNC00YDQsNGBIix1cmw6IlVSTCIsZW1vamk6ItGN0LzQvtC00LfRliIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtCwINGWINGH0LDRgSIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0YfQsNGBIixkdXJhdGlvbjoiSVNPINC/0YDQsNGG0Y/Qs9C70LDRgdGG0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LDRgSIsaXB2NjoiSVB2NiDQsNC00YDQsNGBIixjaWRydjQ6IklQdjQg0LTRi9GP0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00YvRj9C/0LDQt9C+0L0iLGJhc2U2NDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjQiLGJhc2U2NHVybDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJKU09OINGA0LDQtNC+0LoiLGUxNjQ6ItC90YPQvNCw0YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLRg9Cy0L7QtCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItC70ZbQuiIsYXJyYXk6ItC80LDRgdGW0Z4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQsNGC0YDRi9C80LDQvdCwICR7c31gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNGe0YHRjyAke2l9LCDQsNGC0YDRi9C80LDQvdCwICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0LvQsNGB0Y8gJHtrKGUudmFsdWVzWzBdKX1gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLINCy0LDRgNGL0Y/QvdGCOiDRh9Cw0LrQsNGe0YHRjyDQsNC00LfRltC9INC3ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWF4aW11bSksYz1tcyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCX0LDQvdCw0LTRgtCwINCy0Y/Qu9GW0LrRljog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9GN0L3QvdC1In0g0L/QsNCy0ZbQvdC90LAgJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0Y3QvdC90LUifSDQv9Cw0LLRltC90L3QsCDQsdGL0YbRjCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWluaW11bSksYz1tcyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCX0LDQvdCw0LTRgtCwINC80LDQu9GLOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbn0g0L/QsNCy0ZbQvdC90LAgJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2lufSDQv9Cw0LLRltC90L3QsCDQsdGL0YbRjCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQv9Cw0YfRi9C90LDRhtGG0LAg0LcgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQt9Cw0LrQsNC90YfQstCw0YbRhtCwINC90LAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC30LzRj9GI0YfQsNGG0YwgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LDQtNC/0LDQstGP0LTQsNGG0Ywg0YjQsNCx0LvQvtC90YMgJHtpLnBhdHRlcm59YDpg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDQu9GW0Lo6INC/0LDQstGW0L3QtdC9INCx0YvRhtGMINC60YDQsNGC0L3Ri9C8ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNCw0YHQv9Cw0LfQvdCw0L3RiyAke2Uua2V5cy5sZW5ndGg+MT8i0LrQu9GO0YfRiyI6ItC60LvRjtGHIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDQutC70Y7RhyDRgyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdCw0LUg0LfQvdCw0YfRjdC90L3QtSDRniAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtCJ9fX07ZnVuY3Rpb24gX3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6aHAoKX19Y29uc3QgJHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItGB0LjQvNCy0L7Qu9CwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sZmlsZTp7dW5pdDoi0LHQsNC50YLQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9LGFycmF5Ont1bml0OiLQtdC70LXQvNC10L3RgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sc2V0Ont1bml0OiLQtdC70LXQvNC10L3RgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0YXQvtC0IixlbWFpbDoi0LjQvNC10LnQuyDQsNC00YDQtdGBIix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtC00LbQuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINCy0YDQtdC80LUiLGRhdGU6IklTTyDQtNCw0YLQsCIsdGltZToiSVNPINCy0YDQtdC80LUiLGR1cmF0aW9uOiJJU08g0L/RgNC+0LTRitC70LbQuNGC0LXQu9C90L7RgdGCIixpcHY0OiJJUHY0INCw0LTRgNC10YEiLGlwdjY6IklQdjYg0LDQtNGA0LXRgSIsY2lkcnY0OiJJUHY0INC00LjQsNC/0LDQt9C+0L0iLGNpZHJ2NjoiSVB2NiDQtNC40LDQv9Cw0LfQvtC9IixiYXNlNjQ6ImJhc2U2NC3QutC+0LTQuNGA0LDQvSDQvdC40LciLGJhc2U2NHVybDoiYmFzZTY0dXJsLdC60L7QtNC40YDQsNC9INC90LjQtyIsanNvbl9zdHJpbmc6IkpTT04g0L3QuNC3IixlMTY0OiJFLjE2NCDQvdC+0LzQtdGAIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLRhdC+0LQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLRh9C40YHQu9C+IixhcnJheToi0LzQsNGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/QvtC70YPRh9C10L0gJHtzfWA6YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gJHtpfSwg0L/QvtC70YPRh9C10L0gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSAke2soZS52YWx1ZXNbMF0pfWA6YNCd0LXQstCw0LvQuNC00L3QsCDQvtC/0YbQuNGPOiDQvtGH0LDQutCy0LDQvdC+INC10LTQvdC+INC+0YIgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW4/PyLRgdGC0L7QudC90L7RgdGCIn0g0LTQsCDRgdGK0LTRitGA0LbQsCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLQtdC70LXQvNC10L3RgtCwIn1gOmDQotCy0YrRgNC00LUg0LPQvtC70Y/QvNC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2luPz8i0YHRgtC+0LnQvdC+0YHRgiJ9INC00LAg0LHRitC00LUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0KLQstGK0YDQtNC1INC80LDQu9C60L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW59INC00LAg0YHRitC00YrRgNC20LAgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2lufSDQtNCwINCx0YrQtNC1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtpZihpLmZvcm1hdD09PSJzdGFydHNfd2l0aCIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINC30LDQv9C+0YfQstCwINGBICIke2kucHJlZml4fSJgO2lmKGkuZm9ybWF0PT09ImVuZHNfd2l0aCIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINC30LDQstGK0YDRiNCy0LAg0YEgIiR7aS5zdWZmaXh9ImA7aWYoaS5mb3JtYXQ9PT0iaW5jbHVkZXMiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQstC60LvRjtGH0LLQsCAiJHtpLmluY2x1ZGVzfSJgO2lmKGkuZm9ybWF0PT09InJlZ2V4IilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0YHRitCy0L/QsNC00LAg0YEgJHtpLnBhdHRlcm59YDtsZXQgYT0i0J3QtdCy0LDQu9C40LTQtdC9IjtyZXR1cm4gaS5mb3JtYXQ9PT0iZW1vamkiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdC+IiksaS5mb3JtYXQ9PT0iZGF0ZXRpbWUiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdC+IiksaS5mb3JtYXQ9PT0iZGF0ZSImJihhPSLQndC10LLQsNC70LjQtNC90LAiKSxpLmZvcm1hdD09PSJ0aW1lIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QviIpLGkuZm9ybWF0PT09ImR1cmF0aW9uIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QsCIpLGAke2F9ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQsNC70LjQtNC90L4g0YfQuNGB0LvQvjog0YLRgNGP0LHQstCwINC00LAg0LHRitC00LUg0LrRgNCw0YLQvdC+INC90LAgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDQt9C/0L7Qt9C90LDRgiR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItC+0LLQtSI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQutC70Y7RhyDQsiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0LXQstCw0LvQuNC00L3QsCDRgdGC0L7QudC90L7RgdGCINCyICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQifX19O2Z1bmN0aW9uIGJwKCl7cmV0dXJue2xvY2FsZUVycm9yOiRwKCl9fWNvbnN0IHlwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXLDoGN0ZXJzIix2ZXJiOiJjb250ZW5pciJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJjb250ZW5pciJ9LGFycmF5Ont1bml0OiJlbGVtZW50cyIsdmVyYjoiY29udGVuaXIifSxzZXQ6e3VuaXQ6ImVsZW1lbnRzIix2ZXJiOiJjb250ZW5pciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyYWRhIixlbWFpbDoiYWRyZcOnYSBlbGVjdHLDsm5pY2EiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgaSBob3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6ImhvcmEgSVNPIixkdXJhdGlvbjoiZHVyYWRhIElTTyIsaXB2NDoiYWRyZcOnYSBJUHY0IixpcHY2OiJhZHJlw6dhIElQdjYiLGNpZHJ2NDoicmFuZyBJUHY0IixjaWRydjY6InJhbmcgSVB2NiIsYmFzZTY0OiJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2FkZW5hIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVGlwdXMgaW52w6BsaWQ6IHMnZXNwZXJhdmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBzJ2hhIHJlYnV0ICR7c31gOmBUaXB1cyBpbnbDoGxpZDogcydlc3BlcmF2YSAke2l9LCBzJ2hhIHJlYnV0ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFZhbG9yIGludsOgbGlkOiBzJ2VzcGVyYXZhICR7ayhlLnZhbHVlc1swXSl9YDpgT3BjacOzIGludsOgbGlkYTogcydlc3BlcmF2YSB1bmEgZGUgJHskKGUudmFsdWVzLCIgbyAiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/ImNvbSBhIG3DoHhpbSI6Im1lbnlzIGRlIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNYXNzYSBncmFuOiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2luPz8iZWwgdmFsb3IifSBjb250aW5ndcOpcyAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudHMifWA6YE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW4/PyJlbCB2YWxvciJ9IGZvcyAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/ImNvbSBhIG3DrW5pbSI6Im3DqXMgZGUiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE1hc3NhIHBldGl0OiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2lufSBjb250aW5ndcOpcyAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YE1hc3NhIHBldGl0OiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2lufSBmb3MgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvbWVuw6dhciBhbWIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gRm9ybWF0IGludsOgbGlkOiBoYSBkJ2FjYWJhciBhbWIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGQnaW5jbG91cmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZGUgY29pbmNpZGlyIGFtYiBlbCBwYXRyw7MgJHtpLnBhdHRlcm59YDpgRm9ybWF0IGludsOgbGlkIHBlciBhICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOgbGlkOiBoYSBkZSBzZXIgbcO6bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsYXUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vIHJlY29uZWd1ZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsYXUgaW52w6BsaWRhIGEgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6BsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEVsZW1lbnQgaW52w6BsaWQgYSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoGxpZGEifX19O2Z1bmN0aW9uIGtwKCl7cmV0dXJue2xvY2FsZUVycm9yOnlwKCl9fWNvbnN0IFNwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrxa8iLHZlcmI6Im3DrXQifSxmaWxlOnt1bml0OiJiYWp0xa8iLHZlcmI6Im3DrXQifSxhcnJheTp7dW5pdDoicHJ2a8WvIix2ZXJiOiJtw610In0sc2V0Ont1bml0OiJwcnZrxa8iLHZlcmI6Im3DrXQifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoicmVndWzDoXJuw60gdsO9cmF6IixlbWFpbDoiZS1tYWlsb3bDoSBhZHJlc2EiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdHVtIGEgxI1hcyB2ZSBmb3Jtw6F0dSBJU08iLGRhdGU6ImRhdHVtIHZlIGZvcm3DoXR1IElTTyIsdGltZToixI1hcyB2ZSBmb3Jtw6F0dSBJU08iLGR1cmF0aW9uOiJkb2JhIHRydsOhbsOtIElTTyIsaXB2NDoiSVB2NCBhZHJlc2EiLGlwdjY6IklQdjYgYWRyZXNhIixjaWRydjQ6InJvenNhaCBJUHY0IixjaWRydjY6InJvenNhaCBJUHY2IixiYXNlNjQ6IsWZZXTEm3plYyB6YWvDs2RvdmFuw70gdmUgZm9ybcOhdHUgYmFzZTY0IixiYXNlNjR1cmw6IsWZZXTEm3plYyB6YWvDs2RvdmFuw70gdmUgZm9ybcOhdHUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoixZlldMSbemVjIHZlIGZvcm3DoXR1IEpTT04iLGUxNjQ6IsSNw61zbG8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ2c3R1cCJ9LG89e25hbjoiTmFOIixudW1iZXI6IsSNw61zbG8iLHN0cmluZzoixZlldMSbemVjIixmdW5jdGlvbjoiZnVua2NlIixhcnJheToicG9sZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9iZHLFvmVubyAke3N9YDpgTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtpfSwgb2JkcsW+ZW5vICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmVwbGF0bsOhIG1vxb5ub3N0OiBvxI1la8OhdsOhbmEgamVkbmEgeiBob2Rub3QgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEhvZG5vdGEgamUgcMWZw61sacWhIHZlbGvDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIGLDvXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gbcOtdCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJwcnZrxa8ifWA6YEhvZG5vdGEgamUgcMWZw61sacWhIG1hbMOhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIGLDvXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIHphxI3DrW5hdCBuYSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBrb27EjWl0IG5hICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gb2JzYWhvdmF0ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBvZHBvdsOtZGF0IHZ6b3J1ICR7aS5wYXR0ZXJufWA6YE5lcGxhdG7DvSBmb3Jtw6F0ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXBsYXRuw6kgxI3DrXNsbzogbXVzw60gYsO9dCBuw6Fzb2JrZW0gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmV6bsOhbcOpIGtsw63EjWU6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmVwbGF0bsO9IGtsw63EjSB2ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZXBsYXRuw70gdnN0dXAiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmVwbGF0bsOhIGhvZG5vdGEgdiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmVwbGF0bsO9IHZzdHVwIn19fTtmdW5jdGlvbiB3cCgpe3JldHVybntsb2NhbGVFcnJvcjpTcCgpfX1jb25zdCBJcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVnbiIsdmVyYjoiaGF2ZGUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGF2ZGUifSxhcnJheTp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiJpbmRlaG9sZHQifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiaW5kZWhvbGR0In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZS1tYWlsYWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdG8tIG9nIGtsb2trZXNsw6Z0IixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLWtsb2trZXNsw6Z0IixkdXJhdGlvbjoiSVNPLXZhcmlnaGVkIixpcHY0OiJJUHY0LW9tcsOlZGUiLGlwdjY6IklQdjYtb21yw6VkZSIsY2lkcnY0OiJJUHY0LXNwZWt0cnVtIixjaWRydjY6IklQdjYtc3Bla3RydW0iLGJhc2U2NDoiYmFzZTY0LWtvZGV0IHN0cmVuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29kZXQgc3RyZW5nIixqc29uX3N0cmluZzoiSlNPTi1zdHJlbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLHN0cmluZzoic3RyZW5nIixudW1iZXI6InRhbCIsYm9vbGVhbjoiYm9vbGVhbiIsYXJyYXk6Imxpc3RlIixvYmplY3Q6Im9iamVrdCIsc2V0OiJzw6Z0IixmaWxlOiJmaWwifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVWd5bGRpZ3QgaW5wdXQ6IGZvcnZlbnRlZGUgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWsgJHtzfWA6YFVneWxkaWd0IGlucHV0OiBmb3J2ZW50ZWRlICR7aX0sIGZpayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVZ3lsZGlnIHbDpnJkaTogZm9ydmVudGVkZSAke2soZS52YWx1ZXNbMF0pfWA6YFVneWxkaWd0IHZhbGc6IGZvcnZlbnRlZGUgZW4gYWYgZsO4bGdlbmRlICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BGb3Igc3RvcjogZm9ydmVudGVkZSAke3M/PyJ2YWx1ZSJ9ICR7YS52ZXJifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGVyIn1gOmBGb3Igc3RvcjogZm9ydmVudGVkZSAke3M/PyJ2YWx1ZSJ9IGhhdmRlICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BGb3IgbGlsbGU6IGZvcnZlbnRlZGUgJHtzfSAke2EudmVyYn0gJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBGb3IgbGlsbGU6IGZvcnZlbnRlZGUgJHtzfSBoYXZkZSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBza2FsIHN0YXJ0ZSBtZWQgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgZW5kZSBtZWQgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBpbmRlaG9sZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFVneWxkaWcgc3RyZW5nOiBza2FsIG1hdGNoZSBtw7huc3RlcmV0ICR7aS5wYXR0ZXJufWA6YFVneWxkaWcgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVneWxkaWd0IHRhbDogc2thbCB2w6ZyZSBkZWxlbGlndCBtZWQgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlVrZW5kdGUgbsO4Z2xlciI6IlVrZW5kdCBuw7hnbGUifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBVZ3lsZGlnIG7DuGdsZSBpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVZ3lsZGlndCBpbnB1dDogbWF0Y2hlciBpbmdlbiBhZiBkZSB0aWxsYWR0ZSB0eXBlciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBVZ3lsZGlnIHbDpnJkaSBpICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJVZ3lsZGlndCBpbnB1dCJ9fX07ZnVuY3Rpb24genAoKXtyZXR1cm57bG9jYWxlRXJyb3I6SXAoKX19Y29uc3QgeHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IlplaWNoZW4iLHZlcmI6Inp1IGhhYmVuIn0sZmlsZTp7dW5pdDoiQnl0ZXMiLHZlcmI6Inp1IGhhYmVuIn0sYXJyYXk6e3VuaXQ6IkVsZW1lbnRlIix2ZXJiOiJ6dSBoYWJlbiJ9LHNldDp7dW5pdDoiRWxlbWVudGUiLHZlcmI6Inp1IGhhYmVuIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IkVpbmdhYmUiLGVtYWlsOiJFLU1haWwtQWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJFbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLURhdHVtIHVuZCAtVWhyemVpdCIsZGF0ZToiSVNPLURhdHVtIix0aW1lOiJJU08tVWhyemVpdCIsZHVyYXRpb246IklTTy1EYXVlciIsaXB2NDoiSVB2NC1BZHJlc3NlIixpcHY2OiJJUHY2LUFkcmVzc2UiLGNpZHJ2NDoiSVB2NC1CZXJlaWNoIixjaWRydjY6IklQdjYtQmVyZWljaCIsYmFzZTY0OiJCYXNlNjQtY29kaWVydGVyIFN0cmluZyIsYmFzZTY0dXJsOiJCYXNlNjQtVVJMLWNvZGllcnRlciBTdHJpbmciLGpzb25fc3RyaW5nOiJKU09OLVN0cmluZyIsZTE2NDoiRS4xNjQtTnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiRWluZ2FiZSJ9LG89e25hbjoiTmFOIixudW1iZXI6IlphaGwiLGFycmF5OiJBcnJheSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZXJoYWx0ZW4gJHtzfWA6YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgJHtpfSwgZXJoYWx0ZW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke2soZS52YWx1ZXNbMF0pfWA6YFVuZ8O8bHRpZ2UgT3B0aW9uOiBlcndhcnRldCBlaW5lIHZvbiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWnUgZ3Jvw586IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW4/PyJXZXJ0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iRWxlbWVudGUifSBoYXRgOmBadSBncm/DnzogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbj8/IldlcnQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gaXN0YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWnUga2xlaW46IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gaGF0YDpgWnUga2xlaW46IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSBpc3RgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCAiJHtpLnByZWZpeH0iIGJlZ2lubmVuYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgbWl0ICIke2kuc3VmZml4fSIgZW5kZW5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzICIke2kuaW5jbHVkZXN9IiBlbnRoYWx0ZW5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIGRlbSBNdXN0ZXIgJHtpLnBhdHRlcm59IGVudHNwcmVjaGVuYDpgVW5nw7xsdGlnOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVW5nw7xsdGlnZSBaYWhsOiBtdXNzIGVpbiBWaWVsZmFjaGVzIHZvbiAke2UuZGl2aXNvcn0gc2VpbmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVbmJla2FubnRlIFNjaGzDvHNzZWwiOiJVbmJla2FubnRlciBTY2hsw7xzc2VsIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVW5nw7xsdGlnZXIgU2NobMO8c3NlbCBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVW5nw7xsdGlnZSBFaW5nYWJlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFdlcnQgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlVuZ8O8bHRpZ2UgRWluZ2FiZSJ9fX07ZnVuY3Rpb24gVHAoKXtyZXR1cm57bG9jYWxlRXJyb3I6eHAoKX19Y29uc3QganA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Is+HzrHPgc6xzrrPhM6uz4HOtc+CIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6Is69zrEgzq3Ph861zrkifSxhcnJheTp7dW5pdDoiz4PPhM6/zrnPh861zq/OsSIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LHNldDp7dW5pdDoiz4PPhM6/zrnPh861zq/OsSIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LG1hcDp7dW5pdDoizrrOsc+EzrHPh8+Jz4HOrs+DzrXOuc+CIix2ZXJiOiLOvc6xIM6tz4fOtc65In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Is61zq/Pg86/zrTOv8+CIixlbWFpbDoizrTOuc61z43OuM+Fzr3Pg863IGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gzrfOvM61z4HOv868zrfOvc6vzrEgzrrOsc65IM+Oz4HOsSIsZGF0ZToiSVNPIM63zrzOtc+Bzr/OvM63zr3Or86xIix0aW1lOiJJU08gz47Pgc6xIixkdXJhdGlvbjoiSVNPIM60zrnOrM+BzrrOtc65zrEiLGlwdjQ6Is60zrnOtc+NzrjPhc69z4POtyBJUHY0IixpcHY2OiLOtM65zrXPjc64z4XOvc+DzrcgSVB2NiIsbWFjOiLOtM65zrXPjc64z4XOvc+DzrcgTUFDIixjaWRydjQ6Is61z43Pgc6/z4IgSVB2NCIsY2lkcnY2OiLOtc+Nz4HOv8+CIElQdjYiLGJhc2U2NDoiz4PPhc68zrLOv867zr/Pg861zrnPgc6sIM66z4nOtM65zrrOv8+Azr/Ouc63zrzOrc69zrcgz4POtSBiYXNlNjQiLGJhc2U2NHVybDoiz4PPhc68zrLOv867zr/Pg861zrnPgc6sIM66z4nOtM65zrrOv8+Azr/Ouc63zrzOrc69zrcgz4POtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgSlNPTiIsZTE2NDoizrHPgc65zrjOvM+Mz4IgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLOtc6vz4POv860zr/PgiJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybiB0eXBlb2YgZS5leHBlY3RlZD09InN0cmluZyImJi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YM6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+COiDOsc69zrHOvM61zr3PjM+EzrHOvSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIM67zq7Phs64zrfOus61ICR7c31gOmDOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgjogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtpfSwgzrvOrs+GzrjOt866zrUgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gzpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4I6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ayhlLnZhbHVlc1swXSl9YDpgzpzOtyDOrc6zzrrPhc+BzrcgzrXPgM65zrvOv86zzq46IM6xzr3Osc68zrXOvc+Mz4TOsc69IM6tzr3OsSDOsc+Az4wgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YM6gzr/Ou8+NIM68zrXOs86szrvOvzogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbj8/Is+EzrnOvM6uIn0gzr3OsSDOrc+HzrXOuSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLPg8+Ezr/Ouc+HzrXOr86xIn1gOmDOoM6/zrvPjSDOvM61zrPOrM67zr86IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW4/PyLPhM65zrzOriJ9IM69zrEgzrXOr869zrHOuSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DOoM6/zrvPjSDOvM65zrrPgc+MOiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2lufSDOvc6xIM6tz4fOtc65ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDOoM6/zrvPjSDOvM65zrrPgc+MOiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2lufSDOvc6xIM61zq/Ovc6xzrkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgzr7Otc66zrnOvc6sIM68zrUgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDPhM61zrvOtc65z47Ovc61zrkgzrzOtSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgz4DOtc+BzrnOrc+HzrXOuSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDPhM6xzrnPgc65zqzOts61zrkgzrzOtSDPhM6/IM68zr/PhM6vzrLOvyAke2kucGF0dGVybn1gOmDOnM63IM6tzrPOus+Fz4HOvzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYM6czrcgzq3Os866z4XPgc6/z4IgzrHPgc65zrjOvM+Mz4I6IM+Az4HOrc+AzrXOuSDOvc6xIM61zq/Ovc6xzrkgz4DOv867zrvOsc+AzrvOrM+DzrnOvyDPhM6/z4UgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gzobOs869z4nPg8+EJHtlLmtleXMubGVuZ3RoPjE/Is6xIjoizr8ifSDOus67zrXOuc60JHtlLmtleXMubGVuZ3RoPjE/Is65zqwiOiLOryJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYM6czrcgzq3Os866z4XPgc6/IM66zrvOtc65zrTOryDPg8+Ezr8gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIs6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+CIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYM6czrcgzq3Os866z4XPgc63IM+EzrnOvM6uIM+Dz4TOvyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4izpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4IifX19O2Z1bmN0aW9uIFVwKCl7cmV0dXJue2xvY2FsZUVycm9yOmpwKCl9fWNvbnN0IFBwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjaGFyYWN0ZXJzIix2ZXJiOiJ0byBoYXZlIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6InRvIGhhdmUifSxhcnJheTp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxzZXQ6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sbWFwOnt1bml0OiJlbnRyaWVzIix2ZXJiOiJ0byBoYXZlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZW1haWwgYWRkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGV0aW1lIixkYXRlOiJJU08gZGF0ZSIsdGltZToiSVNPIHRpbWUiLGR1cmF0aW9uOiJJU08gZHVyYXRpb24iLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixtYWM6Ik1BQyBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IG51bWJlciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7aX0sIHJlY2VpdmVkICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7ayhlLnZhbHVlc1swXSl9YDpgSW52YWxpZCBvcHRpb246IGV4cGVjdGVkIG9uZSBvZiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVG9vIGJpZzogZXhwZWN0ZWQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdG8gaGF2ZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgVG9vIGJpZzogZXhwZWN0ZWQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdG8gYmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVG9vIHNtYWxsOiBleHBlY3RlZCAke2Uub3JpZ2lufSB0byBoYXZlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUb28gc21hbGw6IGV4cGVjdGVkICR7ZS5vcmlnaW59IHRvIGJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBzdGFydCB3aXRoICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGVuZCB3aXRoICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gSW52YWxpZCBzdHJpbmc6IG11c3QgaW5jbHVkZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gSW52YWxpZCBzdHJpbmc6IG11c3QgbWF0Y2ggcGF0dGVybiAke2kucGF0dGVybn1gOmBJbnZhbGlkICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBJbnZhbGlkIG51bWJlcjogbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFVucmVjb2duaXplZCBrZXkke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEludmFsaWQga2V5IGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiBlLm9wdGlvbnMmJkFycmF5LmlzQXJyYXkoZS5vcHRpb25zKSYmZS5vcHRpb25zLmxlbmd0aD4wP2BJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7ZS5vcHRpb25zLm1hcChhPT5gJyR7YX0nYCkuam9pbigiIHwgIil9YDoiSW52YWxpZCBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJbnZhbGlkIHZhbHVlIGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnZhbGlkIGlucHV0In19fTtmdW5jdGlvbiBhbCgpe3JldHVybntsb2NhbGVFcnJvcjpQcCgpfX1jb25zdCBPcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0cm9qbiIsdmVyYjoiaGF2aSJ9LGZpbGU6e3VuaXQ6ImJhanRvam4iLHZlcmI6ImhhdmkifSxhcnJheTp7dW5pdDoiZWxlbWVudG9qbiIsdmVyYjoiaGF2aSJ9LHNldDp7dW5pdDoiZWxlbWVudG9qbiIsdmVyYjoiaGF2aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbmlnbyIsZW1haWw6InJldGFkcmVzbyIsdXJsOiJVUkwiLGVtb2ppOiJlbW/EnWlvIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tZGF0b3RlbXBvIixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLXRlbXBvIixkdXJhdGlvbjoiSVNPLWRhxa1ybyIsaXB2NDoiSVB2NC1hZHJlc28iLGlwdjY6IklQdjYtYWRyZXNvIixjaWRydjQ6IklQdjQtcmFuZ28iLGNpZHJ2NjoiSVB2Ni1yYW5nbyIsYmFzZTY0OiI2NC11bWUga29kaXRhIGthcmFrdHJhcm8iLGJhc2U2NHVybDoiVVJMLTY0LXVtZSBrb2RpdGEga2FyYWt0cmFybyIsanNvbl9zdHJpbmc6IkpTT04ta2FyYWt0cmFybyIsZTE2NDoiRS4xNjQtbm9tYnJvIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW5pZ28ifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJub21icm8iLGFycmF5OiJ0YWJlbG8iLG51bGw6InNlbnZhbG9yYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2acSdaXMgJHtzfWA6YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzICR7aX0sIHJpY2V2acSdaXMgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHtrKGUudmFsdWVzWzBdKX1gOmBOZXZhbGlkYSBvcGNpbzogYXRlbmRpxJ1pcyB1bnUgZWwgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRybyBncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbj8/InZhbG9ybyJ9IGhhdnUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG9qbiJ9YDpgVHJvIGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2luPz8idmFsb3JvIn0gaGF2dSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm8gbWFsZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW59IGhhdnUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbn0gZXN0dSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29tZW5jacSdaSBwZXIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMgZmluacSdaSBwZXIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBpbmtsdXppdmkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGtvbmdydWkga3VuIGxhIG1vZGVsbyAke2kucGF0dGVybn1gOmBOZXZhbGlkYSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmV2YWxpZGEgbm9tYnJvOiBkZXZhcyBlc3RpIG9ibG8gZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVrb25hdGEke2Uua2V5cy5sZW5ndGg+MT8iaiI6IiJ9IMWdbG9zaWxvJHtlLmtleXMubGVuZ3RoPjE/ImoiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZXZhbGlkYSDFnWxvc2lsbyBlbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmV2YWxpZGEgZW5pZ28iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmV2YWxpZGEgdmFsb3JvIGVuICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZXZhbGlkYSBlbmlnbyJ9fX07ZnVuY3Rpb24gRHAoKXtyZXR1cm57bG9jYWxlRXJyb3I6T3AoKX19Y29uc3QgTnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZXMiLHZlcmI6InRlbmVyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6InRlbmVyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvcyIsdmVyYjoidGVuZXIifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvcyIsdmVyYjoidGVuZXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50cmFkYSIsZW1haWw6ImRpcmVjY2nDs24gZGUgY29ycmVvIGVsZWN0csOzbmljbyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZmVjaGEgeSBob3JhIElTTyIsZGF0ZToiZmVjaGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmFjacOzbiBJU08iLGlwdjQ6ImRpcmVjY2nDs24gSVB2NCIsaXB2NjoiZGlyZWNjacOzbiBJUHY2IixjaWRydjQ6InJhbmdvIElQdjQiLGNpZHJ2NjoicmFuZ28gSVB2NiIsYmFzZTY0OiJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiVVJMIGNvZGlmaWNhZGEgZW4gYmFzZTY0Iixqc29uX3N0cmluZzoiY2FkZW5hIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sbz17bmFuOiJOYU4iLHN0cmluZzoidGV4dG8iLG51bWJlcjoibsO6bWVybyIsYm9vbGVhbjoiYm9vbGVhbm8iLGFycmF5OiJhcnJlZ2xvIixvYmplY3Q6Im9iamV0byIsc2V0OiJjb25qdW50byIsZmlsZToiYXJjaGl2byIsZGF0ZToiZmVjaGEiLGJpZ2ludDoibsO6bWVybyBncmFuZGUiLHN5bWJvbDoic8OtbWJvbG8iLHVuZGVmaW5lZDoiaW5kZWZpbmlkbyIsbnVsbDoibnVsbyIsZnVuY3Rpb246ImZ1bmNpw7NuIixtYXA6Im1hcGEiLHJlY29yZDoicmVnaXN0cm8iLHR1cGxlOiJ0dXBsYSIsZW51bToiZW51bWVyYWNpw7NuIix1bmlvbjoidW5pw7NuIixsaXRlcmFsOiJsaXRlcmFsIixwcm9taXNlOiJwcm9tZXNhIix2b2lkOiJ2YWPDrW8iLG5ldmVyOiJudW5jYSIsdW5rbm93bjoiZGVzY29ub2NpZG8iLGFueToiY3VhbHF1aWVyYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZWNpYmlkbyAke3N9YDpgRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhICR7aX0sIHJlY2liaWRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSAke2soZS52YWx1ZXNbMF0pfWA6YE9wY2nDs24gaW52w6FsaWRhOiBzZSBlc3BlcmFiYSB1bmEgZGUgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke3M/PyJ2YWxvciJ9IHR1dmllcmEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG9zIn1gOmBEZW1hc2lhZG8gZ3JhbmRlOiBzZSBlc3BlcmFiYSBxdWUgJHtzPz8idmFsb3IifSBmdWVyYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BEZW1hc2lhZG8gcGVxdWXDsW86IHNlIGVzcGVyYWJhIHF1ZSAke3N9IHR1dmllcmEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YERlbWFzaWFkbyBwZXF1ZcOxbzogc2UgZXNwZXJhYmEgcXVlICR7c30gZnVlcmEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29tZW56YXIgY29uICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgdGVybWluYXIgZW4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGluY2x1aXIgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29pbmNpZGlyIGNvbiBlbCBwYXRyw7NuICR7aS5wYXR0ZXJufWA6YEludsOhbGlkbyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRlYmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBMbGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29ub2NpZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYExsYXZlIGludsOhbGlkYSBlbiAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yIGludsOhbGlkbyBlbiAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIn19fTtmdW5jdGlvbiBFcCgpe3JldHVybntsb2NhbGVFcnJvcjpOcCgpfX1jb25zdCBacD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2qnYp9ix2Kfaqdiq2LEiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxmaWxlOnt1bml0OiLYqNin24zYqiIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LGFycmF5Ont1bml0OiLYotuM2KrZhSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LHNldDp7dW5pdDoi2KLbjNiq2YUiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2YjYsdmI2K/bjCIsZW1haWw6Itii2K/YsdizINin24zZhduM2YQiLHVybDoiVVJMIixlbW9qaToi2KfbjNmF2YjYrNuMIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLYqtin2LHbjNiuINmIINiy2YXYp9mGINin24zYstmIIixkYXRlOiLYqtin2LHbjNiuINin24zYstmIIix0aW1lOiLYstmF2KfZhiDYp9uM2LLZiCIsZHVyYXRpb246ItmF2K/YqiDYstmF2KfZhiDYp9uM2LLZiCIsaXB2NDoiSVB2NCDYotiv2LHYsyIsaXB2NjoiSVB2NiDYotiv2LHYsyIsY2lkcnY0OiJJUHY0INiv2KfZhdmG2YciLGNpZHJ2NjoiSVB2NiDYr9in2YXZhtmHIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkINix2LTYqtmHIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkINix2LTYqtmHIixqc29uX3N0cmluZzoiSlNPTiDYsdi02KrZhyIsZTE2NDoiRS4xNjQg2LnYr9ivIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YjYsdmI2K/bjCJ9LG89e25hbjoiTmFOIixudW1iZXI6Iti52K/YryIsYXJyYXk6Itii2LHYp9uM2YcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9INmF24zigIzYqNmI2K/YjCAke3N9INiv2LHbjNin2YHYqiDYtNivYDpg2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogJHtpfSDZhduM4oCM2KjZiNiv2IwgJHtzfSDYr9ix24zYp9mB2Kog2LTYr2B9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogJHtrKGUudmFsdWVzWzBdKX0g2YXbjOKAjNio2YjYr2A6YNqv2LLbjNmG2Ycg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqINuM2qnbjCDYp9iyICR7JChlLnZhbHVlcywifCIpfSDZhduM4oCM2KjZiNivYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNiu24zZhNuMINio2LLYsdqvOiAke2Uub3JpZ2luPz8i2YXZgtiv2KfYsSJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdixIn0g2KjYp9i02K9gOmDYrtuM2YTbjCDYqNiy2LHarzogJHtlLm9yaWdpbj8/ItmF2YLYr9in2LEifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2KjYp9i02K9gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYrtuM2YTbjCDaqdmI2obaqTogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDYqNin2LTYr2A6YNiu24zZhNuMINqp2YjahtqpOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g2KjYp9i02K9gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINio2KcgIiR7aS5wcmVmaXh9IiDYtNix2YjYuSDYtNmI2K9gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinICIke2kuc3VmZml4fSIg2KrZhdin2YUg2LTZiNivYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYtNin2YXZhCAiJHtpLmluY2x1ZGVzfSIg2KjYp9i02K9gOmkuZm9ybWF0PT09InJlZ2V4Ij9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINio2Kcg2KfZhNqv2YjbjCAke2kucGF0dGVybn0g2YXYt9in2KjZgtiqINiv2KfYtNiq2Ycg2KjYp9i02K9gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0g2YbYp9mF2LnYqtio2LFgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2LnYr9ivINmG2KfZhdi52KrYqNixOiDYqNin24zYryDZhdi22LHYqCAke2UuZGl2aXNvcn0g2KjYp9i02K9gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDaqdmE24zYryR7ZS5rZXlzLmxlbmd0aD4xPyLZh9in24wiOiIifSDZhtin2LTZhtin2LM6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2qnZhNuM2K8g2YbYp9i02YbYp9izINiv2LEgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXZgtiv2KfYsSDZhtin2YXYudiq2KjYsSDYr9ixICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLZiNix2YjYr9uMINmG2KfZhdi52KrYqNixIn19fTtmdW5jdGlvbiBScCgpe3JldHVybntsb2NhbGVFcnJvcjpacCgpfX1jb25zdCBDcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoibWVya2tpw6QiLHN1YmplY3Q6Im1lcmtraWpvbm9uIn0sZmlsZTp7dW5pdDoidGF2dWEiLHN1YmplY3Q6InRpZWRvc3RvbiJ9LGFycmF5Ont1bml0OiJhbGtpb3RhIixzdWJqZWN0OiJsaXN0YW4ifSxzZXQ6e3VuaXQ6ImFsa2lvdGEiLHN1YmplY3Q6ImpvdWtvbiJ9LG51bWJlcjp7dW5pdDoiIixzdWJqZWN0OiJsdXZ1biJ9LGJpZ2ludDp7dW5pdDoiIixzdWJqZWN0OiJzdXVyZW4ga29rb25haXNsdXZ1biJ9LGludDp7dW5pdDoiIixzdWJqZWN0OiJrb2tvbmFpc2x1dnVuIn0sZGF0ZTp7dW5pdDoiIixzdWJqZWN0OiJww6RpdsOkbcOkw6Ryw6RuIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InPDpMOkbm7DtmxsaW5lbiBsYXVzZWtlIixlbWFpbDoic8OkaGvDtnBvc3Rpb3NvaXRlIix1cmw6IlVSTC1vc29pdGUiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLWFpa2FsZWltYSIsZGF0ZToiSVNPLXDDpGl2w6Rtw6TDpHLDpCIsdGltZToiSVNPLWFpa2EiLGR1cmF0aW9uOiJJU08ta2VzdG8iLGlwdjQ6IklQdjQtb3NvaXRlIixpcHY2OiJJUHY2LW9zb2l0ZSIsY2lkcnY0OiJJUHY0LWFsdWUiLGNpZHJ2NjoiSVB2Ni1hbHVlIixiYXNlNjQ6ImJhc2U2NC1rb29kYXR0dSBtZXJra2lqb25vIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb29kYXR0dSBtZXJra2lqb25vIixqc29uX3N0cmluZzoiSlNPTi1tZXJra2lqb25vIixlMTY0OiJFLjE2NC1sdWt1Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidGVtcGxhYXR0aW1lcmtraWpvbm8ifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BWaXJoZWVsbGluZW4gdHl5cHBpOiBvZG90ZXR0aWluIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb2xpICR7c31gOmBWaXJoZWVsbGluZW4gdHl5cHBpOiBvZG90ZXR0aWluICR7aX0sIG9saSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IG9sbGEgJHtrKGUudmFsdWVzWzBdKX1gOmBWaXJoZWVsbGluZW4gdmFsaW50YTogdMOkeXR5eSBvbGxhIHlrc2kgc2V1cmFhdmlzdGE6ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BMaWlhbiBzdXVyaTogJHthLnN1YmplY3R9IHTDpHl0eXkgb2xsYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YC50cmltKCk6YExpaWFuIHN1dXJpOiBhcnZvbiB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTGlpYW4gcGllbmk6ICR7YS5zdWJqZWN0fSB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWAudHJpbSgpOmBMaWlhbiBwaWVuaTogYXJ2b24gdMOkeXR5eSBvbGxhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IGFsa2FhICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgbG9wcHVhICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBzaXPDpGx0w6TDpCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSB2YXN0YXRhIHPDpMOkbm7DtmxsaXN0w6QgbGF1c2VrZXR0YSAke2kucGF0dGVybn1gOmBWaXJoZWVsbGluZW4gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFZpcmhlZWxsaW5lbiBsdWt1OiB0w6R5dHl5IG9sbGEgbHV2dW4gJHtlLmRpdmlzb3J9IG1vbmlrZXJ0YWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJUdW50ZW1hdHRvbWF0IGF2YWltZXQiOiJUdW50ZW1hdG9uIGF2YWluIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGF2YWluIHRpZXR1ZWVzc2EiO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlZpcmhlZWxsaW5lbiB1bmlvbmkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGFydm8gam91a29zc2EiO2RlZmF1bHQ6cmV0dXJuIlZpcmhlZWxsaW5lbiBzecO2dGUifX19O2Z1bmN0aW9uIEFwKCl7cmV0dXJue2xvY2FsZUVycm9yOkNwKCl9fWNvbnN0IExwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3TDqHJlcyIsdmVyYjoiYXZvaXIifSxmaWxlOnt1bml0OiJvY3RldHMiLHZlcmI6ImF2b2lyIn0sYXJyYXk6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn0sc2V0Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyw6llIixlbWFpbDoiYWRyZXNzZSBlLW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGUgZXQgaGV1cmUgSVNPIixkYXRlOiJkYXRlIElTTyIsdGltZToiaGV1cmUgSVNPIixkdXJhdGlvbjoiZHVyw6llIElTTyIsaXB2NDoiYWRyZXNzZSBJUHY0IixpcHY2OiJhZHJlc3NlIElQdjYiLGNpZHJ2NDoicGxhZ2UgSVB2NCIsY2lkcnY2OiJwbGFnZSBJUHY2IixiYXNlNjQ6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2hhw65uZSBKU09OIixlMTY0OiJudW3DqXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50csOpZSJ9LG89e3N0cmluZzoiY2hhw65uZSIsbnVtYmVyOiJub21icmUiLGludDoiZW50aWVyIixib29sZWFuOiJib29sw6llbiIsYmlnaW50OiJncmFuZCBlbnRpZXIiLHN5bWJvbDoic3ltYm9sZSIsdW5kZWZpbmVkOiJpbmTDqWZpbmkiLG51bGw6Im51bGwiLG5ldmVyOiJqYW1haXMiLHZvaWQ6InZpZGUiLGRhdGU6ImRhdGUiLGFycmF5OiJ0YWJsZWF1IixvYmplY3Q6Im9iamV0Iix0dXBsZToidHVwbGUiLHJlY29yZDoiZW5yZWdpc3RyZW1lbnQiLG1hcDoiY2FydGUiLHNldDoiZW5zZW1ibGUiLGZpbGU6ImZpY2hpZXIiLG5vbm9wdGlvbmFsOiJub24tb3B0aW9ubmVsIixuYW46Ik5hTiIsZnVuY3Rpb246ImZvbmN0aW9uIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0gYXR0ZW5kdSwgJHtzfSByZcOndWA6YEVudHLDqWUgaW52YWxpZGUgOiAke2l9IGF0dGVuZHUsICR7c30gcmXDp3VgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHLDqWUgaW52YWxpZGUgOiAke2soZS52YWx1ZXNbMF0pfSBhdHRlbmR1YDpgT3B0aW9uIGludmFsaWRlIDogdW5lIHZhbGV1ciBwYXJtaSAkeyQoZS52YWx1ZXMsInwiKX0gYXR0ZW5kdWVgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBncmFuZCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLDqWzDqW1lbnQocykifWA6YFRyb3AgZ3JhbmQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCDDqnRyZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIHBldGl0IDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wIHBldGl0IDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgw6p0cmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgc2UgdGVybWluZXIgcGFyICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vZMOobGUgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGludmFsaWRlYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgw6p0cmUgdW4gbXVsdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2zDqSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm9uIHJlY29ubnVlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSA6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2zDqSBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyw6llIGludmFsaWRlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbGV1ciBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyw6llIGludmFsaWRlIn19fTtmdW5jdGlvbiBNcCgpe3JldHVybntsb2NhbGVFcnJvcjpMcCgpfX1jb25zdCBxcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0w6hyZXMiLHZlcmI6ImF2b2lyIn0sZmlsZTp7dW5pdDoib2N0ZXRzIix2ZXJiOiJhdm9pciJ9LGFycmF5Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9LHNldDp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgY291cnJpZWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGUtaGV1cmUgSVNPIixkYXRlOiJkYXRlIElTTyIsdGltZToiaGV1cmUgSVNPIixkdXJhdGlvbjoiZHVyw6llIElTTyIsaXB2NDoiYWRyZXNzZSBJUHY0IixpcHY2OiJhZHJlc3NlIElQdjYiLGNpZHJ2NDoicGxhZ2UgSVB2NCIsY2lkcnY2OiJwbGFnZSBJUHY2IixiYXNlNjQ6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2hhw65uZSBKU09OIixlMTY0OiJudW3DqXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50csOpZSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmXDp3UgJHtzfWA6YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7aX0sIHJlw6d1ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7ayhlLnZhbHVlc1swXSl9YDpgT3B0aW9uIGludmFsaWRlIDogYXR0ZW5kdSBsJ3VuZSBkZXMgdmFsZXVycyBzdWl2YW50ZXMgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLiiaQiOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbj8/ImxhIHZhbGV1ciJ9IGFpdCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW4/PyJsYSB2YWxldXIifSBzb2l0ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLiiaUiOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gYWl0ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gc29pdCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBzZSB0ZXJtaW5lciBwYXIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBpbmNsdXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW90aWYgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGludmFsaWRlYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgw6p0cmUgdW4gbXVsdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2zDqSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm9uIHJlY29ubnVlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSA6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2zDqSBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyw6llIGludmFsaWRlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbGV1ciBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyw6llIGludmFsaWRlIn19fTtmdW5jdGlvbiBGcCgpe3JldHVybntsb2NhbGVFcnJvcjpxcCgpfX1jb25zdCBKcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiIsZ2VuZGVyOiJmIn0sbnVtYmVyOntsYWJlbDoi157Xodek16giLGdlbmRlcjoibSJ9LGJvb2xlYW46e2xhYmVsOiLXoteo15og15HXldec15nXkNeg15kiLGdlbmRlcjoibSJ9LGJpZ2ludDp7bGFiZWw6IkJpZ0ludCIsZ2VuZGVyOiJtIn0sZGF0ZTp7bGFiZWw6Iteq15DXqNeZ15oiLGdlbmRlcjoibSJ9LGFycmF5OntsYWJlbDoi157Xoteo15oiLGdlbmRlcjoibSJ9LG9iamVjdDp7bGFiZWw6IteQ15XXkdeZ15nXp9eYIixnZW5kZXI6Im0ifSxudWxsOntsYWJlbDoi16LXqNeaINeo15nXpyAobnVsbCkiLGdlbmRlcjoibSJ9LHVuZGVmaW5lZDp7bGFiZWw6Itei16jXmiDXnNeQINee15XXkteT16ggKHVuZGVmaW5lZCkiLGdlbmRlcjoibSJ9LHN5bWJvbDp7bGFiZWw6Iteh15nXnteR15XXnCAoU3ltYm9sKSIsZ2VuZGVyOiJtIn0sZnVuY3Rpb246e2xhYmVsOiLXpNeV16DXp9em15nXlCIsZ2VuZGVyOiJmIn0sbWFwOntsYWJlbDoi157XpNeUIChNYXApIixnZW5kZXI6ImYifSxzZXQ6e2xhYmVsOiLXp9eR15XXpteUIChTZXQpIixnZW5kZXI6ImYifSxmaWxlOntsYWJlbDoi16fXldeR16UiLGdlbmRlcjoibSJ9LHByb21pc2U6e2xhYmVsOiJQcm9taXNlIixnZW5kZXI6Im0ifSxOYU46e2xhYmVsOiJOYU4iLGdlbmRlcjoibSJ9LHVua25vd246e2xhYmVsOiLXoteo15og15zXkCDXmdeT15XXoiIsZ2VuZGVyOiJtIn0sdmFsdWU6e2xhYmVsOiLXoteo15oiLGdlbmRlcjoibSJ9fSxuPXtzdHJpbmc6e3VuaXQ6Iteq15XXldeZ150iLHNob3J0TGFiZWw6Iten16bXqCIsbG9uZ0xhYmVsOiLXkNeo15XXmiJ9LGZpbGU6e3VuaXQ6IteR15nXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sYXJyYXk6e3VuaXQ6Itek16jXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sc2V0Ont1bml0OiLXpNeo15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LG51bWJlcjp7dW5pdDoiIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifX0scj11PT51P3RbdV06dm9pZCAwLG89dT0+e2NvbnN0IGw9cih1KTtyZXR1cm4gbD9sLmxhYmVsOnU/P3QudW5rbm93bi5sYWJlbH0sZT11PT5g15Qke28odSl9YCxpPXU9PihyKHUpPy5nZW5kZXI/PyJtIik9PT0iZiI/Item16jXmdeb15Qg15zXlNeZ15XXqiI6Item16jXmdeaINec15TXmdeV16oiLGE9dT0+dT9uW3VdPz9udWxsOm51bGwscz17cmVnZXg6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LGVtYWlsOntsYWJlbDoi15vXqteV15HXqiDXkNeZ157XmdeZ15wiLGdlbmRlcjoiZiJ9LHVybDp7bGFiZWw6Iteb16rXldeR16og16jXqdeqIixnZW5kZXI6ImYifSxlbW9qaTp7bGFiZWw6IteQ15nXnteV15In15kiLGdlbmRlcjoibSJ9LHV1aWQ6e2xhYmVsOiJVVUlEIixnZW5kZXI6Im0ifSxuYW5vaWQ6e2xhYmVsOiJuYW5vaWQiLGdlbmRlcjoibSJ9LGd1aWQ6e2xhYmVsOiJHVUlEIixnZW5kZXI6Im0ifSxjdWlkOntsYWJlbDoiY3VpZCIsZ2VuZGVyOiJtIn0sY3VpZDI6e2xhYmVsOiJjdWlkMiIsZ2VuZGVyOiJtIn0sdWxpZDp7bGFiZWw6IlVMSUQiLGdlbmRlcjoibSJ9LHhpZDp7bGFiZWw6IlhJRCIsZ2VuZGVyOiJtIn0sa3N1aWQ6e2xhYmVsOiJLU1VJRCIsZ2VuZGVyOiJtIn0sZGF0ZXRpbWU6e2xhYmVsOiLXqteQ16jXmdeaINeV15bXntefIElTTyIsZ2VuZGVyOiJtIn0sZGF0ZTp7bGFiZWw6Iteq15DXqNeZ15ogSVNPIixnZW5kZXI6Im0ifSx0aW1lOntsYWJlbDoi15bXntefIElTTyIsZ2VuZGVyOiJtIn0sZHVyYXRpb246e2xhYmVsOiLXntep15og15bXntefIElTTyIsZ2VuZGVyOiJtIn0saXB2NDp7bGFiZWw6Iteb16rXldeR16ogSVB2NCIsZ2VuZGVyOiJmIn0saXB2Njp7bGFiZWw6Iteb16rXldeR16ogSVB2NiIsZ2VuZGVyOiJmIn0sY2lkcnY0OntsYWJlbDoi15jXldeV15cgSVB2NCIsZ2VuZGVyOiJtIn0sY2lkcnY2OntsYWJlbDoi15jXldeV15cgSVB2NiIsZ2VuZGVyOiJtIn0sYmFzZTY0OntsYWJlbDoi157Xl9eo15XXlteqINeR15HXodeZ16EgNjQiLGdlbmRlcjoiZiJ9LGJhc2U2NHVybDp7bGFiZWw6Itee15fXqNeV15bXqiDXkdeR16HXmdehIDY0INec15vXqteV15HXldeqINeo16nXqiIsZ2VuZGVyOiJmIn0sanNvbl9zdHJpbmc6e2xhYmVsOiLXnteX16jXldeW16ogSlNPTiIsZ2VuZGVyOiJmIn0sZTE2NDp7bGFiZWw6Itee16HXpNeoIEUuMTY0IixnZW5kZXI6Im0ifSxqd3Q6e2xhYmVsOiJKV1QiLGdlbmRlcjoibSJ9LGVuZHNfd2l0aDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0saW5jbHVkZXM6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LGxvd2VyY2FzZTp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sc3RhcnRzX3dpdGg6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LHVwcGVyY2FzZTp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn19LGM9e25hbjoiTmFOIn07cmV0dXJuIHU9Pntzd2l0Y2godS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGw9dS5leHBlY3RlZCxnPWNbbD8/IiJdPz9vKGwpLHY9Uyh1LmlucHV0KSxfPWNbdl0/P3Rbdl0/LmxhYmVsPz92O3JldHVybi9eW0EtWl0vLnRlc3QodS5leHBlY3RlZCk/YNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqIGluc3RhbmNlb2YgJHt1LmV4cGVjdGVkfSwg15TXqten15HXnCAke199YDpg16fXnNeYINec15Ag16rXp9eZ1586INem16jXmdeaINec15TXmdeV16ogJHtnfSwg15TXqten15HXnCAke199YH1jYXNlImludmFsaWRfdmFsdWUiOntpZih1LnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXoteo15og15fXmdeZ15Eg15zXlNeZ15XXqiAke2sodS52YWx1ZXNbMF0pfWA7Y29uc3QgbD11LnZhbHVlcy5tYXAoXz0+ayhfKSk7aWYodS52YWx1ZXMubGVuZ3RoPT09MilyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU15DXpNep16jXldeZ15XXqiDXlNee16rXkNeZ157XldeqINeU158gJHtsWzBdfSDXkNeVICR7bFsxXX1gO2NvbnN0IGc9bFtsLmxlbmd0aC0xXTtyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU15DXpNep16jXldeZ15XXqiDXlNee16rXkNeZ157XldeqINeU158gJHtsLnNsaWNlKDAsLTEpLmpvaW4oIiwgIil9INeQ15UgJHtnfWB9Y2FzZSJ0b29fYmlnIjp7Y29uc3QgbD1hKHUub3JpZ2luKSxnPWUodS5vcmlnaW4/PyJ2YWx1ZSIpO2lmKHUub3JpZ2luPT09InN0cmluZyIpcmV0dXJuYCR7bD8ubG9uZ0xhYmVsPz8i15DXqNeV15oifSDXnteT15k6ICR7Z30g16bXqNeZ15vXlCDXnNeU15vXmdecICR7dS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bD8udW5pdD8/IiJ9ICR7dS5pbmNsdXNpdmU/IteQ15Ug16TXl9eV16oiOiLXnNeb15wg15TXmdeV16rXqCJ9YC50cmltKCk7aWYodS5vcmlnaW49PT0ibnVtYmVyIil7Y29uc3QgeT11LmluY2x1c2l2ZT9g16fXmNefINeQ15Ug16nXldeV15Qg15wtJHt1Lm1heGltdW19YDpg16fXmNefINeeLSR7dS5tYXhpbXVtfWA7cmV0dXJuYNeS15PXldecINee15PXmTogJHtnfSDXpteo15nXmiDXnNeU15nXldeqICR7eX1gfWlmKHUub3JpZ2luPT09ImFycmF5Inx8dS5vcmlnaW49PT0ic2V0Iil7Y29uc3QgeT11Lm9yaWdpbj09PSJzZXQiPyLXpteo15nXm9eUIjoi16bXqNeZ15oiLHE9dS5pbmNsdXNpdmU/YCR7dS5tYXhpbXVtfSAke2w/LnVuaXQ/PyIifSDXkNeVINek15fXldeqYDpg16TXl9eV16og154tJHt1Lm1heGltdW19ICR7bD8udW5pdD8/IiJ9YDtyZXR1cm5g15LXk9eV15wg157Xk9eZOiAke2d9ICR7eX0g15zXlNeb15nXnCAke3F9YC50cmltKCl9Y29uc3Qgdj11LmluY2x1c2l2ZT8iPD0iOiI8IixfPWkodS5vcmlnaW4/PyJ2YWx1ZSIpO3JldHVybiBsPy51bml0P2Ake2wubG9uZ0xhYmVsfSDXnteT15k6ICR7Z30gJHtffSAke3Z9JHt1Lm1heGltdW0udG9TdHJpbmcoKX0gJHtsLnVuaXR9YDpgJHtsPy5sb25nTGFiZWw/PyLXkteT15XXnCJ9INee15PXmTogJHtnfSAke199ICR7dn0ke3UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBsPWEodS5vcmlnaW4pLGc9ZSh1Lm9yaWdpbj8/InZhbHVlIik7aWYodS5vcmlnaW49PT0ic3RyaW5nIilyZXR1cm5gJHtsPy5zaG9ydExhYmVsPz8i16fXpteoIn0g157Xk9eZOiAke2d9INem16jXmdeb15Qg15zXlNeb15nXnCAke3UubWluaW11bS50b1N0cmluZygpfSAke2w/LnVuaXQ/PyIifSAke3UuaW5jbHVzaXZlPyLXkNeVINeZ15XXqteoIjoi15zXpNeX15XXqiJ9YC50cmltKCk7aWYodS5vcmlnaW49PT0ibnVtYmVyIil7Y29uc3QgeT11LmluY2x1c2l2ZT9g15LXk9eV15wg15DXlSDXqdeV15XXlCDXnC0ke3UubWluaW11bX1gOmDXkteT15XXnCDXni0ke3UubWluaW11bX1gO3JldHVybmDXp9eY158g157Xk9eZOiAke2d9INem16jXmdeaINec15TXmdeV16ogJHt5fWB9aWYodS5vcmlnaW49PT0iYXJyYXkifHx1Lm9yaWdpbj09PSJzZXQiKXtjb25zdCB5PXUub3JpZ2luPT09InNldCI/Item16jXmdeb15QiOiLXpteo15nXmiI7aWYodS5taW5pbXVtPT09MSYmdS5pbmNsdXNpdmUpe2NvbnN0IFI9KHUub3JpZ2luPT09InNldCIsItec16TXl9eV16og16TXqNeZ15gg15DXl9eTIik7cmV0dXJuYNen15jXnyDXnteT15k6ICR7Z30gJHt5fSDXnNeU15vXmdecICR7Un1gfWNvbnN0IHE9dS5pbmNsdXNpdmU/YCR7dS5taW5pbXVtfSAke2w/LnVuaXQ/PyIifSDXkNeVINeZ15XXqteoYDpg15nXldeq16gg154tJHt1Lm1pbmltdW19ICR7bD8udW5pdD8/IiJ9YDtyZXR1cm5g16fXmNefINee15PXmTogJHtnfSAke3l9INec15TXm9eZ15wgJHtxfWAudHJpbSgpfWNvbnN0IHY9dS5pbmNsdXNpdmU/Ij49IjoiPiIsXz1pKHUub3JpZ2luPz8idmFsdWUiKTtyZXR1cm4gbD8udW5pdD9gJHtsLnNob3J0TGFiZWx9INee15PXmTogJHtnfSAke199ICR7dn0ke3UubWluaW11bS50b1N0cmluZygpfSAke2wudW5pdH1gOmAke2w/LnNob3J0TGFiZWw/PyLXp9eY158ifSDXnteT15k6ICR7Z30gJHtffSAke3Z9JHt1Lm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBsPXU7aWYobC5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteX15nXnCDXkSAiJHtsLnByZWZpeH0iYDtpZihsLmZvcm1hdD09PSJlbmRzX3dpdGgiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXodeq15nXmdedINeRICIke2wuc3VmZml4fSJgO2lmKGwuZm9ybWF0PT09ImluY2x1ZGVzIilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeb15zXldecICIke2wuaW5jbHVkZXN9ImA7aWYobC5mb3JtYXQ9PT0icmVnZXgiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteQ15nXnSDXnNeq15HXoNeZ16ogJHtsLnBhdHRlcm59YDtjb25zdCBnPXNbbC5mb3JtYXRdLHY9Zz8ubGFiZWw/P2wuZm9ybWF0LHk9KGc/LmdlbmRlcj8/Im0iKT09PSJmIj8i16rXp9eZ16DXlCI6Iteq16fXmdefIjtyZXR1cm5gJHt2fSDXnNeQICR7eX1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g157Xodek16gg15zXkCDXqten15nXnzog15fXmdeZ15Eg15zXlNeZ15XXqiDXnteb16TXnNeUINep15wgJHt1LmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g157XpNeq15cke3Uua2V5cy5sZW5ndGg+MT8i15XXqiI6IiJ9INec15Ag157XlteV15Qke3Uua2V5cy5sZW5ndGg+MT8i15nXnSI6IteUIn06ICR7JCh1LmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4i16nXk9eUINec15Ag16rXp9eZ158g15HXkNeV15HXmdeZ16fXmCI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i16fXnNeYINec15Ag16rXp9eZ158iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ158g15Eke2UodS5vcmlnaW4/PyJhcnJheSIpfWA7ZGVmYXVsdDpyZXR1cm4i16fXnNeYINec15Ag16rXp9eZ158ifX19O2Z1bmN0aW9uIEhwKCl7cmV0dXJue2xvY2FsZUVycm9yOkpwKCl9fWNvbnN0IFZwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrb3ZhIix2ZXJiOiJpbWF0aSJ9LGZpbGU6e3VuaXQ6ImJhanRvdmEiLHZlcmI6ImltYXRpIn0sYXJyYXk6e3VuaXQ6InN0YXZraSIsdmVyYjoiaW1hdGkifSxzZXQ6e3VuaXQ6InN0YXZraSIsdmVyYjoiaW1hdGkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoidW5vcyIsZW1haWw6ImVtYWlsIGFkcmVzYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdHVtIGkgdnJpamVtZSIsZGF0ZToiSVNPIGRhdHVtIix0aW1lOiJJU08gdnJpamVtZSIsZHVyYXRpb246IklTTyB0cmFqYW5qZSIsaXB2NDoiSVB2NCBhZHJlc2EiLGlwdjY6IklQdjYgYWRyZXNhIixjaWRydjQ6IklQdjQgcmFzcG9uIixjaWRydjY6IklQdjYgcmFzcG9uIixiYXNlNjQ6ImJhc2U2NCBrb2RpcmFuaSB0ZWtzdCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kaXJhbmkgdGVrc3QiLGpzb25fc3RyaW5nOiJKU09OIHRla3N0IixlMTY0OiJFLjE2NCBicm9qIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidW5vcyJ9LG89e25hbjoiTmFOIixzdHJpbmc6InRla3N0IixudW1iZXI6ImJyb2oiLGJvb2xlYW46ImJvb2xlYW4iLGFycmF5OiJuaXoiLG9iamVjdDoib2JqZWt0IixzZXQ6InNrdXAiLGZpbGU6ImRhdG90ZWthIixkYXRlOiJkYXR1bSIsYmlnaW50OiJiaWdpbnQiLHN5bWJvbDoic2ltYm9sIix1bmRlZmluZWQ6InVuZGVmaW5lZCIsbnVsbDoibnVsbCIsZnVuY3Rpb246ImZ1bmtjaWphIixtYXA6Im1hcGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmVpc3ByYXZhbiB1bm9zOiBvxI1la3VqZSBzZSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGEgcHJpbWxqZW5vIGplICR7c31gOmBOZWlzcHJhdmFuIHVub3M6IG/EjWVrdWplIHNlICR7aX0sIGEgcHJpbWxqZW5vIGplICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5laXNwcmF2bmEgdnJpamVkbm9zdDogb8SNZWtpdmFubyAke2soZS52YWx1ZXNbMF0pfWA6YE5laXNwcmF2bmEgb3BjaWphOiBvxI1la2l2YW5vIGplZG5vIG9kICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BQcmV2ZWxpa286IG/EjWVraXZhbm8gZGEgJHtzPz8idnJpamVkbm9zdCJ9IGltYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW5hdGEifWA6YFByZXZlbGlrbzogb8SNZWtpdmFubyBkYSAke3M/PyJ2cmlqZWRub3N0In0gYnVkZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BQcmVtYWxvOiBvxI1la2l2YW5vIGRhICR7c30gaW1hICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBQcmVtYWxvOiBvxI1la2l2YW5vIGRhICR7c30gYnVkZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSB6YXBvxI1pbmphdGkgcyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIHphdnLFoWF2YXRpIHMgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIHNhZHLFvmF2YXRpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIG9kZ292YXJhdGkgdXpvcmt1ICR7aS5wYXR0ZXJufWA6YE5laXNwcmF2bmEgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5laXNwcmF2YW4gYnJvajogbW9yYSBiaXRpIHZpxaFla3JhdG5payBvZCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZXByZXBvem5hdCR7ZS5rZXlzLmxlbmd0aD4xPyJpIGtsanXEjWV2aSI6IiBrbGp1xI0ifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZWlzcHJhdmFuIGtsanXEjSB1ICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmVpc3ByYXZhbiB1bm9zIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5laXNwcmF2bmEgdnJpamVkbm9zdCB1ICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmVpc3ByYXZhbiB1bm9zIn19fTtmdW5jdGlvbiBLcCgpe3JldHVybntsb2NhbGVFcnJvcjpWcCgpfX1jb25zdCBXcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0ZXIiLHZlcmI6ImxlZ3llbiJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImxlZ3llbiJ9LGFycmF5Ont1bml0OiJlbGVtIix2ZXJiOiJsZWd5ZW4ifSxzZXQ6e3VuaXQ6ImVsZW0iLHZlcmI6ImxlZ3llbiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJiZW1lbmV0IixlbWFpbDoiZW1haWwgY8OtbSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGlkxZFiw6lseWVnIixkYXRlOiJJU08gZMOhdHVtIix0aW1lOiJJU08gaWTFkSIsZHVyYXRpb246IklTTyBpZMWRaW50ZXJ2YWxsdW0iLGlwdjQ6IklQdjQgY8OtbSIsaXB2NjoiSVB2NiBjw61tIixjaWRydjQ6IklQdjQgdGFydG9tw6FueSIsY2lkcnY2OiJJUHY2IHRhcnRvbcOhbnkiLGJhc2U2NDoiYmFzZTY0LWvDs2RvbHQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rw7Nkb2x0IHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBzesOhbSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImJlbWVuZXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJzesOhbSIsYXJyYXk6InTDtm1iIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYSBrYXBvdHQgw6lydMOpayAke3N9YDpgw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgJHtpfSwgYSBrYXBvdHQgw6lydMOpayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayAke2soZS52YWx1ZXNbMF0pfWA6YMOJcnbDqW55dGVsZW4gb3BjacOzOiB2YWxhbWVseWlrIMOpcnTDqWsgdsOhcnQgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFTDumwgbmFneTogJHtlLm9yaWdpbj8/IsOpcnTDqWsifSBtw6lyZXRlIHTDumwgbmFneSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtIn1gOmBUw7psIG5hZ3k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2luPz8iw6lydMOpayJ9IHTDumwgbmFneTogJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMO6bCBraWNzaTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW59IG3DqXJldGUgdMO6bCBraWNzaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVMO6bCBraWNzaTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW59IHTDumwga2ljc2kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtpLnByZWZpeH0iIMOpcnTDqWtrZWwga2VsbCBrZXpkxZFkbmllYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7aS5zdWZmaXh9IiDDqXJ0w6lra2VsIGtlbGwgdsOpZ3rFkWRuaWVgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2kuaW5jbHVkZXN9IiDDqXJ0w6lrZXQga2VsbCB0YXJ0YWxtYXpuaWFgOmkuZm9ybWF0PT09InJlZ2V4Ij9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICR7aS5wYXR0ZXJufSBtaW50w6FuYWsga2VsbCBtZWdmZWxlbG5pZWA6YMOJcnbDqW55dGVsZW4gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYMOJcnbDqW55dGVsZW4gc3rDoW06ICR7ZS5kaXZpc29yfSB0w7ZiYnN6w7Zyw7Zzw6luZWsga2VsbCBsZW5uaWVgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBJc21lcmV0bGVuIGt1bGNzJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDDiXJ2w6lueXRlbGVuIGt1bGNzICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLDiXJ2w6lueXRlbGVuIGJlbWVuZXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gw4lydsOpbnl0ZWxlbiDDqXJ0w6lrOiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iw4lydsOpbnl0ZWxlbiBiZW1lbmV0In19fTtmdW5jdGlvbiBCcCgpe3JldHVybntsb2NhbGVFcnJvcjpXcCgpfX1mdW5jdGlvbiBwcyh0LG4scil7cmV0dXJuIE1hdGguYWJzKHQpPT09MT9uOnJ9ZnVuY3Rpb24gUmUodCl7aWYoIXQpcmV0dXJuIiI7Y29uc3Qgbj1bItWhIiwi1aUiLCLVqCIsItWrIiwi1bgiLCLVuNaCIiwi1oUiXSxyPXRbdC5sZW5ndGgtMV07cmV0dXJuIHQrKG4uaW5jbHVkZXMocik/ItW2Ijoi1agiKX1jb25zdCBHcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiLVttW31aHVtiIsbWFueToi1bbVt9Wh1bbVttWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LGZpbGU6e3VuaXQ6e29uZToi1aLVodW11akiLG1hbnk6ItWi1aHVtdWp1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sYXJyYXk6e3VuaXQ6e29uZToi1b/VodaA1oAiLG1hbnk6ItW/1aHWgNaA1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sc2V0Ont1bml0OntvbmU6ItW/1aHWgNaAIixtYW55OiLVv9Wh1oDWgNWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLVtNW41oLVv9aEIixlbWFpbDoi1afVrC4g1bDVodW91oHVpSIsdXJsOiJVUkwiLGVtb2ppOiLVp9W01bjVu9WrIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g1aHVtNW91aHVqdWr1b4g1ocg1arVodW0IixkYXRlOiJJU08g1aHVtNW91aHVqdWr1b4iLHRpbWU6IklTTyDVqtWh1bQiLGR1cmF0aW9uOiJJU08g1b/Wh9W41bLVuNaC1anVtdW41oLVtiIsaXB2NDoiSVB2NCDVsNWh1b3WgdWlIixpcHY2OiJJUHY2INWw1aHVvdaB1aUiLGNpZHJ2NDoiSVB2NCDVtNWr1bvVodWv1aHVtdaEIixjaWRydjY6IklQdjYg1bTVq9W71aHVr9Wh1bXWhCIsYmFzZTY0OiJiYXNlNjQg1bHWh9Wh1bnVodaD1bjVviDVv9W41bIiLGJhc2U2NHVybDoiYmFzZTY0dXJsINWx1ofVodW51aHWg9W41b4g1b/VuNWyIixqc29uX3N0cmluZzoiSlNPTiDVv9W41bIiLGUxNjQ6IkUuMTY0INWw1aHVtNWh1oAiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLVtNW41oLVv9aEIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi1anVq9W+IixhcnJheToi1abVodW21aPVvtWh1a4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDVvdW/1aHWgdW+1aXVrCDVpyAke3N9YDpg1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgJHtpfSwg1b3Vv9Wh1oHVvtWl1awg1acgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgJHtrKGUudmFsdWVzWzFdKX1gOmDVjdWt1aHVrCDVv9Wh1oDVotWl1oDVodWv4oCkINW91brVodW91b7VuNaC1bQg1afWgCDVsNWl1b/Wh9W11aHVrNW21aXWgNWr1oEg1bTVpdWv1ajVnSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1heGltdW0pLGM9cHMocyxhLnVuaXQub25lLGEudW5pdC5tYW55KTtyZXR1cm5g1YnVodaD1aHVptWh1bbWgSDVtNWl1a4g1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7UmUoZS5vcmlnaW4/PyLVodaA1arVpdaEIil9INWv1bjWgtW21aXVttWhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g1YnVodaD1aHVptWh1bbWgSDVtNWl1a4g1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7UmUoZS5vcmlnaW4/PyLVodaA1arVpdaEIil9INWs1avVttWrICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5taW5pbXVtKSxjPXBzKHMsYS51bml0Lm9uZSxhLnVuaXQubWFueSk7cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1oPVuNaE1oAg1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7UmUoZS5vcmlnaW4pfSDVr9W41oLVttWl1bbVoSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1oPVuNaE1oAg1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7UmUoZS5vcmlnaW4pfSDVrNWr1bbVqyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINW91a/VvdW+1asgIiR7aS5wcmVmaXh9Ii3VuNW+YDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1aHVvtWh1oDVv9W+1asgIiR7aS5zdWZmaXh9Ii3VuNW+YDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVutWh1oDVuNaC1bbVodWv1asgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVsNWh1bTVodW61aHVv9Wh1b3VrdWh1bbVqyAke2kucGF0dGVybn0g1bHWh9Wh1bnVodaD1avVtmA6YNWN1a3VodWsICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDVjdWt1aHVrCDVqdWr1b7igKQg1brVpdW/1oQg1acg1aLVodWm1bTVodW61aHVv9Wr1a8g1azVq9W21asgJHtlLmRpdmlzb3J9LdWrYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g1YnVs9Wh1bbVodW51b7VodWuINWi1aHVttWh1azVqyR7ZS5rZXlzLmxlbmd0aD4xPyLVttWl1oAiOiIifS4gJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDVjdWt1aHVrCDVotWh1bbVodWs1asgJHtSZShlLm9yaWdpbil9LdW41oLVtGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDVjdWt1aHVrCDVodaA1arVpdaEICR7UmUoZS5vcmlnaW4pfS3VuNaC1bRgO2RlZmF1bHQ6cmV0dXJuItWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bQifX19O2Z1bmN0aW9uIFhwKCl7cmV0dXJue2xvY2FsZUVycm9yOkdwKCl9fWNvbnN0IFlwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibWVtaWxpa2kifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJtZW1pbGlraSJ9LGFycmF5Ont1bml0OiJpdGVtIix2ZXJiOiJtZW1pbGlraSJ9LHNldDp7dW5pdDoiaXRlbSIsdmVyYjoibWVtaWxpa2kifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJhbGFtYXQgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6InRhbmdnYWwgZGFuIHdha3R1IGZvcm1hdCBJU08iLGRhdGU6InRhbmdnYWwgZm9ybWF0IElTTyIsdGltZToiamFtIGZvcm1hdCBJU08iLGR1cmF0aW9uOiJkdXJhc2kgZm9ybWF0IElTTyIsaXB2NDoiYWxhbWF0IElQdjQiLGlwdjY6ImFsYW1hdCBJUHY2IixjaWRydjQ6InJlbnRhbmcgYWxhbWF0IElQdjQiLGNpZHJ2NjoicmVudGFuZyBhbGFtYXQgSVB2NiIsYmFzZTY0OiJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjQiLGJhc2U2NHVybDoic3RyaW5nIGRlbmdhbiBlbmtvZGUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoic3RyaW5nIEpTT04iLGUxNjQ6ImFuZ2thIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRpdGVyaW1hICR7c31gOmBJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiAke2l9LCBkaXRlcmltYSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiAke2soZS52YWx1ZXNbMF0pfWA6YFBpbGloYW4gdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gc2FsYWggc2F0dSBkYXJpICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IG1lbWlsaWtpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbiJ9YDpgVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke2Uub3JpZ2luPz8idmFsdWUifSBtZW5qYWRpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUga2VjaWw6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbn0gbWVtaWxpa2kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRlcmxhbHUga2VjaWw6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbn0gbWVuamFkaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBkaW11bGFpIGRlbmdhbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIGJlcmFraGlyIGRlbmdhbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgbWVueWVydGFrYW4gIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgc2VzdWFpIHBvbGEgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IHRpZGFrIHZhbGlkYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEFuZ2thIHRpZGFrIHZhbGlkOiBoYXJ1cyBrZWxpcGF0YW4gZGFyaSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLdW5jaSB0aWRhayBkaWtlbmFsaSAke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEt1bmNpIHRpZGFrIHZhbGlkIGRpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnB1dCB0aWRhayB2YWxpZCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW5wdXQgdGlkYWsgdmFsaWQifX19O2Z1bmN0aW9uIFFwKCl7cmV0dXJue2xvY2FsZUVycm9yOllwKCl9fWNvbnN0IGVmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJzdGFmaSIsdmVyYjoiYcOwIGhhZmEifSxmaWxlOnt1bml0OiJiw6Z0aSIsdmVyYjoiYcOwIGhhZmEifSxhcnJheTp7dW5pdDoiaGx1dGkiLHZlcmI6ImHDsCBoYWZhIn0sc2V0Ont1bml0OiJobHV0aSIsdmVyYjoiYcOwIGhhZmEifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZ2lsZGkiLGVtYWlsOiJuZXRmYW5nIix1cmw6InZlZnNsw7PDsCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGFnc2V0bmluZyBvZyB0w61taSIsZGF0ZToiSVNPIGRhZ3NldG5pbmciLHRpbWU6IklTTyB0w61taSIsZHVyYXRpb246IklTTyB0w61tYWxlbmdkIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyZW5ndXIiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyZW5ndXIiLGpzb25fc3RyaW5nOiJKU09OIHN0cmVuZ3VyIixlMTY0OiJFLjE2NCB0w7ZsdWdpbGRpIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lsZGkifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJuw7ptZXIiLGFycmF5OiJmeWxraSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7c30gw75hciBzZW0gw6EgYcOwIHZlcmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9YDpgUmFuZ3QgZ2lsZGk6IMOew7ogc2zDs3N0IGlubiAke3N9IMO+YXIgc2VtIMOhIGHDsCB2ZXJhICR7aX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFJhbmd0IGdpbGRpOiBnZXJ0IHLDocOwIGZ5cmlyICR7ayhlLnZhbHVlc1swXSl9YDpgw5NnaWx0IHZhbDogbcOhIHZlcmEgZWl0dCBhZiBlZnRpcmZhcmFuZGkgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE9mIHN0w7NydDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbj8/ImdpbGRpIn0gaGFmaSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJobHV0aSJ9YDpgT2Ygc3TDs3J0OiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2luPz8iZ2lsZGkifSBzw6kgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gaGFmaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gc8OpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgYnlyamEgw6EgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGVuZGEgw6EgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgaW5uaWhhbGRhICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZnlsZ2phIG15bnN0cmkgJHtpLnBhdHRlcm59YDpgUmFuZ3QgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFLDtm5nIHRhbGE6IHZlcsOwdXIgYcOwIHZlcmEgbWFyZ2ZlbGRpIGFmICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYMOTw75la2t0ICR7ZS5rZXlzLmxlbmd0aD4xPyJpciBseWtsYXIiOiJ1ciBseWtpbGwifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBSYW5ndXIgbHlraWxsIMOtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJSYW5ndCBnaWxkaSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBSYW5ndCBnaWxkaSDDrSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iUmFuZ3QgZ2lsZGkifX19O2Z1bmN0aW9uIHRmKCl7cmV0dXJue2xvY2FsZUVycm9yOmVmKCl9fWNvbnN0IG5mPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhdHRlcmkiLHZlcmI6ImF2ZXJlIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoiYXZlcmUifSxhcnJheTp7dW5pdDoiZWxlbWVudGkiLHZlcmI6ImF2ZXJlIn0sc2V0Ont1bml0OiJlbGVtZW50aSIsdmVyYjoiYXZlcmUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJpbmRpcml6em8gZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgZSBvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToib3JhIElTTyIsZHVyYXRpb246ImR1cmF0YSBJU08iLGlwdjQ6ImluZGlyaXp6byBJUHY0IixpcHY2OiJpbmRpcml6em8gSVB2NiIsY2lkcnY0OiJpbnRlcnZhbGxvIElQdjQiLGNpZHJ2NjoiaW50ZXJ2YWxsbyBJUHY2IixiYXNlNjQ6InN0cmluZ2EgY29kaWZpY2F0YSBpbiBiYXNlNjQiLGJhc2U2NHVybDoiVVJMIGNvZGlmaWNhdGEgaW4gYmFzZTY0Iixqc29uX3N0cmluZzoic3RyaW5nYSBKU09OIixlMTY0OiJudW1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6Im51bWVybyIsYXJyYXk6InZldHRvcmUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmljZXZ1dG8gJHtzfWA6YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke2l9LCByaWNldnV0byAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHtrKGUudmFsdWVzWzBdKX1gOmBPcHppb25lIG5vbiB2YWxpZGE6IGF0dGVzbyB1bm8gdHJhICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wcG8gZ3JhbmRlOiAke2Uub3JpZ2luPz8idmFsb3JlIn0gZGV2ZSBhdmVyZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50aSJ9YDpgVHJvcHBvIGdyYW5kZTogJHtlLm9yaWdpbj8/InZhbG9yZSJ9IGRldmUgZXNzZXJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3BwbyBwaWNjb2xvOiAke2Uub3JpZ2lufSBkZXZlIGF2ZXJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wcG8gcGljY29sbzogJHtlLm9yaWdpbn0gZGV2ZSBlc3NlcmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBpbml6aWFyZSBjb24gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIHRlcm1pbmFyZSBjb24gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5jbHVkZXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgY29ycmlzcG9uZGVyZSBhbCBwYXR0ZXJuICR7aS5wYXR0ZXJufWA6YElucHV0IG5vbiB2YWxpZG86ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOdW1lcm8gbm9uIHZhbGlkbzogZGV2ZSBlc3NlcmUgdW4gbXVsdGlwbG8gZGkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hpYXYke2Uua2V5cy5sZW5ndGg+MT8iaSI6ImUifSBub24gcmljb25vc2NpdXQke2Uua2V5cy5sZW5ndGg+MT8iZSI6ImEifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGlhdmUgbm9uIHZhbGlkYSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW5wdXQgbm9uIHZhbGlkbyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvcmUgbm9uIHZhbGlkbyBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW5wdXQgbm9uIHZhbGlkbyJ9fX07ZnVuY3Rpb24gcmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6bmYoKX19Y29uc3Qgb2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuaWh+WtlyIsdmVyYjoi44Gn44GC44KLIn0sZmlsZTp7dW5pdDoi44OQ44Kk44OIIix2ZXJiOiLjgafjgYLjgosifSxhcnJheTp7dW5pdDoi6KaB57SgIix2ZXJiOiLjgafjgYLjgosifSxzZXQ6e3VuaXQ6Iuimgee0oCIsdmVyYjoi44Gn44GC44KLIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuWFpeWKm+WApCIsZW1haWw6IuODoeODvOODq+OCouODieODrOOCuSIsdXJsOiJVUkwiLGVtb2ppOiLntbXmloflrZciLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTT+aXpeaZgiIsZGF0ZToiSVNP5pel5LuYIix0aW1lOiJJU0/mmYLliLsiLGR1cmF0aW9uOiJJU0/mnJ/plpMiLGlwdjQ6IklQdjTjgqLjg4njg6zjgrkiLGlwdjY6IklQdjbjgqLjg4njg6zjgrkiLGNpZHJ2NDoiSVB2NOevhOWbsiIsY2lkcnY2OiJJUHY256+E5ZuyIixiYXNlNjQ6ImJhc2U2NOOCqOODs+OCs+ODvOODieaWh+Wtl+WIlyIsYmFzZTY0dXJsOiJiYXNlNjR1cmzjgqjjg7PjgrPjg7zjg4nmloflrZfliJciLGpzb25fc3RyaW5nOiJKU09O5paH5a2X5YiXIixlMTY0OiJFLjE2NOeVquWPtyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuWFpeWKm+WApCJ9LG89e25hbjoiTmFOIixudW1iZXI6IuaVsOWApCIsYXJyYXk6IumFjeWIlyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DnhKHlirnjgarlhaXlips6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7c33jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gOmDnhKHlirnjgarlhaXlips6ICR7aX3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ/jgYzjgIEke3N944GM5YWl5Yqb44GV44KM44G+44GX44GfYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DnhKHlirnjgarlhaXlips6ICR7ayhlLnZhbHVlc1swXSl944GM5pyf5b6F44GV44KM44G+44GX44GfYDpg54Sh5Yq544Gq6YG45oqeOiAkeyQoZS52YWx1ZXMsIuOAgSIpfeOBruOBhOOBmuOCjOOBi+OBp+OBguOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i5Lul5LiL44Gn44GC44KLIjoi44KI44KK5bCP44GV44GEIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHthLnVuaXQ/PyLopoHntKAifSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgOmDlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLku6XkuIrjgafjgYLjgosiOiLjgojjgorlpKfjgY3jgYQiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOWwj+OBleOBmeOBjuOCi+WApDogJHtlLm9yaWdpbn3jga8ke2UubWluaW11bS50b1N0cmluZygpfSR7YS51bml0fSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgOmDlsI/jgZXjgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW5944GvJHtlLm1pbmltdW0udG9TdHJpbmcoKX0ke2l95b+F6KaB44GM44GC44KK44G+44GZYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7aS5wcmVmaXh9IuOBp+Wni+OBvuOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLnN1ZmZpeH0i44Gn57WC44KP44KL5b+F6KaB44GM44GC44KK44G+44GZYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7aS5pbmNsdWRlc30i44KS5ZCr44KA5b+F6KaB44GM44GC44KK44G+44GZYDppLmZvcm1hdD09PSJyZWdleCI/YOeEoeWKueOBquaWh+Wtl+WIlzog44OR44K/44O844OzJHtpLnBhdHRlcm5944Gr5LiA6Ie044GZ44KL5b+F6KaB44GM44GC44KK44G+44GZYDpg54Sh5Yq544GqJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOeEoeWKueOBquaVsOWApDogJHtlLmRpdmlzb3J944Gu5YCN5pWw44Gn44GC44KL5b+F6KaB44GM44GC44KK44G+44GZYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g6KqN6K2Y44GV44KM44Gm44GE44Gq44GE44Kt44O8JHtlLmtleXMubGVuZ3RoPjE/Iue+pCI6IiJ9OiAkeyQoZS5rZXlzLCLjgIEiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufeWGheOBrueEoeWKueOBquOCreODvGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i54Sh5Yq544Gq5YWl5YqbIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq5YCkYDtkZWZhdWx0OnJldHVybiLnhKHlirnjgarlhaXlipsifX19O2Z1bmN0aW9uIGFmKCl7cmV0dXJue2xvY2FsZUVycm9yOm9mKCl9fWNvbnN0IHNmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLhg6Hhg5jhg5vhg5Hhg53hg5rhg50iLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxmaWxlOnt1bml0OiLhg5Hhg5Dhg5jhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxhcnJheTp7dW5pdDoi4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sc2V0Ont1bml0OiLhg5Thg5rhg5Thg5vhg5Thg5zhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIixlbWFpbDoi4YOU4YOaLeGDpOGDneGDoeGDouGDmOGDoSDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLHVybDoiVVJMIixlbW9qaToi4YOU4YOb4YOd4YOv4YOYIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLhg5fhg5Dhg6Dhg5jhg6bhg5gt4YOT4YOg4YOdIixkYXRlOiLhg5fhg5Dhg6Dhg5jhg6bhg5giLHRpbWU6IuGDk+GDoOGDnSIsZHVyYXRpb246IuGDruGDkOGDnOGDkuGDoOGDq+GDmuGDmOGDleGDneGDkeGDkCIsaXB2NDoiSVB2NCDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLGlwdjY6IklQdjYg4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOYIixjaWRydjQ6IklQdjQg4YOT4YOY4YOQ4YOe4YOQ4YOW4YOd4YOc4YOYIixjaWRydjY6IklQdjYg4YOT4YOY4YOQ4YOe4YOQ4YOW4YOd4YOc4YOYIixiYXNlNjQ6ImJhc2U2NC3hg5nhg53hg5Phg5jhg6Dhg5Thg5Hhg6Phg5rhg5gg4YOV4YOU4YOa4YOYIixiYXNlNjR1cmw6ImJhc2U2NHVybC3hg5nhg53hg5Phg5jhg6Dhg5Thg5Hhg6Phg5rhg5gg4YOV4YOU4YOa4YOYIixqc29uX3N0cmluZzoiSlNPTiDhg5Xhg5Thg5rhg5giLGUxNjQ6IkUuMTY0IOGDnOGDneGDm+GDlOGDoOGDmCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuGDqOGDlOGDp+GDleGDkOGDnOGDkCJ9LG89e25hbjoiTmFOIixudW1iZXI6IuGDoOGDmOGDquGDruGDleGDmCIsc3RyaW5nOiLhg5Xhg5Thg5rhg5giLGJvb2xlYW46IuGDkeGDo+GDmuGDlOGDkOGDnOGDmCIsZnVuY3Rpb246IuGDpOGDo+GDnOGDpeGDquGDmOGDkCIsYXJyYXk6IuGDm+GDkOGDoeGDmOGDleGDmCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDhg5vhg5jhg6bhg5Thg5Hhg6Phg5rhg5ggJHtzfWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2l9LCDhg5vhg5jhg6bhg5Thg5Hhg6Phg5rhg5ggJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ayhlLnZhbHVlc1swXSl9YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDkOGDoOGDmOGDkOGDnOGDouGDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOY4YOQIOGDlOGDoOGDly3hg5Thg6Dhg5fhg5ggJHskKGUudmFsdWVzLCJ8Iil9LeGDk+GDkOGDnGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbj8/IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDk+GDmOGDk+GDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW4/PyLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AifSDhg5jhg6fhg53hg6EgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDnuGDkOGDouGDkOGDoOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDnuGDkOGDouGDkOGDoOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW59IOGDmOGDp+GDneGDoSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDmOGDrOGDp+GDlOGDkeGDneGDk+GDlOGDoSAiJHtpLnByZWZpeH0iLeGDmOGDl2A6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDm+GDl+GDkOGDleGDoOGDk+GDlOGDkeGDneGDk+GDlOGDoSAiJHtpLnN1ZmZpeH0iLeGDmOGDl2A6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhICIke2kuaW5jbHVkZXN9Ii3hg6FgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDqOGDlOGDlOGDoeGDkOGDkeGDkOGDm+GDlOGDkeGDneGDk+GDlOGDoSDhg6jhg5Dhg5Hhg5rhg53hg5zhg6EgJHtpLnBhdHRlcm59YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOg4YOY4YOq4YOu4YOV4YOYOiDhg6Phg5zhg5Phg5Ag4YOY4YOn4YOd4YOhICR7ZS5kaXZpc29yfS3hg5jhg6Eg4YOv4YOU4YOg4YOQ4YOT4YOYYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4YOj4YOq4YOc4YOd4YOR4YOYIOGDkuGDkOGDoeGDkOGDpuGDlOGDkSR7ZS5rZXlzLmxlbmd0aD4xPyLhg5Thg5Hhg5giOiLhg5gifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOS4YOQ4YOh4YOQ4YOm4YOU4YOR4YOYICR7ZS5vcmlnaW59LeGDqOGDmGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQICR7ZS5vcmlnaW59LeGDqOGDmGA7ZGVmYXVsdDpyZXR1cm4i4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkCJ9fX07ZnVuY3Rpb24gY2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6c2YoKX19Y29uc3QgdWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuGej+GeveGeouGegOGfkuGen+GemiIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn0sZmlsZTp7dW5pdDoi4Z6U4Z+DIix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxhcnJheTp7dW5pdDoi4Z6S4Z624Z6P4Z67Iix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxzZXQ6e3VuaXQ6IuGekuGetuGej+GeuyIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGemyIsZW1haWw6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGek+GeouGfiuGeuOGemOGfguGemyIsdXJsOiJVUkwiLGVtb2ppOiLhnp/hnonhn5LhnonhnrbhnqLhnrbhnprhnpjhn5Lhnpjhno7hn40iLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuGegOGetuGem+GelOGemuGet+GeheGfkuGehuGfgeGekSDhnpPhnrfhnoThnpjhn4nhn4ThnoQgSVNPIixkYXRlOiLhnoDhnrbhnpvhnpThnprhnrfhnoXhn5Lhnobhn4HhnpEgSVNPIix0aW1lOiLhnpjhn4nhn4ThnoQgSVNPIixkdXJhdGlvbjoi4Z6a4Z6Z4Z+I4Z6W4Z+B4Z6bIElTTyIsaXB2NDoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjQiLGlwdjY6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY2IixjaWRydjQ6IuGeiuGfguGek+GeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0IixjaWRydjY6IuGeiuGfguGek+GeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY2IixiYXNlNjQ6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGeouGfiuGet+GegOGevOGeiiBiYXNlNjQiLGJhc2U2NHVybDoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6i4Z+K4Z634Z6A4Z684Z6KIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemiBKU09OIixlMTY0OiLhnpvhn4HhnoEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpsifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLhnpvhn4HhnoEiLGFycmF5OiLhnqLhnrbhnprhn4EgKEFycmF5KSIsbnVsbDoi4Z6C4Z+S4Z6Y4Z624Z6T4Z6P4Z6Y4Z+S4Z6b4Z+DIChudWxsKSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDhnpThn4nhnrvhnpPhn5Lhno/hn4LhnpHhnpHhnr3hnpvhnpThnrbhnpMgJHtzfWA6YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtpfSDhnpThn4nhnrvhnpPhn5Lhno/hn4LhnpHhnpHhnr3hnpvhnpThnrbhnpMgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2soZS52YWx1ZXNbMF0pfWA6YOGeh+GemOGfkuGemuGevuGen+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhnofhnrbhnpjhnr3hnpnhnoDhn5LhnpPhnrvhnoThnoXhn4bhno7hn4ThnpggJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGekuGfhuGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbj8/IuGej+GemOGfkuGem+GfgyJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLhnpLhnrbhno/hnrsifWA6YOGekuGfhuGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbj8/IuGej+GemOGfkuGem+GfgyJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dhno/hnrzhnoXhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW59ICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4Z6P4Z684Z6F4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2lufSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoXhnrbhnpThn4vhnpXhn5Lhno/hnr7hnpjhnorhn4ThnpkgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGelOGeieGfkuGeheGelOGfi+GeiuGfhOGemSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnpjhnrbhnpMgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnpXhn5LhnoLhnrzhnpXhn5LhnoLhnoThnpPhnrnhnoThnpHhnpjhn5LhnprhnoThn4vhnorhn4LhnpvhnpThnrbhnpPhnoDhn4bhno7hno/hn4sgJHtpLnBhdHRlcm59YDpg4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDhnpvhn4HhnoHhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6P4Z+C4Z6H4Z624Z6W4Z6g4Z674Z6C4Z674Z6O4Z6T4Z+DICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGemuGegOGeg+GevuGeieGen+GfhOGemOGet+Gek+Gen+GfkuGeguGetuGem+Gfi+GfliAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOGen+GfhOGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGek+GfheGegOGfkuGek+Geu+GehCAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6cIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGek+GfheGegOGfkuGek+Geu+GehCAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6cIn19fTtmdW5jdGlvbiBzbCgpe3JldHVybntsb2NhbGVFcnJvcjp1ZigpfX1mdW5jdGlvbiBsZigpe3JldHVybiBzbCgpfWNvbnN0IGRmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLrrLjsnpAiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiLrsJTsnbTtirgiLHZlcmI6InRvIGhhdmUifSxhcnJheTp7dW5pdDoi6rCcIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiLqsJwiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi7J6F66ClIixlbWFpbDoi7J2066mU7J28IOyjvOyGjCIsdXJsOiJVUkwiLGVtb2ppOiLsnbTrqqjsp4AiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDrgqDsp5zsi5zqsIQiLGRhdGU6IklTTyDrgqDsp5wiLHRpbWU6IklTTyDsi5zqsIQiLGR1cmF0aW9uOiJJU08g6riw6rCEIixpcHY0OiJJUHY0IOyjvOyGjCIsaXB2NjoiSVB2NiDso7zshowiLGNpZHJ2NDoiSVB2NCDrspTsnIQiLGNpZHJ2NjoiSVB2NiDrspTsnIQiLGJhc2U2NDoiYmFzZTY0IOyduOy9lOuUqSDrrLjsnpDsl7QiLGJhc2U2NHVybDoiYmFzZTY0dXJsIOyduOy9lOuUqSDrrLjsnpDsl7QiLGpzb25fc3RyaW5nOiJKU09OIOusuOyekOyXtCIsZTE2NDoiRS4xNjQg67KI7Zi4Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi7J6F66ClIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g7J6Y66q765CcIOyeheugpTog7JiI7IOBIO2DgOyeheydgCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOuwm+ydgCDtg4DsnoXsnYAgJHtzfeyeheuLiOuLpGA6YOyemOuqu+uQnCDsnoXroKU6IOyYiOyDgSDtg4DsnoXsnYAgJHtpfSwg67Cb7J2AIO2DgOyeheydgCAke3N97J6F64uI64ukYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DsnpjrqrvrkJwg7J6F66ClOiDqsJLsnYAgJHtrKGUudmFsdWVzWzBdKX0g7J207Ja07JW8IO2VqeuLiOuLpGA6YOyemOuqu+uQnCDsmLXshZg6ICR7JChlLnZhbHVlcywi65iQ64qUICIpfSDspJEg7ZWY64KY7Jes7JW8IO2VqeuLiOuLpGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i7J207ZWYIjoi66+466eMIixhPWk9PT0i66+466eMIj8i7J207Ja07JW8IO2VqeuLiOuLpCI6IuyXrOyVvCDtlanri4jri6QiLHM9bihlLm9yaWdpbiksYz1zPy51bml0Pz8i7JqU7IaMIjtyZXR1cm4gcz9gJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDtgb3ri4jri6Q6ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtjfSAke2l9JHthfWA6YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7YG964uI64ukOiAke2UubWF4aW11bS50b1N0cmluZygpfSAke2l9JHthfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLsnbTsg4EiOiLstIjqs7wiLGE9aT09PSLsnbTsg4EiPyLsnbTslrTslbwg7ZWp64uI64ukIjoi7Jes7JW8IO2VqeuLiOuLpCIscz1uKGUub3JpZ2luKSxjPXM/LnVuaXQ/PyLsmpTshowiO3JldHVybiBzP2Ake2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IOyekeyKteuLiOuLpDogJHtlLm1pbmltdW0udG9TdHJpbmcoKX0ke2N9ICR7aX0ke2F9YDpgJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDsnpHsirXri4jri6Q6ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7aX0ke2F9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kucHJlZml4fSIo7Jy8KeuhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtpLnN1ZmZpeH0iKOycvCnroZwg64Gd64KY7JW8IO2VqeuLiOuLpGA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtpLmluY2x1ZGVzfSLsnYQo66W8KSDtj6ztlajtlbTslbwg7ZWp64uI64ukYDppLmZvcm1hdD09PSJyZWdleCI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6IOygleq3nOyLnSAke2kucGF0dGVybn0g7Yyo7YS06rO8IOydvOy5mO2VtOyVvCDtlanri4jri6RgOmDsnpjrqrvrkJwgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOyemOuqu+uQnCDsiKvsnpA6ICR7ZS5kaXZpc29yfeydmCDrsLDsiJjsl6zslbwg7ZWp64uI64ukYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g7J247Iud7ZWgIOyImCDsl4bripQg7YKkOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOyemOuqu+uQnCDtgqQ6ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLsnpjrqrvrkJwg7J6F66ClIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOyemOuqu+uQnCDqsJI6ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLsnpjrqrvrkJwg7J6F66ClIn19fTtmdW5jdGlvbiBtZigpe3JldHVybntsb2NhbGVFcnJvcjpkZigpfX1jb25zdCBkdD10PT50LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7ZnVuY3Rpb24gZnModCl7Y29uc3Qgbj1NYXRoLmFicyh0KSxyPW4lMTAsbz1uJTEwMDtyZXR1cm4gbz49MTEmJm88PTE5fHxyPT09MD8ibWFueSI6cj09PTE/Im9uZSI6ImZldyJ9Y29uc3QgcGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToic2ltYm9saXMiLGZldzoic2ltYm9saWFpIixtYW55OiJzaW1ib2xpxbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgaWxnZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIHRydW1wZXNuxJcga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIHRydW1wZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIGlsZ2VzbsSXIGthaXAifX19LGZpbGU6e3VuaXQ6e29uZToiYmFpdGFzIixmZXc6ImJhaXRhaSIsbWFueToiYmFpdMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIGRpZGVzbmlzIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBtYcW+ZXNuaXMga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIG1hxb5lc25pcyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgZGlkZXNuaXMga2FpcCJ9fX0sYXJyYXk6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fSxzZXQ6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fX07ZnVuY3Rpb24gbihlLGksYSxzKXtjb25zdCBjPXRbZV0/P251bGw7cmV0dXJuIGM9PT1udWxsP2M6e3VuaXQ6Yy51bml0W2ldLHZlcmI6Yy52ZXJiW3NdW2E/ImluY2x1c2l2ZSI6Im5vdEluY2x1c2l2ZSJdfX1jb25zdCByPXtyZWdleDoixK92ZXN0aXMiLGVtYWlsOiJlbC4gcGHFoXRvIGFkcmVzYXMiLHVybDoiVVJMIixlbW9qaToiamF1c3R1a2FzIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0YSBpciBsYWlrYXMiLGRhdGU6IklTTyBkYXRhIix0aW1lOiJJU08gbGFpa2FzIixkdXJhdGlvbjoiSVNPIHRydWttxJciLGlwdjQ6IklQdjQgYWRyZXNhcyIsaXB2NjoiSVB2NiBhZHJlc2FzIixjaWRydjQ6IklQdjQgdGlua2xvIHByZWZpa3NhcyAoQ0lEUikiLGNpZHJ2NjoiSVB2NiB0aW5rbG8gcHJlZmlrc2FzIChDSURSKSIsYmFzZTY0OiJiYXNlNjQgdcW+a29kdW90YSBlaWx1dMSXIixiYXNlNjR1cmw6ImJhc2U2NHVybCB1xb5rb2R1b3RhIGVpbHV0xJciLGpzb25fc3RyaW5nOiJKU09OIGVpbHV0xJciLGUxNjQ6IkUuMTY0IG51bWVyaXMiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLEr3Zlc3RpcyJ9LG89e25hbjoiTmFOIixudW1iZXI6InNrYWnEjWl1cyIsYmlnaW50OiJzdmVpa2FzaXMgc2thacSNaXVzIixzdHJpbmc6ImVpbHV0xJciLGJvb2xlYW46ImxvZ2luxJcgcmVpa8WhbcSXIix1bmRlZmluZWQ6Im5lYXBpYnLEl8W+dGEgcmVpa8WhbcSXIixmdW5jdGlvbjoiZnVua2NpamEiLHN5bWJvbDoic2ltYm9saXMiLGFycmF5OiJtYXN5dmFzIixvYmplY3Q6Im9iamVrdGFzIixudWxsOiJudWxpbsSXIHJlaWvFoW3ElyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BHYXV0YXMgdGlwYXMgJHtzfSwgbyB0aWvEl3Rhc2kgLSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH1gOmBHYXV0YXMgdGlwYXMgJHtzfSwgbyB0aWvEl3Rhc2kgLSAke2l9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BQcml2YWxvIGLFq3RpICR7ayhlLnZhbHVlc1swXSl9YDpgUHJpdmFsbyBixat0aSB2aWVuYXMgacWhICR7JChlLnZhbHVlcywifCIpfSBwYXNpcmlua2ltxbNgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9b1tlLm9yaWdpbl0/P2Uub3JpZ2luLGE9bihlLm9yaWdpbixmcyhOdW1iZXIoZS5tYXhpbXVtKSksZS5pbmNsdXNpdmU/PyExLCJzbWFsbGVyIik7aWYoYT8udmVyYilyZXR1cm5gJHtkdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSAke2EudmVyYn0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50xbMifWA7Y29uc3Qgcz1lLmluY2x1c2l2ZT8ibmUgZGlkZXNuaXMga2FpcCI6Im1hxb5lc25pcyBrYWlwIjtyZXR1cm5gJHtkdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGLFq3RpICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthPy51bml0fWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPW9bZS5vcmlnaW5dPz9lLm9yaWdpbixhPW4oZS5vcmlnaW4sZnMoTnVtYmVyKGUubWluaW11bSkpLGUuaW5jbHVzaXZlPz8hMSwiYmlnZ2VyIik7aWYoYT8udmVyYilyZXR1cm5gJHtkdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSAke2EudmVyYn0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50xbMifWA7Y29uc3Qgcz1lLmluY2x1c2l2ZT8ibmUgbWHFvmVzbmlzIGthaXAiOiJkaWRlc25pcyBrYWlwIjtyZXR1cm5gJHtkdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGLFq3RpICR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthPy51bml0fWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BFaWx1dMSXIHByaXZhbG8gcHJhc2lkxJd0aSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BFaWx1dMSXIHByaXZhbG8gcGFzaWJhaWd0aSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEVpbHV0xJcgcHJpdmFsbyDEr3RyYXVrdGkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEVpbHV0xJcgcHJpdmFsbyBhdGl0aWt0aSAke2kucGF0dGVybn1gOmBOZXRlaXNpbmdhcyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gU2thacSNaXVzIHByaXZhbG8gYsWrdGkgJHtlLmRpdmlzb3J9IGthcnRvdGluaXMuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVhdHBhxb5pbnQke2Uua2V5cy5sZW5ndGg+MT8iaSI6ImFzIn0gcmFrdCR7ZS5rZXlzLmxlbmd0aD4xPyJhaSI6ImFzIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4iUmFzdGFzIGtsYWlkaW5nYXMgcmFrdGFzIjtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJLbGFpZGluZ2EgxK92ZXN0aXMiO2Nhc2UiaW52YWxpZF9lbGVtZW50Ijp7Y29uc3QgaT1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuYCR7ZHQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gdHVyaSBrbGFpZGluZ8SFIMSvdmVzdMSvYH1kZWZhdWx0OnJldHVybiJLbGFpZGluZ2EgxK92ZXN0aXMifX19O2Z1bmN0aW9uIGZmKCl7cmV0dXJue2xvY2FsZUVycm9yOnBmKCl9fWNvbnN0IGdmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLQt9C90LDRhtC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifSxmaWxlOnt1bml0OiLQsdCw0ZjRgtC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifSxhcnJheTp7dW5pdDoi0YHRgtCw0LLQutC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifSxzZXQ6e3VuaXQ6ItGB0YLQsNCy0LrQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0L3QtdGBIixlbWFpbDoi0LDQtNGA0LXRgdCwINC90LAg0LUt0L/QvtGI0YLQsCIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7Rn9C4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0YPQvCDQuCDQstGA0LXQvNC1IixkYXRlOiJJU08g0LTQsNGC0YPQvCIsdGltZToiSVNPINCy0YDQtdC80LUiLGR1cmF0aW9uOiJJU08g0LLRgNC10LzQtdGC0YDQsNC10ZrQtSIsaXB2NDoiSVB2NCDQsNC00YDQtdGB0LAiLGlwdjY6IklQdjYg0LDQtNGA0LXRgdCwIixjaWRydjQ6IklQdjQg0L7Qv9GB0LXQsyIsY2lkcnY2OiJJUHY2INC+0L/RgdC10LMiLGJhc2U2NDoiYmFzZTY0LdC10L3QutC+0LTQuNGA0LDQvdCwINC90LjQt9CwIixiYXNlNjR1cmw6ImJhc2U2NHVybC3QtdC90LrQvtC00LjRgNCw0L3QsCDQvdC40LfQsCIsanNvbl9zdHJpbmc6IkpTT04g0L3QuNC30LAiLGUxNjQ6IkUuMTY0INCx0YDQvtGYIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLQvdC10YEifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLQsdGA0L7RmCIsYXJyYXk6ItC90LjQt9CwIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCT0YDQtdGI0LXQvSDQstC90LXRgTog0YHQtSDQvtGH0LXQutGD0LLQsCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0YDQuNC80LXQvdC+ICR7c31gOmDQk9GA0LXRiNC10L0g0LLQvdC10YE6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtpfSwg0L/RgNC40LzQtdC90L4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtrKGUudmFsdWVzWzBdKX1gOmDQk9GA0LXRiNCw0L3QsCDQvtC/0YbQuNGY0LA6INGB0LUg0L7Rh9C10LrRg9Cy0LAg0LXQtNC90LAgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCf0YDQtdC80L3QvtCz0YMg0LPQvtC70LXQvDog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2luPz8i0LLRgNC10LTQvdC+0YHRgtCwIn0g0LTQsCDQuNC80LAgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i0LXQu9C10LzQtdC90YLQuCJ9YDpg0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW4/PyLQstGA0LXQtNC90L7RgdGC0LAifSDQtNCwINCx0LjQtNC1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCf0YDQtdC80L3QvtCz0YMg0LzQsNC7OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW59INC00LAg0LjQvNCwICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2lufSDQtNCwINCx0LjQtNC1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LfQsNC/0L7Rh9C90YPQstCwINGB0L4gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQstGA0YjRg9Cy0LAg0YHQviAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQstC60LvRg9GH0YPQstCwICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0L7QtNCz0L7QsNGA0LAg0L3QsCDQv9Cw0YLQtdGA0L3QvtGCICR7aS5wYXR0ZXJufWA6YEludmFsaWQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCT0YDQtdGI0LXQvSDQsdGA0L7RmDog0LzQvtGA0LAg0LTQsCDQsdC40LTQtSDQtNC10LvQuNCyINGB0L4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/ItCd0LXQv9GA0LXQv9C+0LfQvdCw0LXQvdC4INC60LvRg9GH0LXQstC4Ijoi0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC9INC60LvRg9GHIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0JPRgNC10YjQtdC9INC60LvRg9GHINCy0L4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCT0YDQtdGI0LXQvSDQstC90LXRgSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQk9GA0LXRiNC90LAg0LLRgNC10LTQvdC+0YHRgiDQstC+ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQk9GA0LXRiNC10L0g0LLQvdC10YEifX19O2Z1bmN0aW9uIHZmKCl7cmV0dXJue2xvY2FsZUVycm9yOmdmKCl9fWNvbnN0IGhmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJha3NhcmEiLHZlcmI6Im1lbXB1bnlhaSJ9LGZpbGU6e3VuaXQ6ImJhaXQiLHZlcmI6Im1lbXB1bnlhaSJ9LGFycmF5Ont1bml0OiJlbGVtZW4iLHZlcmI6Im1lbXB1bnlhaSJ9LHNldDp7dW5pdDoiZWxlbWVuIix2ZXJiOiJtZW1wdW55YWkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJhbGFtYXQgZS1tZWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6InRhcmlraCBtYXNhIElTTyIsZGF0ZToidGFyaWtoIElTTyIsdGltZToibWFzYSBJU08iLGR1cmF0aW9uOiJ0ZW1wb2ggSVNPIixpcHY0OiJhbGFtYXQgSVB2NCIsaXB2NjoiYWxhbWF0IElQdjYiLGNpZHJ2NDoianVsYXQgSVB2NCIsY2lkcnY2OiJqdWxhdCBJUHY2IixiYXNlNjQ6InN0cmluZyBkaWtvZGthbiBiYXNlNjQiLGJhc2U2NHVybDoic3RyaW5nIGRpa29ka2FuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6InN0cmluZyBKU09OIixlMTY0OiJub21ib3IgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6Im5vbWJvciJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtzfWA6YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtpfSwgZGl0ZXJpbWEgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke2soZS52YWx1ZXNbMF0pfWA6YFBpbGloYW4gdGlkYWsgc2FoOiBkaWphbmdrYSBzYWxhaCBzYXR1IGRhcmlwYWRhICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGJlc2FyOiBkaWphbmdrYSAke2Uub3JpZ2luPz8ibmlsYWkifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVuIn1gOmBUZXJsYWx1IGJlc2FyOiBkaWphbmdrYSAke2Uub3JpZ2luPz8ibmlsYWkifSBhZGFsYWggJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUZXJsYWx1IGtlY2lsOiBkaWphbmdrYSAke2Uub3JpZ2lufSBhZGFsYWggJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcm11bGEgZGVuZ2FuICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcmFraGlyIGRlbmdhbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIG1lbmdhbmR1bmdpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBzZXBhZGFuIGRlbmdhbiBjb3JhayAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gdGlkYWsgc2FoYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJvciB0aWRhayBzYWg6IHBlcmx1IGdhbmRhYW4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGk6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS3VuY2kgdGlkYWsgc2FoIGRhbGFtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnB1dCB0aWRhayBzYWgiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmlsYWkgdGlkYWsgc2FoIGRhbGFtICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCB0aWRhayBzYWgifX19O2Z1bmN0aW9uIF9mKCl7cmV0dXJue2xvY2FsZUVycm9yOmhmKCl9fWNvbnN0ICRmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWtlbnMiLHZlcmI6ImhlZWZ0In0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImhlZWZ0In0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlbiIsdmVyYjoiaGVlZnQifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlbiIsdmVyYjoiaGVlZnQifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW52b2VyIixlbWFpbDoiZW1haWxhZHJlcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdHVtIGVuIHRpamQiLGRhdGU6IklTTyBkYXR1bSIsdGltZToiSVNPIHRpamQiLGR1cmF0aW9uOiJJU08gZHV1ciIsaXB2NDoiSVB2NC1hZHJlcyIsaXB2NjoiSVB2Ni1hZHJlcyIsY2lkcnY0OiJJUHY0LWJlcmVpayIsY2lkcnY2OiJJUHY2LWJlcmVpayIsYmFzZTY0OiJiYXNlNjQtZ2Vjb2RlZXJkZSB0ZWtzdCIsYmFzZTY0dXJsOiJiYXNlNjQgVVJMLWdlY29kZWVyZGUgdGVrc3QiLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW52b2VyIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiZ2V0YWwifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvbnR2aW5nICR7c31gOmBPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke2l9LCBvbnR2aW5nICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0ICR7ayhlLnZhbHVlc1swXSl9YDpgT25nZWxkaWdlIG9wdGllOiB2ZXJ3YWNodCDDqcOpbiB2YW4gJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1lLm9yaWdpbj09PSJkYXRlIj8ibGFhdCI6ZS5vcmlnaW49PT0ic3RyaW5nIj8ibGFuZyI6Imdyb290IjtyZXR1cm4gYT9gVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW4/PyJ3YWFyZGUifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZW4ifSAke2EudmVyYn1gOmBUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbj8/IndhYXJkZSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSBpc2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1lLm9yaWdpbj09PSJkYXRlIj8idnJvZWciOmUub3JpZ2luPT09InN0cmluZyI/ImtvcnQiOiJrbGVpbiI7cmV0dXJuIGE/YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9ICR7YS52ZXJifWA6YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gaXNgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG1ldCAiJHtpLnByZWZpeH0iIGJlZ2lubmVuYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3AgIiR7aS5zdWZmaXh9IiBlaW5kaWdlbmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgIiR7aS5pbmNsdWRlc30iIGJldmF0dGVuYDppLmZvcm1hdD09PSJyZWdleCI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvdmVyZWVua29tZW4gbWV0IHBhdHJvb24gJHtpLnBhdHRlcm59YDpgT25nZWxkaWc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBPbmdlbGRpZyBnZXRhbDogbW9ldCBlZW4gdmVlbHZvdWQgdmFuICR7ZS5kaXZpc29yfSB6aWpuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gT25iZWtlbmRlIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gT25nZWxkaWdlIGtleSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iT25nZWxkaWdlIGludm9lciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBPbmdlbGRpZ2Ugd2FhcmRlIGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJPbmdlbGRpZ2UgaW52b2VyIn19fTtmdW5jdGlvbiBiZigpe3JldHVybntsb2NhbGVFcnJvcjokZigpfX1jb25zdCB5Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVnbiIsdmVyYjoiw6UgaGEifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiw6UgaGEifSxhcnJheTp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiLDpSBpbm5laG9sZGUifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiw6UgaW5uZWhvbGRlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZS1wb3N0YWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdG8tIG9nIGtsb2trZXNsZXR0IixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLWtsb2trZXNsZXR0IixkdXJhdGlvbjoiSVNPLXZhcmlnaGV0IixpcHY0OiJJUHY0LW9tcsOlZGUiLGlwdjY6IklQdjYtb21yw6VkZSIsY2lkcnY0OiJJUHY0LXNwZWt0ZXIiLGNpZHJ2NjoiSVB2Ni1zcGVrdGVyIixiYXNlNjQ6ImJhc2U2NC1lbmtvZGV0IHN0cmVuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJ0YWxsIixhcnJheToibGlzdGUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmlrayAke3N9YDpgVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0ICR7aX0sIGZpa2sgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVWd5bGRpZyB2ZXJkaTogZm9ydmVudGV0ICR7ayhlLnZhbHVlc1swXSl9YDpgVWd5bGRpZyB2YWxnOiBmb3J2ZW50ZXQgZW4gYXYgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdGlsIMOlIGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlciJ9YDpgRm9yIHN0b3IodCk6IGZvcnZlbnRldCAke2Uub3JpZ2luPz8idmFsdWUifSB0aWwgw6UgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRm9yIGxpdGUobik6IGZvcnZlbnRldCAke2Uub3JpZ2lufSB0aWwgw6UgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbn0gdGlsIMOlIGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIHN0YXJ0ZSBtZWQgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IG3DpSBlbmRlIG1lZCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFVneWxkaWcgc3RyZW5nOiBtw6UgaW5uZWhvbGRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIG1hdGNoZSBtw7huc3RlcmV0ICR7aS5wYXR0ZXJufWA6YFVneWxkaWcgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVneWxkaWcgdGFsbDogbcOlIHbDpnJlIGV0IG11bHRpcGx1bSBhdiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVWtqZW50ZSBuw7hrbGVyIjoiVWtqZW50IG7DuGtrZWwifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBVZ3lsZGlnIG7DuGtrZWwgaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVWd5bGRpZyBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBVZ3lsZGlnIHZlcmRpIGkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlVneWxkaWcgaW5wdXQifX19O2Z1bmN0aW9uIGtmKCl7cmV0dXJue2xvY2FsZUVycm9yOnlmKCl9fWNvbnN0IFNmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJoYXJmIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6InVuc3VyIix2ZXJiOiJvbG1hbMSxZMSxciJ9LHNldDp7dW5pdDoidW5zdXIiLHZlcmI6Im9sbWFsxLFkxLFyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImdpcmVuIixlbWFpbDoiZXBvc3RhZ8OiaCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGhlbmfDom3EsSIsZGF0ZToiSVNPIHRhcmloaSIsdGltZToiSVNPIHphbWFuxLEiLGR1cmF0aW9uOiJJU08gbcO8ZGRldGkiLGlwdjQ6IklQdjQgbmnFn8OibsSxIixpcHY2OiJJUHY2IG5pxZ/Dom7EsSIsY2lkcnY0OiJJUHY0IG1lbnppbGkiLGNpZHJ2NjoiSVB2NiBtZW56aWxpIixiYXNlNjQ6ImJhc2U2NC3Fn2lmcmVsaSBtZXRpbiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtxZ9pZnJlbGkgbWV0aW4iLGpzb25fc3RyaW5nOiJKU09OIG1ldGluIixlMTY0OiJFLjE2NCBzYXnEsXPEsSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImdpcmVuIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibnVtYXJhIixhcnJheToic2FmIixudWxsOiJnYXliIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEbDonNpdCBnaXJlbjogdW11bGFuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYWzEsW5hbiAke3N9YDpgRsOic2l0IGdpcmVuOiB1bXVsYW4gJHtpfSwgYWzEsW5hbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BGw6JzaXQgZ2lyZW46IHVtdWxhbiAke2soZS52YWx1ZXNbMF0pfWA6YEbDonNpdCB0ZXJjaWg6IG3Du3RlYmVybGVyICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudHMifSBzYWhpcCBvbG1hbMSxeWTEsS5gOmBGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZhemxhIGvDvMOnw7xrOiAke2Uub3JpZ2lufSwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSBzYWhpcCBvbG1hbMSxeWTEsS5gOmBGYXpsYSBrw7zDp8O8azogJHtlLm9yaWdpbn0sICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSBvbG1hbMSxeWTEsS5gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gRsOic2l0IG1ldGluOiAiJHtpLnByZWZpeH0iIGlsZSBiYcWfbGFtYWzEsS5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEbDonNpdCBtZXRpbjogIiR7aS5zdWZmaXh9IiBpbGUgYml0bWVsaS5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gRsOic2l0IG1ldGluOiAiJHtpLmluY2x1ZGVzfSIgaWh0aXbDoiBldG1lbGkuYDppLmZvcm1hdD09PSJyZWdleCI/YEbDonNpdCBtZXRpbjogJHtpLnBhdHRlcm59IG5ha8WfxLFuYSB1eW1hbMSxLmA6YEbDonNpdCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gRsOic2l0IHNhecSxOiAke2UuZGl2aXNvcn0ga2F0xLEgb2xtYWzEsXlkxLEuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVGFuxLFubWF5YW4gYW5haHRhciAke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luIHRhbsSxbm1heWFuIGFuYWh0YXIgdmFyLmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iR2lyZW4gdGFuxLFuYW1hZMSxLiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbiB0YW7EsW5tYXlhbiBrxLF5bWV0IHZhci5gO2RlZmF1bHQ6cmV0dXJuIkvEsXltZXQgdGFuxLFuYW1hZMSxLiJ9fX07ZnVuY3Rpb24gd2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6U2YoKX19Y29uc3QgSWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LGZpbGU6e3VuaXQ6Itio2KfbjNm82LMiLHZlcmI6ItmI2YTYsdmKIn0sYXJyYXk6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LHNldDp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItmI2LHZiNiv2YoiLGVtYWlsOiLYqNix24zamtmG2KfZhNuM2qkiLHVybDoi24zZiCDYotixINin2YQiLGVtb2ppOiLYp9uM2YXZiNis2YoiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ItmG24zZvNmHINin2Ygg2YjYrtiqIixkYXRlOiLZhtuQ2bzZhyIsdGltZToi2YjYrtiqIixkdXJhdGlvbjoi2YXZiNiv2YciLGlwdjQ6ItivIElQdjQg2b7YqtmHIixpcHY2OiLYryBJUHY2INm+2KrZhyIsY2lkcnY0OiLYryBJUHY0INiz2KfYrdmHIixjaWRydjY6ItivIElQdjYg2LPYp9it2YciLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg2YXYqtmGIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkINmF2KrZhiIsanNvbl9zdHJpbmc6IkpTT04g2YXYqtmGIixlMTY0OiLYryBFLjE2NCDYtNmF25DYsdmHIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YjYsdmI2K/ZiiJ9LG89e25hbjoiTmFOIixudW1iZXI6Iti52K/YryIsYXJyYXk6Itin2LHbkCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YjYp9uMLCDZhdqr2LEgJHtzfSDYqtix2YTYp9iz2Ycg2LTZiGA6YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivICR7aX0g2YjYp9uMLCDZhdqr2LEgJHtzfSDYqtix2YTYp9iz2Ycg2LTZiGB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gJHtrKGUudmFsdWVzWzBdKX0g2YjYp9uMYDpg2YbYp9iz2YUg2KfZhtiq2K7Yp9ioOiDYqNin24zYryDbjNmIINmE2YcgJHskKGUudmFsdWVzLCJ8Iil9INqF2K7ZhyDZiNin24xgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2LXYsdmI2YbZhyJ9INmI2YTYsdmKYDpg2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2YjZimB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNqJ24zYsSDaqdmI2obZhtuMOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9INmI2YTYsdmKYDpg2onbjNixINqp2YjahtmG24w6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDZiNmKYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8g2K8gIiR7aS5wcmVmaXh9IiDYs9ix2Ycg2b7bjNmEINi02YpgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8g2K8gIiR7aS5zdWZmaXh9IiDYs9ix2Ycg2b7Yp9uMINiq2Ycg2YjYsdiz2YraltmKYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8gIiR7aS5pbmNsdWRlc30iINmI2YTYsdmKYDppLmZvcm1hdD09PSJyZWdleCI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8g2K8gJHtpLnBhdHRlcm59INiz2LHZhyDZhdi32KfYqNmC2Kog2YjZhNix2YpgOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0g2YbYp9iz2YUg2K/bjGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDZhtin2LPZhSDYudiv2K86INio2KfbjNivINivICR7ZS5kaXZpc29yfSDZhdi22LHYqCDZiNmKYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2YbYp9iz2YUgJHtlLmtleXMubGVuZ3RoPjE/Itqp2YTbjNqJ2YjZhtmHIjoi2qnZhNuM2okifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDZhtin2LPZhSDaqdmE24zaiSDZvtmHICR7ZS5vcmlnaW59INqp25BgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItmG2KfYs9mF2Ycg2YjYsdmI2K/ZiiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhtin2LPZhSDYudmG2LXYsSDZvtmHICR7ZS5vcmlnaW59INqp25BgO2RlZmF1bHQ6cmV0dXJuItmG2KfYs9mF2Ycg2YjYsdmI2K/ZiiJ9fX07ZnVuY3Rpb24gemYoKXtyZXR1cm57bG9jYWxlRXJyb3I6SWYoKX19Y29uc3QgeGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWvDs3ciLHZlcmI6Im1pZcSHIn0sZmlsZTp7dW5pdDoiYmFqdMOzdyIsdmVyYjoibWllxIcifSxhcnJheTp7dW5pdDoiZWxlbWVudMOzdyIsdmVyYjoibWllxIcifSxzZXQ6e3VuaXQ6ImVsZW1lbnTDs3ciLHZlcmI6Im1pZcSHIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Ind5cmHFvGVuaWUiLGVtYWlsOiJhZHJlcyBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBpIGdvZHppbmEgdyBmb3JtYWNpZSBJU08iLGRhdGU6ImRhdGEgdyBmb3JtYWNpZSBJU08iLHRpbWU6ImdvZHppbmEgdyBmb3JtYWNpZSBJU08iLGR1cmF0aW9uOiJjemFzIHRyd2FuaWEgSVNPIixpcHY0OiJhZHJlcyBJUHY0IixpcHY2OiJhZHJlcyBJUHY2IixjaWRydjQ6Inpha3JlcyBJUHY0IixjaWRydjY6Inpha3JlcyBJUHY2IixiYXNlNjQ6ImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NCIsYmFzZTY0dXJsOiJjacSFZyB6bmFrw7N3IHpha29kb3dhbnkgdyBmb3JtYWNpZSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjacSFZyB6bmFrw7N3IHcgZm9ybWFjaWUgSlNPTiIsZTE2NDoibGljemJhIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoid2VqxZtjaWUifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJsaWN6YmEiLGFycmF5OiJ0YWJsaWNhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG90cnp5bWFubyAke3N9YDpgTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vICR7aX0sIG90cnp5bWFubyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOaWVwcmF3aWTFgm93YSBvcGNqYTogb2N6ZWtpd2FubyBqZWRuZWogeiB3YXJ0b8WbY2kgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFphIGR1xbxhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgZHXFvCh5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BaYSBtYcWCYSB3YXJ0b8WbxIc6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSBtaWXEhyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50w7N3In1gOmBaYnl0IG1hxYIoeS9hL2UpOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgd3lub3NpxIcgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgemFjenluYcSHIHNpxJkgb2QgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSBrb8WEY3p5xIcgc2nEmSBuYSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgemF3aWVyYcSHICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIG9kcG93aWFkYcSHIHd6b3Jjb3dpICR7aS5wYXR0ZXJufWA6YE5pZXByYXdpZMWCb3coeS9hL2UpICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOaWVwcmF3aWTFgm93YSBsaWN6YmE6IG11c2kgYnnEhyB3aWVsb2tyb3Rub8WbY2nEhSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOaWVyb3pwb3puYW5lIGtsdWN6ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmllcHJhd2lkxYJvd3kga2x1Y3ogdyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pZXByYXdpZMWCb3dhIHdhcnRvxZvEhyB3ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2UifX19O2Z1bmN0aW9uIFRmKCl7cmV0dXJue2xvY2FsZUVycm9yOnhmKCl9fWNvbnN0IGpmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmVzIix2ZXJiOiJ0ZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVyIn0sYXJyYXk6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifSxzZXQ6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoicGFkcsOjbyIsZW1haWw6ImVuZGVyZcOnbyBkZSBlLW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgZSBob3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6ImhvcmEgSVNPIixkdXJhdGlvbjoiZHVyYcOnw6NvIElTTyIsaXB2NDoiZW5kZXJlw6dvIElQdjQiLGlwdjY6ImVuZGVyZcOnbyBJUHY2IixjaWRydjQ6ImZhaXhhIGRlIElQdjQiLGNpZHJ2NjoiZmFpeGEgZGUgSVB2NiIsYmFzZTY0OiJ0ZXh0byBjb2RpZmljYWRvIGVtIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2FkYSBlbSBiYXNlNjQiLGpzb25fc3RyaW5nOiJ0ZXh0byBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LG89e25hbjoiTmFOIixudW1iZXI6Im7Dum1lcm8iLG51bGw6Im51bG8ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmVjZWJpZG8gJHtzfWA6YFRpcG8gaW52w6FsaWRvOiBlc3BlcmFkbyAke2l9LCByZWNlYmlkbyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyYWRhIGludsOhbGlkYTogZXNwZXJhZG8gJHtrKGUudmFsdWVzWzBdKX1gOmBPcMOnw6NvIGludsOhbGlkYTogZXNwZXJhZGEgdW1hIGRhcyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbj8/InZhbG9yIn0gdGl2ZXNzZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b3MifWA6YE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW4/PyJ2YWxvciJ9IGZvc3NlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2lufSB0aXZlc3NlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBNdWl0byBwZXF1ZW5vOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbn0gZm9zc2UgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFRleHRvIGludsOhbGlkbzogZGV2ZSBjb21lw6dhciBjb20gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIHRlcm1pbmFyIGNvbSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFRleHRvIGludsOhbGlkbzogZGV2ZSBpbmNsdWlyICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgY29ycmVzcG9uZGVyIGFvIHBhZHLDo28gJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGludsOhbGlkb2B9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOhbGlkbzogZGV2ZSBzZXIgbcO6bHRpcGxvIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENoYXZlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBkZXNjb25oZWNpZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoYXZlIGludsOhbGlkYSBlbSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3IgaW52w6FsaWRvIGVtICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJDYW1wbyBpbnbDoWxpZG8ifX19O2Z1bmN0aW9uIFVmKCl7cmV0dXJue2xvY2FsZUVycm9yOmpmKCl9fWNvbnN0IFBmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmUiLHZlcmI6InPEgyBhaWLEgyJ9LGZpbGU6e3VuaXQ6Im9jdGXIm2kiLHZlcmI6InPEgyBhaWLEgyJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZSIsdmVyYjoic8SDIGFpYsSDIn0sc2V0Ont1bml0OiJlbGVtZW50ZSIsdmVyYjoic8SDIGFpYsSDIn0sbWFwOnt1bml0OiJpbnRyxINyaSIsdmVyYjoic8SDIGFpYsSDIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImludHJhcmUiLGVtYWlsOiJhZHJlc8SDIGRlIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXTEgyDImWkgb3LEgyBJU08iLGRhdGU6ImRhdMSDIElTTyIsdGltZToib3LEgyBJU08iLGR1cmF0aW9uOiJkdXJhdMSDIElTTyIsaXB2NDoiYWRyZXPEgyBJUHY0IixpcHY2OiJhZHJlc8SDIElQdjYiLG1hYzoiYWRyZXPEgyBNQUMiLGNpZHJ2NDoiaW50ZXJ2YWwgSVB2NCIsY2lkcnY2OiJpbnRlcnZhbCBJUHY2IixiYXNlNjQ6IsiZaXIgY29kYXQgYmFzZTY0IixiYXNlNjR1cmw6IsiZaXIgY29kYXQgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiyJlpciBKU09OIixlMTY0OiJudW3Eg3IgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnRyYXJlIn0sbz17bmFuOiJOYU4iLHN0cmluZzoiyJlpciIsbnVtYmVyOiJudW3Eg3IiLGJvb2xlYW46ImJvb2xlYW4iLGZ1bmN0aW9uOiJmdW5jyJtpZSIsYXJyYXk6Im1hdHJpY2UiLG9iamVjdDoib2JpZWN0Iix1bmRlZmluZWQ6Im5lZGVmaW5pdCIsc3ltYm9sOiJzaW1ib2wiLGJpZ2ludDoibnVtxINyIG1hcmUiLHZvaWQ6InZvaWQiLG5ldmVyOiJuZXZlciIsbWFwOiJoYXJ0xIMiLHNldDoic2V0In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybmBJbnRyYXJlIGludmFsaWTEgzogYciZdGVwdGF0ICR7aX0sIHByaW1pdCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnRyYXJlIGludmFsaWTEgzogYciZdGVwdGF0ICR7ayhlLnZhbHVlc1swXSl9YDpgT3DIm2l1bmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgdW5hIGRpbnRyZSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJlYSBtYXJlOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbj8/InZhbG9hcmVhIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlIn1gOmBQcmVhIG1hcmU6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2luPz8idmFsb2FyZWEifSBzxIMgZmllICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZWEgbWljOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBQcmVhIG1pYzogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW59IHPEgyBmaWUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgw65uY2VhcMSDIGN1ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgc2UgdGVybWluZSBjdSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgaW5jbHVkxIMgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgc2UgcG90cml2ZWFzY8SDIGN1IG1vZGVsdWwgJHtpLnBhdHRlcm59YDpgRm9ybWF0IGludmFsaWQ6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOdW3Eg3IgaW52YWxpZDogdHJlYnVpZSBzxIMgZmllIG11bHRpcGx1IGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENoZWkgbmVyZWN1bm9zY3V0ZTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGVpZSBpbnZhbGlkxIMgw65uICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnRyYXJlIGludmFsaWTEgyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvYXJlIGludmFsaWTEgyDDrm4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludHJhcmUgaW52YWxpZMSDIn19fTtmdW5jdGlvbiBPZigpe3JldHVybntsb2NhbGVFcnJvcjpQZigpfX1mdW5jdGlvbiBncyh0LG4scixvKXtjb25zdCBlPU1hdGguYWJzKHQpLGk9ZSUxMCxhPWUlMTAwO3JldHVybiBhPj0xMSYmYTw9MTk/bzppPT09MT9uOmk+PTImJmk8PTQ/cjpvfWNvbnN0IERmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6ItGB0LjQvNCy0L7QuyIsZmV3OiLRgdC40LzQstC+0LvQsCIsbWFueToi0YHQuNC80LLQvtC70L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifSxmaWxlOnt1bml0OntvbmU6ItCx0LDQudGCIixmZXc6ItCx0LDQudGC0LAiLG1hbnk6ItCx0LDQudGCIn0sdmVyYjoi0LjQvNC10YLRjCJ9LGFycmF5Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0LAiLG1hbnk6ItGN0LvQtdC80LXQvdGC0L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifSxzZXQ6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLQsCIsbWFueToi0Y3Qu9C10LzQtdC90YLQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstCy0L7QtCIsZW1haWw6ImVtYWlsINCw0LTRgNC10YEiLHVybDoiVVJMIixlbW9qaToi0Y3QvNC+0LTQt9C4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0LAg0Lgg0LLRgNC10LzRjyIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0LLRgNC10LzRjyIsZHVyYXRpb246IklTTyDQtNC70LjRgtC10LvRjNC90L7RgdGC0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgSIsaXB2NjoiSVB2NiDQsNC00YDQtdGBIixjaWRydjQ6IklQdjQg0LTQuNCw0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00LjQsNC/0LDQt9C+0L0iLGJhc2U2NDoi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NCIsYmFzZTY0dXJsOiLRgdGC0YDQvtC60LAg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiSlNPTiDRgdGC0YDQvtC60LAiLGUxNjQ6ItC90L7QvNC10YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstCy0L7QtCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/QvtC70YPRh9C10L3QviAke3N9YDpg0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7aX0sINC/0L7Qu9GD0YfQtdC90L4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7ayhlLnZhbHVlc1swXSl9YDpg0J3QtdCy0LXRgNC90YvQuSDQstCw0YDQuNCw0L3Rgjog0L7QttC40LTQsNC70L7RgdGMINC+0LTQvdC+INC40LcgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5tYXhpbXVtKSxjPWdzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0KHQu9C40YjQutC+0Lwg0LHQvtC70YzRiNC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC40LUifSDQsdGD0LTQtdGCINC40LzQtdGC0YwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90LjQtSJ9INCx0YPQtNC10YIgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1pbmltdW0pLGM9Z3MocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbn0g0LHRg9C00LXRgiDQuNC80LXRgtGMICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0KHQu9C40YjQutC+0Lwg0LzQsNC70LXQvdGM0LrQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW59INCx0YPQtNC10YIgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0L3QsNGH0LjQvdCw0YLRjNGB0Y8g0YEgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDQt9Cw0LrQsNC90YfQuNCy0LDRgtGM0YHRjyDQvdCwICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDRgdC+0LTQtdGA0LbQsNGC0YwgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0YHQvtC+0YLQstC10YLRgdGC0LLQvtCy0LDRgtGMINGI0LDQsdC70L7QvdGDICR7aS5wYXR0ZXJufWA6YNCd0LXQstC10YDQvdGL0LkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQstC10YDQvdC+0LUg0YfQuNGB0LvQvjog0LTQvtC70LbQvdC+INCx0YvRgtGMINC60YDQsNGC0L3Ri9C8ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNCw0YHQv9C+0LfQvdCw0L3QvSR7ZS5rZXlzLmxlbmd0aD4xPyLRi9C1Ijoi0YvQuSJ9INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItC4IjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3QtdCy0LXRgNC90YvQuSDQutC70Y7RhyDQsiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3QtdCy0LXRgNC90YvQtSDQstGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1INCyICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndC10LLQtdGA0L3Ri9C1INCy0YXQvtC00L3Ri9C1INC00LDQvdC90YvQtSJ9fX07ZnVuY3Rpb24gTmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6RGYoKX19Y29uc3QgRWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWtvdiIsdmVyYjoiaW1ldGkifSxmaWxlOnt1bml0OiJiYWp0b3YiLHZlcmI6ImltZXRpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvdiIsdmVyYjoiaW1ldGkifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvdiIsdmVyYjoiaW1ldGkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoidm5vcyIsZW1haWw6ImUtcG/FoXRuaSBuYXNsb3YiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBpbiDEjWFzIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyDEjWFzIixkdXJhdGlvbjoiSVNPIHRyYWphbmplIixpcHY0OiJJUHY0IG5hc2xvdiIsaXB2NjoiSVB2NiBuYXNsb3YiLGNpZHJ2NDoib2JzZWcgSVB2NCIsY2lkcnY2OiJvYnNlZyBJUHY2IixiYXNlNjQ6ImJhc2U2NCBrb2RpcmFuIG5peiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kaXJhbiBuaXoiLGpzb25fc3RyaW5nOiJKU09OIG5peiIsZTE2NDoiRS4xNjQgxaF0ZXZpbGthIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidm5vcyJ9LG89e25hbjoiTmFOIixudW1iZXI6IsWhdGV2aWxvIixhcnJheToidGFiZWxhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcHJlamV0byAke3N9YDpgTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gJHtpfSwgcHJlamV0byAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyAke2soZS52YWx1ZXNbMF0pfWA6YE5ldmVsamF2bmEgbW/Fvm5vc3Q6IHByacSNYWtvdmFubyBlbm8gaXptZWQgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZXZlbGlrbzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2luPz8idnJlZG5vc3QifSBpbWVsbyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b3YifWA6YFByZXZlbGlrbzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2luPz8idnJlZG5vc3QifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmVtYWpobm86IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbn0gaW1lbG8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2UgemHEjWV0aSB6ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHNlIGtvbsSNYXRpIHogIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZXZlbGphdmVuIG5pejogbW9yYSB2c2Vib3ZhdGkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHVzdHJlemF0aSB2em9yY3UgJHtpLnBhdHRlcm59YDpgTmV2ZWxqYXZlbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmV2ZWxqYXZubyDFoXRldmlsbzogbW9yYSBiaXRpIHZlxI1rcmF0bmlrICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lcHJlcG96bmFuJHtlLmtleXMubGVuZ3RoPjE/Imkga2xqdcSNaSI6IiBrbGp1xI0ifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZXZlbGphdmVuIGtsanXEjSB2ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZXZlbGphdmVuIHZub3MiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmV2ZWxqYXZuYSB2cmVkbm9zdCB2ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZXZlbGphdmVuIHZub3MifX19O2Z1bmN0aW9uIFpmKCl7cmV0dXJue2xvY2FsZUVycm9yOkVmKCl9fWNvbnN0IFJmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWNrZW4iLHZlcmI6ImF0dCBoYSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJhdHQgaGEifSxhcnJheTp7dW5pdDoib2JqZWt0Iix2ZXJiOiJhdHQgaW5uZWjDpWxsYSJ9LHNldDp7dW5pdDoib2JqZWt0Iix2ZXJiOiJhdHQgaW5uZWjDpWxsYSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJyZWd1bGrDpHJ0IHV0dHJ5Y2siLGVtYWlsOiJlLXBvc3RhZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1kYXR1bSBvY2ggdGlkIixkYXRlOiJJU08tZGF0dW0iLHRpbWU6IklTTy10aWQiLGR1cmF0aW9uOiJJU08tdmFyYWt0aWdoZXQiLGlwdjQ6IklQdjQtaW50ZXJ2YWxsIixpcHY2OiJJUHY2LWludGVydmFsbCIsY2lkcnY0OiJJUHY0LXNwZWt0cnVtIixjaWRydjY6IklQdjYtc3Bla3RydW0iLGJhc2U2NDoiYmFzZTY0LWtvZGFkIHN0csOkbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvZGFkIHN0csOkbmciLGpzb25fc3RyaW5nOiJKU09OLXN0csOkbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Im1hbGwtbGl0ZXJhbCJ9LG89e25hbjoiTmFOIixudW1iZXI6ImFudGFsIixhcnJheToibGlzdGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmljayAke3N9YDpgT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7aX0sIGZpY2sgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7ayhlLnZhbHVlc1swXSl9YDpgT2dpbHRpZ3QgdmFsOiBmw7ZydsOkbnRhZGUgZW4gYXYgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEbDtnIgc3Rvcih0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnQifWA6YEbDtnIgc3Rvcih0KTogZsO2cnbDpG50YXQgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YEbDtnIgbGl0ZSh0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBiw7ZyamEgbWVkICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIHNsdXRhIG1lZCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIGlubmVow6VsbGEgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIG1hdGNoYSBtw7Zuc3RyZXQgIiR7aS5wYXR0ZXJufSJgOmBPZ2lsdGlnKHQpICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBPZ2lsdGlndCB0YWw6IG3DpXN0ZSB2YXJhIGVuIG11bHRpcGVsIGF2ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJPa8OkbmRhIG55Y2tsYXIiOiJPa8OkbmQgbnlja2VsIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gT2dpbHRpZyBueWNrZWwgaSAke2Uub3JpZ2luPz8idsOkcmRldCJ9YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJPZ2lsdGlnIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE9naWx0aWd0IHbDpHJkZSBpICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In1gO2RlZmF1bHQ6cmV0dXJuIk9naWx0aWcgaW5wdXQifX19O2Z1bmN0aW9uIENmKCl7cmV0dXJue2xvY2FsZUVycm9yOlJmKCl9fWNvbnN0IEFmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLgro7grrTgr4HgrqTgr43grqTgr4HgrpXgr43grpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxmaWxlOnt1bml0OiLgrqrgr4jgrp/gr43grp/gr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxhcnJheTp7dW5pdDoi4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sc2V0Ont1bml0OiLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4K6J4K6z4K+N4K6z4K+A4K6f4K+BIixlbWFpbDoi4K6u4K6/4K6p4K+N4K6p4K6e4K+N4K6a4K6y4K+NIOCuruCvgeCuleCuteCusOCuvyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOCupOCvh+CupOCuvyDgrqjgr4fgrrDgrq7gr40iLGRhdGU6IklTTyDgrqTgr4fgrqTgrr8iLHRpbWU6IklTTyDgrqjgr4fgrrDgrq7gr40iLGR1cmF0aW9uOiJJU08g4K6V4K6+4K6yIOCuheCus+CuteCvgSIsaXB2NDoiSVB2NCDgrq7gr4HgrpXgrrXgrrDgrr8iLGlwdjY6IklQdjYg4K6u4K+B4K6V4K614K6w4K6/IixjaWRydjQ6IklQdjQg4K614K6w4K6u4K+N4K6q4K+BIixjaWRydjY6IklQdjYg4K614K6w4K6u4K+N4K6q4K+BIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIOCumuCusOCuruCvjSIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCDgrprgrrDgrq7gr40iLGpzb25fc3RyaW5nOiJKU09OIOCumuCusOCuruCvjSIsZTE2NDoiRS4xNjQg4K6O4K6j4K+NIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLgro7grqPgr40iLGFycmF5OiLgroXgrqPgrr8iLG51bGw6IuCuteCvhuCuseCvgeCuruCviCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDgrqrgr4bgrrHgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtzfWA6YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2l9LCDgrqrgr4bgrrHgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ayhlLnZhbHVlc1swXSl9YDpg4K6k4K614K6x4K6+4K6pIOCuteCuv+CusOCvgeCuquCvjeCuquCuruCvjTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7JChlLnZhbHVlcywifCIpfSDgrofgrrLgr40g4K6S4K6p4K+N4K6x4K+BYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2luPz8i4K6u4K6k4K6/4K6q4K+N4K6q4K+BIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIn0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpUg4K6q4K+G4K6w4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbj8/IuCuruCupOCuv+CuquCvjeCuquCvgSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOCuruCuv+CuleCumuCvjSDgrprgrr/grrHgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtpLnByZWZpeH0iIOCuh+CusuCvjSDgrqTgr4rgrp/grpngr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtpLnN1ZmZpeH0iIOCuh+CusuCvjSDgrq7gr4Hgrp/grr/grrXgrp/gr4jgrq8g4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kuaW5jbHVkZXN9IiDgrpAg4K6J4K6z4K+N4K6z4K6f4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAke2kucGF0dGVybn0g4K6u4K+B4K6x4K+I4K6q4K6+4K6f4K+N4K6f4K+B4K6f4K6p4K+NIOCuquCviuCusOCvgeCuqOCvjeCupCDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrqTgrrXgrrHgrr7grqkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOCupOCuteCuseCuvuCuqSDgro7grqPgr406ICR7ZS5kaXZpc29yfSDgrofgrqngr40g4K6q4K6y4K6u4K6+4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDgroXgrp/gr4jgrq/grr7grrPgrq7gr40g4K6k4K+G4K6w4K6/4K6v4K6+4K6kIOCuteCuv+CumuCviCR7ZS5rZXlzLmxlbmd0aD4xPyLgrpXgrrPgr40iOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuteCuv+CumuCviGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuruCupOCuv+CuquCvjeCuquCvgWA7ZGVmYXVsdDpyZXR1cm4i4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgSJ9fX07ZnVuY3Rpb24gTGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6QWYoKX19Y29uc3QgTWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuC4leC4seC4p+C4reC4seC4geC4qeC4oyIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In0sZmlsZTp7dW5pdDoi4LmE4Lia4LiV4LmMIix2ZXJiOiLguITguKfguKPguKHguLUifSxhcnJheTp7dW5pdDoi4Lij4Liy4Lii4LiB4Liy4LijIix2ZXJiOiLguITguKfguKPguKHguLUifSxzZXQ6e3VuaXQ6IuC4o+C4suC4ouC4geC4suC4oyIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4m+C5ieC4reC4mSIsZW1haWw6IuC4l+C4teC5iOC4reC4ouC4ueC5iOC4reC4teC5gOC4oeC4pSIsdXJsOiJVUkwiLGVtb2ppOiLguK3guLTguYLguKHguIjguLQiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuC4p+C4seC4meC4l+C4teC5iOC5gOC4p+C4peC4suC5geC4muC4miBJU08iLGRhdGU6IuC4p+C4seC4meC4l+C4teC5iOC5geC4muC4miBJU08iLHRpbWU6IuC5gOC4p+C4peC4suC5geC4muC4miBJU08iLGR1cmF0aW9uOiLguIrguYjguKfguIfguYDguKfguKXguLLguYHguJrguJogSVNPIixpcHY0OiLguJfguLXguYjguK3guKLguLnguYggSVB2NCIsaXB2Njoi4LiX4Li14LmI4Lit4Lii4Li54LmIIElQdjYiLGNpZHJ2NDoi4LiK4LmI4Lin4LiHIElQIOC5geC4muC4miBJUHY0IixjaWRydjY6IuC4iuC5iOC4p+C4hyBJUCDguYHguJrguJogSVB2NiIsYmFzZTY0OiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogQmFzZTY0IixiYXNlNjR1cmw6IuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBCYXNlNjQg4Liq4Liz4Lir4Lij4Lix4LiaIFVSTCIsanNvbl9zdHJpbmc6IuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBKU09OIixlMTY0OiLguYDguJrguK3guKPguYzguYLguJfguKPguKjguLHguJ7guJfguYzguKPguLDguKvguKfguYjguLLguIfguJvguKPguLDguYDguJfguKggKEUuMTY0KSIsand0OiLguYLguJfguYDguITguJkgSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLguILguYnguK3guKHguLnguKXguJfguLXguYjguJvguYnguK3guJkifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLguJXguLHguKfguYDguKXguIIiLGFycmF5OiLguK3guLLguKPguYzguYDguKPguKLguYwgKEFycmF5KSIsbnVsbDoi4LmE4Lih4LmI4Lih4Li14LiE4LmI4LiyIChudWxsKSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DguJvguKPguLDguYDguKDguJfguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g4LmB4LiV4LmI4LmE4LiU4LmJ4Lij4Lix4LiaICR7c31gOmDguJvguKPguLDguYDguKDguJfguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSAke2l9IOC5geC4leC5iOC5hOC4lOC5ieC4o+C4seC4miAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DguITguYjguLLguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSAke2soZS52YWx1ZXNbMF0pfWA6YOC4leC4seC4p+C5gOC4peC4t+C4reC4geC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZ4Lir4LiZ4Li24LmI4LiH4LmD4LiZICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4LmE4Lih4LmI4LmA4LiB4Li04LiZIjoi4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4LiyIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DguYDguIHguLTguJnguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW4/PyLguITguYjguLIifSDguITguKfguKPguKHguLUke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i4Lij4Liy4Lii4LiB4Liy4LijIn1gOmDguYDguIHguLTguJnguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW4/PyLguITguYjguLIifSDguITguKfguKPguKHguLUke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuC4reC4ouC5iOC4suC4h+C4meC5ieC4reC4oiI6IuC4oeC4suC4geC4geC4p+C5iOC4siIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4Liy4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2lufSDguITguKfguKPguKHguLUke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4guC4tuC5ieC4meC4leC5ieC4meC4lOC5ieC4p+C4oiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4peC4h+C4l+C5ieC4suC4ouC4lOC5ieC4p+C4oiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4Lih4Li1ICIke2kuaW5jbHVkZXN9IiDguK3guKLguLnguYjguYPguJnguILguYnguK3guITguKfguLLguKFgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguJXguKPguIfguIHguLHguJrguKPguLnguJvguYHguJrguJrguJfguLXguYjguIHguLPguKvguJnguJQgJHtpLnBhdHRlcm59YDpg4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4LiV4Lix4Lin4LmA4Lil4LiC4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguYDguJvguYfguJnguIjguLPguJnguKfguJnguJfguLXguYjguKvguLLguKPguJTguYnguKfguKIgJHtlLmRpdmlzb3J9IOC5hOC4lOC5ieC4peC4h+C4leC4seC4p2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOC4nuC4muC4hOC4teC4ouC5jOC4l+C4teC5iOC5hOC4oeC5iOC4o+C4ueC5ieC4iOC4seC4gTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDguITguLXguKLguYzguYTguKHguYjguJbguLnguIHguJXguYnguK3guIfguYPguJkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LmE4Lih4LmI4LiV4Lij4LiH4LiB4Lix4Lia4Lij4Li54Lib4LmB4Lia4Lia4Lii4Li54LmA4LiZ4Li14Lii4LiZ4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHIn19fTtmdW5jdGlvbiBxZigpe3JldHVybntsb2NhbGVFcnJvcjpNZigpfX1jb25zdCBGZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0ZXIiLHZlcmI6Im9sbWFsxLEifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJvbG1hbMSxIn0sYXJyYXk6e3VuaXQ6IsO2xJ9lIix2ZXJiOiJvbG1hbMSxIn0sc2V0Ont1bml0OiLDtsSfZSIsdmVyYjoib2xtYWzEsSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJnaXJkaSIsZW1haWw6ImUtcG9zdGEgYWRyZXNpIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gdGFyaWggdmUgc2FhdCIsZGF0ZToiSVNPIHRhcmloIix0aW1lOiJJU08gc2FhdCIsZHVyYXRpb246IklTTyBzw7xyZSIsaXB2NDoiSVB2NCBhZHJlc2kiLGlwdjY6IklQdjYgYWRyZXNpIixjaWRydjQ6IklQdjQgYXJhbMSxxJ/EsSIsY2lkcnY2OiJJUHY2IGFyYWzEscSfxLEiLGJhc2U2NDoiYmFzZTY0IGlsZSDFn2lmcmVsZW5tacWfIG1ldGluIixiYXNlNjR1cmw6ImJhc2U2NHVybCBpbGUgxZ9pZnJlbGVubWnFnyBtZXRpbiIsanNvbl9zdHJpbmc6IkpTT04gZGl6ZXNpIixlMTY0OiJFLjE2NCBzYXnEsXPEsSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsWeYWJsb24gZGl6ZXNpIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhbMSxbmFuICR7c31gOmBHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiAke2l9LCBhbMSxbmFuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuICR7ayhlLnZhbHVlc1swXSl9YDpgR2XDp2Vyc2l6IHNlw6dlbmVrOiBhxZ9hxJ/EsWRha2lsZXJkZW4gYmlyaSBvbG1hbMSxOiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2Uub3JpZ2luPz8iZGXEn2VyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iw7bEn2UifWA6YMOHb2sgYsO8ecO8azogYmVrbGVuZW4gJHtlLm9yaWdpbj8/ImRlxJ9lciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb2sga8O8w6fDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDDh29rIGvDvMOnw7xrOiBiZWtsZW5lbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gR2XDp2Vyc2l6IG1ldGluOiAiJHtpLnByZWZpeH0iIGlsZSBiYcWfbGFtYWzEsWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gR2XDp2Vyc2l6IG1ldGluOiAiJHtpLnN1ZmZpeH0iIGlsZSBiaXRtZWxpYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEdlw6dlcnNpeiBtZXRpbjogIiR7aS5pbmNsdWRlc30iIGnDp2VybWVsaWA6aS5mb3JtYXQ9PT0icmVnZXgiP2BHZcOnZXJzaXogbWV0aW46ICR7aS5wYXR0ZXJufSBkZXNlbmluZSB1eW1hbMSxYDpgR2XDp2Vyc2l6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBHZcOnZXJzaXogc2F5xLE6ICR7ZS5kaXZpc29yfSBpbGUgdGFtIGLDtmzDvG5lYmlsbWVsaWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW5kZSBnZcOnZXJzaXogYW5haHRhcmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iR2XDp2Vyc2l6IGRlxJ9lciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbmRlIGdlw6dlcnNpeiBkZcSfZXJgO2RlZmF1bHQ6cmV0dXJuIkdlw6dlcnNpeiBkZcSfZXIifX19O2Z1bmN0aW9uIEpmKCl7cmV0dXJue2xvY2FsZUVycm9yOkZmKCl9fWNvbnN0IEhmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLRgdC40LzQstC+0LvRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxmaWxlOnt1bml0OiLQsdCw0LnRgtGW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9LGFycmF5Ont1bml0OiLQtdC70LXQvNC10L3RgtGW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9LHNldDp7dW5pdDoi0LXQu9C10LzQtdC90YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIixlbWFpbDoi0LDQtNGA0LXRgdCwINC10LvQtdC60YLRgNC+0L3QvdC+0Zcg0L/QvtGI0YLQuCIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC30ZYiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ItC00LDRgtCwINGC0LAg0YfQsNGBIElTTyIsZGF0ZToi0LTQsNGC0LAgSVNPIix0aW1lOiLRh9Cw0YEgSVNPIixkdXJhdGlvbjoi0YLRgNC40LLQsNC70ZbRgdGC0YwgSVNPIixpcHY0OiLQsNC00YDQtdGB0LAgSVB2NCIsaXB2Njoi0LDQtNGA0LXRgdCwIElQdjYiLGNpZHJ2NDoi0LTRltCw0L/QsNC30L7QvSBJUHY0IixjaWRydjY6ItC00ZbQsNC/0LDQt9C+0L0gSVB2NiIsYmFzZTY0OiLRgNGP0LTQvtC6INGDINC60L7QtNGD0LLQsNC90L3RliBiYXNlNjQiLGJhc2U2NHVybDoi0YDRj9C00L7QuiDRgyDQutC+0LTRg9Cy0LDQvdC90ZYgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi0YDRj9C00L7QuiBKU09OIixlMTY0OiLQvdC+0LzQtdGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L7RgtGA0LjQvNCw0L3QviAke3N9YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7aX0sINC+0YLRgNC40LzQsNC90L4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7ayhlLnZhbHVlc1swXSl9YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3QsCDQvtC/0YbRltGPOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyDQvtC00L3QtSDQtyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0JfQsNC90LDQtNGC0L4g0LLQtdC70LjQutC1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90L3RjyJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLQtdC70LXQvNC10L3RgtGW0LIifWA6YNCX0LDQvdCw0LTRgtC+INCy0LXQu9C40LrQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC90Y8ifSDQsdGD0LTQtSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0g0LHRg9C00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQv9C+0YfQuNC90LDRgtC40YHRjyDQtyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LfQsNC60ZbQvdGH0YPQstCw0YLQuNGB0Y8g0L3QsCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQvNGW0YHRgtC40YLQuCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YjQsNCx0LvQvtC90YMgJHtpLnBhdHRlcm59YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC1INGH0LjRgdC70L46INC/0L7QstC40L3QvdC+INCx0YPRgtC4INC60YDQsNGC0L3QuNC8ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNC+0LfQv9GW0LfQvdCw0L3QuNC5INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItGWIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INC60LvRjtGHINGDICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3RliI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC1INC30L3QsNGH0LXQvdC90Y8g0YMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWIn19fTtmdW5jdGlvbiBjbCgpe3JldHVybntsb2NhbGVFcnJvcjpIZigpfX1mdW5jdGlvbiBWZigpe3JldHVybiBjbCgpfWNvbnN0IEtmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLYrdix2YjZgSIsdmVyYjoi24HZiNmG2KcifSxmaWxlOnt1bml0OiLYqNin2KbZudizIix2ZXJiOiLbgdmI2YbYpyJ9LGFycmF5Ont1bml0OiLYotim2bnZhdiyIix2ZXJiOiLbgdmI2YbYpyJ9LHNldDp7dW5pdDoi2KLYptm52YXYsiIsdmVyYjoi24HZiNmG2KcifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2KfZhiDZvtm5IixlbWFpbDoi2KfbjCDZhduM2YQg2KfbjNqI2LHbjNizIix1cmw6ItuM2Ygg2KLYsSDYp9uM2YQiLGVtb2ppOiLYp9uM2YXZiNis24wiLHV1aWQ6ItuM2Ygg24zZiCDYotim24wg2ojbjCIsdXVpZHY0OiLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA0Iix1dWlkdjY6ItuM2Ygg24zZiCDYotim24wg2ojbjCDZiNuMIDYiLG5hbm9pZDoi2YbbjNmG2Ygg2KLYptuMINqI24wiLGd1aWQ6Itis24wg24zZiCDYotim24wg2ojbjCIsY3VpZDoi2LPbjCDbjNmIINii2KbbjCDaiNuMIixjdWlkMjoi2LPbjCDbjNmIINii2KbbjCDaiNuMIDIiLHVsaWQ6ItuM2Ygg2KfbjNmEINii2KbbjCDaiNuMIix4aWQ6Itin24zaqdizINii2KbbjCDaiNuMIixrc3VpZDoi2qnbkiDYp9uM2LMg24zZiCDYotim24wg2ojbjCIsZGF0ZXRpbWU6Itii2KbbjCDYp9uM2LMg2KfZiCDaiNuM2bkg2bnYp9im2YUiLGRhdGU6Itii2KbbjCDYp9uM2LMg2KfZiCDYqtin2LHbjNiuIix0aW1lOiLYotim24wg2KfbjNizINin2Ygg2YjZgtiqIixkdXJhdGlvbjoi2KLYptuMINin24zYsyDYp9mIINmF2K/YqiIsaXB2NDoi2KLYptuMINm+24wg2YjbjCA0INin24zaiNix24zYsyIsaXB2Njoi2KLYptuMINm+24wg2YjbjCA2INin24zaiNix24zYsyIsY2lkcnY0OiLYotim24wg2b7bjCDZiNuMIDQg2LHbjNmG2KwiLGNpZHJ2Njoi2KLYptuMINm+24wg2YjbjCA2INix24zZhtisIixiYXNlNjQ6Itio24zYsyA2NCDYp9mGINqp2YjaiNqIINiz2bnYsdmG2q8iLGJhc2U2NHVybDoi2KjbjNizIDY0INuM2Ygg2KLYsSDYp9uM2YQg2KfZhiDaqdmI2ojaiCDYs9m52LHZhtqvIixqc29uX3N0cmluZzoi2KzbkiDYp9uM2LMg2KfZiCDYp9uM2YYg2LPZudix2YbaryIsZTE2NDoi2KfbjCAxNjQg2YbZhdio2LEiLGp3dDoi2KzbkiDaiNio2YTbjNmIINm524wiLHRlbXBsYXRlX2xpdGVyYWw6Itin2YYg2b7ZuSJ9LG89e25hbjoiTmFOIixudW1iZXI6ItmG2YXYqNixIixhcnJheToi2KLYsduSIixudWxsOiLZhtmEIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNi62YTYtyDYp9mGINm+2bk6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZhdiq2YjZgti5INiq2r7Yp9iMICR7c30g2YXZiNi12YjZhCDbgdmI2KdgOmDYutmE2Lcg2KfZhiDZvtm5OiAke2l9INmF2KrZiNmC2Lkg2Kravtin2IwgJHtzfSDZhdmI2LXZiNmEINuB2YjYp2B9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2LrZhNi3INin2YYg2b7ZuTogJHtrKGUudmFsdWVzWzBdKX0g2YXYqtmI2YLYuSDYqtq+2KdgOmDYutmE2Lcg2KLZvti02YY6ICR7JChlLnZhbHVlcywifCIpfSDZhduM2rog2LPbkiDYp9uM2qkg2YXYqtmI2YLYuSDYqtq+2KdgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2KjbgdiqINio2pHYpzogJHtlLm9yaWdpbj8/ItmI24zZhNuM2YgifSDaqduSICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYp9i12LEifSDbgdmI2YbbkiDZhdiq2YjZgti5INiq2r7bkmA6YNio24HYqiDYqNqR2Kc6ICR7ZS5vcmlnaW4/PyLZiNuM2YTbjNmIIn0g2qnYpyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g24HZiNmG2Kcg2YXYqtmI2YLYuSDYqtq+2KdgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYqNuB2Kog2obavtmI2bnYpzogJHtlLm9yaWdpbn0g2qnbkiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9INuB2YjZhtuSINmF2KrZiNmC2Lkg2KravtuSYDpg2KjbgdiqINqG2r7ZiNm52Kc6ICR7ZS5vcmlnaW59INqp2KcgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INuB2YjZhtinINmF2KrZiNmC2Lkg2KravtinYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtpLnByZWZpeH0iINiz25Ig2LTYsdmI2Lkg24HZiNmG2Kcg2obYp9uB24zbkmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2LrZhNi3INiz2bnYsdmG2q86ICIke2kuc3VmZml4fSIg2b7YsSDYrtiq2YUg24HZiNmG2Kcg2obYp9uB24zbkmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DYutmE2Lcg2LPZudix2YbarzogIiR7aS5pbmNsdWRlc30iINi02KfZhdmEINuB2YjZhtinINqG2KfbgduM25JgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2LrZhNi3INiz2bnYsdmG2q86INm+24zZudix2YYgJHtpLnBhdHRlcm59INiz25Ig2YXbjNqGINuB2YjZhtinINqG2KfbgduM25JgOmDYutmE2LcgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi62YTYtyDZhtmF2KjYsTogJHtlLmRpdmlzb3J9INqp2Kcg2YXYttin2LnZgSDbgdmI2YbYpyDahtin24HbjNuSYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2LrbjNixINiq2LPZhNuM2YUg2LTYr9uBINqp24wke2Uua2V5cy5sZW5ndGg+MT8i2LIiOiIifTogJHskKGUua2V5cywi2IwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDaqduMYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLYutmE2Lcg2KfZhiDZvtm5IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59INmF24zauiDYutmE2Lcg2YjbjNmE24zZiGA7ZGVmYXVsdDpyZXR1cm4i2LrZhNi3INin2YYg2b7ZuSJ9fX07ZnVuY3Rpb24gV2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6S2YoKX19Y29uc3QgQmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImJlbGdpIix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LGFycmF5Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sc2V0Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sbWFwOnt1bml0OiJ5b3p1diIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJraXJpc2giLGVtYWlsOiJlbGVrdHJvbiBwb2NodGEgbWFuemlsaSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIHNhbmEgdmEgdmFxdGkiLGRhdGU6IklTTyBzYW5hIix0aW1lOiJJU08gdmFxdCIsZHVyYXRpb246IklTTyBkYXZvbWl5bGlrIixpcHY0OiJJUHY0IG1hbnppbCIsaXB2NjoiSVB2NiBtYW56aWwiLG1hYzoiTUFDIG1hbnppbCIsY2lkcnY0OiJJUHY0IGRpYXBhem9uIixjaWRydjY6IklQdjYgZGlhcGF6b24iLGJhc2U2NDoiYmFzZTY0IGtvZGxhbmdhbiBzYXRyIixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RsYW5nYW4gc2F0ciIsanNvbl9zdHJpbmc6IkpTT04gc2F0ciIsZTE2NDoiRS4xNjQgcmFxYW0iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJraXJpc2gifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJyYXFhbSIsYXJyYXk6Im1hc3NpdiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBxYWJ1bCBxaWxpbmdhbiAke3N9YDpgTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuICR7aX0sIHFhYnVsIHFpbGluZ2FuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiAke2soZS52YWx1ZXNbMF0pfWA6YE5vdG/igJhn4oCYcmkgdmFyaWFudDogcXV5aWRhZ2lsYXJkYW4gYmlyaSBrdXRpbGdhbiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEp1ZGEga2ljaGlrOiBrdXRpbGdhbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9ICR7YS52ZXJifWA6YEp1ZGEga2ljaGlrOiBrdXRpbGdhbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtpLnByZWZpeH0iIGJpbGFuIGJvc2hsYW5pc2hpIGtlcmFrYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICIke2kuc3VmZml4fSIgYmlsYW4gdHVnYXNoaSBrZXJha2A6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICIke2kuaW5jbHVkZXN9IiBuaSBv4oCYeiBpY2hpZ2Egb2xpc2hpIGtlcmFrYDppLmZvcm1hdD09PSJyZWdleCI/YE5vdG/igJhn4oCYcmkgc2F0cjogJHtpLnBhdHRlcm59IHNoYWJsb25pZ2EgbW9zIGtlbGlzaGkga2VyYWtgOmBOb3Rv4oCYZ+KAmHJpICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb3Rv4oCYZ+KAmHJpIHJhcWFtOiAke2UuZGl2aXNvcn0gbmluZyBrYXJyYWxpc2kgYm/igJhsaXNoaSBrZXJha2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5vbWHigJlsdW0ga2FsaXQke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGFnaSBrYWxpdCBub3Rv4oCYZ+KAmHJpYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOb3Rv4oCYZ+KAmHJpIGtpcmlzaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYSBub3Rv4oCYZ+KAmHJpIHFpeW1hdGA7ZGVmYXVsdDpyZXR1cm4iTm90b+KAmGfigJhyaSBraXJpc2gifX19O2Z1bmN0aW9uIEdmKCl7cmV0dXJue2xvY2FsZUVycm9yOkJmKCl9fWNvbnN0IFhmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrw70gdOG7sSIsdmVyYjoiY8OzIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoiY8OzIn0sYXJyYXk6e3VuaXQ6InBo4bqnbiB04butIix2ZXJiOiJjw7MifSxzZXQ6e3VuaXQ6InBo4bqnbiB04butIix2ZXJiOiJjw7MifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoixJHhuqd1IHbDoG8iLGVtYWlsOiLEkeG7i2EgY2jhu4kgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Im5nw6B5IGdp4budIElTTyIsZGF0ZToibmfDoHkgSVNPIix0aW1lOiJnaeG7nSBJU08iLGR1cmF0aW9uOiJraG/huqNuZyB0aOG7nWkgZ2lhbiBJU08iLGlwdjQ6IsSR4buLYSBjaOG7iSBJUHY0IixpcHY2OiLEkeG7i2EgY2jhu4kgSVB2NiIsY2lkcnY0OiJk4bqjaSBJUHY0IixjaWRydjY6ImThuqNpIElQdjYiLGJhc2U2NDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjQiLGJhc2U2NHVybDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaHXhu5dpIEpTT04iLGUxNjQ6InPhu5EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLEkeG6p3UgdsOgbyJ9LG89e25hbjoiTmFOIixudW1iZXI6InPhu5EiLGFycmF5OiJt4bqjbmcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgbmjhuq1uIMSRxrDhu6NjICR7c31gOmDEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgJHtpfSwgbmjhuq1uIMSRxrDhu6NjICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke2soZS52YWx1ZXNbMF0pfWA6YFTDuXkgY2jhu41uIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSBt4buZdCB0cm9uZyBjw6FjIGdpw6EgdHLhu4sgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFF1w6EgbOG7m246IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW4/PyJnacOhIHRy4buLIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/InBo4bqnbiB04butIn1gOmBRdcOhIGzhu5tuOiBtb25nIMSR4bujaSAke2Uub3JpZ2luPz8iZ2nDoSB0cuG7iyJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUXXDoSBuaOG7jzogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBi4bqvdCDEkeG6p3UgYuG6sW5nICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBr4bq/dCB0aMO6YyBi4bqxbmcgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kgYmFvIGfhu5NtICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kga2jhu5twIHbhu5tpIG3huqt1ICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBraMO0bmcgaOG7o3AgbOG7h2B9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBT4buRIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kgbMOgIGLhu5lpIHPhu5EgY+G7p2EgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS2jDs2Ega2jDtG5nIMSRxrDhu6NjIG5o4bqtbiBk4bqhbmc6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS2jDs2Ega2jDtG5nIGjhu6NwIGzhu4cgdHJvbmcgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEdpw6EgdHLhu4sga2jDtG5nIGjhu6NwIGzhu4cgdHJvbmcgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIsSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHIn19fTtmdW5jdGlvbiBZZigpe3JldHVybntsb2NhbGVFcnJvcjpYZigpfX1jb25zdCBRZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi5a2X56ymIix2ZXJiOiLljIXlkKsifSxmaWxlOnt1bml0OiLlrZfoioIiLHZlcmI6IuWMheWQqyJ9LGFycmF5Ont1bml0OiLpobkiLHZlcmI6IuWMheWQqyJ9LHNldDp7dW5pdDoi6aG5Iix2ZXJiOiLljIXlkKsifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi6L6T5YWlIixlbWFpbDoi55S15a2Q6YKu5Lu2Iix1cmw6IlVSTCIsZW1vamk6IuihqOaDheespuWPtyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNP5pel5pyf5pe26Ze0IixkYXRlOiJJU0/ml6XmnJ8iLHRpbWU6IklTT+aXtumXtCIsZHVyYXRpb246IklTT+aXtumVvyIsaXB2NDoiSVB2NOWcsOWdgCIsaXB2NjoiSVB2NuWcsOWdgCIsY2lkcnY0OiJJUHY0572R5q61IixjaWRydjY6IklQdjbnvZHmrrUiLGJhc2U2NDoiYmFzZTY057yW56CB5a2X56ym5LiyIixiYXNlNjR1cmw6ImJhc2U2NHVybOe8lueggeWtl+espuS4siIsanNvbl9zdHJpbmc6IkpTT07lrZfnrKbkuLIiLGUxNjQ6IkUuMTY05Y+356CBIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi6L6T5YWlIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi5pWw5a2XIixhcnJheToi5pWw57uEIixudWxsOiLnqbrlgLwobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g5peg5pWI6L6T5YWl77ya5pyf5pybIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfe+8jOWunumZheaOpeaUtiAke3N9YDpg5peg5pWI6L6T5YWl77ya5pyf5pybICR7aX3vvIzlrp7pmYXmjqXmlLYgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g5peg5pWI6L6T5YWl77ya5pyf5pybICR7ayhlLnZhbHVlc1swXSl9YDpg5peg5pWI6YCJ6aG577ya5pyf5pyb5Lul5LiL5LmL5LiAICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtlLm9yaWdpbj8/IuWAvCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuS4quWFg+e0oCJ9YDpg5pWw5YC86L+H5aSn77ya5pyf5pybICR7ZS5vcmlnaW4/PyLlgLwifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbDlgLzov4flsI/vvJrmnJ/mnJsgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOaVsOWAvOi/h+Wwj++8muacn+acmyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75LulICIke2kucHJlZml4fSIg5byA5aS0YDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgIiR7aS5zdWZmaXh9IiDnu5PlsL5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75YyF5ZCrICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvmu6HotrPmraPliJnooajovr7lvI8gJHtpLnBhdHRlcm59YDpg5peg5pWIJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOaXoOaViOaVsOWtl++8muW/hemhu+aYryAke2UuZGl2aXNvcn0g55qE5YCN5pWwYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g5Ye6546w5pyq55+l55qE6ZSuKGtleSk6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit55qE6ZSuKGtleSnml6DmlYhgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuaXoOaViOi+k+WFpSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDkuK3ljIXlkKvml6DmlYjlgLwodmFsdWUpYDtkZWZhdWx0OnJldHVybiLml6DmlYjovpPlhaUifX19O2Z1bmN0aW9uIGVnKCl7cmV0dXJue2xvY2FsZUVycm9yOlFmKCl9fWNvbnN0IHRnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLlrZflhYMiLHZlcmI6IuaTgeaciSJ9LGZpbGU6e3VuaXQ6IuS9jeWFg+e1hCIsdmVyYjoi5pOB5pyJIn0sYXJyYXk6e3VuaXQ6IumgheebriIsdmVyYjoi5pOB5pyJIn0sc2V0Ont1bml0OiLpoIXnm64iLHZlcmI6IuaTgeaciSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLovLjlhaUiLGVtYWlsOiLpg7Xku7blnLDlnYAiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDml6XmnJ/mmYLplpMiLGRhdGU6IklTTyDml6XmnJ8iLHRpbWU6IklTTyDmmYLplpMiLGR1cmF0aW9uOiJJU08g5pyf6ZaTIixpcHY0OiJJUHY0IOS9jeWdgCIsaXB2NjoiSVB2NiDkvY3lnYAiLGNpZHJ2NDoiSVB2NCDnr4TlnI0iLGNpZHJ2NjoiSVB2NiDnr4TlnI0iLGJhc2U2NDoiYmFzZTY0IOe3qOeivOWtl+S4siIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg57eo56K85a2X5LiyIixqc29uX3N0cmluZzoiSlNPTiDlrZfkuLIiLGUxNjQ6IkUuMTY0IOaVuOWAvCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Iui8uOWFpSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3vvIzkvYbmlLbliLAgJHtzfWA6YOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiAke2l977yM5L2G5pS25YiwICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiAke2soZS52YWx1ZXNbMF0pfWA6YOeEoeaViOeahOmBuOmghe+8mumgkOacn+eCuuS7peS4i+WFtuS4reS5i+S4gCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pW45YC86YGO5aSn77ya6aCQ5pyfICR7ZS5vcmlnaW4/PyLlgLwifSDmh4nngrogJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i5YCL5YWD57SgIn1gOmDmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtlLm9yaWdpbj8/IuWAvCJ9IOaHieeCuiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbjlgLzpgY7lsI/vvJrpoJDmnJ8gJHtlLm9yaWdpbn0g5oeJ54K6ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDmlbjlgLzpgY7lsI/vvJrpoJDmnJ8gJHtlLm9yaWdpbn0g5oeJ54K6ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjku6UgIiR7aS5wcmVmaXh9IiDplovpoK1gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSAiJHtpLnN1ZmZpeH0iIOe1kOWwvmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjljIXlkKsgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOespuWQiOagvOW8jyAke2kucGF0dGVybn1gOmDnhKHmlYjnmoQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOeEoeaViOeahOaVuOWtl++8muW/hemgiOeCuiAke2UuZGl2aXNvcn0g55qE5YCN5pW4YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g54Sh5rOV6K2Y5Yil55qE6Y215YC8JHtlLmtleXMubGVuZ3RoPjE/IuWAkSI6IiJ977yaJHskKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5pyJ54Sh5pWI55qE6Y215YC8YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLnhKHmlYjnmoTovLjlhaXlgLwiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5pyJ54Sh5pWI55qE5YC8YDtkZWZhdWx0OnJldHVybiLnhKHmlYjnmoTovLjlhaXlgLwifX19O2Z1bmN0aW9uIG5nKCl7cmV0dXJue2xvY2FsZUVycm9yOnRnKCl9fWNvbnN0IHJnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLDoG1pIix2ZXJiOiJuw60ifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoibsOtIn0sYXJyYXk6e3VuaXQ6Im5rYW4iLHZlcmI6Im7DrSJ9LHNldDp7dW5pdDoibmthbiIsdmVyYjoibsOtIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuG6ucyAcuG7jSDDrGLDoXfhu41sw6kiLGVtYWlsOiLDoGTDrXLhurnMgXPDrCDDrG3hurnMgWzDrCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiw6Brw7Nrw7IgSVNPIixkYXRlOiLhu41q4buNzIEgSVNPIix0aW1lOiLDoGvDs2vDsiBJU08iLGR1cmF0aW9uOiLDoGvDs2vDsiB0w7MgcMOpIElTTyIsaXB2NDoiw6Bkw61y4bq5zIFzw6wgSVB2NCIsaXB2Njoiw6Bkw61y4bq5zIFzw6wgSVB2NiIsY2lkcnY0OiLDoGdiw6hnYsOoIElQdjQiLGNpZHJ2Njoiw6BnYsOoZ2LDqCBJUHY2IixiYXNlNjQ6IuG7jcyAcuG7jcyAIHTDrSBhIGvhu43MgSBuw60gYmFzZTY0IixiYXNlNjR1cmw6IuG7jcyAcuG7jcyAIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IuG7jcyAcuG7jcyAIEpTT04iLGUxNjQ6Im7hu43MgW1iw6AgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLhurnMgHLhu40gw6xiw6F34buNbMOpIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibuG7jcyBbWLDoCIsYXJyYXk6ImFrb3Dhu40ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgw6Bt4buNzIAgYSByw60gJHtzfWA6YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke2l9LCDDoG3hu43MgCBhIHLDrSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgJHtrKGUudmFsdWVzWzBdKX1gOmDDgOG5o8OgecOgbiBh4bmjw6zhuaNlOiB5YW4g4buNzIBrYW4gbMOhcmEgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFTDsyBw4buNzIAgasO5OiBhIG7DrSBsw6F0aSBq4bq5zIEgcMOpICR7ZS5vcmlnaW4/PyJpeWUifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtfSAke2EudW5pdH1gOmBUw7MgcOG7jcyAIGrDuTogYSBuw60gbMOhdGkgauG6ucyBICR7aX0ke2UubWF4aW11bX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSBww6kgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bX0gJHthLnVuaXR9YDpgS8OpcsOpIGp1OiBhIG7DrSBsw6F0aSBq4bq5zIEgJHtpfSR7ZS5taW5pbXVtfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGLhurnMgHLhurnMgCBw4bq5zIBsw7ogIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBwYXLDrSBw4bq5zIBsw7ogIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIG7DrSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBiw6Egw6Bw4bq54bq5cuG6uSBtdSAke2kucGF0dGVybn1gOmBB4bmjw6zhuaNlOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTuG7jcyBbWLDoCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGrhurnMgSDDqHnDoCBww61ww61uIHRpICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYELhu410w6xuw6wgw6DDrG3hu43MgDogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBC4buNdMOsbsOsIGHhuaPDrOG5o2UgbsOtbsO6ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLDjGLDoXfhu41sw6kgYeG5o8Os4bmjZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJeWUgYeG5o8Os4bmjZSBuw61uw7ogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIsOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlIn19fTtmdW5jdGlvbiBpZygpe3JldHVybntsb2NhbGVFcnJvcjpyZygpfX1jb25zdCB4aT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYXI6ZnAsYXo6dnAsYmU6X3AsYmc6YnAsY2E6a3AsY3M6d3AsZGE6enAsZGU6VHAsZWw6VXAsZW46YWwsZW86RHAsZXM6RXAsZmE6UnAsZmk6QXAsZnI6TXAsZnJDQTpGcCxoZTpIcCxocjpLcCxodTpCcCxoeTpYcCxpZDpRcCxpczp0ZixpdDpyZixqYTphZixrYTpjZixraDpsZixrbTpzbCxrbzptZixsdDpmZixtazp2ZixtczpfZixubDpiZixubzprZixvdGE6d2YscGw6VGYscHM6emYscHQ6VWYscm86T2YscnU6TmYsc2w6WmYsc3Y6Q2YsdGE6TGYsdGg6cWYsdHI6SmYsdWE6VmYsdWs6Y2wsdXI6V2YsdXo6R2Ysdmk6WWYseW86aWcsemhDTjplZyx6aFRXOm5nfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO3ZhciB2cztjb25zdCBUaT1TeW1ib2woIlpvZE91dHB1dCIpLGppPVN5bWJvbCgiWm9kSW5wdXQiKTtjbGFzcyB1bHtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwfWFkZChuLC4uLnIpe2NvbnN0IG89clswXTtyZXR1cm4gdGhpcy5fbWFwLnNldChuLG8pLG8mJnR5cGVvZiBvPT0ib2JqZWN0IiYmImlkImluIG8mJnRoaXMuX2lkbWFwLnNldChvLmlkLG4pLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXAsdGhpc31yZW1vdmUobil7Y29uc3Qgcj10aGlzLl9tYXAuZ2V0KG4pO3JldHVybiByJiZ0eXBlb2Ygcj09Im9iamVjdCImJiJpZCJpbiByJiZ0aGlzLl9pZG1hcC5kZWxldGUoci5pZCksdGhpcy5fbWFwLmRlbGV0ZShuKSx0aGlzfWdldChuKXtjb25zdCByPW4uX3pvZC5wYXJlbnQ7aWYocil7Y29uc3Qgbz17Li4udGhpcy5nZXQocik/P3t9fTtkZWxldGUgby5pZDtjb25zdCBlPXsuLi5vLC4uLnRoaXMuX21hcC5nZXQobil9O3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGg/ZTp2b2lkIDB9cmV0dXJuIHRoaXMuX21hcC5nZXQobil9aGFzKG4pe3JldHVybiB0aGlzLl9tYXAuaGFzKG4pfX1mdW5jdGlvbiBxbigpe3JldHVybiBuZXcgdWx9KHZzPWdsb2JhbFRoaXMpLl9fem9kX2dsb2JhbFJlZ2lzdHJ5Pz8odnMuX196b2RfZ2xvYmFsUmVnaXN0cnk9cW4oKSk7Y29uc3QgbmU9Z2xvYmFsVGhpcy5fX3pvZF9nbG9iYWxSZWdpc3RyeTtmdW5jdGlvbiBsbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIiwuLi5oKG4pfSl9ZnVuY3Rpb24gZGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBVaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIGpuKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBQaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gT2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLmgobil9KX1mdW5jdGlvbiBEaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4uaChuKX0pfWZ1bmN0aW9uIE5pKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi5oKG4pfSl9ZnVuY3Rpb24gRm4odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gRWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBaaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBSaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gQ2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBBaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gTGkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gTWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBxaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gRmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIG1sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibWFjIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEppKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEhpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFZpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEtpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFdpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBCaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1jb25zdCBHaT17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24gcGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRldGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi5oKG4pfSl9ZnVuY3Rpb24gZmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRlIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4uaChuKX0pfWZ1bmN0aW9uIGdsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLmgobil9KX1mdW5jdGlvbiB2bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4uaChuKX0pfWZ1bmN0aW9uIGhsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrczpbXSwuLi5oKG4pfSl9ZnVuY3Rpb24gX2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY29lcmNlOiEwLGNoZWNrczpbXSwuLi5oKG4pfSl9ZnVuY3Rpb24gJGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoic2FmZWludCIsLi4uaChuKX0pfWZ1bmN0aW9uIGJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0MzIiLC4uLmgobil9KX1mdW5jdGlvbiB5bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJmbG9hdDY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24ga2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50MzIiLC4uLmgobil9KX1mdW5jdGlvbiBTbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50MzIiLC4uLmgobil9KX1mdW5jdGlvbiB3bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYm9vbGVhbiIsLi4uaChuKX0pfWZ1bmN0aW9uIElsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJib29sZWFuIixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIHpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLC4uLmgobil9KX1mdW5jdGlvbiB4bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50Iixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIFRsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLGNoZWNrOiJiaWdpbnRfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImludDY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gamwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoidWludDY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gVWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN5bWJvbCIsLi4uaChuKX0pfWZ1bmN0aW9uIFBsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmRlZmluZWQiLC4uLmgobil9KX1mdW5jdGlvbiBPbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVsbCIsLi4uaChuKX0pfWZ1bmN0aW9uIERsKHQpe3JldHVybiBuZXcgdCh7dHlwZToiYW55In0pfWZ1bmN0aW9uIE5sKHQpe3JldHVybiBuZXcgdCh7dHlwZToidW5rbm93biJ9KX1mdW5jdGlvbiBFbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibmV2ZXIiLC4uLmgobil9KX1mdW5jdGlvbiBabCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToidm9pZCIsLi4uaChuKX0pfWZ1bmN0aW9uIFJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJkYXRlIiwuLi5oKG4pfSl9ZnVuY3Rpb24gQ2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImRhdGUiLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gQWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im5hbiIsLi4uaChuKX0pfWZ1bmN0aW9uIGhlKHQsbil7cmV0dXJuIG5ldyBoaSh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMX0pfWZ1bmN0aW9uIHJlKHQsbil7cmV0dXJuIG5ldyBoaSh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIF9lKHQsbil7cmV0dXJuIG5ldyBfaSh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMX0pfWZ1bmN0aW9uIGVlKHQsbil7cmV0dXJuIG5ldyBfaSh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIEpuKHQpe3JldHVybiBfZSgwLHQpfWZ1bmN0aW9uIEhuKHQpe3JldHVybiBoZSgwLHQpfWZ1bmN0aW9uIFZuKHQpe3JldHVybiByZSgwLHQpfWZ1bmN0aW9uIEtuKHQpe3JldHVybiBlZSgwLHQpfWZ1bmN0aW9uIGplKHQsbil7cmV0dXJuIG5ldyB4Yyh7Y2hlY2s6Im11bHRpcGxlX29mIiwuLi5oKG4pLHZhbHVlOnR9KX1mdW5jdGlvbiBOZSh0LG4pe3JldHVybiBuZXcgVWMoe2NoZWNrOiJtYXhfc2l6ZSIsLi4uaChuKSxtYXhpbXVtOnR9KX1mdW5jdGlvbiAkZSh0LG4pe3JldHVybiBuZXcgUGMoe2NoZWNrOiJtaW5fc2l6ZSIsLi4uaChuKSxtaW5pbXVtOnR9KX1mdW5jdGlvbiBHZSh0LG4pe3JldHVybiBuZXcgT2Moe2NoZWNrOiJzaXplX2VxdWFscyIsLi4uaChuKSxzaXplOnR9KX1mdW5jdGlvbiBYZSh0LG4pe3JldHVybiBuZXcgRGMoe2NoZWNrOiJtYXhfbGVuZ3RoIiwuLi5oKG4pLG1heGltdW06dH0pfWZ1bmN0aW9uIHllKHQsbil7cmV0dXJuIG5ldyBOYyh7Y2hlY2s6Im1pbl9sZW5ndGgiLC4uLmgobiksbWluaW11bTp0fSl9ZnVuY3Rpb24gWWUodCxuKXtyZXR1cm4gbmV3IEVjKHtjaGVjazoibGVuZ3RoX2VxdWFscyIsLi4uaChuKSxsZW5ndGg6dH0pfWZ1bmN0aW9uIFR0KHQsbil7cmV0dXJuIG5ldyBaYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoicmVnZXgiLC4uLmgobikscGF0dGVybjp0fSl9ZnVuY3Rpb24ganQodCl7cmV0dXJuIG5ldyBSYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoibG93ZXJjYXNlIiwuLi5oKHQpfSl9ZnVuY3Rpb24gVXQodCl7cmV0dXJuIG5ldyBDYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoidXBwZXJjYXNlIiwuLi5oKHQpfSl9ZnVuY3Rpb24gUHQodCxuKXtyZXR1cm4gbmV3IEFjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsLi4uaChuKSxpbmNsdWRlczp0fSl9ZnVuY3Rpb24gT3QodCxuKXtyZXR1cm4gbmV3IExjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJzdGFydHNfd2l0aCIsLi4uaChuKSxwcmVmaXg6dH0pfWZ1bmN0aW9uIER0KHQsbil7cmV0dXJuIG5ldyBNYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIiwuLi5oKG4pLHN1ZmZpeDp0fSl9ZnVuY3Rpb24gV24odCxuLHIpe3JldHVybiBuZXcgcWMoe2NoZWNrOiJwcm9wZXJ0eSIscHJvcGVydHk6dCxzY2hlbWE6biwuLi5oKHIpfSl9ZnVuY3Rpb24gTnQodCxuKXtyZXR1cm4gbmV3IEZjKHtjaGVjazoibWltZV90eXBlIixtaW1lOnQsLi4uaChuKX0pfWZ1bmN0aW9uIHBlKHQpe3JldHVybiBuZXcgSmMoe2NoZWNrOiJvdmVyd3JpdGUiLHR4OnR9KX1mdW5jdGlvbiBFdCh0KXtyZXR1cm4gcGUobj0+bi5ub3JtYWxpemUodCkpfWZ1bmN0aW9uIFp0KCl7cmV0dXJuIHBlKHQ9PnQudHJpbSgpKX1mdW5jdGlvbiBSdCgpe3JldHVybiBwZSh0PT50LnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIEN0KCl7cmV0dXJuIHBlKHQ9PnQudG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gQXQoKXtyZXR1cm4gcGUodD0+eHModCkpfWZ1bmN0aW9uIExsKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImFycmF5IixlbGVtZW50Om4sLi4uaChyKX0pfWZ1bmN0aW9uIG9nKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuaW9uIixvcHRpb25zOm4sLi4uaChyKX0pfWZ1bmN0aW9uIGFnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuaW9uIixvcHRpb25zOm4saW5jbHVzaXZlOiExLC4uLmgocil9KX1mdW5jdGlvbiBzZyh0LG4scixvKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuaW9uIixvcHRpb25zOnIsZGlzY3JpbWluYXRvcjpuLC4uLmgobyl9KX1mdW5jdGlvbiBjZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJpbnRlcnNlY3Rpb24iLGxlZnQ6bixyaWdodDpyfSl9ZnVuY3Rpb24gdWcodCxuLHIsbyl7Y29uc3QgZT1yIGluc3RhbmNlb2YgSSxpPWU/bzpyLGE9ZT9yOm51bGw7cmV0dXJuIG5ldyB0KHt0eXBlOiJ0dXBsZSIsaXRlbXM6bixyZXN0OmEsLi4uaChpKX0pfWZ1bmN0aW9uIGxnKHQsbixyLG8pe3JldHVybiBuZXcgdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOm4sdmFsdWVUeXBlOnIsLi4uaChvKX0pfWZ1bmN0aW9uIGRnKHQsbixyLG8pe3JldHVybiBuZXcgdCh7dHlwZToibWFwIixrZXlUeXBlOm4sdmFsdWVUeXBlOnIsLi4uaChvKX0pfWZ1bmN0aW9uIG1nKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InNldCIsdmFsdWVUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIHBnKHQsbixyKXtjb25zdCBvPUFycmF5LmlzQXJyYXkobik/T2JqZWN0LmZyb21FbnRyaWVzKG4ubWFwKGU9PltlLGVdKSk6bjtyZXR1cm4gbmV3IHQoe3R5cGU6ImVudW0iLGVudHJpZXM6bywuLi5oKHIpfSl9ZnVuY3Rpb24gZmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLmgocil9KX1mdW5jdGlvbiBnZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShuKT9uOltuXSwuLi5oKHIpfSl9ZnVuY3Rpb24gTWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImZpbGUiLC4uLmgobil9KX1mdW5jdGlvbiB2Zyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToidHJhbnNmb3JtIix0cmFuc2Zvcm06bn0pfWZ1bmN0aW9uIGhnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBfZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVsbGFibGUiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gJGcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOm4sZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yKCk6RW4ocil9fSl9ZnVuY3Rpb24gYmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTpuLC4uLmgocil9KX1mdW5jdGlvbiB5Zyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3VjY2VzcyIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBrZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOm4sY2F0Y2hWYWx1ZTp0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yOigpPT5yfSl9ZnVuY3Rpb24gU2codCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToicGlwZSIsaW46bixvdXQ6cn0pfWZ1bmN0aW9uIHdnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBJZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czpuLC4uLmgocil9KX1mdW5jdGlvbiB6Zyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibGF6eSIsZ2V0dGVyOm59KX1mdW5jdGlvbiB4Zyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBxbCh0LG4scil7Y29uc3Qgbz1oKHIpO3JldHVybiBvLmFib3J0Pz8oby5hYm9ydD0hMCksbmV3IHQoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46biwuLi5vfSl9ZnVuY3Rpb24gRmwodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpuLC4uLmgocil9KX1mdW5jdGlvbiBKbCh0LG4pe2NvbnN0IHI9SGwobz0+KG8uYWRkSXNzdWU9ZT0+e2lmKHR5cGVvZiBlPT0ic3RyaW5nIilvLmlzc3Vlcy5wdXNoKExlKGUsby52YWx1ZSxyLl96b2QuZGVmKSk7ZWxzZXtjb25zdCBpPWU7aS5mYXRhbCYmKGkuY29udGludWU9ITEpLGkuY29kZT8/KGkuY29kZT0iY3VzdG9tIiksaS5pbnB1dD8/KGkuaW5wdXQ9by52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PXIpLGkuY29udGludWU/PyhpLmNvbnRpbnVlPSFyLl96b2QuZGVmLmFib3J0KSxvLmlzc3Vlcy5wdXNoKExlKGkpKX19LHQoby52YWx1ZSxvKSksbik7cmV0dXJuIHJ9ZnVuY3Rpb24gSGwodCxuKXtjb25zdCByPW5ldyBNKHtjaGVjazoiY3VzdG9tIiwuLi5oKG4pfSk7cmV0dXJuIHIuX3pvZC5jaGVjaz10LHJ9ZnVuY3Rpb24gVmwodCl7Y29uc3Qgbj1uZXcgTSh7Y2hlY2s6ImRlc2NyaWJlIn0pO3JldHVybiBuLl96b2Qub25hdHRhY2g9W3I9Pntjb25zdCBvPW5lLmdldChyKT8/e307bmUuYWRkKHIsey4uLm8sZGVzY3JpcHRpb246dH0pfV0sbi5fem9kLmNoZWNrPSgpPT57fSxufWZ1bmN0aW9uIEtsKHQpe2NvbnN0IG49bmV3IE0oe2NoZWNrOiJtZXRhIn0pO3JldHVybiBuLl96b2Qub25hdHRhY2g9W3I9Pntjb25zdCBvPW5lLmdldChyKT8/e307bmUuYWRkKHIsey4uLm8sLi4udH0pfV0sbi5fem9kLmNoZWNrPSgpPT57fSxufWZ1bmN0aW9uIFdsKHQsbil7Y29uc3Qgcj1oKG4pO2xldCBvPXIudHJ1dGh5Pz9bInRydWUiLCIxIiwieWVzIiwib24iLCJ5IiwiZW5hYmxlZCJdLGU9ci5mYWxzeT8/WyJmYWxzZSIsIjAiLCJubyIsIm9mZiIsIm4iLCJkaXNhYmxlZCJdO3IuY2FzZSE9PSJzZW5zaXRpdmUiJiYobz1vLm1hcChfPT50eXBlb2YgXz09InN0cmluZyI/Xy50b0xvd2VyQ2FzZSgpOl8pLGU9ZS5tYXAoXz0+dHlwZW9mIF89PSJzdHJpbmciP18udG9Mb3dlckNhc2UoKTpfKSk7Y29uc3QgaT1uZXcgU2V0KG8pLGE9bmV3IFNldChlKSxzPXQuQ29kZWM/P3ppLGM9dC5Cb29sZWFuPz95aSx1PXQuU3RyaW5nPz94dCxsPW5ldyB1KHt0eXBlOiJzdHJpbmciLGVycm9yOnIuZXJyb3J9KSxnPW5ldyBjKHt0eXBlOiJib29sZWFuIixlcnJvcjpyLmVycm9yfSksdj1uZXcgcyh7dHlwZToicGlwZSIsaW46bCxvdXQ6Zyx0cmFuc2Zvcm06KChfLHkpPT57bGV0IHE9XztyZXR1cm4gci5jYXNlIT09InNlbnNpdGl2ZSImJihxPXEudG9Mb3dlckNhc2UoKSksaS5oYXMocSk/ITA6YS5oYXMocSk/ITE6KHkuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLmksLi4uYV0saW5wdXQ6eS52YWx1ZSxpbnN0OnYsY29udGludWU6ITF9KSx7fSl9KSxyZXZlcnNlVHJhbnNmb3JtOigoXyx5KT0+Xz09PSEwP29bMF18fCJ0cnVlIjplWzBdfHwiZmFsc2UiKSxlcnJvcjpyLmVycm9yfSk7cmV0dXJuIHZ9ZnVuY3Rpb24gTHQodCxuLHIsbz17fSl7Y29uc3QgZT1oKG8pLGk9ey4uLmgobyksY2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0Om4sZm46dHlwZW9mIHI9PSJmdW5jdGlvbiI/cjpzPT5yLnRlc3QocyksLi4uZX07cmV0dXJuIHIgaW5zdGFuY2VvZiBSZWdFeHAmJihpLnBhdHRlcm49ciksbmV3IHQoaSl9ZnVuY3Rpb24gcWUodCl7bGV0IG49dD8udGFyZ2V0Pz8iZHJhZnQtMjAyMC0xMiI7cmV0dXJuIG49PT0iZHJhZnQtNCImJihuPSJkcmFmdC0wNCIpLG49PT0iZHJhZnQtNyImJihuPSJkcmFmdC0wNyIpLHtwcm9jZXNzb3JzOnQucHJvY2Vzc29ycz8/e30sbWV0YWRhdGFSZWdpc3RyeTp0Py5tZXRhZGF0YT8/bmUsdGFyZ2V0Om4sdW5yZXByZXNlbnRhYmxlOnQ/LnVucmVwcmVzZW50YWJsZT8/InRocm93IixvdmVycmlkZTp0Py5vdmVycmlkZT8/KCgpPT57fSksaW86dD8uaW8/PyJvdXRwdXQiLGNvdW50ZXI6MCxzZWVuOm5ldyBNYXAsY3ljbGVzOnQ/LmN5Y2xlcz8/InJlZiIscmV1c2VkOnQ/LnJldXNlZD8/ImlubGluZSIsZXh0ZXJuYWw6dD8uZXh0ZXJuYWw/P3ZvaWQgMH19ZnVuY3Rpb24gRSh0LG4scj17cGF0aDpbXSxzY2hlbWFQYXRoOltdfSl7dmFyIG87Y29uc3QgZT10Ll96b2QuZGVmLGk9bi5zZWVuLmdldCh0KTtpZihpKXJldHVybiBpLmNvdW50Kyssci5zY2hlbWFQYXRoLmluY2x1ZGVzKHQpJiYoaS5jeWNsZT1yLnBhdGgpLGkuc2NoZW1hO2NvbnN0IGE9e3NjaGVtYTp7fSxjb3VudDoxLGN5Y2xlOnZvaWQgMCxwYXRoOnIucGF0aH07bi5zZWVuLnNldCh0LGEpO2NvbnN0IHM9dC5fem9kLnRvSlNPTlNjaGVtYT8uKCk7aWYocylhLnNjaGVtYT1zO2Vsc2V7Y29uc3QgbD17Li4ucixzY2hlbWFQYXRoOlsuLi5yLnNjaGVtYVBhdGgsdF0scGF0aDpyLnBhdGh9O2lmKHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSl0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEobixhLnNjaGVtYSxsKTtlbHNle2NvbnN0IHY9YS5zY2hlbWEsXz1uLnByb2Nlc3NvcnNbZS50eXBlXTtpZighXyl0aHJvdyBuZXcgRXJyb3IoYFt0b0pTT05TY2hlbWFdOiBOb24tcmVwcmVzZW50YWJsZSB0eXBlIGVuY291bnRlcmVkOiAke2UudHlwZX1gKTtfKHQsbix2LGwpfWNvbnN0IGc9dC5fem9kLnBhcmVudDtnJiYoYS5yZWZ8fChhLnJlZj1nKSxFKGcsbixsKSxuLnNlZW4uZ2V0KGcpLmlzUGFyZW50PSEwKX1jb25zdCBjPW4ubWV0YWRhdGFSZWdpc3RyeS5nZXQodCk7cmV0dXJuIGMmJk9iamVjdC5hc3NpZ24oYS5zY2hlbWEsYyksbi5pbz09PSJpbnB1dCImJlEodCkmJihkZWxldGUgYS5zY2hlbWEuZXhhbXBsZXMsZGVsZXRlIGEuc2NoZW1hLmRlZmF1bHQpLG4uaW89PT0iaW5wdXQiJiYiX3ByZWZhdWx0ImluIGEuc2NoZW1hJiYoKG89YS5zY2hlbWEpLmRlZmF1bHQ/PyhvLmRlZmF1bHQ9YS5zY2hlbWEuX3ByZWZhdWx0KSksZGVsZXRlIGEuc2NoZW1hLl9wcmVmYXVsdCxuLnNlZW4uZ2V0KHQpLnNjaGVtYX1mdW5jdGlvbiBGZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQ7aWYocyl7Y29uc3QgYz1vLmdldChzKTtpZihjJiZjIT09YVswXSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBzY2hlbWEgaWQgIiR7c30iIGRldGVjdGVkIGR1cmluZyBKU09OIFNjaGVtYSBjb252ZXJzaW9uLiBUd28gZGlmZmVyZW50IHNjaGVtYXMgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGlkIHdoZW4gY29udmVydGVkIHRvZ2V0aGVyLmApO28uc2V0KHMsYVswXSl9fWNvbnN0IGU9YT0+e2NvbnN0IHM9dC50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2lmKHQuZXh0ZXJuYWwpe2NvbnN0IGc9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQoYVswXSk/LmlkLHY9dC5leHRlcm5hbC51cmk/Pyh5PT55KTtpZihnKXJldHVybntyZWY6dihnKX07Y29uc3QgXz1hWzFdLmRlZklkPz9hWzFdLnNjaGVtYS5pZD8/YHNjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm4gYVsxXS5kZWZJZD1fLHtkZWZJZDpfLHJlZjpgJHt2KCJfX3NoYXJlZCIpfSMvJHtzfS8ke199YH19aWYoYVsxXT09PXIpcmV0dXJue3JlZjoiIyJ9O2NvbnN0IHU9YCMvJHtzfS9gLGw9YVsxXS5zY2hlbWEuaWQ/P2BfX3NjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm57ZGVmSWQ6bCxyZWY6dStsfX0saT1hPT57aWYoYVsxXS5zY2hlbWEuJHJlZilyZXR1cm47Y29uc3Qgcz1hWzFdLHtyZWY6YyxkZWZJZDp1fT1lKGEpO3MuZGVmPXsuLi5zLnNjaGVtYX0sdSYmKHMuZGVmSWQ9dSk7Y29uc3QgbD1zLnNjaGVtYTtmb3IoY29uc3QgZyBpbiBsKWRlbGV0ZSBsW2ddO2wuJHJlZj1jfTtpZih0LmN5Y2xlcz09PSJ0aHJvdyIpZm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz1hWzFdO2lmKHMuY3ljbGUpdGhyb3cgbmV3IEVycm9yKGBDeWNsZSBkZXRlY3RlZDogIy8ke3MuY3ljbGU/LmpvaW4oIi8iKX0vPHJvb3Q+CgpTZXQgdGhlIFxgY3ljbGVzXGAgcGFyYW1ldGVyIHRvIFxgInJlZiJcYCB0byByZXNvbHZlIGN5Y2xpY2FsIHNjaGVtYXMgd2l0aCBkZWZzLmApfWZvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9YVsxXTtpZihuPT09YVswXSl7aShhKTtjb250aW51ZX1pZih0LmV4dGVybmFsKXtjb25zdCB1PXQuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGFbMF0pPy5pZDtpZihuIT09YVswXSYmdSl7aShhKTtjb250aW51ZX19aWYodC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQpe2koYSk7Y29udGludWV9aWYocy5jeWNsZSl7aShhKTtjb250aW51ZX1pZihzLmNvdW50PjEmJnQucmV1c2VkPT09InJlZiIpe2koYSk7Y29udGludWV9fX1mdW5jdGlvbiBKZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1zPT57Y29uc3QgYz10LnNlZW4uZ2V0KHMpO2lmKGMucmVmPT09bnVsbClyZXR1cm47Y29uc3QgdT1jLmRlZj8/Yy5zY2hlbWEsbD17Li4udX0sZz1jLnJlZjtpZihjLnJlZj1udWxsLGcpe28oZyk7Y29uc3QgXz10LnNlZW4uZ2V0KGcpLHk9Xy5zY2hlbWE7aWYoeS4kcmVmJiYodC50YXJnZXQ9PT0iZHJhZnQtMDcifHx0LnRhcmdldD09PSJkcmFmdC0wNCJ8fHQudGFyZ2V0PT09Im9wZW5hcGktMy4wIik/KHUuYWxsT2Y9dS5hbGxPZj8/W10sdS5hbGxPZi5wdXNoKHkpKTpPYmplY3QuYXNzaWduKHUseSksT2JqZWN0LmFzc2lnbih1LGwpLHMuX3pvZC5wYXJlbnQ9PT1nKWZvcihjb25zdCBSIGluIHUpUj09PSIkcmVmInx8Uj09PSJhbGxPZiJ8fFIgaW4gbHx8ZGVsZXRlIHVbUl07aWYoeS4kcmVmJiZfLmRlZilmb3IoY29uc3QgUiBpbiB1KVI9PT0iJHJlZiJ8fFI9PT0iYWxsT2YifHxSIGluIF8uZGVmJiZKU09OLnN0cmluZ2lmeSh1W1JdKT09PUpTT04uc3RyaW5naWZ5KF8uZGVmW1JdKSYmZGVsZXRlIHVbUl19Y29uc3Qgdj1zLl96b2QucGFyZW50O2lmKHYmJnYhPT1nKXtvKHYpO2NvbnN0IF89dC5zZWVuLmdldCh2KTtpZihfPy5zY2hlbWEuJHJlZiYmKHUuJHJlZj1fLnNjaGVtYS4kcmVmLF8uZGVmKSlmb3IoY29uc3QgeSBpbiB1KXk9PT0iJHJlZiJ8fHk9PT0iYWxsT2YifHx5IGluIF8uZGVmJiZKU09OLnN0cmluZ2lmeSh1W3ldKT09PUpTT04uc3RyaW5naWZ5KF8uZGVmW3ldKSYmZGVsZXRlIHVbeV19dC5vdmVycmlkZSh7em9kU2NoZW1hOnMsanNvblNjaGVtYTp1LHBhdGg6Yy5wYXRoPz9bXX0pfTtmb3IoY29uc3QgcyBvZlsuLi50LnNlZW4uZW50cmllcygpXS5yZXZlcnNlKCkpbyhzWzBdKTtjb25zdCBlPXt9O2lmKHQudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiP2UuJHNjaGVtYT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiOnQudGFyZ2V0PT09ImRyYWZ0LTA3Ij9lLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI6dC50YXJnZXQ9PT0iZHJhZnQtMDQiP2UuJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIjp0LnRhcmdldCx0LmV4dGVybmFsPy51cmkpe2NvbnN0IHM9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQobik/LmlkO2lmKCFzKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYW4gYGlkYCBwcm9wZXJ0eSIpO2UuJGlkPXQuZXh0ZXJuYWwudXJpKHMpfU9iamVjdC5hc3NpZ24oZSxyLmRlZj8/ci5zY2hlbWEpO2NvbnN0IGk9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChuKT8uaWQ7aSE9PXZvaWQgMCYmZS5pZD09PWkmJmRlbGV0ZSBlLmlkO2NvbnN0IGE9dC5leHRlcm5hbD8uZGVmcz8/e307Zm9yKGNvbnN0IHMgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3QgYz1zWzFdO2MuZGVmJiZjLmRlZklkJiYoYy5kZWYuaWQ9PT1jLmRlZklkJiZkZWxldGUgYy5kZWYuaWQsYVtjLmRlZklkXT1jLmRlZil9dC5leHRlcm5hbHx8T2JqZWN0LmtleXMoYSkubGVuZ3RoPjAmJih0LnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj9lLiRkZWZzPWE6ZS5kZWZpbml0aW9ucz1hKTt0cnl7Y29uc3Qgcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIn5zdGFuZGFyZCIse3ZhbHVlOnsuLi5uWyJ+c3RhbmRhcmQiXSxqc29uU2NoZW1hOntpbnB1dDpndChuLCJpbnB1dCIsdC5wcm9jZXNzb3JzKSxvdXRwdXQ6Z3Qobiwib3V0cHV0Iix0LnByb2Nlc3NvcnMpfX0sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMX0pLHN9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIHNjaGVtYSB0byBKU09OLiIpfX1mdW5jdGlvbiBRKHQsbil7Y29uc3Qgcj1uPz97c2VlbjpuZXcgU2V0fTtpZihyLnNlZW4uaGFzKHQpKXJldHVybiExO3Iuc2Vlbi5hZGQodCk7Y29uc3Qgbz10Ll96b2QuZGVmO2lmKG8udHlwZT09PSJ0cmFuc2Zvcm0iKXJldHVybiEwO2lmKG8udHlwZT09PSJhcnJheSIpcmV0dXJuIFEoby5lbGVtZW50LHIpO2lmKG8udHlwZT09PSJzZXQiKXJldHVybiBRKG8udmFsdWVUeXBlLHIpO2lmKG8udHlwZT09PSJsYXp5IilyZXR1cm4gUShvLmdldHRlcigpLHIpO2lmKG8udHlwZT09PSJwcm9taXNlInx8by50eXBlPT09Im9wdGlvbmFsInx8by50eXBlPT09Im5vbm9wdGlvbmFsInx8by50eXBlPT09Im51bGxhYmxlInx8by50eXBlPT09InJlYWRvbmx5Inx8by50eXBlPT09ImRlZmF1bHQifHxvLnR5cGU9PT0icHJlZmF1bHQiKXJldHVybiBRKG8uaW5uZXJUeXBlLHIpO2lmKG8udHlwZT09PSJpbnRlcnNlY3Rpb24iKXJldHVybiBRKG8ubGVmdCxyKXx8UShvLnJpZ2h0LHIpO2lmKG8udHlwZT09PSJyZWNvcmQifHxvLnR5cGU9PT0ibWFwIilyZXR1cm4gUShvLmtleVR5cGUscil8fFEoby52YWx1ZVR5cGUscik7aWYoby50eXBlPT09InBpcGUiKXJldHVybiB0Ll96b2QudHJhaXRzLmhhcygiJFpvZENvZGVjIik/ITA6UShvLmluLHIpfHxRKG8ub3V0LHIpO2lmKG8udHlwZT09PSJvYmplY3QiKXtmb3IoY29uc3QgZSBpbiBvLnNoYXBlKWlmKFEoby5zaGFwZVtlXSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihvLnR5cGU9PT0idW5pb24iKXtmb3IoY29uc3QgZSBvZiBvLm9wdGlvbnMpaWYoUShlLHIpKXJldHVybiEwO3JldHVybiExfWlmKG8udHlwZT09PSJ0dXBsZSIpe2Zvcihjb25zdCBlIG9mIG8uaXRlbXMpaWYoUShlLHIpKXJldHVybiEwO3JldHVybiEhKG8ucmVzdCYmUShvLnJlc3QscikpfXJldHVybiExfWNvbnN0IEJsPSh0LG49e30pPT5yPT57Y29uc3Qgbz1xZSh7Li4ucixwcm9jZXNzb3JzOm59KTtyZXR1cm4gRSh0LG8pLEZlKG8sdCksSmUobyx0KX0sZ3Q9KHQsbixyPXt9KT0+bz0+e2NvbnN0e2xpYnJhcnlPcHRpb25zOmUsdGFyZ2V0Oml9PW8/P3t9LGE9cWUoey4uLmU/P3t9LHRhcmdldDppLGlvOm4scHJvY2Vzc29yczpyfSk7cmV0dXJuIEUodCxhKSxGZShhLHQpLEplKGEsdCl9LFRnPXtndWlkOiJ1dWlkIix1cmw6InVyaSIsZGF0ZXRpbWU6ImRhdGUtdGltZSIsanNvbl9zdHJpbmc6Impzb24tc3RyaW5nIixyZWdleDoiIn0sR2w9KHQsbixyLG8pPT57Y29uc3QgZT1yO2UudHlwZT0ic3RyaW5nIjtjb25zdHttaW5pbXVtOmksbWF4aW11bTphLGZvcm1hdDpzLHBhdHRlcm5zOmMsY29udGVudEVuY29kaW5nOnV9PXQuX3pvZC5iYWc7aWYodHlwZW9mIGk9PSJudW1iZXIiJiYoZS5taW5MZW5ndGg9aSksdHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhMZW5ndGg9YSkscyYmKGUuZm9ybWF0PVRnW3NdPz9zLGUuZm9ybWF0PT09IiImJmRlbGV0ZSBlLmZvcm1hdCxzPT09InRpbWUiJiZkZWxldGUgZS5mb3JtYXQpLHUmJihlLmNvbnRlbnRFbmNvZGluZz11KSxjJiZjLnNpemU+MCl7Y29uc3QgbD1bLi4uY107bC5sZW5ndGg9PT0xP2UucGF0dGVybj1sWzBdLnNvdXJjZTpsLmxlbmd0aD4xJiYoZS5hbGxPZj1bLi4ubC5tYXAoZz0+KHsuLi5uLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3t0eXBlOiJzdHJpbmcifTp7fSxwYXR0ZXJuOmcuc291cmNlfSkpXSl9fSxYbD0odCxuLHIsbyk9Pntjb25zdCBlPXIse21pbmltdW06aSxtYXhpbXVtOmEsZm9ybWF0OnMsbXVsdGlwbGVPZjpjLGV4Y2x1c2l2ZU1heGltdW06dSxleGNsdXNpdmVNaW5pbXVtOmx9PXQuX3pvZC5iYWc7dHlwZW9mIHM9PSJzdHJpbmciJiZzLmluY2x1ZGVzKCJpbnQiKT9lLnR5cGU9ImludGVnZXIiOmUudHlwZT0ibnVtYmVyIjtjb25zdCBnPXR5cGVvZiBsPT0ibnVtYmVyIiYmbD49KGk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSksdj10eXBlb2YgdT09Im51bWJlciImJnU8PShhPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLF89bi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI7Zz9fPyhlLm1pbmltdW09bCxlLmV4Y2x1c2l2ZU1pbmltdW09ITApOmUuZXhjbHVzaXZlTWluaW11bT1sOnR5cGVvZiBpPT0ibnVtYmVyIiYmKGUubWluaW11bT1pKSx2P18/KGUubWF4aW11bT11LGUuZXhjbHVzaXZlTWF4aW11bT0hMCk6ZS5leGNsdXNpdmVNYXhpbXVtPXU6dHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhpbXVtPWEpLHR5cGVvZiBjPT0ibnVtYmVyIiYmKGUubXVsdGlwbGVPZj1jKX0sWWw9KHQsbixyLG8pPT57ci50eXBlPSJib29sZWFuIn0sUWw9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxlZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx0ZD0odCxuLHIsbyk9PntuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KHIudHlwZT0ic3RyaW5nIixyLm51bGxhYmxlPSEwLHIuZW51bT1bbnVsbF0pOnIudHlwZT0ibnVsbCJ9LG5kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlVuZGVmaW5lZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0scmQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiVm9pZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0saWQ9KHQsbixyLG8pPT57ci5ub3Q9e319LG9kPSh0LG4scixvKT0+e30sYWQ9KHQsbixyLG8pPT57fSxzZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJEYXRlIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxjZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1RcihlLmVudHJpZXMpO2kuZXZlcnkoYT0+dHlwZW9mIGE9PSJudW1iZXIiKSYmKHIudHlwZT0ibnVtYmVyIiksaS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpJiYoci50eXBlPSJzdHJpbmciKSxyLmVudW09aX0sdWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9W107Zm9yKGNvbnN0IGEgb2YgZS52YWx1ZXMpaWYoYT09PXZvaWQgMCl7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiTGl0ZXJhbCBgdW5kZWZpbmVkYCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX1lbHNlIGlmKHR5cGVvZiBhPT0iYmlnaW50Iil7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpO2kucHVzaChOdW1iZXIoYSkpfWVsc2UgaS5wdXNoKGEpO2lmKGkubGVuZ3RoIT09MClpZihpLmxlbmd0aD09PTEpe2NvbnN0IGE9aVswXTtyLnR5cGU9YT09PW51bGw/Im51bGwiOnR5cGVvZiBhLG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3IuZW51bT1bYV06ci5jb25zdD1hfWVsc2UgaS5ldmVyeShhPT50eXBlb2YgYT09Im51bWJlciIpJiYoci50eXBlPSJudW1iZXIiKSxpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikmJihyLnR5cGU9InN0cmluZyIpLGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJib29sZWFuIikmJihyLnR5cGU9ImJvb2xlYW4iKSxpLmV2ZXJ5KGE9PmE9PT1udWxsKSYmKHIudHlwZT0ibnVsbCIpLHIuZW51bT1pfSxsZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGRkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5wYXR0ZXJuO2lmKCFpKXRocm93IG5ldyBFcnJvcigiUGF0dGVybiBub3QgZm91bmQgaW4gdGVtcGxhdGUgbGl0ZXJhbCIpO2UudHlwZT0ic3RyaW5nIixlLnBhdHRlcm49aS5zb3VyY2V9LG1kPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmluYXJ5Iixjb250ZW50RW5jb2Rpbmc6ImJpbmFyeSJ9LHttaW5pbXVtOmEsbWF4aW11bTpzLG1pbWU6Y309dC5fem9kLmJhZzthIT09dm9pZCAwJiYoaS5taW5MZW5ndGg9YSkscyE9PXZvaWQgMCYmKGkubWF4TGVuZ3RoPXMpLGM/Yy5sZW5ndGg9PT0xPyhpLmNvbnRlbnRNZWRpYVR5cGU9Y1swXSxPYmplY3QuYXNzaWduKGUsaSkpOihPYmplY3QuYXNzaWduKGUsaSksZS5hbnlPZj1jLm1hcCh1PT4oe2NvbnRlbnRNZWRpYVR5cGU6dX0pKSk6T2JqZWN0LmFzc2lnbihlLGkpfSxwZD0odCxuLHIsbyk9PntyLnR5cGU9ImJvb2xlYW4ifSxmZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJDdXN0b20gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGdkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkZ1bmN0aW9uIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx2ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxoZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LF9kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlNldCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sJGQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZix7bWluaW11bTphLG1heGltdW06c309dC5fem9kLmJhZzt0eXBlb2YgYT09Im51bWJlciImJihlLm1pbkl0ZW1zPWEpLHR5cGVvZiBzPT0ibnVtYmVyIiYmKGUubWF4SXRlbXM9cyksZS50eXBlPSJhcnJheSIsZS5pdGVtcz1FKGkuZWxlbWVudCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiaXRlbXMiXX0pfSxiZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0ib2JqZWN0IixlLnByb3BlcnRpZXM9e307Y29uc3QgYT1pLnNoYXBlO2Zvcihjb25zdCB1IGluIGEpZS5wcm9wZXJ0aWVzW3VdPUUoYVt1XSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwicHJvcGVydGllcyIsdV19KTtjb25zdCBzPW5ldyBTZXQoT2JqZWN0LmtleXMoYSkpLGM9bmV3IFNldChbLi4uc10uZmlsdGVyKHU9Pntjb25zdCBsPWkuc2hhcGVbdV0uX3pvZDtyZXR1cm4gbi5pbz09PSJpbnB1dCI/bC5vcHRpbj09PXZvaWQgMDpsLm9wdG91dD09PXZvaWQgMH0pKTtjLnNpemU+MCYmKGUucmVxdWlyZWQ9QXJyYXkuZnJvbShjKSksaS5jYXRjaGFsbD8uX3pvZC5kZWYudHlwZT09PSJuZXZlciI/ZS5hZGRpdGlvbmFsUHJvcGVydGllcz0hMTppLmNhdGNoYWxsP2kuY2F0Y2hhbGwmJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPUUoaS5jYXRjaGFsbCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pKTpuLmlvPT09Im91dHB1dCImJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExKX0sWGk9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9ZS5pbmNsdXNpdmU9PT0hMSxhPWUub3B0aW9ucy5tYXAoKHMsYyk9PkUocyxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxpPyJvbmVPZiI6ImFueU9mIixjXX0pKTtpP3Iub25lT2Y9YTpyLmFueU9mPWF9LHlkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPUUoZS5sZWZ0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhbGxPZiIsMF19KSxhPUUoZS5yaWdodCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWxsT2YiLDFdfSkscz11PT4iYWxsT2YiaW4gdSYmT2JqZWN0LmtleXModSkubGVuZ3RoPT09MSxjPVsuLi5zKGkpP2kuYWxsT2Y6W2ldLC4uLnMoYSk/YS5hbGxPZjpbYV1dO3IuYWxsT2Y9Y30sa2Q9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9ImFycmF5Ijtjb25zdCBhPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyJwcmVmaXhJdGVtcyI6Iml0ZW1zIixzPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/Iml0ZW1zIjoiYWRkaXRpb25hbEl0ZW1zIixjPWkuaXRlbXMubWFwKCh2LF8pPT5FKHYsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsYSxfXX0pKSx1PWkucmVzdD9FKGkucmVzdCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxzLC4uLm4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj9baS5pdGVtcy5sZW5ndGhdOltdXX0pOm51bGw7bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/KGUucHJlZml4SXRlbXM9Yyx1JiYoZS5pdGVtcz11KSk6bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhlLml0ZW1zPXthbnlPZjpjfSx1JiZlLml0ZW1zLmFueU9mLnB1c2godSksZS5taW5JdGVtcz1jLmxlbmd0aCx1fHwoZS5tYXhJdGVtcz1jLmxlbmd0aCkpOihlLml0ZW1zPWMsdSYmKGUuYWRkaXRpb25hbEl0ZW1zPXUpKTtjb25zdHttaW5pbXVtOmwsbWF4aW11bTpnfT10Ll96b2QuYmFnO3R5cGVvZiBsPT0ibnVtYmVyIiYmKGUubWluSXRlbXM9bCksdHlwZW9mIGc9PSJudW1iZXIiJiYoZS5tYXhJdGVtcz1nKX0sU2Q9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9Im9iamVjdCI7Y29uc3QgYT1pLmtleVR5cGUsYz1hLl96b2QuYmFnPy5wYXR0ZXJucztpZihpLm1vZGU9PT0ibG9vc2UiJiZjJiZjLnNpemU+MCl7Y29uc3QgbD1FKGkudmFsdWVUeXBlLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJwYXR0ZXJuUHJvcGVydGllcyIsIioiXX0pO2UucGF0dGVyblByb3BlcnRpZXM9e307Zm9yKGNvbnN0IGcgb2YgYyllLnBhdHRlcm5Qcm9wZXJ0aWVzW2cuc291cmNlXT1sfWVsc2Uobi50YXJnZXQ9PT0iZHJhZnQtMDcifHxuLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIikmJihlLnByb3BlcnR5TmFtZXM9RShpLmtleVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsInByb3BlcnR5TmFtZXMiXX0pKSxlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPUUoaS52YWx1ZVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIl19KTtjb25zdCB1PWEuX3pvZC52YWx1ZXM7aWYodSl7Y29uc3QgbD1bLi4udV0uZmlsdGVyKGc9PnR5cGVvZiBnPT0ic3RyaW5nInx8dHlwZW9mIGc9PSJudW1iZXIiKTtsLmxlbmd0aD4wJiYoZS5yZXF1aXJlZD1sKX19LHdkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPUUoZS5pbm5lclR5cGUsbixvKSxhPW4uc2Vlbi5nZXQodCk7bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhhLnJlZj1lLmlubmVyVHlwZSxyLm51bGxhYmxlPSEwKTpyLmFueU9mPVtpLHt0eXBlOiJudWxsIn1dfSxJZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0semQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsci5kZWZhdWx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kZWZhdWx0VmFsdWUpKX0seGQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsbi5pbz09PSJpbnB1dCImJihyLl9wcmVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuZGVmYXVsdFZhbHVlKSkpfSxUZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZTtsZXQgYTt0cnl7YT1lLmNhdGNoVmFsdWUodm9pZCAwKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgY2F0Y2ggdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEpTT04gU2NoZW1hIil9ci5kZWZhdWx0PWF9LGpkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPWUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIiksYT1uLmlvPT09ImlucHV0Ij9pP2Uub3V0OmUuaW46ZS5vdXQ7RShhLG4sbyk7Y29uc3Qgcz1uLnNlZW4uZ2V0KHQpO3MucmVmPWF9LFVkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlLHIucmVhZE9ubHk9ITB9LFBkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSxZaT0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0sT2Q9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuaW5uZXJUeXBlO0UoZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lfSxHcj17c3RyaW5nOkdsLG51bWJlcjpYbCxib29sZWFuOllsLGJpZ2ludDpRbCxzeW1ib2w6ZWQsbnVsbDp0ZCx1bmRlZmluZWQ6bmQsdm9pZDpyZCxuZXZlcjppZCxhbnk6b2QsdW5rbm93bjphZCxkYXRlOnNkLGVudW06Y2QsbGl0ZXJhbDp1ZCxuYW46bGQsdGVtcGxhdGVfbGl0ZXJhbDpkZCxmaWxlOm1kLHN1Y2Nlc3M6cGQsY3VzdG9tOmZkLGZ1bmN0aW9uOmdkLHRyYW5zZm9ybTp2ZCxtYXA6aGQsc2V0Ol9kLGFycmF5OiRkLG9iamVjdDpiZCx1bmlvbjpYaSxpbnRlcnNlY3Rpb246eWQsdHVwbGU6a2QscmVjb3JkOlNkLG51bGxhYmxlOndkLG5vbm9wdGlvbmFsOklkLGRlZmF1bHQ6emQscHJlZmF1bHQ6eGQsY2F0Y2g6VGQscGlwZTpqZCxyZWFkb25seTpVZCxwcm9taXNlOlBkLG9wdGlvbmFsOllpLGxhenk6T2R9O2Z1bmN0aW9uIFFpKHQsbil7aWYoIl9pZG1hcCJpbiB0KXtjb25zdCBvPXQsZT1xZSh7Li4ubixwcm9jZXNzb3JzOkdyfSksaT17fTtmb3IoY29uc3QgYyBvZiBvLl9pZG1hcC5lbnRyaWVzKCkpe2NvbnN0W3UsbF09YztFKGwsZSl9Y29uc3QgYT17fSxzPXtyZWdpc3RyeTpvLHVyaTpuPy51cmksZGVmczppfTtlLmV4dGVybmFsPXM7Zm9yKGNvbnN0IGMgb2Ygby5faWRtYXAuZW50cmllcygpKXtjb25zdFt1LGxdPWM7RmUoZSxsKSxhW3VdPUplKGUsbCl9aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoPjApe2NvbnN0IGM9ZS50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2EuX19zaGFyZWQ9e1tjXTppfX1yZXR1cm57c2NoZW1hczphfX1jb25zdCByPXFlKHsuLi5uLHByb2Nlc3NvcnM6R3J9KTtyZXR1cm4gRSh0LHIpLEZlKHIsdCksSmUocix0KX1jbGFzcyBqZ3tnZXQgbWV0YWRhdGFSZWdpc3RyeSgpe3JldHVybiB0aGlzLmN0eC5tZXRhZGF0YVJlZ2lzdHJ5fWdldCB0YXJnZXQoKXtyZXR1cm4gdGhpcy5jdHgudGFyZ2V0fWdldCB1bnJlcHJlc2VudGFibGUoKXtyZXR1cm4gdGhpcy5jdHgudW5yZXByZXNlbnRhYmxlfWdldCBvdmVycmlkZSgpe3JldHVybiB0aGlzLmN0eC5vdmVycmlkZX1nZXQgaW8oKXtyZXR1cm4gdGhpcy5jdHguaW99Z2V0IGNvdW50ZXIoKXtyZXR1cm4gdGhpcy5jdHguY291bnRlcn1zZXQgY291bnRlcihuKXt0aGlzLmN0eC5jb3VudGVyPW59Z2V0IHNlZW4oKXtyZXR1cm4gdGhpcy5jdHguc2Vlbn1jb25zdHJ1Y3RvcihuKXtsZXQgcj1uPy50YXJnZXQ/PyJkcmFmdC0yMDIwLTEyIjtyPT09ImRyYWZ0LTQiJiYocj0iZHJhZnQtMDQiKSxyPT09ImRyYWZ0LTciJiYocj0iZHJhZnQtMDciKSx0aGlzLmN0eD1xZSh7cHJvY2Vzc29yczpHcix0YXJnZXQ6ciwuLi5uPy5tZXRhZGF0YSYme21ldGFkYXRhOm4ubWV0YWRhdGF9LC4uLm4/LnVucmVwcmVzZW50YWJsZSYme3VucmVwcmVzZW50YWJsZTpuLnVucmVwcmVzZW50YWJsZX0sLi4ubj8ub3ZlcnJpZGUmJntvdmVycmlkZTpuLm92ZXJyaWRlfSwuLi5uPy5pbyYme2lvOm4uaW99fSl9cHJvY2VzcyhuLHI9e3BhdGg6W10sc2NoZW1hUGF0aDpbXX0pe3JldHVybiBFKG4sdGhpcy5jdHgscil9ZW1pdChuLHIpe3ImJihyLmN5Y2xlcyYmKHRoaXMuY3R4LmN5Y2xlcz1yLmN5Y2xlcyksci5yZXVzZWQmJih0aGlzLmN0eC5yZXVzZWQ9ci5yZXVzZWQpLHIuZXh0ZXJuYWwmJih0aGlzLmN0eC5leHRlcm5hbD1yLmV4dGVybmFsKSksRmUodGhpcy5jdHgsbik7Y29uc3Qgbz1KZSh0aGlzLmN0eCxuKSx7In5zdGFuZGFyZCI6ZSwuLi5pfT1vO3JldHVybiBpfX1jb25zdCBVZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksRGQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRab2RBbnk6SXUsJFpvZEFycmF5OlV1LCRab2RBc3luY0Vycm9yOnhlLCRab2RCYXNlNjQ6cHUsJFpvZEJhc2U2NFVSTDpndSwkWm9kQmlnSW50OmtpLCRab2RCaWdJbnRGb3JtYXQ6eXUsJFpvZEJvb2xlYW46eWksJFpvZENJRFJ2NDpkdSwkWm9kQ0lEUnY2Om11LCRab2RDVUlEOlFjLCRab2RDVUlEMjpldSwkWm9kQ2F0Y2g6WHUsJFpvZENoZWNrOk0sJFpvZENoZWNrQmlnSW50Rm9ybWF0OmpjLCRab2RDaGVja0VuZHNXaXRoOk1jLCRab2RDaGVja0dyZWF0ZXJUaGFuOl9pLCRab2RDaGVja0luY2x1ZGVzOkFjLCRab2RDaGVja0xlbmd0aEVxdWFsczpFYywkWm9kQ2hlY2tMZXNzVGhhbjpoaSwkWm9kQ2hlY2tMb3dlckNhc2U6UmMsJFpvZENoZWNrTWF4TGVuZ3RoOkRjLCRab2RDaGVja01heFNpemU6VWMsJFpvZENoZWNrTWltZVR5cGU6RmMsJFpvZENoZWNrTWluTGVuZ3RoOk5jLCRab2RDaGVja01pblNpemU6UGMsJFpvZENoZWNrTXVsdGlwbGVPZjp4YywkWm9kQ2hlY2tOdW1iZXJGb3JtYXQ6VGMsJFpvZENoZWNrT3ZlcndyaXRlOkpjLCRab2RDaGVja1Byb3BlcnR5OnFjLCRab2RDaGVja1JlZ2V4OlpjLCRab2RDaGVja1NpemVFcXVhbHM6T2MsJFpvZENoZWNrU3RhcnRzV2l0aDpMYywkWm9kQ2hlY2tTdHJpbmdGb3JtYXQ6enQsJFpvZENoZWNrVXBwZXJDYXNlOkNjLCRab2RDb2RlYzp6aSwkWm9kQ3VzdG9tOm9sLCRab2RDdXN0b21TdHJpbmdGb3JtYXQ6JHUsJFpvZERhdGU6anUsJFpvZERlZmF1bHQ6S3UsJFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpadSwkWm9kRTE2NDp2dSwkWm9kRW1haWw6QmMsJFpvZEVtb2ppOlhjLCRab2RFbmNvZGVFcnJvcjpEbiwkWm9kRW51bTpNdSwkWm9kRXJyb3I6bmksJFpvZEV4YWN0T3B0aW9uYWw6SHUsJFpvZEZpbGU6RnUsJFpvZEZ1bmN0aW9uOm5sLCRab2RHVUlEOktjLCRab2RJUHY0OmN1LCRab2RJUHY2OnV1LCRab2RJU09EYXRlOm91LCRab2RJU09EYXRlVGltZTppdSwkWm9kSVNPRHVyYXRpb246c3UsJFpvZElTT1RpbWU6YXUsJFpvZEludGVyc2VjdGlvbjpSdSwkWm9kSldUOl91LCRab2RLU1VJRDpydSwkWm9kTGF6eTppbCwkWm9kTGl0ZXJhbDpxdSwkWm9kTUFDOmx1LCRab2RNYXA6QXUsJFpvZE5hTjpZdSwkWm9kTmFub0lEOlljLCRab2ROZXZlcjp4dSwkWm9kTm9uT3B0aW9uYWw6QnUsJFpvZE51bGw6d3UsJFpvZE51bGxhYmxlOlZ1LCRab2ROdW1iZXI6YmksJFpvZE51bWJlckZvcm1hdDpidSwkWm9kT2JqZWN0OkR1LCRab2RPYmplY3RKSVQ6TnUsJFpvZE9wdGlvbmFsOndpLCRab2RQaXBlOklpLCRab2RQcmVmYXVsdDpXdSwkWm9kUHJlcHJvY2VzczpRdSwkWm9kUHJvbWlzZTpybCwkWm9kUmVhZG9ubHk6ZWwsJFpvZFJlYWxFcnJvcjphZSwkWm9kUmVjb3JkOkN1LCRab2RSZWdpc3RyeTp1bCwkWm9kU2V0Okx1LCRab2RTdHJpbmc6eHQsJFpvZFN0cmluZ0Zvcm1hdDpMLCRab2RTdWNjZXNzOkd1LCRab2RTeW1ib2w6a3UsJFpvZFRlbXBsYXRlTGl0ZXJhbDp0bCwkWm9kVHJhbnNmb3JtOkp1LCRab2RUdXBsZTpTaSwkWm9kVHlwZTpJLCRab2RVTElEOnR1LCRab2RVUkw6R2MsJFpvZFVVSUQ6V2MsJFpvZFVuZGVmaW5lZDpTdSwkWm9kVW5pb246TW4sJFpvZFVua25vd246enUsJFpvZFZvaWQ6VHUsJFpvZFhJRDpudSwkWm9kWG9yOkV1LCRicmFuZDpZciwkY29uc3RydWN0b3I6ZCwkaW5wdXQ6amksJG91dHB1dDpUaSxEb2M6SGMsSlNPTlNjaGVtYTpVZyxKU09OU2NoZW1hR2VuZXJhdG9yOmpnLE5FVkVSOlhyLFRpbWVQcmVjaXNpb246R2ksX2FueTpEbCxfYXJyYXk6TGwsX2Jhc2U2NDpWaSxfYmFzZTY0dXJsOktpLF9iaWdpbnQ6emwsX2Jvb2xlYW46d2wsX2NhdGNoOmtnLF9jaGVjazpIbCxfY2lkcnY0OkppLF9jaWRydjY6SGksX2NvZXJjZWRCaWdpbnQ6eGwsX2NvZXJjZWRCb29sZWFuOklsLF9jb2VyY2VkRGF0ZTpDbCxfY29lcmNlZE51bWJlcjpfbCxfY29lcmNlZFN0cmluZzpkbCxfY3VpZDpSaSxfY3VpZDI6Q2ksX2N1c3RvbTpxbCxfZGF0ZTpSbCxfZGVjb2RlOnNpLF9kZWNvZGVBc3luYzp1aSxfZGVmYXVsdDokZyxfZGlzY3JpbWluYXRlZFVuaW9uOnNnLF9lMTY0OldpLF9lbWFpbDpVaSxfZW1vamk6RWksX2VuY29kZTphaSxfZW5jb2RlQXN5bmM6Y2ksX2VuZHNXaXRoOkR0LF9lbnVtOnBnLF9maWxlOk1sLF9mbG9hdDMyOmJsLF9mbG9hdDY0OnlsLF9ndDpfZSxfZ3RlOmVlLF9ndWlkOmpuLF9pbmNsdWRlczpQdCxfaW50OiRsLF9pbnQzMjprbCxfaW50NjQ6VGwsX2ludGVyc2VjdGlvbjpjZyxfaXB2NDpxaSxfaXB2NjpGaSxfaXNvRGF0ZTpmbCxfaXNvRGF0ZVRpbWU6cGwsX2lzb0R1cmF0aW9uOnZsLF9pc29UaW1lOmdsLF9qd3Q6QmksX2tzdWlkOk1pLF9sYXp5OnpnLF9sZW5ndGg6WWUsX2xpdGVyYWw6Z2csX2xvd2VyY2FzZTpqdCxfbHQ6aGUsX2x0ZTpyZSxfbWFjOm1sLF9tYXA6ZGcsX21heDpyZSxfbWF4TGVuZ3RoOlhlLF9tYXhTaXplOk5lLF9taW1lOk50LF9taW46ZWUsX21pbkxlbmd0aDp5ZSxfbWluU2l6ZTokZSxfbXVsdGlwbGVPZjpqZSxfbmFuOkFsLF9uYW5vaWQ6WmksX25hdGl2ZUVudW06ZmcsX25lZ2F0aXZlOkhuLF9uZXZlcjpFbCxfbm9ubmVnYXRpdmU6S24sX25vbm9wdGlvbmFsOmJnLF9ub25wb3NpdGl2ZTpWbixfbm9ybWFsaXplOkV0LF9udWxsOk9sLF9udWxsYWJsZTpfZyxfbnVtYmVyOmhsLF9vcHRpb25hbDpoZyxfb3ZlcndyaXRlOnBlLF9wYXJzZTpidCxfcGFyc2VBc3luYzp5dCxfcGlwZTpTZyxfcG9zaXRpdmU6Sm4sX3Byb21pc2U6eGcsX3Byb3BlcnR5OlduLF9yZWFkb25seTp3ZyxfcmVjb3JkOmxnLF9yZWZpbmU6RmwsX3JlZ2V4OlR0LF9zYWZlRGVjb2RlOmRpLF9zYWZlRGVjb2RlQXN5bmM6cGksX3NhZmVFbmNvZGU6bGksX3NhZmVFbmNvZGVBc3luYzptaSxfc2FmZVBhcnNlOmt0LF9zYWZlUGFyc2VBc3luYzpTdCxfc2V0Om1nLF9zaXplOkdlLF9zbHVnaWZ5OkF0LF9zdGFydHNXaXRoOk90LF9zdHJpbmc6bGwsX3N0cmluZ0Zvcm1hdDpMdCxfc3RyaW5nYm9vbDpXbCxfc3VjY2Vzczp5Zyxfc3VwZXJSZWZpbmU6SmwsX3N5bWJvbDpVbCxfdGVtcGxhdGVMaXRlcmFsOklnLF90b0xvd2VyQ2FzZTpSdCxfdG9VcHBlckNhc2U6Q3QsX3RyYW5zZm9ybTp2ZyxfdHJpbTpadCxfdHVwbGU6dWcsX3VpbnQzMjpTbCxfdWludDY0OmpsLF91bGlkOkFpLF91bmRlZmluZWQ6UGwsX3VuaW9uOm9nLF91bmtub3duOk5sLF91cHBlcmNhc2U6VXQsX3VybDpGbixfdXVpZDpQaSxfdXVpZHY0Ok9pLF91dWlkdjY6RGksX3V1aWR2NzpOaSxfdm9pZDpabCxfeGlkOkxpLF94b3I6YWcsY2xvbmU6b2UsY29uZmlnOkgsY3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kOmd0LGNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZDpCbCxkZWNvZGU6Wm0sZGVjb2RlQXN5bmM6Q20sZGVzY3JpYmU6VmwsZW5jb2RlOkVtLGVuY29kZUFzeW5jOlJtLGV4dHJhY3REZWZzOkZlLGZpbmFsaXplOkplLGZsYXR0ZW5FcnJvcjpDbixmb3JtYXRFcnJvcjpBbixnbG9iYWxDb25maWc6ZnQsZ2xvYmFsUmVnaXN0cnk6bmUsaW5pdGlhbGl6ZUNvbnRleHQ6cWUsaXNWYWxpZEJhc2U2NDokaSxpc1ZhbGlkQmFzZTY0VVJMOmZ1LGlzVmFsaWRKV1Q6aHUsbG9jYWxlczp4aSxtZXRhOktsLHBhcnNlOktyLHBhcnNlQXN5bmM6V3IscHJldHRpZnlFcnJvcjppaSxwcm9jZXNzOkUscmVnZXhlczpMbixyZWdpc3RyeTpxbixzYWZlRGVjb2RlOkxtLHNhZmVEZWNvZGVBc3luYzpxbSxzYWZlRW5jb2RlOkFtLHNhZmVFbmNvZGVBc3luYzpNbSxzYWZlUGFyc2U6b2ksc2FmZVBhcnNlQXN5bmM6SHMsdG9Eb3RQYXRoOkpzLHRvSlNPTlNjaGVtYTpRaSx0cmVlaWZ5RXJyb3I6cmksdXRpbDp0aSx2ZXJzaW9uOlZjfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2Z1bmN0aW9uIGVvKHQpe3JldHVybiEhdC5fem9kfWZ1bmN0aW9uIE5kKHQsbil7cmV0dXJuIGVvKHQpP29pKHQsbik6dC5zYWZlUGFyc2Uobil9ZnVuY3Rpb24gUGcodCl7aWYoIXQpcmV0dXJuO2xldCBuO2lmKGVvKHQpP249dC5fem9kPy5kZWY/LnNoYXBlOm49dC5zaGFwZSwhIW4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXRyeXtyZXR1cm4gbigpfWNhdGNoe3JldHVybn1yZXR1cm4gbn19ZnVuY3Rpb24gT2codCl7aWYoZW8odCkpe2NvbnN0IGk9dC5fem9kPy5kZWY7aWYoaSl7aWYoaS52YWx1ZSE9PXZvaWQgMClyZXR1cm4gaS52YWx1ZTtpZihBcnJheS5pc0FycmF5KGkudmFsdWVzKSYmaS52YWx1ZXMubGVuZ3RoPjApcmV0dXJuIGkudmFsdWVzWzBdfX1jb25zdCByPXQuX2RlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19Y29uc3Qgbz10LnZhbHVlO2lmKG8hPT12b2lkIDApcmV0dXJuIG99Y29uc3QgRGc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGVuZHNXaXRoOkR0LGd0Ol9lLGd0ZTplZSxpbmNsdWRlczpQdCxsZW5ndGg6WWUsbG93ZXJjYXNlOmp0LGx0OmhlLGx0ZTpyZSxtYXhMZW5ndGg6WGUsbWF4U2l6ZTpOZSxtaW1lOk50LG1pbkxlbmd0aDp5ZSxtaW5TaXplOiRlLG11bHRpcGxlT2Y6amUsbmVnYXRpdmU6SG4sbm9ubmVnYXRpdmU6S24sbm9ucG9zaXRpdmU6Vm4sbm9ybWFsaXplOkV0LG92ZXJ3cml0ZTpwZSxwb3NpdGl2ZTpKbixwcm9wZXJ0eTpXbixyZWdleDpUdCxzaXplOkdlLHNsdWdpZnk6QXQsc3RhcnRzV2l0aDpPdCx0b0xvd2VyQ2FzZTpSdCx0b1VwcGVyQ2FzZTpDdCx0cmltOlp0LHVwcGVyY2FzZTpVdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxCbj1kKCJab2RJU09EYXRlVGltZSIsKHQsbik9PntpdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiB0byh0KXtyZXR1cm4gcGwoQm4sdCl9Y29uc3QgR249ZCgiWm9kSVNPRGF0ZSIsKHQsbik9PntvdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBFZCh0KXtyZXR1cm4gZmwoR24sdCl9Y29uc3QgWG49ZCgiWm9kSVNPVGltZSIsKHQsbik9PnthdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBaZCh0KXtyZXR1cm4gZ2woWG4sdCl9Y29uc3QgWW49ZCgiWm9kSVNPRHVyYXRpb24iLCh0LG4pPT57c3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gUmQodCl7cmV0dXJuIHZsKFluLHQpfWNvbnN0IG5vPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RJU09EYXRlOkduLFpvZElTT0RhdGVUaW1lOkJuLFpvZElTT0R1cmF0aW9uOlluLFpvZElTT1RpbWU6WG4sZGF0ZTpFZCxkYXRldGltZTp0byxkdXJhdGlvbjpSZCx0aW1lOlpkfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLENkPSh0LG4pPT57bmkuaW5pdCh0LG4pLHQubmFtZT0iWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQse2Zvcm1hdDp7dmFsdWU6cj0+QW4odCxyKX0sZmxhdHRlbjp7dmFsdWU6cj0+Q24odCxyKX0sYWRkSXNzdWU6e3ZhbHVlOnI9Pnt0Lmlzc3Vlcy5wdXNoKHIpLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeSh0Lmlzc3Vlcyx6biwyKX19LGFkZElzc3Vlczp7dmFsdWU6cj0+e3QuaXNzdWVzLnB1c2goLi4uciksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KHQuaXNzdWVzLHpuLDIpfX0saXNFbXB0eTp7Z2V0KCl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD09PTB9fX0pfSxBZD1kKCJab2RFcnJvciIsQ2QpLHRlPWQoIlpvZEVycm9yIixDZCx7UGFyZW50OkVycm9yfSkscm89YnQodGUpLGlvPXl0KHRlKSxvbz1rdCh0ZSksYW89U3QodGUpLHNvPWFpKHRlKSxjbz1zaSh0ZSksdW89Y2kodGUpLGxvPXVpKHRlKSxtbz1saSh0ZSkscG89ZGkodGUpLGZvPW1pKHRlKSxnbz1waSh0ZSksaHM9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTXQodCxuLHIpe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO2xldCBlPWhzLmdldChvKTtpZihlfHwoZT1uZXcgU2V0LGhzLnNldChvLGUpKSwhZS5oYXMobikpe2UuYWRkKG4pO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IGE9cltpXTtPYmplY3QuZGVmaW5lUHJvcGVydHkobyxpLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSxnZXQoKXtjb25zdCBzPWEuYmluZCh0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6c30pLHN9LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxpLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpzfSl9fSl9fX1jb25zdCB4PWQoIlpvZFR5cGUiLCh0LG4pPT4oSS5pbml0KHQsbiksT2JqZWN0LmFzc2lnbih0WyJ+c3RhbmRhcmQiXSx7anNvblNjaGVtYTp7aW5wdXQ6Z3QodCwiaW5wdXQiKSxvdXRwdXQ6Z3QodCwib3V0cHV0Iil9fSksdC50b0pTT05TY2hlbWE9QmwodCx7fSksdC5kZWY9bix0LnR5cGU9bi50eXBlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfZGVmIix7dmFsdWU6bn0pLHQucGFyc2U9KHIsbyk9PnJvKHQscixvLHtjYWxsZWU6dC5wYXJzZX0pLHQuc2FmZVBhcnNlPShyLG8pPT5vbyh0LHIsbyksdC5wYXJzZUFzeW5jPWFzeW5jKHIsbyk9PmlvKHQscixvLHtjYWxsZWU6dC5wYXJzZUFzeW5jfSksdC5zYWZlUGFyc2VBc3luYz1hc3luYyhyLG8pPT5hbyh0LHIsbyksdC5zcGE9dC5zYWZlUGFyc2VBc3luYyx0LmVuY29kZT0ocixvKT0+c28odCxyLG8pLHQuZGVjb2RlPShyLG8pPT5jbyh0LHIsbyksdC5lbmNvZGVBc3luYz1hc3luYyhyLG8pPT51byh0LHIsbyksdC5kZWNvZGVBc3luYz1hc3luYyhyLG8pPT5sbyh0LHIsbyksdC5zYWZlRW5jb2RlPShyLG8pPT5tbyh0LHIsbyksdC5zYWZlRGVjb2RlPShyLG8pPT5wbyh0LHIsbyksdC5zYWZlRW5jb2RlQXN5bmM9YXN5bmMocixvKT0+Zm8odCxyLG8pLHQuc2FmZURlY29kZUFzeW5jPWFzeW5jKHIsbyk9PmdvKHQscixvKSxNdCh0LCJab2RUeXBlIix7Y2hlY2soLi4ucil7Y29uc3Qgbz10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZShtZShvLHtjaGVja3M6Wy4uLm8uY2hlY2tzPz9bXSwuLi5yLm1hcChlPT50eXBlb2YgZT09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6ZSxkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19OmUpXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5yKXtyZXR1cm4gdGhpcy5jaGVjayguLi5yKX0sY2xvbmUocixvKXtyZXR1cm4gb2UodGhpcyxyLG8pfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihyLG8pe3JldHVybiByLmFkZCh0aGlzLG8pLHRoaXN9LHJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKEFyKHIsbykpfSxzdXBlclJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKExyKHIsbykpfSxvdmVyd3JpdGUocil7cmV0dXJuIHRoaXMuY2hlY2socGUocikpfSxvcHRpb25hbCgpe3JldHVybiBBKHRoaXMpfSxleGFjdE9wdGlvbmFsKCl7cmV0dXJuICRyKHRoaXMpfSxudWxsYWJsZSgpe3JldHVybiBLZSh0aGlzKX0sbnVsbGlzaCgpe3JldHVybiBBKEtlKHRoaXMpKX0sbm9ub3B0aW9uYWwocil7cmV0dXJuIElyKHRoaXMscil9LGFycmF5KCl7cmV0dXJuIHcodGhpcyl9LG9yKHIpe3JldHVybiBqKFt0aGlzLHJdKX0sYW5kKHIpe3JldHVybiBhdCh0aGlzLHIpfSx0cmFuc2Zvcm0ocil7cmV0dXJuIGh0KHRoaXMsbG4ocikpfSxkZWZhdWx0KHIpe3JldHVybiBrcih0aGlzLHIpfSxwcmVmYXVsdChyKXtyZXR1cm4gd3IodGhpcyxyKX0sY2F0Y2gocil7cmV0dXJuIFRyKHRoaXMscil9LHBpcGUocil7cmV0dXJuIGh0KHRoaXMscil9LHJlYWRvbmx5KCl7cmV0dXJuIE9yKHRoaXMpfSxkZXNjcmliZShyKXtjb25zdCBvPXRoaXMuY2xvbmUoKTtyZXR1cm4gbmUuYWRkKG8se2Rlc2NyaXB0aW9uOnJ9KSxvfSxtZXRhKC4uLnIpe2lmKHIubGVuZ3RoPT09MClyZXR1cm4gbmUuZ2V0KHRoaXMpO2NvbnN0IG89dGhpcy5jbG9uZSgpO3JldHVybiBuZS5hZGQobyxyWzBdKSxvfSxpc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc30saXNOdWxsYWJsZSgpe3JldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzfSxhcHBseShyKXtyZXR1cm4gcih0aGlzKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVzY3JpcHRpb24iLHtnZXQoKXtyZXR1cm4gbmUuZ2V0KHQpPy5kZXNjcmlwdGlvbn0sY29uZmlndXJhYmxlOiEwfSksdCkpLHF0PWQoIl9ab2RTdHJpbmciLCh0LG4pPT57eHQuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5HbCh0LG8sZSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QuZm9ybWF0PXIuZm9ybWF0Pz9udWxsLHQubWluTGVuZ3RoPXIubWluaW11bT8/bnVsbCx0Lm1heExlbmd0aD1yLm1heGltdW0/P251bGwsTXQodCwiX1pvZFN0cmluZyIse3JlZ2V4KC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKFR0KC4uLm8pKX0saW5jbHVkZXMoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soUHQoLi4ubykpfSxzdGFydHNXaXRoKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKE90KC4uLm8pKX0sZW5kc1dpdGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soRHQoLi4ubykpfSxtaW4oLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soeWUoLi4ubykpfSxtYXgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soWGUoLi4ubykpfSxsZW5ndGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soWWUoLi4ubykpfSxub25lbXB0eSguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayh5ZSgxLC4uLm8pKX0sbG93ZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKGp0KG8pKX0sdXBwZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKFV0KG8pKX0sdHJpbSgpe3JldHVybiB0aGlzLmNoZWNrKFp0KCkpfSxub3JtYWxpemUoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soRXQoLi4ubykpfSx0b0xvd2VyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKFJ0KCkpfSx0b1VwcGVyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKEN0KCkpfSxzbHVnaWZ5KCl7cmV0dXJuIHRoaXMuY2hlY2soQXQoKSl9fSl9KSxRZT1kKCJab2RTdHJpbmciLCh0LG4pPT57eHQuaW5pdCh0LG4pLHF0LmluaXQodCxuKSx0LmVtYWlsPXI9PnQuY2hlY2soVWkoRnQscikpLHQudXJsPXI9PnQuY2hlY2soRm4oZXQscikpLHQuand0PXI9PnQuY2hlY2soQmkob24scikpLHQuZW1vamk9cj0+dC5jaGVjayhFaShKdCxyKSksdC5ndWlkPXI9PnQuY2hlY2soam4oSGUscikpLHQudXVpZD1yPT50LmNoZWNrKFBpKGRlLHIpKSx0LnV1aWR2ND1yPT50LmNoZWNrKE9pKGRlLHIpKSx0LnV1aWR2Nj1yPT50LmNoZWNrKERpKGRlLHIpKSx0LnV1aWR2Nz1yPT50LmNoZWNrKE5pKGRlLHIpKSx0Lm5hbm9pZD1yPT50LmNoZWNrKFppKEh0LHIpKSx0Lmd1aWQ9cj0+dC5jaGVjayhqbihIZSxyKSksdC5jdWlkPXI9PnQuY2hlY2soUmkoVnQscikpLHQuY3VpZDI9cj0+dC5jaGVjayhDaShLdCxyKSksdC51bGlkPXI9PnQuY2hlY2soQWkoV3QscikpLHQuYmFzZTY0PXI9PnQuY2hlY2soVmkodG4scikpLHQuYmFzZTY0dXJsPXI9PnQuY2hlY2soS2kobm4scikpLHQueGlkPXI9PnQuY2hlY2soTGkoQnQscikpLHQua3N1aWQ9cj0+dC5jaGVjayhNaShHdCxyKSksdC5pcHY0PXI9PnQuY2hlY2socWkoWHQscikpLHQuaXB2Nj1yPT50LmNoZWNrKEZpKFl0LHIpKSx0LmNpZHJ2ND1yPT50LmNoZWNrKEppKFF0LHIpKSx0LmNpZHJ2Nj1yPT50LmNoZWNrKEhpKGVuLHIpKSx0LmUxNjQ9cj0+dC5jaGVjayhXaShybixyKSksdC5kYXRldGltZT1yPT50LmNoZWNrKHRvKHIpKSx0LmRhdGU9cj0+dC5jaGVjayhFZChyKSksdC50aW1lPXI9PnQuY2hlY2soWmQocikpLHQuZHVyYXRpb249cj0+dC5jaGVjayhSZChyKSl9KTtmdW5jdGlvbiBwKHQpe3JldHVybiBsbChRZSx0KX1jb25zdCBaPWQoIlpvZFN0cmluZ0Zvcm1hdCIsKHQsbik9PntMLmluaXQodCxuKSxxdC5pbml0KHQsbil9KSxGdD1kKCJab2RFbWFpbCIsKHQsbik9PntCYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiB2byh0KXtyZXR1cm4gVWkoRnQsdCl9Y29uc3QgSGU9ZCgiWm9kR1VJRCIsKHQsbik9PntLYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBobyh0KXtyZXR1cm4gam4oSGUsdCl9Y29uc3QgZGU9ZCgiWm9kVVVJRCIsKHQsbik9PntXYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBfbyh0KXtyZXR1cm4gUGkoZGUsdCl9ZnVuY3Rpb24gJG8odCl7cmV0dXJuIE9pKGRlLHQpfWZ1bmN0aW9uIGJvKHQpe3JldHVybiBEaShkZSx0KX1mdW5jdGlvbiB5byh0KXtyZXR1cm4gTmkoZGUsdCl9Y29uc3QgZXQ9ZCgiWm9kVVJMIiwodCxuKT0+e0djLmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIGtvKHQpe3JldHVybiBGbihldCx0KX1mdW5jdGlvbiBTbyh0KXtyZXR1cm4gRm4oZXQse3Byb3RvY29sOmdpLGhvc3RuYW1lOmxjLC4uLmgodCl9KX1jb25zdCBKdD1kKCJab2RFbW9qaSIsKHQsbik9PntYYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiB3byh0KXtyZXR1cm4gRWkoSnQsdCl9Y29uc3QgSHQ9ZCgiWm9kTmFub0lEIiwodCxuKT0+e1ljLmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIElvKHQpe3JldHVybiBaaShIdCx0KX1jb25zdCBWdD1kKCJab2RDVUlEIiwodCxuKT0+e1FjLmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIHpvKHQpe3JldHVybiBSaShWdCx0KX1jb25zdCBLdD1kKCJab2RDVUlEMiIsKHQsbik9PntldS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiB4byh0KXtyZXR1cm4gQ2koS3QsdCl9Y29uc3QgV3Q9ZCgiWm9kVUxJRCIsKHQsbik9Pnt0dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBUbyh0KXtyZXR1cm4gQWkoV3QsdCl9Y29uc3QgQnQ9ZCgiWm9kWElEIiwodCxuKT0+e251LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIGpvKHQpe3JldHVybiBMaShCdCx0KX1jb25zdCBHdD1kKCJab2RLU1VJRCIsKHQsbik9PntydS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBVbyh0KXtyZXR1cm4gTWkoR3QsdCl9Y29uc3QgWHQ9ZCgiWm9kSVB2NCIsKHQsbik9PntjdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBQbyh0KXtyZXR1cm4gcWkoWHQsdCl9Y29uc3QgUW49ZCgiWm9kTUFDIiwodCxuKT0+e2x1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE9vKHQpe3JldHVybiBtbChRbix0KX1jb25zdCBZdD1kKCJab2RJUHY2IiwodCxuKT0+e3V1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIERvKHQpe3JldHVybiBGaShZdCx0KX1jb25zdCBRdD1kKCJab2RDSURSdjQiLCh0LG4pPT57ZHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gTm8odCl7cmV0dXJuIEppKFF0LHQpfWNvbnN0IGVuPWQoIlpvZENJRFJ2NiIsKHQsbik9PnttdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBFbyh0KXtyZXR1cm4gSGkoZW4sdCl9Y29uc3QgdG49ZCgiWm9kQmFzZTY0IiwodCxuKT0+e3B1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFpvKHQpe3JldHVybiBWaSh0bix0KX1jb25zdCBubj1kKCJab2RCYXNlNjRVUkwiLCh0LG4pPT57Z3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gUm8odCl7cmV0dXJuIEtpKG5uLHQpfWNvbnN0IHJuPWQoIlpvZEUxNjQiLCh0LG4pPT57dnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gQ28odCl7cmV0dXJuIFdpKHJuLHQpfWNvbnN0IG9uPWQoIlpvZEpXVCIsKHQsbik9PntfdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBBbyh0KXtyZXR1cm4gQmkob24sdCl9Y29uc3QgRWU9ZCgiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwodCxuKT0+eyR1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIExvKHQsbixyPXt9KXtyZXR1cm4gTHQoRWUsdCxuLHIpfWZ1bmN0aW9uIE1vKHQpe3JldHVybiBMdChFZSwiaG9zdG5hbWUiLHVjLHQpfWZ1bmN0aW9uIHFvKHQpe3JldHVybiBMdChFZSwiaGV4IixJYyx0KX1mdW5jdGlvbiBGbyh0LG4pe2NvbnN0IHI9bj8uZW5jPz8iaGV4IixvPWAke3R9XyR7cn1gLGU9TG5bb107aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gTHQoRWUsbyxlLG4pfWNvbnN0IHR0PWQoIlpvZE51bWJlciIsKHQsbik9PntiaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PlhsKHQsbyxlKSxNdCh0LCJab2ROdW1iZXIiLHtndChvLGUpe3JldHVybiB0aGlzLmNoZWNrKF9lKG8sZSkpfSxndGUobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhlZShvLGUpKX0sbWluKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soZWUobyxlKSl9LGx0KG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soaGUobyxlKSl9LGx0ZShvLGUpe3JldHVybiB0aGlzLmNoZWNrKHJlKG8sZSkpfSxtYXgobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhyZShvLGUpKX0saW50KG8pe3JldHVybiB0aGlzLmNoZWNrKHZ0KG8pKX0sc2FmZShvKXtyZXR1cm4gdGhpcy5jaGVjayh2dChvKSl9LHBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKF9lKDAsbykpfSxub25uZWdhdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayhlZSgwLG8pKX0sbmVnYXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2soaGUoMCxvKSl9LG5vbnBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKHJlKDAsbykpfSxtdWx0aXBsZU9mKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soamUobyxlKSl9LHN0ZXAobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhqZShvLGUpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9TWF0aC5tYXgoci5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNaW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpPz9udWxsLHQubWF4VmFsdWU9TWF0aC5taW4oci5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpPz9udWxsLHQuaXNJbnQ9KHIuZm9ybWF0Pz8iIikuaW5jbHVkZXMoImludCIpfHxOdW1iZXIuaXNTYWZlSW50ZWdlcihyLm11bHRpcGxlT2Y/Py41KSx0LmlzRmluaXRlPSEwLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24geih0KXtyZXR1cm4gaGwodHQsdCl9Y29uc3QgU2U9ZCgiWm9kTnVtYmVyRm9ybWF0IiwodCxuKT0+e2J1LmluaXQodCxuKSx0dC5pbml0KHQsbil9KTtmdW5jdGlvbiB2dCh0KXtyZXR1cm4gJGwoU2UsdCl9ZnVuY3Rpb24gSm8odCl7cmV0dXJuIGJsKFNlLHQpfWZ1bmN0aW9uIEhvKHQpe3JldHVybiB5bChTZSx0KX1mdW5jdGlvbiBWbyh0KXtyZXR1cm4ga2woU2UsdCl9ZnVuY3Rpb24gS28odCl7cmV0dXJuIFNsKFNlLHQpfWNvbnN0IG50PWQoIlpvZEJvb2xlYW4iLCh0LG4pPT57eWkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5ZbCh0LHIsbyl9KTtmdW5jdGlvbiBEKHQpe3JldHVybiB3bChudCx0KX1jb25zdCBydD1kKCJab2RCaWdJbnQiLCh0LG4pPT57a2kuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5RbCh0LG8pLHQuZ3RlPShvLGUpPT50LmNoZWNrKGVlKG8sZSkpLHQubWluPShvLGUpPT50LmNoZWNrKGVlKG8sZSkpLHQuZ3Q9KG8sZSk9PnQuY2hlY2soX2UobyxlKSksdC5ndGU9KG8sZSk9PnQuY2hlY2soZWUobyxlKSksdC5taW49KG8sZSk9PnQuY2hlY2soZWUobyxlKSksdC5sdD0obyxlKT0+dC5jaGVjayhoZShvLGUpKSx0Lmx0ZT0obyxlKT0+dC5jaGVjayhyZShvLGUpKSx0Lm1heD0obyxlKT0+dC5jaGVjayhyZShvLGUpKSx0LnBvc2l0aXZlPW89PnQuY2hlY2soX2UoQmlnSW50KDApLG8pKSx0Lm5lZ2F0aXZlPW89PnQuY2hlY2soaGUoQmlnSW50KDApLG8pKSx0Lm5vbnBvc2l0aXZlPW89PnQuY2hlY2socmUoQmlnSW50KDApLG8pKSx0Lm5vbm5lZ2F0aXZlPW89PnQuY2hlY2soZWUoQmlnSW50KDApLG8pKSx0Lm11bHRpcGxlT2Y9KG8sZSk9PnQuY2hlY2soamUobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9ci5taW5pbXVtPz9udWxsLHQubWF4VmFsdWU9ci5tYXhpbXVtPz9udWxsLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24gV28odCl7cmV0dXJuIHpsKHJ0LHQpfWNvbnN0IGFuPWQoIlpvZEJpZ0ludEZvcm1hdCIsKHQsbik9Pnt5dS5pbml0KHQsbikscnQuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gQm8odCl7cmV0dXJuIFRsKGFuLHQpfWZ1bmN0aW9uIEdvKHQpe3JldHVybiBqbChhbix0KX1jb25zdCBlcj1kKCJab2RTeW1ib2wiLCh0LG4pPT57a3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5lZCh0LHIpfSk7ZnVuY3Rpb24gWG8odCl7cmV0dXJuIFVsKGVyLHQpfWNvbnN0IHRyPWQoIlpvZFVuZGVmaW5lZCIsKHQsbik9PntTdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pm5kKHQscil9KTtmdW5jdGlvbiBWZSh0KXtyZXR1cm4gUGwodHIsdCl9Y29uc3QgbnI9ZCgiWm9kTnVsbCIsKHQsbik9Pnt3dS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnRkKHQscixvKX0pO2Z1bmN0aW9uIHNuKHQpe3JldHVybiBPbChucix0KX1jb25zdCBycj1kKCJab2RBbnkiLCh0LG4pPT57SXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5vZCgpfSk7ZnVuY3Rpb24gWW8oKXtyZXR1cm4gRGwocnIpfWNvbnN0IGlyPWQoIlpvZFVua25vd24iLCh0LG4pPT57enUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5hZCgpfSk7ZnVuY3Rpb24gTygpe3JldHVybiBObChpcil9Y29uc3Qgb3I9ZCgiWm9kTmV2ZXIiLCh0LG4pPT57eHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5pZCh0LHIsbyl9KTtmdW5jdGlvbiBVZSh0KXtyZXR1cm4gRWwob3IsdCl9Y29uc3QgYXI9ZCgiWm9kVm9pZCIsKHQsbik9PntUdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnJkKHQscil9KTtmdW5jdGlvbiBRbyh0KXtyZXR1cm4gWmwoYXIsdCl9Y29uc3QgY249ZCgiWm9kRGF0ZSIsKHQsbik9PntqdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PnNkKHQsbyksdC5taW49KG8sZSk9PnQuY2hlY2soZWUobyxlKSksdC5tYXg9KG8sZSk9PnQuY2hlY2socmUobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluRGF0ZT1yLm1pbmltdW0/bmV3IERhdGUoci5taW5pbXVtKTpudWxsLHQubWF4RGF0ZT1yLm1heGltdW0/bmV3IERhdGUoci5tYXhpbXVtKTpudWxsfSk7ZnVuY3Rpb24gZWEodCl7cmV0dXJuIFJsKGNuLHQpfWNvbnN0IHNyPWQoIlpvZEFycmF5IiwodCxuKT0+e1V1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+JGQodCxyLG8sZSksdC5lbGVtZW50PW4uZWxlbWVudCxNdCh0LCJab2RBcnJheSIse21pbihyLG8pe3JldHVybiB0aGlzLmNoZWNrKHllKHIsbykpfSxub25lbXB0eShyKXtyZXR1cm4gdGhpcy5jaGVjayh5ZSgxLHIpKX0sbWF4KHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soWGUocixvKSl9LGxlbmd0aChyLG8pe3JldHVybiB0aGlzLmNoZWNrKFllKHIsbykpfSx1bndyYXAoKXtyZXR1cm4gdGhpcy5lbGVtZW50fX0pfSk7ZnVuY3Rpb24gdyh0LG4pe3JldHVybiBMbChzcix0LG4pfWZ1bmN0aW9uIHRhKHQpe2NvbnN0IG49dC5fem9kLmRlZi5zaGFwZTtyZXR1cm4gQihPYmplY3Qua2V5cyhuKSl9Y29uc3QgaXQ9ZCgiWm9kT2JqZWN0IiwodCxuKT0+e051LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+YmQodCxyLG8sZSksVCh0LCJzaGFwZSIsKCk9Pm4uc2hhcGUpLE10KHQsIlpvZE9iamVjdCIse2tleW9mKCl7cmV0dXJuIEIoT2JqZWN0LmtleXModGhpcy5fem9kLmRlZi5zaGFwZSkpfSxjYXRjaGFsbChyKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpyfSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TygpfSl9LGxvb3NlKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TygpfSl9LHN0cmljdCgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOlVlKCl9KX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDp2b2lkIDB9KX0sZXh0ZW5kKHIpe3JldHVybiBFcyh0aGlzLHIpfSxzYWZlRXh0ZW5kKHIpe3JldHVybiBacyh0aGlzLHIpfSxtZXJnZShyKXtyZXR1cm4gUnModGhpcyxyKX0scGljayhyKXtyZXR1cm4gRHModGhpcyxyKX0sb21pdChyKXtyZXR1cm4gTnModGhpcyxyKX0scGFydGlhbCguLi5yKXtyZXR1cm4gQ3MoZG4sdGhpcyxyWzBdKX0scmVxdWlyZWQoLi4ucil7cmV0dXJuIEFzKG1uLHRoaXMsclswXSl9fSl9KTtmdW5jdGlvbiBmKHQsbil7Y29uc3Qgcj17dHlwZToib2JqZWN0IixzaGFwZTp0Pz97fSwuLi5oKG4pfTtyZXR1cm4gbmV3IGl0KHIpfWZ1bmN0aW9uIG5hKHQsbil7cmV0dXJuIG5ldyBpdCh7dHlwZToib2JqZWN0IixzaGFwZTp0LGNhdGNoYWxsOlVlKCksLi4uaChuKX0pfWZ1bmN0aW9uIFcodCxuKXtyZXR1cm4gbmV3IGl0KHt0eXBlOiJvYmplY3QiLHNoYXBlOnQsY2F0Y2hhbGw6TygpLC4uLmgobil9KX1jb25zdCBvdD1kKCJab2RVbmlvbiIsKHQsbik9PntNbi5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlhpKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiBqKHQsbil7cmV0dXJuIG5ldyBvdCh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi5oKG4pfSl9Y29uc3QgY3I9ZCgiWm9kWG9yIiwodCxuKT0+e290LmluaXQodCxuKSxFdS5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlhpKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiByYSh0LG4pe3JldHVybiBuZXcgY3Ioe3R5cGU6InVuaW9uIixvcHRpb25zOnQsaW5jbHVzaXZlOiExLC4uLmgobil9KX1jb25zdCB1cj1kKCJab2REaXNjcmltaW5hdGVkVW5pb24iLCh0LG4pPT57b3QuaW5pdCh0LG4pLFp1LmluaXQodCxuKX0pO2Z1bmN0aW9uIHVuKHQsbixyKXtyZXR1cm4gbmV3IHVyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLGRpc2NyaW1pbmF0b3I6dCwuLi5oKHIpfSl9Y29uc3QgbHI9ZCgiWm9kSW50ZXJzZWN0aW9uIiwodCxuKT0+e1J1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+eWQodCxyLG8sZSl9KTtmdW5jdGlvbiBhdCh0LG4pe3JldHVybiBuZXcgbHIoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1jb25zdCBkcj1kKCJab2RUdXBsZSIsKHQsbik9PntTaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmtkKHQscixvLGUpLHQucmVzdD1yPT50LmNsb25lKHsuLi50Ll96b2QuZGVmLHJlc3Q6cn0pfSk7ZnVuY3Rpb24gbXIodCxuLHIpe2NvbnN0IG89biBpbnN0YW5jZW9mIEksZT1vP3I6bixpPW8/bjpudWxsO3JldHVybiBuZXcgZHIoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi5oKGUpfSl9Y29uc3QgUGU9ZCgiWm9kUmVjb3JkIiwodCxuKT0+e0N1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+U2QodCxyLG8sZSksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZX0pO2Z1bmN0aW9uIFUodCxuLHIpe3JldHVybiFufHwhbi5fem9kP25ldyBQZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOnAoKSx2YWx1ZVR5cGU6dCwuLi5oKG4pfSk6bmV3IFBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gaWEodCxuLHIpe2NvbnN0IG89b2UodCk7cmV0dXJuIG8uX3pvZC52YWx1ZXM9dm9pZCAwLG5ldyBQZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOm8sdmFsdWVUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIG9hKHQsbixyKXtyZXR1cm4gbmV3IFBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6bixtb2RlOiJsb29zZSIsLi4uaChyKX0pfWNvbnN0IHByPWQoIlpvZE1hcCIsKHQsbik9PntBdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmhkKHQsciksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZSx0Lm1pbj0oLi4ucik9PnQuY2hlY2soJGUoLi4ucikpLHQubm9uZW1wdHk9cj0+dC5jaGVjaygkZSgxLHIpKSx0Lm1heD0oLi4ucik9PnQuY2hlY2soTmUoLi4ucikpLHQuc2l6ZT0oLi4ucik9PnQuY2hlY2soR2UoLi4ucikpfSk7ZnVuY3Rpb24gYWEodCxuLHIpe3JldHVybiBuZXcgcHIoe3R5cGU6Im1hcCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLC4uLmgocil9KX1jb25zdCBmcj1kKCJab2RTZXQiLCh0LG4pPT57THUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5fZCh0LHIpLHQubWluPSguLi5yKT0+dC5jaGVjaygkZSguLi5yKSksdC5ub25lbXB0eT1yPT50LmNoZWNrKCRlKDEscikpLHQubWF4PSguLi5yKT0+dC5jaGVjayhOZSguLi5yKSksdC5zaXplPSguLi5yKT0+dC5jaGVjayhHZSguLi5yKSl9KTtmdW5jdGlvbiBzYSh0LG4pe3JldHVybiBuZXcgZnIoe3R5cGU6InNldCIsdmFsdWVUeXBlOnQsLi4uaChuKX0pfWNvbnN0IE9lPWQoIlpvZEVudW0iLCh0LG4pPT57TXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5jZCh0LG8sZSksdC5lbnVtPW4uZW50cmllcyx0Lm9wdGlvbnM9T2JqZWN0LnZhbHVlcyhuLmVudHJpZXMpO2NvbnN0IHI9bmV3IFNldChPYmplY3Qua2V5cyhuLmVudHJpZXMpKTt0LmV4dHJhY3Q9KG8sZSk9Pntjb25zdCBpPXt9O2Zvcihjb25zdCBhIG9mIG8paWYoci5oYXMoYSkpaVthXT1uLmVudHJpZXNbYV07ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEtleSAke2F9IG5vdCBmb3VuZCBpbiBlbnVtYCk7cmV0dXJuIG5ldyBPZSh7Li4ubixjaGVja3M6W10sLi4uaChlKSxlbnRyaWVzOml9KX0sdC5leGNsdWRlPShvLGUpPT57Y29uc3QgaT17Li4ubi5lbnRyaWVzfTtmb3IoY29uc3QgYSBvZiBvKWlmKHIuaGFzKGEpKWRlbGV0ZSBpW2FdO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHthfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgT2Uoey4uLm4sY2hlY2tzOltdLC4uLmgoZSksZW50cmllczppfSl9fSk7ZnVuY3Rpb24gQih0LG4pe2NvbnN0IHI9QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAobz0+W28sb10pKTp0O3JldHVybiBuZXcgT2Uoe3R5cGU6ImVudW0iLGVudHJpZXM6ciwuLi5oKG4pfSl9ZnVuY3Rpb24gY2EodCxuKXtyZXR1cm4gbmV3IE9lKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4uaChuKX0pfWNvbnN0IGdyPWQoIlpvZExpdGVyYWwiLCh0LG4pPT57cXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT51ZCh0LHIsbyksdC52YWx1ZXM9bmV3IFNldChuLnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInZhbHVlIix7Z2V0KCl7aWYobi52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiBuLnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIG0odCxuKXtyZXR1cm4gbmV3IGdyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheSh0KT90Olt0XSwuLi5oKG4pfSl9Y29uc3QgdnI9ZCgiWm9kRmlsZSIsKHQsbik9PntGdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pm1kKHQscixvKSx0Lm1pbj0ocixvKT0+dC5jaGVjaygkZShyLG8pKSx0Lm1heD0ocixvKT0+dC5jaGVjayhOZShyLG8pKSx0Lm1pbWU9KHIsbyk9PnQuY2hlY2soTnQoQXJyYXkuaXNBcnJheShyKT9yOltyXSxvKSl9KTtmdW5jdGlvbiB1YSh0KXtyZXR1cm4gTWwodnIsdCl9Y29uc3QgaHI9ZCgiWm9kVHJhbnNmb3JtIiwodCxuKT0+e0p1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+dmQodCxyKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IERuKHQuY29uc3RydWN0b3IubmFtZSk7ci5hZGRJc3N1ZT1pPT57aWYodHlwZW9mIGk9PSJzdHJpbmciKXIuaXNzdWVzLnB1c2goTGUoaSxyLnZhbHVlLG4pKTtlbHNle2NvbnN0IGE9aTthLmZhdGFsJiYoYS5jb250aW51ZT0hMSksYS5jb2RlPz8oYS5jb2RlPSJjdXN0b20iKSxhLmlucHV0Pz8oYS5pbnB1dD1yLnZhbHVlKSxhLmluc3Q/PyhhLmluc3Q9dCksci5pc3N1ZXMucHVzaChMZShhKSl9fTtjb25zdCBlPW4udHJhbnNmb3JtKHIudmFsdWUscik7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLHIuZmFsbGJhY2s9ITAscikpOihyLnZhbHVlPWUsci5mYWxsYmFjaz0hMCxyKX19KTtmdW5jdGlvbiBsbih0KXtyZXR1cm4gbmV3IGhyKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9Y29uc3QgZG49ZCgiWm9kT3B0aW9uYWwiLCh0LG4pPT57d2kuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5ZaSh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBBKHQpe3JldHVybiBuZXcgZG4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWNvbnN0IF9yPWQoIlpvZEV4YWN0T3B0aW9uYWwiLCh0LG4pPT57SHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5ZaSh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiAkcih0KXtyZXR1cm4gbmV3IF9yKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnR9KX1jb25zdCBicj1kKCJab2ROdWxsYWJsZSIsKHQsbik9PntWdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PndkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIEtlKHQpe3JldHVybiBuZXcgYnIoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIGxhKHQpe3JldHVybiBBKEtlKHQpKX1jb25zdCB5cj1kKCJab2REZWZhdWx0IiwodCxuKT0+e0t1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+emQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlLHQucmVtb3ZlRGVmYXVsdD10LnVud3JhcH0pO2Z1bmN0aW9uIGtyKHQsbil7cmV0dXJuIG5ldyB5cih7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOnQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKCk6RW4obil9fSl9Y29uc3QgU3I9ZCgiWm9kUHJlZmF1bHQiLCh0LG4pPT57V3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT54ZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB3cih0LG4pe3JldHVybiBuZXcgU3Ioe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpFbihuKX19KX1jb25zdCBtbj1kKCJab2ROb25PcHRpb25hbCIsKHQsbik9PntCdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PklkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIElyKHQsbil7cmV0dXJuIG5ldyBtbih7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTp0LC4uLmgobil9KX1jb25zdCB6cj1kKCJab2RTdWNjZXNzIiwodCxuKT0+e0d1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+cGQodCxyLG8pLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGRhKHQpe3JldHVybiBuZXcgenIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTp0fSl9Y29uc3QgeHI9ZCgiWm9kQ2F0Y2giLCh0LG4pPT57WHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5UZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGUsdC5yZW1vdmVDYXRjaD10LnVud3JhcH0pO2Z1bmN0aW9uIFRyKHQsbil7cmV0dXJuIG5ldyB4cih7dHlwZToiY2F0Y2giLGlubmVyVHlwZTp0LGNhdGNoVmFsdWU6dHlwZW9mIG49PSJmdW5jdGlvbiI/bjooKT0+bn0pfWNvbnN0IGpyPWQoIlpvZE5hTiIsKHQsbik9PntZdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmxkKHQscil9KTtmdW5jdGlvbiBtYSh0KXtyZXR1cm4gQWwoanIsdCl9Y29uc3Qgc3Q9ZCgiWm9kUGlwZSIsKHQsbik9PntJaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmpkKHQscixvLGUpLHQuaW49bi5pbix0Lm91dD1uLm91dH0pO2Z1bmN0aW9uIGh0KHQsbil7cmV0dXJuIG5ldyBzdCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bn0pfWNvbnN0IGN0PWQoIlpvZENvZGVjIiwodCxuKT0+e3N0LmluaXQodCxuKSx6aS5pbml0KHQsbil9KTtmdW5jdGlvbiBwYSh0LG4scil7cmV0dXJuIG5ldyBjdCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bix0cmFuc2Zvcm06ci5kZWNvZGUscmV2ZXJzZVRyYW5zZm9ybTpyLmVuY29kZX0pfWZ1bmN0aW9uIGZhKHQpe2NvbnN0IG49dC5fem9kLmRlZjtyZXR1cm4gbmV3IGN0KHt0eXBlOiJwaXBlIixpbjpuLm91dCxvdXQ6bi5pbix0cmFuc2Zvcm06bi5yZXZlcnNlVHJhbnNmb3JtLHJldmVyc2VUcmFuc2Zvcm06bi50cmFuc2Zvcm19KX1jb25zdCBVcj1kKCJab2RQcmVwcm9jZXNzIiwodCxuKT0+e3N0LmluaXQodCxuKSxRdS5pbml0KHQsbil9KSxQcj1kKCJab2RSZWFkb25seSIsKHQsbik9PntlbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlVkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIE9yKHQpe3JldHVybiBuZXcgUHIoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWNvbnN0IERyPWQoIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKHQsbik9Pnt0bC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmRkKHQscixvKX0pO2Z1bmN0aW9uIGdhKHQsbil7cmV0dXJuIG5ldyBEcih7dHlwZToidGVtcGxhdGVfbGl0ZXJhbCIscGFydHM6dCwuLi5oKG4pfSl9Y29uc3QgTnI9ZCgiWm9kTGF6eSIsKHQsbik9PntpbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk9kKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gRXIodCl7cmV0dXJuIG5ldyBOcih7dHlwZToibGF6eSIsZ2V0dGVyOnR9KX1jb25zdCBacj1kKCJab2RQcm9taXNlIiwodCxuKT0+e3JsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+UGQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gdmEodCl7cmV0dXJuIG5ldyBacih7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOnR9KX1jb25zdCBScj1kKCJab2RGdW5jdGlvbiIsKHQsbik9PntubC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmdkKHQscil9KTtmdW5jdGlvbiBXZSh0KXtyZXR1cm4gbmV3IFJyKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6QXJyYXkuaXNBcnJheSh0Py5pbnB1dCk/bXIodD8uaW5wdXQpOnQ/LmlucHV0Pz93KE8oKSksb3V0cHV0OnQ/Lm91dHB1dD8/TygpfSl9Y29uc3QgdXQ9ZCgiWm9kQ3VzdG9tIiwodCxuKT0+e29sLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+ZmQodCxyKX0pO2Z1bmN0aW9uIGhhKHQpe2NvbnN0IG49bmV3IE0oe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIG4uX3pvZC5jaGVjaz10LG59ZnVuY3Rpb24gQ3IodCxuKXtyZXR1cm4gcWwodXQsdD8/KCgpPT4hMCksbil9ZnVuY3Rpb24gQXIodCxuPXt9KXtyZXR1cm4gRmwodXQsdCxuKX1mdW5jdGlvbiBMcih0LG4pe3JldHVybiBKbCh0LG4pfWNvbnN0IF9hPVZsLCRhPUtsO2Z1bmN0aW9uIGJhKHQsbj17fSl7Y29uc3Qgcj1uZXcgdXQoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIHQsYWJvcnQ6ITAsLi4uaChuKX0pO3JldHVybiByLl96b2QuYmFnLkNsYXNzPXQsci5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgdHx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDp0Lm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0OnIscGF0aDpbLi4uci5fem9kLmRlZi5wYXRoPz9bXV19KX0scn1jb25zdCB5YT0oLi4udCk9PldsKHtDb2RlYzpjdCxCb29sZWFuOm50LFN0cmluZzpRZX0sLi4udCk7ZnVuY3Rpb24ga2EodCl7Y29uc3Qgbj1FcigoKT0+aihbcCh0KSx6KCksRCgpLHNuKCksdyhuKSxVKHAoKSxuKV0pKTtyZXR1cm4gbn1mdW5jdGlvbiBwbih0LG4pe3JldHVybiBuZXcgVXIoe3R5cGU6InBpcGUiLGluOmxuKHQpLG91dDpufSl9Y29uc3QgTmc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpycixab2RBcnJheTpzcixab2RCYXNlNjQ6dG4sWm9kQmFzZTY0VVJMOm5uLFpvZEJpZ0ludDpydCxab2RCaWdJbnRGb3JtYXQ6YW4sWm9kQm9vbGVhbjpudCxab2RDSURSdjQ6UXQsWm9kQ0lEUnY2OmVuLFpvZENVSUQ6VnQsWm9kQ1VJRDI6S3QsWm9kQ2F0Y2g6eHIsWm9kQ29kZWM6Y3QsWm9kQ3VzdG9tOnV0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpFZSxab2REYXRlOmNuLFpvZERlZmF1bHQ6eXIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOnVyLFpvZEUxNjQ6cm4sWm9kRW1haWw6RnQsWm9kRW1vamk6SnQsWm9kRW51bTpPZSxab2RFeGFjdE9wdGlvbmFsOl9yLFpvZEZpbGU6dnIsWm9kRnVuY3Rpb246UnIsWm9kR1VJRDpIZSxab2RJUHY0Olh0LFpvZElQdjY6WXQsWm9kSW50ZXJzZWN0aW9uOmxyLFpvZEpXVDpvbixab2RLU1VJRDpHdCxab2RMYXp5Ok5yLFpvZExpdGVyYWw6Z3IsWm9kTUFDOlFuLFpvZE1hcDpwcixab2ROYU46anIsWm9kTmFub0lEOkh0LFpvZE5ldmVyOm9yLFpvZE5vbk9wdGlvbmFsOm1uLFpvZE51bGw6bnIsWm9kTnVsbGFibGU6YnIsWm9kTnVtYmVyOnR0LFpvZE51bWJlckZvcm1hdDpTZSxab2RPYmplY3Q6aXQsWm9kT3B0aW9uYWw6ZG4sWm9kUGlwZTpzdCxab2RQcmVmYXVsdDpTcixab2RQcmVwcm9jZXNzOlVyLFpvZFByb21pc2U6WnIsWm9kUmVhZG9ubHk6UHIsWm9kUmVjb3JkOlBlLFpvZFNldDpmcixab2RTdHJpbmc6UWUsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2Vzczp6cixab2RTeW1ib2w6ZXIsWm9kVGVtcGxhdGVMaXRlcmFsOkRyLFpvZFRyYW5zZm9ybTpocixab2RUdXBsZTpkcixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6ZXQsWm9kVVVJRDpkZSxab2RVbmRlZmluZWQ6dHIsWm9kVW5pb246b3QsWm9kVW5rbm93bjppcixab2RWb2lkOmFyLFpvZFhJRDpCdCxab2RYb3I6Y3IsX1pvZFN0cmluZzpxdCxfZGVmYXVsdDprcixfZnVuY3Rpb246V2UsYW55OllvLGFycmF5OncsYmFzZTY0OlpvLGJhc2U2NHVybDpSbyxiaWdpbnQ6V28sYm9vbGVhbjpELGNhdGNoOlRyLGNoZWNrOmhhLGNpZHJ2NDpObyxjaWRydjY6RW8sY29kZWM6cGEsY3VpZDp6byxjdWlkMjp4byxjdXN0b206Q3IsZGF0ZTplYSxkZXNjcmliZTpfYSxkaXNjcmltaW5hdGVkVW5pb246dW4sZTE2NDpDbyxlbWFpbDp2byxlbW9qaTp3byxlbnVtOkIsZXhhY3RPcHRpb25hbDokcixmaWxlOnVhLGZsb2F0MzI6Sm8sZmxvYXQ2NDpIbyxmdW5jdGlvbjpXZSxndWlkOmhvLGhhc2g6Rm8saGV4OnFvLGhvc3RuYW1lOk1vLGh0dHBVcmw6U28saW5zdGFuY2VvZjpiYSxpbnQ6dnQsaW50MzI6Vm8saW50NjQ6Qm8saW50ZXJzZWN0aW9uOmF0LGludmVydENvZGVjOmZhLGlwdjQ6UG8saXB2NjpEbyxqc29uOmthLGp3dDpBbyxrZXlvZjp0YSxrc3VpZDpVbyxsYXp5OkVyLGxpdGVyYWw6bSxsb29zZU9iamVjdDpXLGxvb3NlUmVjb3JkOm9hLG1hYzpPbyxtYXA6YWEsbWV0YTokYSxuYW46bWEsbmFub2lkOklvLG5hdGl2ZUVudW06Y2EsbmV2ZXI6VWUsbm9ub3B0aW9uYWw6SXIsbnVsbDpzbixudWxsYWJsZTpLZSxudWxsaXNoOmxhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEscGFydGlhbFJlY29yZDppYSxwaXBlOmh0LHByZWZhdWx0OndyLHByZXByb2Nlc3M6cG4scHJvbWlzZTp2YSxyZWFkb25seTpPcixyZWNvcmQ6VSxyZWZpbmU6QXIsc2V0OnNhLHN0cmljdE9iamVjdDpuYSxzdHJpbmc6cCxzdHJpbmdGb3JtYXQ6TG8sc3RyaW5nYm9vbDp5YSxzdWNjZXNzOmRhLHN1cGVyUmVmaW5lOkxyLHN5bWJvbDpYbyx0ZW1wbGF0ZUxpdGVyYWw6Z2EsdHJhbnNmb3JtOmxuLHR1cGxlOm1yLHVpbnQzMjpLbyx1aW50NjQ6R28sdWxpZDpUbyx1bmRlZmluZWQ6VmUsdW5pb246aix1bmtub3duOk8sdXJsOmtvLHV1aWQ6X28sdXVpZHY0OiRvLHV1aWR2Njpibyx1dWlkdjc6eW8sdm9pZDpRbyx4aWQ6am8seG9yOnJhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLExkPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiBNZCh0KXtIKHtjdXN0b21FcnJvcjp0fSl9ZnVuY3Rpb24gcWQoKXtyZXR1cm4gSCgpLmN1c3RvbUVycm9yfXZhciBVbjtVbnx8KFVuPXt9KTtjb25zdCBiPXsuLi5OZywuLi5EZyxpc286bm99LEVnPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIFpnKHQsbil7Y29uc3Qgcj10LiRzY2hlbWE7cmV0dXJuIHI9PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpyPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOnI9PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6bj8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIFJnKHQsbil7aWYoIXQuc3RhcnRzV2l0aCgiIyIpKXRocm93IG5ldyBFcnJvcigiRXh0ZXJuYWwgJHJlZiBpcyBub3Qgc3VwcG9ydGVkLCBvbmx5IGxvY2FsIHJlZnMgKCMvLi4uKSBhcmUgYWxsb3dlZCIpO2NvbnN0IHI9dC5zbGljZSgxKS5zcGxpdCgiLyIpLmZpbHRlcihCb29sZWFuKTtpZihyLmxlbmd0aD09PTApcmV0dXJuIG4ucm9vdFNjaGVtYTtjb25zdCBvPW4udmVyc2lvbj09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7aWYoclswXT09PW8pe2NvbnN0IGU9clsxXTtpZighZXx8IW4uZGVmc1tlXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7dH1gKTtyZXR1cm4gbi5kZWZzW2VdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHt0fWApfWZ1bmN0aW9uIEZkKHQsbil7aWYodC5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiB0Lm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKHQubm90KS5sZW5ndGg9PT0wKXJldHVybiBiLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYodC51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYodC51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHQuaWYhPT12b2lkIDB8fHQudGhlbiE9PXZvaWQgMHx8dC5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKHQuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8dC5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYodC4kcmVmKXtjb25zdCBlPXQuJHJlZjtpZihuLnJlZnMuaGFzKGUpKXJldHVybiBuLnJlZnMuZ2V0KGUpO2lmKG4ucHJvY2Vzc2luZy5oYXMoZSkpcmV0dXJuIGIubGF6eSgoKT0+e2lmKCFuLnJlZnMuaGFzKGUpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtlfWApO3JldHVybiBuLnJlZnMuZ2V0KGUpfSk7bi5wcm9jZXNzaW5nLmFkZChlKTtjb25zdCBpPVJnKGUsbiksYT1ZKGksbik7cmV0dXJuIG4ucmVmcy5zZXQoZSxhKSxuLnByb2Nlc3NpbmcuZGVsZXRlKGUpLGF9aWYodC5lbnVtIT09dm9pZCAwKXtjb25zdCBlPXQuZW51bTtpZihuLnZlcnNpb249PT0ib3BlbmFwaS0zLjAiJiZ0Lm51bGxhYmxlPT09ITAmJmUubGVuZ3RoPT09MSYmZVswXT09PW51bGwpcmV0dXJuIGIubnVsbCgpO2lmKGUubGVuZ3RoPT09MClyZXR1cm4gYi5uZXZlcigpO2lmKGUubGVuZ3RoPT09MSlyZXR1cm4gYi5saXRlcmFsKGVbMF0pO2lmKGUuZXZlcnkoYT0+dHlwZW9mIGE9PSJzdHJpbmciKSlyZXR1cm4gYi5lbnVtKGUpO2NvbnN0IGk9ZS5tYXAoYT0+Yi5saXRlcmFsKGEpKTtyZXR1cm4gaS5sZW5ndGg8Mj9pWzBdOmIudW5pb24oW2lbMF0saVsxXSwuLi5pLnNsaWNlKDIpXSl9aWYodC5jb25zdCE9PXZvaWQgMClyZXR1cm4gYi5saXRlcmFsKHQuY29uc3QpO2NvbnN0IHI9dC50eXBlO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9ci5tYXAoaT0+e2NvbnN0IGE9ey4uLnQsdHlwZTppfTtyZXR1cm4gRmQoYSxuKX0pO3JldHVybiBlLmxlbmd0aD09PTA/Yi5uZXZlcigpOmUubGVuZ3RoPT09MT9lWzBdOmIudW5pb24oZSl9aWYoIXIpcmV0dXJuIGIuYW55KCk7bGV0IG87c3dpdGNoKHIpe2Nhc2Uic3RyaW5nIjp7bGV0IGU9Yi5zdHJpbmcoKTtpZih0LmZvcm1hdCl7Y29uc3QgaT10LmZvcm1hdDtpPT09ImVtYWlsIj9lPWUuY2hlY2soYi5lbWFpbCgpKTppPT09InVyaSJ8fGk9PT0idXJpLXJlZmVyZW5jZSI/ZT1lLmNoZWNrKGIudXJsKCkpOmk9PT0idXVpZCJ8fGk9PT0iZ3VpZCI/ZT1lLmNoZWNrKGIudXVpZCgpKTppPT09ImRhdGUtdGltZSI/ZT1lLmNoZWNrKGIuaXNvLmRhdGV0aW1lKCkpOmk9PT0iZGF0ZSI/ZT1lLmNoZWNrKGIuaXNvLmRhdGUoKSk6aT09PSJ0aW1lIj9lPWUuY2hlY2soYi5pc28udGltZSgpKTppPT09ImR1cmF0aW9uIj9lPWUuY2hlY2soYi5pc28uZHVyYXRpb24oKSk6aT09PSJpcHY0Ij9lPWUuY2hlY2soYi5pcHY0KCkpOmk9PT0iaXB2NiI/ZT1lLmNoZWNrKGIuaXB2NigpKTppPT09Im1hYyI/ZT1lLmNoZWNrKGIubWFjKCkpOmk9PT0iY2lkciI/ZT1lLmNoZWNrKGIuY2lkcnY0KCkpOmk9PT0iY2lkci12NiI/ZT1lLmNoZWNrKGIuY2lkcnY2KCkpOmk9PT0iYmFzZTY0Ij9lPWUuY2hlY2soYi5iYXNlNjQoKSk6aT09PSJiYXNlNjR1cmwiP2U9ZS5jaGVjayhiLmJhc2U2NHVybCgpKTppPT09ImUxNjQiP2U9ZS5jaGVjayhiLmUxNjQoKSk6aT09PSJqd3QiP2U9ZS5jaGVjayhiLmp3dCgpKTppPT09ImVtb2ppIj9lPWUuY2hlY2soYi5lbW9qaSgpKTppPT09Im5hbm9pZCI/ZT1lLmNoZWNrKGIubmFub2lkKCkpOmk9PT0iY3VpZCI/ZT1lLmNoZWNrKGIuY3VpZCgpKTppPT09ImN1aWQyIj9lPWUuY2hlY2soYi5jdWlkMigpKTppPT09InVsaWQiP2U9ZS5jaGVjayhiLnVsaWQoKSk6aT09PSJ4aWQiP2U9ZS5jaGVjayhiLnhpZCgpKTppPT09ImtzdWlkIiYmKGU9ZS5jaGVjayhiLmtzdWlkKCkpKX10eXBlb2YgdC5taW5MZW5ndGg9PSJudW1iZXIiJiYoZT1lLm1pbih0Lm1pbkxlbmd0aCkpLHR5cGVvZiB0Lm1heExlbmd0aD09Im51bWJlciImJihlPWUubWF4KHQubWF4TGVuZ3RoKSksdC5wYXR0ZXJuJiYoZT1lLnJlZ2V4KG5ldyBSZWdFeHAodC5wYXR0ZXJuKSkpLG89ZTticmVha31jYXNlIm51bWJlciI6Y2FzZSJpbnRlZ2VyIjp7bGV0IGU9cj09PSJpbnRlZ2VyIj9iLm51bWJlcigpLmludCgpOmIubnVtYmVyKCk7dHlwZW9mIHQubWluaW11bT09Im51bWJlciImJihlPWUubWluKHQubWluaW11bSkpLHR5cGVvZiB0Lm1heGltdW09PSJudW1iZXIiJiYoZT1lLm1heCh0Lm1heGltdW0pKSx0eXBlb2YgdC5leGNsdXNpdmVNaW5pbXVtPT0ibnVtYmVyIj9lPWUuZ3QodC5leGNsdXNpdmVNaW5pbXVtKTp0LmV4Y2x1c2l2ZU1pbmltdW09PT0hMCYmdHlwZW9mIHQubWluaW11bT09Im51bWJlciImJihlPWUuZ3QodC5taW5pbXVtKSksdHlwZW9mIHQuZXhjbHVzaXZlTWF4aW11bT09Im51bWJlciI/ZT1lLmx0KHQuZXhjbHVzaXZlTWF4aW11bSk6dC5leGNsdXNpdmVNYXhpbXVtPT09ITAmJnR5cGVvZiB0Lm1heGltdW09PSJudW1iZXIiJiYoZT1lLmx0KHQubWF4aW11bSkpLHR5cGVvZiB0Lm11bHRpcGxlT2Y9PSJudW1iZXIiJiYoZT1lLm11bHRpcGxlT2YodC5tdWx0aXBsZU9mKSksbz1lO2JyZWFrfWNhc2UiYm9vbGVhbiI6e289Yi5ib29sZWFuKCk7YnJlYWt9Y2FzZSJudWxsIjp7bz1iLm51bGwoKTticmVha31jYXNlIm9iamVjdCI6e2NvbnN0IGU9e30saT10LnByb3BlcnRpZXN8fHt9LGE9bmV3IFNldCh0LnJlcXVpcmVkfHxbXSk7Zm9yKGNvbnN0W2MsdV1vZiBPYmplY3QuZW50cmllcyhpKSl7Y29uc3QgbD1ZKHUsbik7ZVtjXT1hLmhhcyhjKT9sOmwub3B0aW9uYWwoKX1pZih0LnByb3BlcnR5TmFtZXMpe2NvbnN0IGM9WSh0LnByb3BlcnR5TmFtZXMsbiksdT10LmFkZGl0aW9uYWxQcm9wZXJ0aWVzJiZ0eXBlb2YgdC5hZGRpdGlvbmFsUHJvcGVydGllcz09Im9iamVjdCI/WSh0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLG4pOmIuYW55KCk7aWYoT2JqZWN0LmtleXMoZSkubGVuZ3RoPT09MCl7bz1iLnJlY29yZChjLHUpO2JyZWFrfWNvbnN0IGw9Yi5vYmplY3QoZSkucGFzc3Rocm91Z2goKSxnPWIubG9vc2VSZWNvcmQoYyx1KTtvPWIuaW50ZXJzZWN0aW9uKGwsZyk7YnJlYWt9aWYodC5wYXR0ZXJuUHJvcGVydGllcyl7Y29uc3QgYz10LnBhdHRlcm5Qcm9wZXJ0aWVzLHU9T2JqZWN0LmtleXMoYyksbD1bXTtmb3IoY29uc3QgdiBvZiB1KXtjb25zdCBfPVkoY1t2XSxuKSx5PWIuc3RyaW5nKCkucmVnZXgobmV3IFJlZ0V4cCh2KSk7bC5wdXNoKGIubG9vc2VSZWNvcmQoeSxfKSl9Y29uc3QgZz1bXTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmZy5wdXNoKGIub2JqZWN0KGUpLnBhc3N0aHJvdWdoKCkpLGcucHVzaCguLi5sKSxnLmxlbmd0aD09PTApbz1iLm9iamVjdCh7fSkucGFzc3Rocm91Z2goKTtlbHNlIGlmKGcubGVuZ3RoPT09MSlvPWdbMF07ZWxzZXtsZXQgdj1iLmludGVyc2VjdGlvbihnWzBdLGdbMV0pO2ZvcihsZXQgXz0yO188Zy5sZW5ndGg7XysrKXY9Yi5pbnRlcnNlY3Rpb24odixnW19dKTtvPXZ9YnJlYWt9Y29uc3Qgcz1iLm9iamVjdChlKTt0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITE/bz1zLnN0cmljdCgpOnR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT0ib2JqZWN0Ij9vPXMuY2F0Y2hhbGwoWSh0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLG4pKTpvPXMucGFzc3Rocm91Z2goKTticmVha31jYXNlImFycmF5Ijp7Y29uc3QgZT10LnByZWZpeEl0ZW1zLGk9dC5pdGVtcztpZihlJiZBcnJheS5pc0FycmF5KGUpKXtjb25zdCBhPWUubWFwKGM9PlkoYyxuKSkscz1pJiZ0eXBlb2YgaT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGkpP1koaSxuKTp2b2lkIDA7cz9vPWIudHVwbGUoYSkucmVzdChzKTpvPWIudHVwbGUoYSksdHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWluTGVuZ3RoKHQubWluSXRlbXMpKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWF4TGVuZ3RoKHQubWF4SXRlbXMpKSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBhPWkubWFwKGM9PlkoYyxuKSkscz10LmFkZGl0aW9uYWxJdGVtcyYmdHlwZW9mIHQuYWRkaXRpb25hbEl0ZW1zPT0ib2JqZWN0Ij9ZKHQuYWRkaXRpb25hbEl0ZW1zLG4pOnZvaWQgMDtzP289Yi50dXBsZShhKS5yZXN0KHMpOm89Yi50dXBsZShhKSx0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5taW5MZW5ndGgodC5taW5JdGVtcykpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5tYXhMZW5ndGgodC5tYXhJdGVtcykpKX1lbHNlIGlmKGkhPT12b2lkIDApe2NvbnN0IGE9WShpLG4pO2xldCBzPWIuYXJyYXkoYSk7dHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYocz1zLm1pbih0Lm1pbkl0ZW1zKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYocz1zLm1heCh0Lm1heEl0ZW1zKSksbz1zfWVsc2Ugbz1iLmFycmF5KGIuYW55KCkpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlOiAke3J9YCl9cmV0dXJuIG99ZnVuY3Rpb24gWSh0LG4pe2lmKHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIHQ/Yi5hbnkoKTpiLm5ldmVyKCk7bGV0IHI9RmQodCxuKTtjb25zdCBvPXQudHlwZXx8dC5lbnVtIT09dm9pZCAwfHx0LmNvbnN0IT09dm9pZCAwO2lmKHQuYW55T2YmJkFycmF5LmlzQXJyYXkodC5hbnlPZikpe2NvbnN0IHM9dC5hbnlPZi5tYXAodT0+WSh1LG4pKSxjPWIudW5pb24ocyk7cj1vP2IuaW50ZXJzZWN0aW9uKHIsYyk6Y31pZih0Lm9uZU9mJiZBcnJheS5pc0FycmF5KHQub25lT2YpKXtjb25zdCBzPXQub25lT2YubWFwKHU9PlkodSxuKSksYz1iLnhvcihzKTtyPW8/Yi5pbnRlcnNlY3Rpb24ocixjKTpjfWlmKHQuYWxsT2YmJkFycmF5LmlzQXJyYXkodC5hbGxPZikpaWYodC5hbGxPZi5sZW5ndGg9PT0wKXI9bz9yOmIuYW55KCk7ZWxzZXtsZXQgcz1vP3I6WSh0LmFsbE9mWzBdLG4pO2NvbnN0IGM9bz8wOjE7Zm9yKGxldCB1PWM7dTx0LmFsbE9mLmxlbmd0aDt1Kyspcz1iLmludGVyc2VjdGlvbihzLFkodC5hbGxPZlt1XSxuKSk7cj1zfXQubnVsbGFibGU9PT0hMCYmbi52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKHI9Yi5udWxsYWJsZShyKSksdC5yZWFkT25seT09PSEwJiYocj1iLnJlYWRvbmx5KHIpKSx0LmRlZmF1bHQhPT12b2lkIDAmJihyPXIuZGVmYXVsdCh0LmRlZmF1bHQpKTtjb25zdCBlPXt9LGk9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBzIG9mIGkpcyBpbiB0JiYoZVtzXT10W3NdKTtjb25zdCBhPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgcyBvZiBhKXMgaW4gdCYmKGVbc109dFtzXSk7Zm9yKGNvbnN0IHMgb2YgT2JqZWN0LmtleXModCkpRWcuaGFzKHMpfHwoZVtzXT10W3NdKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjAmJm4ucmVnaXN0cnkuYWRkKHIsZSksdC5kZXNjcmlwdGlvbiYmKHI9ci5kZXNjcmliZSh0LmRlc2NyaXB0aW9uKSkscn1mdW5jdGlvbiBKZCh0LG4pe2lmKHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIHQ/Yi5hbnkoKTpiLm5ldmVyKCk7bGV0IHI7dHJ5e3I9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJmcm9tSlNPTlNjaGVtYSBpbnB1dCBpcyBub3QgdmFsaWQgSlNPTiAocG9zc2libHkgY3ljbGljKTsgdXNlICRkZWZzLyRyZWYgZm9yIHJlY3Vyc2l2ZSBzY2hlbWFzIil9Y29uc3Qgbz1aZyhyLG4/LmRlZmF1bHRUYXJnZXQpLGU9ci4kZGVmc3x8ci5kZWZpbml0aW9uc3x8e30saT17dmVyc2lvbjpvLGRlZnM6ZSxyZWZzOm5ldyBNYXAscHJvY2Vzc2luZzpuZXcgU2V0LHJvb3RTY2hlbWE6cixyZWdpc3RyeTpuPy5yZWdpc3RyeT8/bmV9O3JldHVybiBZKHIsaSl9ZnVuY3Rpb24gQ2codCl7cmV0dXJuIGRsKFFlLHQpfWZ1bmN0aW9uIEFnKHQpe3JldHVybiBfbCh0dCx0KX1mdW5jdGlvbiBMZyh0KXtyZXR1cm4gSWwobnQsdCl9ZnVuY3Rpb24gTWcodCl7cmV0dXJuIHhsKHJ0LHQpfWZ1bmN0aW9uIHFnKHQpe3JldHVybiBDbChjbix0KX1jb25zdCBIZD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50Ok1nLGJvb2xlYW46TGcsZGF0ZTpxZyxudW1iZXI6QWcsc3RyaW5nOkNnfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO0goYWwoKSk7Y29uc3QgX3M9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpZciwkaW5wdXQ6amksJG91dHB1dDpUaSxORVZFUjpYcixUaW1lUHJlY2lzaW9uOkdpLFpvZEFueTpycixab2RBcnJheTpzcixab2RCYXNlNjQ6dG4sWm9kQmFzZTY0VVJMOm5uLFpvZEJpZ0ludDpydCxab2RCaWdJbnRGb3JtYXQ6YW4sWm9kQm9vbGVhbjpudCxab2RDSURSdjQ6UXQsWm9kQ0lEUnY2OmVuLFpvZENVSUQ6VnQsWm9kQ1VJRDI6S3QsWm9kQ2F0Y2g6eHIsWm9kQ29kZWM6Y3QsWm9kQ3VzdG9tOnV0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpFZSxab2REYXRlOmNuLFpvZERlZmF1bHQ6eXIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOnVyLFpvZEUxNjQ6cm4sWm9kRW1haWw6RnQsWm9kRW1vamk6SnQsWm9kRW51bTpPZSxab2RFcnJvcjpBZCxab2RFeGFjdE9wdGlvbmFsOl9yLFpvZEZpbGU6dnIsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBVbn0sWm9kRnVuY3Rpb246UnIsWm9kR1VJRDpIZSxab2RJUHY0Olh0LFpvZElQdjY6WXQsWm9kSVNPRGF0ZTpHbixab2RJU09EYXRlVGltZTpCbixab2RJU09EdXJhdGlvbjpZbixab2RJU09UaW1lOlhuLFpvZEludGVyc2VjdGlvbjpscixab2RJc3N1ZUNvZGU6TGQsWm9kSldUOm9uLFpvZEtTVUlEOkd0LFpvZExhenk6TnIsWm9kTGl0ZXJhbDpncixab2RNQUM6UW4sWm9kTWFwOnByLFpvZE5hTjpqcixab2ROYW5vSUQ6SHQsWm9kTmV2ZXI6b3IsWm9kTm9uT3B0aW9uYWw6bW4sWm9kTnVsbDpucixab2ROdWxsYWJsZTpicixab2ROdW1iZXI6dHQsWm9kTnVtYmVyRm9ybWF0OlNlLFpvZE9iamVjdDppdCxab2RPcHRpb25hbDpkbixab2RQaXBlOnN0LFpvZFByZWZhdWx0OlNyLFpvZFByZXByb2Nlc3M6VXIsWm9kUHJvbWlzZTpacixab2RSZWFkb25seTpQcixab2RSZWFsRXJyb3I6dGUsWm9kUmVjb3JkOlBlLFpvZFNldDpmcixab2RTdHJpbmc6UWUsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2Vzczp6cixab2RTeW1ib2w6ZXIsWm9kVGVtcGxhdGVMaXRlcmFsOkRyLFpvZFRyYW5zZm9ybTpocixab2RUdXBsZTpkcixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6ZXQsWm9kVVVJRDpkZSxab2RVbmRlZmluZWQ6dHIsWm9kVW5pb246b3QsWm9kVW5rbm93bjppcixab2RWb2lkOmFyLFpvZFhJRDpCdCxab2RYb3I6Y3IsX1pvZFN0cmluZzpxdCxfZGVmYXVsdDprcixfZnVuY3Rpb246V2UsYW55OllvLGFycmF5OncsYmFzZTY0OlpvLGJhc2U2NHVybDpSbyxiaWdpbnQ6V28sYm9vbGVhbjpELGNhdGNoOlRyLGNoZWNrOmhhLGNpZHJ2NDpObyxjaWRydjY6RW8sY2xvbmU6b2UsY29kZWM6cGEsY29lcmNlOkhkLGNvbmZpZzpILGNvcmU6RGQsY3VpZDp6byxjdWlkMjp4byxjdXN0b206Q3IsZGF0ZTplYSxkZWNvZGU6Y28sZGVjb2RlQXN5bmM6bG8sZGVzY3JpYmU6X2EsZGlzY3JpbWluYXRlZFVuaW9uOnVuLGUxNjQ6Q28sZW1haWw6dm8sZW1vamk6d28sZW5jb2RlOnNvLGVuY29kZUFzeW5jOnVvLGVuZHNXaXRoOkR0LGVudW06QixleGFjdE9wdGlvbmFsOiRyLGZpbGU6dWEsZmxhdHRlbkVycm9yOkNuLGZsb2F0MzI6Sm8sZmxvYXQ2NDpIbyxmb3JtYXRFcnJvcjpBbixmcm9tSlNPTlNjaGVtYTpKZCxmdW5jdGlvbjpXZSxnZXRFcnJvck1hcDpxZCxnbG9iYWxSZWdpc3RyeTpuZSxndDpfZSxndGU6ZWUsZ3VpZDpobyxoYXNoOkZvLGhleDpxbyxob3N0bmFtZTpNbyxodHRwVXJsOlNvLGluY2x1ZGVzOlB0LGluc3RhbmNlb2Y6YmEsaW50OnZ0LGludDMyOlZvLGludDY0OkJvLGludGVyc2VjdGlvbjphdCxpbnZlcnRDb2RlYzpmYSxpcHY0OlBvLGlwdjY6RG8saXNvOm5vLGpzb246a2Esand0OkFvLGtleW9mOnRhLGtzdWlkOlVvLGxhenk6RXIsbGVuZ3RoOlllLGxpdGVyYWw6bSxsb2NhbGVzOnhpLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6b2EsbG93ZXJjYXNlOmp0LGx0OmhlLGx0ZTpyZSxtYWM6T28sbWFwOmFhLG1heExlbmd0aDpYZSxtYXhTaXplOk5lLG1ldGE6JGEsbWltZTpOdCxtaW5MZW5ndGg6eWUsbWluU2l6ZTokZSxtdWx0aXBsZU9mOmplLG5hbjptYSxuYW5vaWQ6SW8sbmF0aXZlRW51bTpjYSxuZWdhdGl2ZTpIbixuZXZlcjpVZSxub25uZWdhdGl2ZTpLbixub25vcHRpb25hbDpJcixub25wb3NpdGl2ZTpWbixub3JtYWxpemU6RXQsbnVsbDpzbixudWxsYWJsZTpLZSxudWxsaXNoOmxhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOnBlLHBhcnNlOnJvLHBhcnNlQXN5bmM6aW8scGFydGlhbFJlY29yZDppYSxwaXBlOmh0LHBvc2l0aXZlOkpuLHByZWZhdWx0OndyLHByZXByb2Nlc3M6cG4scHJldHRpZnlFcnJvcjppaSxwcm9taXNlOnZhLHByb3BlcnR5OlduLHJlYWRvbmx5Ok9yLHJlY29yZDpVLHJlZmluZTpBcixyZWdleDpUdCxyZWdleGVzOkxuLHJlZ2lzdHJ5OnFuLHNhZmVEZWNvZGU6cG8sc2FmZURlY29kZUFzeW5jOmdvLHNhZmVFbmNvZGU6bW8sc2FmZUVuY29kZUFzeW5jOmZvLHNhZmVQYXJzZTpvbyxzYWZlUGFyc2VBc3luYzphbyxzZXQ6c2Esc2V0RXJyb3JNYXA6TWQsc2l6ZTpHZSxzbHVnaWZ5OkF0LHN0YXJ0c1dpdGg6T3Qsc3RyaWN0T2JqZWN0Om5hLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpMbyxzdHJpbmdib29sOnlhLHN1Y2Nlc3M6ZGEsc3VwZXJSZWZpbmU6THIsc3ltYm9sOlhvLHRlbXBsYXRlTGl0ZXJhbDpnYSx0b0pTT05TY2hlbWE6UWksdG9Mb3dlckNhc2U6UnQsdG9VcHBlckNhc2U6Q3QsdHJhbnNmb3JtOmxuLHRyZWVpZnlFcnJvcjpyaSx0cmltOlp0LHR1cGxlOm1yLHVpbnQzMjpLbyx1aW50NjQ6R28sdWxpZDpUbyx1bmRlZmluZWQ6VmUsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOlV0LHVybDprbyx1dGlsOnRpLHV1aWQ6X28sdXVpZHY0OiRvLHV1aWR2Njpibyx1dWlkdjc6eW8sdm9pZDpRbyx4aWQ6am8seG9yOnJhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEZnPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6WXIsJGlucHV0OmppLCRvdXRwdXQ6VGksTkVWRVI6WHIsVGltZVByZWNpc2lvbjpHaSxab2RBbnk6cnIsWm9kQXJyYXk6c3IsWm9kQmFzZTY0OnRuLFpvZEJhc2U2NFVSTDpubixab2RCaWdJbnQ6cnQsWm9kQmlnSW50Rm9ybWF0OmFuLFpvZEJvb2xlYW46bnQsWm9kQ0lEUnY0OlF0LFpvZENJRFJ2Njplbixab2RDVUlEOlZ0LFpvZENVSUQyOkt0LFpvZENhdGNoOnhyLFpvZENvZGVjOmN0LFpvZEN1c3RvbTp1dCxab2RDdXN0b21TdHJpbmdGb3JtYXQ6RWUsWm9kRGF0ZTpjbixab2REZWZhdWx0OnlyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjp1cixab2RFMTY0OnJuLFpvZEVtYWlsOkZ0LFpvZEVtb2ppOkp0LFpvZEVudW06T2UsWm9kRXJyb3I6QWQsWm9kRXhhY3RPcHRpb25hbDpfcixab2RGaWxlOnZyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gVW59LFpvZEZ1bmN0aW9uOlJyLFpvZEdVSUQ6SGUsWm9kSVB2NDpYdCxab2RJUHY2Oll0LFpvZElTT0RhdGU6R24sWm9kSVNPRGF0ZVRpbWU6Qm4sWm9kSVNPRHVyYXRpb246WW4sWm9kSVNPVGltZTpYbixab2RJbnRlcnNlY3Rpb246bHIsWm9kSXNzdWVDb2RlOkxkLFpvZEpXVDpvbixab2RLU1VJRDpHdCxab2RMYXp5Ok5yLFpvZExpdGVyYWw6Z3IsWm9kTUFDOlFuLFpvZE1hcDpwcixab2ROYU46anIsWm9kTmFub0lEOkh0LFpvZE5ldmVyOm9yLFpvZE5vbk9wdGlvbmFsOm1uLFpvZE51bGw6bnIsWm9kTnVsbGFibGU6YnIsWm9kTnVtYmVyOnR0LFpvZE51bWJlckZvcm1hdDpTZSxab2RPYmplY3Q6aXQsWm9kT3B0aW9uYWw6ZG4sWm9kUGlwZTpzdCxab2RQcmVmYXVsdDpTcixab2RQcmVwcm9jZXNzOlVyLFpvZFByb21pc2U6WnIsWm9kUmVhZG9ubHk6UHIsWm9kUmVhbEVycm9yOnRlLFpvZFJlY29yZDpQZSxab2RTZXQ6ZnIsWm9kU3RyaW5nOlFlLFpvZFN0cmluZ0Zvcm1hdDpaLFpvZFN1Y2Nlc3M6enIsWm9kU3ltYm9sOmVyLFpvZFRlbXBsYXRlTGl0ZXJhbDpEcixab2RUcmFuc2Zvcm06aHIsWm9kVHVwbGU6ZHIsWm9kVHlwZTp4LFpvZFVMSUQ6V3QsWm9kVVJMOmV0LFpvZFVVSUQ6ZGUsWm9kVW5kZWZpbmVkOnRyLFpvZFVuaW9uOm90LFpvZFVua25vd246aXIsWm9kVm9pZDphcixab2RYSUQ6QnQsWm9kWG9yOmNyLF9ab2RTdHJpbmc6cXQsX2RlZmF1bHQ6a3IsX2Z1bmN0aW9uOldlLGFueTpZbyxhcnJheTp3LGJhc2U2NDpabyxiYXNlNjR1cmw6Um8sYmlnaW50OldvLGJvb2xlYW46RCxjYXRjaDpUcixjaGVjazpoYSxjaWRydjQ6Tm8sY2lkcnY2OkVvLGNsb25lOm9lLGNvZGVjOnBhLGNvZXJjZTpIZCxjb25maWc6SCxjb3JlOkRkLGN1aWQ6em8sY3VpZDI6eG8sY3VzdG9tOkNyLGRhdGU6ZWEsZGVjb2RlOmNvLGRlY29kZUFzeW5jOmxvLGRlZmF1bHQ6X3MsZGVzY3JpYmU6X2EsZGlzY3JpbWluYXRlZFVuaW9uOnVuLGUxNjQ6Q28sZW1haWw6dm8sZW1vamk6d28sZW5jb2RlOnNvLGVuY29kZUFzeW5jOnVvLGVuZHNXaXRoOkR0LGVudW06QixleGFjdE9wdGlvbmFsOiRyLGZpbGU6dWEsZmxhdHRlbkVycm9yOkNuLGZsb2F0MzI6Sm8sZmxvYXQ2NDpIbyxmb3JtYXRFcnJvcjpBbixmcm9tSlNPTlNjaGVtYTpKZCxmdW5jdGlvbjpXZSxnZXRFcnJvck1hcDpxZCxnbG9iYWxSZWdpc3RyeTpuZSxndDpfZSxndGU6ZWUsZ3VpZDpobyxoYXNoOkZvLGhleDpxbyxob3N0bmFtZTpNbyxodHRwVXJsOlNvLGluY2x1ZGVzOlB0LGluc3RhbmNlb2Y6YmEsaW50OnZ0LGludDMyOlZvLGludDY0OkJvLGludGVyc2VjdGlvbjphdCxpbnZlcnRDb2RlYzpmYSxpcHY0OlBvLGlwdjY6RG8saXNvOm5vLGpzb246a2Esand0OkFvLGtleW9mOnRhLGtzdWlkOlVvLGxhenk6RXIsbGVuZ3RoOlllLGxpdGVyYWw6bSxsb2NhbGVzOnhpLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6b2EsbG93ZXJjYXNlOmp0LGx0OmhlLGx0ZTpyZSxtYWM6T28sbWFwOmFhLG1heExlbmd0aDpYZSxtYXhTaXplOk5lLG1ldGE6JGEsbWltZTpOdCxtaW5MZW5ndGg6eWUsbWluU2l6ZTokZSxtdWx0aXBsZU9mOmplLG5hbjptYSxuYW5vaWQ6SW8sbmF0aXZlRW51bTpjYSxuZWdhdGl2ZTpIbixuZXZlcjpVZSxub25uZWdhdGl2ZTpLbixub25vcHRpb25hbDpJcixub25wb3NpdGl2ZTpWbixub3JtYWxpemU6RXQsbnVsbDpzbixudWxsYWJsZTpLZSxudWxsaXNoOmxhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOnBlLHBhcnNlOnJvLHBhcnNlQXN5bmM6aW8scGFydGlhbFJlY29yZDppYSxwaXBlOmh0LHBvc2l0aXZlOkpuLHByZWZhdWx0OndyLHByZXByb2Nlc3M6cG4scHJldHRpZnlFcnJvcjppaSxwcm9taXNlOnZhLHByb3BlcnR5OlduLHJlYWRvbmx5Ok9yLHJlY29yZDpVLHJlZmluZTpBcixyZWdleDpUdCxyZWdleGVzOkxuLHJlZ2lzdHJ5OnFuLHNhZmVEZWNvZGU6cG8sc2FmZURlY29kZUFzeW5jOmdvLHNhZmVFbmNvZGU6bW8sc2FmZUVuY29kZUFzeW5jOmZvLHNhZmVQYXJzZTpvbyxzYWZlUGFyc2VBc3luYzphbyxzZXQ6c2Esc2V0RXJyb3JNYXA6TWQsc2l6ZTpHZSxzbHVnaWZ5OkF0LHN0YXJ0c1dpdGg6T3Qsc3RyaWN0T2JqZWN0Om5hLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpMbyxzdHJpbmdib29sOnlhLHN1Y2Nlc3M6ZGEsc3VwZXJSZWZpbmU6THIsc3ltYm9sOlhvLHRlbXBsYXRlTGl0ZXJhbDpnYSx0b0pTT05TY2hlbWE6UWksdG9Mb3dlckNhc2U6UnQsdG9VcHBlckNhc2U6Q3QsdHJhbnNmb3JtOmxuLHRyZWVpZnlFcnJvcjpyaSx0cmltOlp0LHR1cGxlOm1yLHVpbnQzMjpLbyx1aW50NjQ6R28sdWxpZDpUbyx1bmRlZmluZWQ6VmUsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOlV0LHVybDprbyx1dGlsOnRpLHV1aWQ6X28sdXVpZHY0OiRvLHV1aWR2Njpibyx1dWlkdjc6eW8sdm9pZDpRbyx4aWQ6am8seG9yOnJhLHo6X3N9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksSWU9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsTXI9IjIuMCIsSj1Dcih0PT50IT09bnVsbCYmKHR5cGVvZiB0PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKSxWZD1qKFtwKCkseigpLmludCgpXSksS2Q9cCgpO1coe3R0bDp6KCkub3B0aW9uYWwoKSxwb2xsSW50ZXJ2YWw6eigpLm9wdGlvbmFsKCl9KTtjb25zdCBKZz1mKHt0dGw6eigpLm9wdGlvbmFsKCl9KSxIZz1mKHt0YXNrSWQ6cCgpfSksU2E9Vyh7cHJvZ3Jlc3NUb2tlbjpWZC5vcHRpb25hbCgpLFtJZV06SGcub3B0aW9uYWwoKX0pLHNlPWYoe19tZXRhOlNhLm9wdGlvbmFsKCl9KSxmbj1zZS5leHRlbmQoe3Rhc2s6Smcub3B0aW9uYWwoKX0pLFZnPXQ9PmZuLnNhZmVQYXJzZSh0KS5zdWNjZXNzLEc9Zih7bWV0aG9kOnAoKSxwYXJhbXM6c2UubG9vc2UoKS5vcHRpb25hbCgpfSksdWU9Zih7X21ldGE6U2Eub3B0aW9uYWwoKX0pLGxlPWYoe21ldGhvZDpwKCkscGFyYW1zOnVlLmxvb3NlKCkub3B0aW9uYWwoKX0pLFg9Vyh7X21ldGE6U2Eub3B0aW9uYWwoKX0pLGduPWooW3AoKSx6KCkuaW50KCldKSxXZD1mKHtqc29ucnBjOm0oTXIpLGlkOmduLC4uLkcuc2hhcGV9KS5zdHJpY3QoKSwkcz10PT5XZC5zYWZlUGFyc2UodCkuc3VjY2VzcyxCZD1mKHtqc29ucnBjOm0oTXIpLC4uLmxlLnNoYXBlfSkuc3RyaWN0KCksS2c9dD0+QmQuc2FmZVBhcnNlKHQpLnN1Y2Nlc3Msd2E9Zih7anNvbnJwYzptKE1yKSxpZDpnbixyZXN1bHQ6WH0pLnN0cmljdCgpLEluPXQ9PndhLnNhZmVQYXJzZSh0KS5zdWNjZXNzO3ZhciBOOyhmdW5jdGlvbih0KXt0W3QuQ29ubmVjdGlvbkNsb3NlZD0tMzJlM109IkNvbm5lY3Rpb25DbG9zZWQiLHRbdC5SZXF1ZXN0VGltZW91dD0tMzIwMDFdPSJSZXF1ZXN0VGltZW91dCIsdFt0LlBhcnNlRXJyb3I9LTMyNzAwXT0iUGFyc2VFcnJvciIsdFt0LkludmFsaWRSZXF1ZXN0PS0zMjYwMF09IkludmFsaWRSZXF1ZXN0Iix0W3QuTWV0aG9kTm90Rm91bmQ9LTMyNjAxXT0iTWV0aG9kTm90Rm91bmQiLHRbdC5JbnZhbGlkUGFyYW1zPS0zMjYwMl09IkludmFsaWRQYXJhbXMiLHRbdC5JbnRlcm5hbEVycm9yPS0zMjYwM109IkludGVybmFsRXJyb3IiLHRbdC5VcmxFbGljaXRhdGlvblJlcXVpcmVkPS0zMjA0Ml09IlVybEVsaWNpdGF0aW9uUmVxdWlyZWQifSkoTnx8KE49e30pKTtjb25zdCBJYT1mKHtqc29ucnBjOm0oTXIpLGlkOmduLm9wdGlvbmFsKCksZXJyb3I6Zih7Y29kZTp6KCkuaW50KCksbWVzc2FnZTpwKCksZGF0YTpPKCkub3B0aW9uYWwoKX0pfSkuc3RyaWN0KCksV2c9dD0+SWEuc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsQmc9aihbV2QsQmQsd2EsSWFdKTtqKFt3YSxJYV0pO2NvbnN0IHphPVguc3RyaWN0KCksR2c9dWUuZXh0ZW5kKHtyZXF1ZXN0SWQ6Z24ub3B0aW9uYWwoKSxyZWFzb246cCgpLm9wdGlvbmFsKCl9KSx4YT1sZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpHZ30pLFhnPWYoe3NyYzpwKCksbWltZVR5cGU6cCgpLm9wdGlvbmFsKCksc2l6ZXM6dyhwKCkpLm9wdGlvbmFsKCksdGhlbWU6QihbImxpZ2h0IiwiZGFyayJdKS5vcHRpb25hbCgpfSksdm49Zih7aWNvbnM6dyhYZykub3B0aW9uYWwoKX0pLEJlPWYoe25hbWU6cCgpLHRpdGxlOnAoKS5vcHRpb25hbCgpfSkscXI9QmUuZXh0ZW5kKHsuLi5CZS5zaGFwZSwuLi52bi5zaGFwZSx2ZXJzaW9uOnAoKSx3ZWJzaXRlVXJsOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpfSksWWc9YXQoZih7YXBwbHlEZWZhdWx0czpEKCkub3B0aW9uYWwoKX0pLFUocCgpLE8oKSkpLFFnPXBuKHQ9PnQmJnR5cGVvZiB0PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkodCkmJk9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTA/e2Zvcm06e319OnQsYXQoZih7Zm9ybTpZZy5vcHRpb25hbCgpLHVybDpKLm9wdGlvbmFsKCl9KSxVKHAoKSxPKCkpLm9wdGlvbmFsKCkpKSxldj1XKHtsaXN0Okoub3B0aW9uYWwoKSxjYW5jZWw6Si5vcHRpb25hbCgpLHJlcXVlc3RzOlcoe3NhbXBsaW5nOlcoe2NyZWF0ZU1lc3NhZ2U6Si5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpXKHtjcmVhdGU6Si5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSx0dj1XKHtsaXN0Okoub3B0aW9uYWwoKSxjYW5jZWw6Si5vcHRpb25hbCgpLHJlcXVlc3RzOlcoe3Rvb2xzOlcoe2NhbGw6Si5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxudj1mKHtleHBlcmltZW50YWw6VShwKCksSikub3B0aW9uYWwoKSxzYW1wbGluZzpmKHtjb250ZXh0Okoub3B0aW9uYWwoKSx0b29sczpKLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOlFnLm9wdGlvbmFsKCkscm9vdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOmV2Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpVKHAoKSxKKS5vcHRpb25hbCgpfSkscnY9c2UuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczpudixjbGllbnRJbmZvOnFyfSksaXY9Ry5leHRlbmQoe21ldGhvZDptKCJpbml0aWFsaXplIikscGFyYW1zOnJ2fSksb3Y9Zih7ZXhwZXJpbWVudGFsOlUocCgpLEopLm9wdGlvbmFsKCksbG9nZ2luZzpKLm9wdGlvbmFsKCksY29tcGxldGlvbnM6Si5vcHRpb25hbCgpLHByb21wdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczpmKHtzdWJzY3JpYmU6RCgpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp0di5vcHRpb25hbCgpLGV4dGVuc2lvbnM6VShwKCksSikub3B0aW9uYWwoKX0pLGF2PVguZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczpvdixzZXJ2ZXJJbmZvOnFyLGluc3RydWN0aW9uczpwKCkub3B0aW9uYWwoKX0pLHN2PWxlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6dWUub3B0aW9uYWwoKX0pLEZyPUcuZXh0ZW5kKHttZXRob2Q6bSgicGluZyIpLHBhcmFtczpzZS5vcHRpb25hbCgpfSksY3Y9Zih7cHJvZ3Jlc3M6eigpLHRvdGFsOkEoeigpKSxtZXNzYWdlOkEocCgpKX0pLHV2PWYoey4uLnVlLnNoYXBlLC4uLmN2LnNoYXBlLHByb2dyZXNzVG9rZW46VmR9KSxUYT1sZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Byb2dyZXNzIikscGFyYW1zOnV2fSksbHY9c2UuZXh0ZW5kKHtjdXJzb3I6S2Qub3B0aW9uYWwoKX0pLGhuPUcuZXh0ZW5kKHtwYXJhbXM6bHYub3B0aW9uYWwoKX0pLF9uPVguZXh0ZW5kKHtuZXh0Q3Vyc29yOktkLm9wdGlvbmFsKCl9KSxkdj1CKFsid29ya2luZyIsImlucHV0X3JlcXVpcmVkIiwiY29tcGxldGVkIiwiZmFpbGVkIiwiY2FuY2VsbGVkIl0pLCRuPWYoe3Rhc2tJZDpwKCksc3RhdHVzOmR2LHR0bDpqKFt6KCksc24oKV0pLGNyZWF0ZWRBdDpwKCksbGFzdFVwZGF0ZWRBdDpwKCkscG9sbEludGVydmFsOkEoeigpKSxzdGF0dXNNZXNzYWdlOkEocCgpKX0pLGphPVguZXh0ZW5kKHt0YXNrOiRufSksbXY9dWUubWVyZ2UoJG4pLFBuPWxlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIikscGFyYW1zOm12fSksVWE9Ry5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9nZXQiKSxwYXJhbXM6c2UuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSxQYT1YLm1lcmdlKCRuKSxPYT1HLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL3Jlc3VsdCIpLHBhcmFtczpzZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pO1gubG9vc2UoKTtjb25zdCBEYT1obi5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9saXN0Iil9KSxOYT1fbi5leHRlbmQoe3Rhc2tzOncoJG4pfSksRWE9Ry5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9jYW5jZWwiKSxwYXJhbXM6c2UuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSxwdj1YLm1lcmdlKCRuKSxHZD1mKHt1cmk6cCgpLG1pbWVUeXBlOkEocCgpKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxYZD1HZC5leHRlbmQoe3RleHQ6cCgpfSksWmE9cCgpLnJlZmluZSh0PT57dHJ5e3JldHVybiBhdG9iKHQpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxZZD1HZC5leHRlbmQoe2Jsb2I6WmF9KSxibj1CKFsidXNlciIsImFzc2lzdGFudCJdKSxsdD1mKHthdWRpZW5jZTp3KGJuKS5vcHRpb25hbCgpLHByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksbGFzdE1vZGlmaWVkOnRvKHtvZmZzZXQ6ITB9KS5vcHRpb25hbCgpfSksUWQ9Zih7Li4uQmUuc2hhcGUsLi4udm4uc2hhcGUsdXJpOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSksbWltZVR5cGU6QShwKCkpLHNpemU6QSh6KCkpLGFubm90YXRpb25zOmx0Lm9wdGlvbmFsKCksX21ldGE6QShXKHt9KSl9KSxmdj1mKHsuLi5CZS5zaGFwZSwuLi52bi5zaGFwZSx1cmlUZW1wbGF0ZTpwKCksZGVzY3JpcHRpb246QShwKCkpLG1pbWVUeXBlOkEocCgpKSxhbm5vdGF0aW9uczpsdC5vcHRpb25hbCgpLF9tZXRhOkEoVyh7fSkpfSksZ3Y9aG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL2xpc3QiKX0pLGVtPV9uLmV4dGVuZCh7cmVzb3VyY2VzOncoUWQpfSksdnY9aG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0Iil9KSxodj1fbi5leHRlbmQoe3Jlc291cmNlVGVtcGxhdGVzOncoZnYpfSksUmE9c2UuZXh0ZW5kKHt1cmk6cCgpfSksX3Y9UmEsJHY9Ry5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvcmVhZCIpLHBhcmFtczpfdn0pLHRtPVguZXh0ZW5kKHtjb250ZW50czp3KGooW1hkLFlkXSkpfSksYnY9bGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOnVlLm9wdGlvbmFsKCl9KSx5dj1SYSxrdj1HLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9zdWJzY3JpYmUiKSxwYXJhbXM6eXZ9KSxTdj1SYSx3dj1HLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy91bnN1YnNjcmliZSIpLHBhcmFtczpTdn0pLEl2PXVlLmV4dGVuZCh7dXJpOnAoKX0pLHp2PWxlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3VwZGF0ZWQiKSxwYXJhbXM6SXZ9KSx4dj1mKHtuYW1lOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSkscmVxdWlyZWQ6QShEKCkpfSksVHY9Zih7Li4uQmUuc2hhcGUsLi4udm4uc2hhcGUsZGVzY3JpcHRpb246QShwKCkpLGFyZ3VtZW50czpBKHcoeHYpKSxfbWV0YTpBKFcoe30pKX0pLGp2PWhuLmV4dGVuZCh7bWV0aG9kOm0oInByb21wdHMvbGlzdCIpfSksVXY9X24uZXh0ZW5kKHtwcm9tcHRzOncoVHYpfSksUHY9c2UuZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCkscCgpKS5vcHRpb25hbCgpfSksT3Y9Ry5leHRlbmQoe21ldGhvZDptKCJwcm9tcHRzL2dldCIpLHBhcmFtczpQdn0pLENhPWYoe3R5cGU6bSgidGV4dCIpLHRleHQ6cCgpLGFubm90YXRpb25zOmx0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksQWE9Zih7dHlwZTptKCJpbWFnZSIpLGRhdGE6WmEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOmx0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksTGE9Zih7dHlwZTptKCJhdWRpbyIpLGRhdGE6WmEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOmx0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksRHY9Zih7dHlwZTptKCJ0b29sX3VzZSIpLG5hbWU6cCgpLGlkOnAoKSxpbnB1dDpVKHAoKSxPKCkpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLG5tPWYoe3R5cGU6bSgicmVzb3VyY2UiKSxyZXNvdXJjZTpqKFtYZCxZZF0pLGFubm90YXRpb25zOmx0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSkscm09UWQuZXh0ZW5kKHt0eXBlOm0oInJlc291cmNlX2xpbmsiKX0pLHluPWooW0NhLEFhLExhLHJtLG5tXSksTnY9Zih7cm9sZTpibixjb250ZW50OnlufSksRXY9WC5leHRlbmQoe2Rlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1lc3NhZ2VzOncoTnYpfSksWnY9bGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9wcm9tcHRzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczp1ZS5vcHRpb25hbCgpfSksUnY9Zih7dGl0bGU6cCgpLm9wdGlvbmFsKCkscmVhZE9ubHlIaW50OkQoKS5vcHRpb25hbCgpLGRlc3RydWN0aXZlSGludDpEKCkub3B0aW9uYWwoKSxpZGVtcG90ZW50SGludDpEKCkub3B0aW9uYWwoKSxvcGVuV29ybGRIaW50OkQoKS5vcHRpb25hbCgpfSksQ3Y9Zih7dGFza1N1cHBvcnQ6QihbInJlcXVpcmVkIiwib3B0aW9uYWwiLCJmb3JiaWRkZW4iXSkub3B0aW9uYWwoKX0pLE1hPWYoey4uLkJlLnNoYXBlLC4uLnZuLnNoYXBlLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGlucHV0U2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxKKS5vcHRpb25hbCgpLHJlcXVpcmVkOncocCgpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoTygpKSxvdXRwdXRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLEopLm9wdGlvbmFsKCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KS5jYXRjaGFsbChPKCkpLm9wdGlvbmFsKCksYW5ub3RhdGlvbnM6UnYub3B0aW9uYWwoKSxleGVjdXRpb246Q3Yub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxpbT1obi5leHRlbmQoe21ldGhvZDptKCJ0b29scy9saXN0Iil9KSxBdj1fbi5leHRlbmQoe3Rvb2xzOncoTWEpfSksSnI9WC5leHRlbmQoe2NvbnRlbnQ6dyh5bikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6VShwKCksTygpKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCl9KTtKci5vcihYLmV4dGVuZCh7dG9vbFJlc3VsdDpPKCl9KSk7Y29uc3QgTHY9Zm4uZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCksTygpKS5vcHRpb25hbCgpfSksb209Ry5leHRlbmQoe21ldGhvZDptKCJ0b29scy9jYWxsIikscGFyYW1zOkx2fSksTXY9bGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6dWUub3B0aW9uYWwoKX0pO2Yoe2F1dG9SZWZyZXNoOkQoKS5kZWZhdWx0KCEwKSxkZWJvdW5jZU1zOnooKS5pbnQoKS5ub25uZWdhdGl2ZSgpLmRlZmF1bHQoMzAwKX0pO2NvbnN0IGFtPUIoWyJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJjcml0aWNhbCIsImFsZXJ0IiwiZW1lcmdlbmN5Il0pLHF2PXNlLmV4dGVuZCh7bGV2ZWw6YW19KSxGdj1HLmV4dGVuZCh7bWV0aG9kOm0oImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6cXZ9KSxKdj11ZS5leHRlbmQoe2xldmVsOmFtLGxvZ2dlcjpwKCkub3B0aW9uYWwoKSxkYXRhOk8oKX0pLEh2PWxlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpKdn0pLFZ2PWYoe25hbWU6cCgpLm9wdGlvbmFsKCl9KSxLdj1mKHtoaW50czp3KFZ2KS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6eigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksV3Y9Zih7bW9kZTpCKFsiYXV0byIsInJlcXVpcmVkIiwibm9uZSJdKS5vcHRpb25hbCgpfSksQnY9Zih7dHlwZTptKCJ0b29sX3Jlc3VsdCIpLHRvb2xVc2VJZDpwKCkuZGVzY3JpYmUoIlRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdG9vbCBjYWxsLiIpLGNvbnRlbnQ6dyh5bikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkubG9vc2UoKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksR3Y9dW4oInR5cGUiLFtDYSxBYSxMYV0pLE9uPXVuKCJ0eXBlIixbQ2EsQWEsTGEsRHYsQnZdKSxYdj1mKHtyb2xlOmJuLGNvbnRlbnQ6aihbT24sdyhPbildKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxZdj1mbi5leHRlbmQoe21lc3NhZ2VzOncoWHYpLG1vZGVsUHJlZmVyZW5jZXM6S3Yub3B0aW9uYWwoKSxzeXN0ZW1Qcm9tcHQ6cCgpLm9wdGlvbmFsKCksaW5jbHVkZUNvbnRleHQ6QihbIm5vbmUiLCJ0aGlzU2VydmVyIiwiYWxsU2VydmVycyJdKS5vcHRpb25hbCgpLHRlbXBlcmF0dXJlOnooKS5vcHRpb25hbCgpLG1heFRva2Vuczp6KCkuaW50KCksc3RvcFNlcXVlbmNlczp3KHAoKSkub3B0aW9uYWwoKSxtZXRhZGF0YTpKLm9wdGlvbmFsKCksdG9vbHM6dyhNYSkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOld2Lm9wdGlvbmFsKCl9KSxRdj1HLmV4dGVuZCh7bWV0aG9kOm0oInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiKSxwYXJhbXM6WXZ9KSxzbT1YLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShCKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyJdKS5vcihwKCkpKSxyb2xlOmJuLGNvbnRlbnQ6R3Z9KSxjbT1YLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShCKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyIsInRvb2xVc2UiXSkub3IocCgpKSkscm9sZTpibixjb250ZW50OmooW09uLHcoT24pXSl9KSxlaD1mKHt0eXBlOm0oImJvb2xlYW4iKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxkZWZhdWx0OkQoKS5vcHRpb25hbCgpfSksdGg9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtaW5MZW5ndGg6eigpLm9wdGlvbmFsKCksbWF4TGVuZ3RoOnooKS5vcHRpb25hbCgpLGZvcm1hdDpCKFsiZW1haWwiLCJ1cmkiLCJkYXRlIiwiZGF0ZS10aW1lIl0pLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLG5oPWYoe3R5cGU6QihbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluaW11bTp6KCkub3B0aW9uYWwoKSxtYXhpbXVtOnooKS5vcHRpb25hbCgpLGRlZmF1bHQ6eigpLm9wdGlvbmFsKCl9KSxyaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGVudW06dyhwKCkpLGRlZmF1bHQ6cCgpLm9wdGlvbmFsKCl9KSxpaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG9uZU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksb2g9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxlbnVtOncocCgpKSxlbnVtTmFtZXM6dyhwKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLGFoPWooW3JoLGloXSksc2g9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe3R5cGU6bSgic3RyaW5nIiksZW51bTp3KHAoKSl9KSxkZWZhdWx0OncocCgpKS5vcHRpb25hbCgpfSksY2g9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe2FueU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKX0pLGRlZmF1bHQ6dyhwKCkpLm9wdGlvbmFsKCl9KSx1aD1qKFtzaCxjaF0pLGxoPWooW29oLGFoLHVoXSksZGg9aihbbGgsZWgsdGgsbmhdKSxtaD1mbi5leHRlbmQoe21vZGU6bSgiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpwKCkscmVxdWVzdGVkU2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxkaCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KX0pLHBoPWZuLmV4dGVuZCh7bW9kZTptKCJ1cmwiKSxtZXNzYWdlOnAoKSxlbGljaXRhdGlvbklkOnAoKSx1cmw6cCgpLnVybCgpfSksZmg9aihbbWgscGhdKSxnaD1HLmV4dGVuZCh7bWV0aG9kOm0oImVsaWNpdGF0aW9uL2NyZWF0ZSIpLHBhcmFtczpmaH0pLHZoPXVlLmV4dGVuZCh7ZWxpY2l0YXRpb25JZDpwKCl9KSxoaD1sZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2VsaWNpdGF0aW9uL2NvbXBsZXRlIikscGFyYW1zOnZofSksX2g9WC5leHRlbmQoe2FjdGlvbjpCKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OnBuKHQ9PnQ9PT1udWxsP3ZvaWQgMDp0LFUocCgpLGooW3AoKSx6KCksRCgpLHcocCgpKV0pKS5vcHRpb25hbCgpKX0pLCRoPWYoe3R5cGU6bSgicmVmL3Jlc291cmNlIiksdXJpOnAoKX0pLGJoPWYoe3R5cGU6bSgicmVmL3Byb21wdCIpLG5hbWU6cCgpfSkseWg9c2UuZXh0ZW5kKHtyZWY6aihbYmgsJGhdKSxhcmd1bWVudDpmKHtuYW1lOnAoKSx2YWx1ZTpwKCl9KSxjb250ZXh0OmYoe2FyZ3VtZW50czpVKHAoKSxwKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksa2g9Ry5leHRlbmQoe21ldGhvZDptKCJjb21wbGV0aW9uL2NvbXBsZXRlIikscGFyYW1zOnlofSksU2g9WC5leHRlbmQoe2NvbXBsZXRpb246Vyh7dmFsdWVzOncocCgpKS5tYXgoMTAwKSx0b3RhbDpBKHooKS5pbnQoKSksaGFzTW9yZTpBKEQoKSl9KX0pLHdoPWYoe3VyaTpwKCkuc3RhcnRzV2l0aCgiZmlsZTovLyIpLG5hbWU6cCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksSWg9Ry5leHRlbmQoe21ldGhvZDptKCJyb290cy9saXN0IikscGFyYW1zOnNlLm9wdGlvbmFsKCl9KSx6aD1YLmV4dGVuZCh7cm9vdHM6dyh3aCl9KSx4aD1sZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Jvb3RzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczp1ZS5vcHRpb25hbCgpfSk7aihbRnIsaXYsa2gsRnYsT3YsanYsZ3YsdnYsJHYsa3Ysd3Ysb20saW0sVWEsT2EsRGEsRWFdKTtqKFt4YSxUYSxzdix4aCxQbl0pO2ooW3phLHNtLGNtLF9oLHpoLFBhLE5hLGphXSk7aihbRnIsUXYsZ2gsSWgsVWEsT2EsRGEsRWFdKTtqKFt4YSxUYSxIdix6dixidixNdixadixQbixoaF0pO2ooW3phLGF2LFNoLEV2LFV2LGVtLGh2LHRtLEpyLEF2LFBhLE5hLGphXSk7Y2xhc3MgUCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4scixvKXtzdXBlcihgTUNQIGVycm9yICR7bn06ICR7cn1gKSx0aGlzLmNvZGU9bix0aGlzLmRhdGE9byx0aGlzLm5hbWU9Ik1jcEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKG4scixvKXtpZihuPT09Ti5VcmxFbGljaXRhdGlvblJlcXVpcmVkJiZvKXtjb25zdCBlPW87aWYoZS5lbGljaXRhdGlvbnMpcmV0dXJuIG5ldyBUaChlLmVsaWNpdGF0aW9ucyxyKX1yZXR1cm4gbmV3IFAobixyLG8pfX1jbGFzcyBUaCBleHRlbmRzIFB7Y29uc3RydWN0b3IobixyPWBVUkwgZWxpY2l0YXRpb24ke24ubGVuZ3RoPjE/InMiOiIifSByZXF1aXJlZGApe3N1cGVyKE4uVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxyLHtlbGljaXRhdGlvbnM6bn0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiB3ZSh0KXtyZXR1cm4gdD09PSJjb21wbGV0ZWQifHx0PT09ImZhaWxlZCJ8fHQ9PT0iY2FuY2VsbGVkIn1uZXcgU2V0KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODkiKTtmdW5jdGlvbiBicyh0KXtjb25zdCByPVBnKHQpPy5tZXRob2Q7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsIik7Y29uc3Qgbz1PZyhyKTtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBvfWZ1bmN0aW9uIHlzKHQsbil7Y29uc3Qgcj1OZCh0LG4pO2lmKCFyLnN1Y2Nlc3MpdGhyb3cgci5lcnJvcjtyZXR1cm4gci5kYXRhfWNvbnN0IGpoPTZlNDtjbGFzcyBVaHtjb25zdHJ1Y3RvcihuKXt0aGlzLl9vcHRpb25zPW4sdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcih4YSxyPT57dGhpcy5fb25jYW5jZWwocil9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoVGEscj0+e3RoaXMuX29ucHJvZ3Jlc3Mocil9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEZyLHI9Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT1uPy50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT1uPy50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSYmKHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoVWEsYXN5bmMocixvKT0+e2NvbnN0IGU9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighZSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybnsuLi5lfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoT2EsYXN5bmMocixvKT0+e2NvbnN0IGU9YXN5bmMoKT0+e2NvbnN0IGk9ci5wYXJhbXMudGFza0lkO2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2xldCBzO2Zvcig7cz1hd2FpdCB0aGlzLl90YXNrTWVzc2FnZVF1ZXVlLmRlcXVldWUoaSxvLnNlc3Npb25JZCk7KXtpZihzLnR5cGU9PT0icmVzcG9uc2UifHxzLnR5cGU9PT0iZXJyb3IiKXtjb25zdCBjPXMubWVzc2FnZSx1PWMuaWQsbD10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldCh1KTtpZihsKWlmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHUpLHMudHlwZT09PSJyZXNwb25zZSIpbChjKTtlbHNle2NvbnN0IGc9Yyx2PW5ldyBQKGcuZXJyb3IuY29kZSxnLmVycm9yLm1lc3NhZ2UsZy5lcnJvci5kYXRhKTtsKHYpfWVsc2V7Y29uc3QgZz1zLnR5cGU9PT0icmVzcG9uc2UiPyJSZXNwb25zZSI6IkVycm9yIjt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgJHtnfSBoYW5kbGVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHt1fWApKX1jb250aW51ZX1hd2FpdCB0aGlzLl90cmFuc3BvcnQ/LnNlbmQocy5tZXNzYWdlLHtyZWxhdGVkUmVxdWVzdElkOm8ucmVxdWVzdElkfSl9fWNvbnN0IGE9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soaSxvLnNlc3Npb25JZCk7aWYoIWEpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtpfWApO2lmKCF3ZShhLnN0YXR1cykpcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRGb3JUYXNrVXBkYXRlKGksby5zaWduYWwpLGF3YWl0IGUoKTtpZih3ZShhLnN0YXR1cykpe2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2tSZXN1bHQoaSxvLnNlc3Npb25JZCk7cmV0dXJuIHRoaXMuX2NsZWFyVGFza1F1ZXVlKGkpLHsuLi5zLF9tZXRhOnsuLi5zLl9tZXRhLFtJZV06e3Rhc2tJZDppfX19fXJldHVybiBhd2FpdCBlKCl9O3JldHVybiBhd2FpdCBlKCl9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKERhLGFzeW5jKHIsbyk9Pnt0cnl7Y29uc3R7dGFza3M6ZSxuZXh0Q3Vyc29yOml9PWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5saXN0VGFza3Moci5wYXJhbXM/LmN1cnNvcixvLnNlc3Npb25JZCk7cmV0dXJue3Rhc2tzOmUsbmV4dEN1cnNvcjppLF9tZXRhOnt9fX1jYXRjaChlKXt0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoRWEsYXN5bmMocixvKT0+e3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWUpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtyLnBhcmFtcy50YXNrSWR9YCk7aWYod2UoZS5zdGF0dXMpKXRocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcyxgQ2Fubm90IGNhbmNlbCB0YXNrIGluIHRlcm1pbmFsIHN0YXR1czogJHtlLnN0YXR1c31gKTthd2FpdCB0aGlzLl90YXNrU3RvcmUudXBkYXRlVGFza1N0YXR1cyhyLnBhcmFtcy50YXNrSWQsImNhbmNlbGxlZCIsIkNsaWVudCBjYW5jZWxsZWQgdGFzayBleGVjdXRpb24uIixvLnNlc3Npb25JZCksdGhpcy5fY2xlYXJUYXNrUXVldWUoci5wYXJhbXMudGFza0lkKTtjb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7ci5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5pfX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgUD9lOm5ldyBQKE4uSW52YWxpZFJlcXVlc3QsYEZhaWxlZCB0byBjYW5jZWwgdGFzazogJHtlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1gKX19KSl9YXN5bmMgX29uY2FuY2VsKG4pe2lmKCFuLnBhcmFtcy5yZXF1ZXN0SWQpcmV0dXJuO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobi5wYXJhbXMucmVxdWVzdElkKT8uYWJvcnQobi5wYXJhbXMucmVhc29uKX1fc2V0dXBUaW1lb3V0KG4scixvLGUsaT0hMSl7dGhpcy5fdGltZW91dEluZm8uc2V0KG4se3RpbWVvdXRJZDpzZXRUaW1lb3V0KGUsciksc3RhcnRUaW1lOkRhdGUubm93KCksdGltZW91dDpyLG1heFRvdGFsVGltZW91dDpvLHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6aSxvblRpbWVvdXQ6ZX0pfV9yZXNldFRpbWVvdXQobil7Y29uc3Qgcj10aGlzLl90aW1lb3V0SW5mby5nZXQobik7aWYoIXIpcmV0dXJuITE7Y29uc3Qgbz1EYXRlLm5vdygpLXIuc3RhcnRUaW1lO2lmKHIubWF4VG90YWxUaW1lb3V0JiZvPj1yLm1heFRvdGFsVGltZW91dCl0aHJvdyB0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobiksUC5mcm9tRXJyb3IoTi5SZXF1ZXN0VGltZW91dCwiTWF4aW11bSB0b3RhbCB0aW1lb3V0IGV4Y2VlZGVkIix7bWF4VG90YWxUaW1lb3V0OnIubWF4VG90YWxUaW1lb3V0LHRvdGFsRWxhcHNlZDpvfSk7cmV0dXJuIGNsZWFyVGltZW91dChyLnRpbWVvdXRJZCksci50aW1lb3V0SWQ9c2V0VGltZW91dChyLm9uVGltZW91dCxyLnRpbWVvdXQpLCEwfV9jbGVhbnVwVGltZW91dChuKXtjb25zdCByPXRoaXMuX3RpbWVvdXRJbmZvLmdldChuKTtyJiYoY2xlYXJUaW1lb3V0KHIudGltZW91dElkKSx0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobikpfWFzeW5jIGNvbm5lY3Qobil7aWYodGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiQWxyZWFkeSBjb25uZWN0ZWQgdG8gYSB0cmFuc3BvcnQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyB0byBhIG5ldyB0cmFuc3BvcnQsIG9yIHVzZSBhIHNlcGFyYXRlIFByb3RvY29sIGluc3RhbmNlIHBlciBjb25uZWN0aW9uLiIpO3RoaXMuX3RyYW5zcG9ydD1uO2NvbnN0IHI9dGhpcy50cmFuc3BvcnQ/Lm9uY2xvc2U7dGhpcy5fdHJhbnNwb3J0Lm9uY2xvc2U9KCk9PntyPy4oKSx0aGlzLl9vbmNsb3NlKCl9O2NvbnN0IG89dGhpcy50cmFuc3BvcnQ/Lm9uZXJyb3I7dGhpcy5fdHJhbnNwb3J0Lm9uZXJyb3I9aT0+e28/LihpKSx0aGlzLl9vbmVycm9yKGkpfTtjb25zdCBlPXRoaXMuX3RyYW5zcG9ydD8ub25tZXNzYWdlO3RoaXMuX3RyYW5zcG9ydC5vbm1lc3NhZ2U9KGksYSk9PntlPy4oaSxhKSxJbihpKXx8V2coaSk/dGhpcy5fb25yZXNwb25zZShpKTokcyhpKT90aGlzLl9vbnJlcXVlc3QoaSxhKTpLZyhpKT90aGlzLl9vbm5vdGlmaWNhdGlvbihpKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5rbm93biBtZXNzYWdlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoaSl9YCkpfSxhd2FpdCB0aGlzLl90cmFuc3BvcnQuc3RhcnQoKX1fb25jbG9zZSgpe2NvbnN0IG49dGhpcy5fcmVzcG9uc2VIYW5kbGVyczt0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5jbGVhcigpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5jbGVhcigpLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fdGltZW91dEluZm8udmFsdWVzKCkpY2xlYXJUaW1lb3V0KG8udGltZW91dElkKTt0aGlzLl90aW1lb3V0SW5mby5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy52YWx1ZXMoKSlvLmFib3J0KCk7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmNsZWFyKCk7Y29uc3Qgcj1QLmZyb21FcnJvcihOLkNvbm5lY3Rpb25DbG9zZWQsIkNvbm5lY3Rpb24gY2xvc2VkIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2Zvcihjb25zdCBvIG9mIG4udmFsdWVzKCkpbyhyKX1fb25lcnJvcihuKXt0aGlzLm9uZXJyb3I/LihuKX1fb25ub3RpZmljYXRpb24obil7Y29uc3Qgcj10aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtyIT09dm9pZCAwJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5yKG4pKS5jYXRjaChvPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7b31gKSkpfV9vbnJlcXVlc3QobixyKXtjb25zdCBvPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIsZT10aGlzLl90cmFuc3BvcnQsaT1uLnBhcmFtcz8uX21ldGE/LltJZV0/LnRhc2tJZDtpZihvPT09dm9pZCAwKXtjb25zdCBsPXtqc29ucnBjOiIyLjAiLGlkOm4uaWQsZXJyb3I6e2NvZGU6Ti5NZXRob2ROb3RGb3VuZCxtZXNzYWdlOiJNZXRob2Qgbm90IGZvdW5kIn19O2kmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/dGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKGkse3R5cGU6ImVycm9yIixtZXNzYWdlOmwsdGltZXN0YW1wOkRhdGUubm93KCl9LGU/LnNlc3Npb25JZCkuY2F0Y2goZz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBlbnF1ZXVlIGVycm9yIHJlc3BvbnNlOiAke2d9YCkpKTplPy5zZW5kKGwpLmNhdGNoKGc9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBhbiBlcnJvciByZXNwb25zZTogJHtnfWApKSk7cmV0dXJufWNvbnN0IGE9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuc2V0KG4uaWQsYSk7Y29uc3Qgcz1WZyhuLnBhcmFtcyk/bi5wYXJhbXMudGFzazp2b2lkIDAsYz10aGlzLl90YXNrU3RvcmU/dGhpcy5yZXF1ZXN0VGFza1N0b3JlKG4sZT8uc2Vzc2lvbklkKTp2b2lkIDAsdT17c2lnbmFsOmEuc2lnbmFsLHNlc3Npb25JZDplPy5zZXNzaW9uSWQsX21ldGE6bi5wYXJhbXM/Ll9tZXRhLHNlbmROb3RpZmljYXRpb246YXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3JlbGF0ZWRSZXF1ZXN0SWQ6bi5pZH07aSYmKGcucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24obCxnKX0sc2VuZFJlcXVlc3Q6YXN5bmMobCxnLHYpPT57aWYoYS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgUChOLkNvbm5lY3Rpb25DbG9zZWQsIlJlcXVlc3Qgd2FzIGNhbmNlbGxlZCIpO2NvbnN0IF89ey4uLnYscmVsYXRlZFJlcXVlc3RJZDpuLmlkfTtpJiYhXy5yZWxhdGVkVGFzayYmKF8ucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSk7Y29uc3QgeT1fLnJlbGF0ZWRUYXNrPy50YXNrSWQ/P2k7cmV0dXJuIHkmJmMmJmF3YWl0IGMudXBkYXRlVGFza1N0YXR1cyh5LCJpbnB1dF9yZXF1aXJlZCIpLGF3YWl0IHRoaXMucmVxdWVzdChsLGcsXyl9LGF1dGhJbmZvOnI/LmF1dGhJbmZvLHJlcXVlc3RJZDpuLmlkLHJlcXVlc3RJbmZvOnI/LnJlcXVlc3RJbmZvLHRhc2tJZDppLHRhc2tTdG9yZTpjLHRhc2tSZXF1ZXN0ZWRUdGw6cz8udHRsLGNsb3NlU1NFU3RyZWFtOnI/LmNsb3NlU1NFU3RyZWFtLGNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbTpyPy5jbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW19O1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntzJiZ0aGlzLmFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eShuLm1ldGhvZCl9KS50aGVuKCgpPT5vKG4sdSkpLnRoZW4oYXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3Jlc3VsdDpsLGpzb25ycGM6IjIuMCIsaWQ6bi5pZH07aSYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoaSx7dHlwZToicmVzcG9uc2UiLG1lc3NhZ2U6Zyx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sZT8uc2Vzc2lvbklkKTphd2FpdCBlPy5zZW5kKGcpfSxhc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17anNvbnJwYzoiMi4wIixpZDpuLmlkLGVycm9yOntjb2RlOk51bWJlci5pc1NhZmVJbnRlZ2VyKGwuY29kZSk/bC5jb2RlOk4uSW50ZXJuYWxFcnJvcixtZXNzYWdlOmwubWVzc2FnZT8/IkludGVybmFsIGVycm9yIiwuLi5sLmRhdGEhPT12b2lkIDAmJntkYXRhOmwuZGF0YX19fTtpJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShpLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpnLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxlPy5zZXNzaW9uSWQpOmF3YWl0IGU/LnNlbmQoZyl9KS5jYXRjaChsPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7bH1gKSkpLmZpbmFsbHkoKCk9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KG4uaWQpPT09YSYmdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmRlbGV0ZShuLmlkKX0pfV9vbnByb2dyZXNzKG4pe2NvbnN0e3Byb2dyZXNzVG9rZW46ciwuLi5vfT1uLnBhcmFtcyxlPU51bWJlcihyKSxpPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KGUpO2lmKCFpKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkobil9YCkpO3JldHVybn1jb25zdCBhPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KGUpLHM9dGhpcy5fdGltZW91dEluZm8uZ2V0KGUpO2lmKHMmJmEmJnMucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KGUpfWNhdGNoKGMpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX2NsZWFudXBUaW1lb3V0KGUpLGEoYyk7cmV0dXJufWkobyl9X29ucmVzcG9uc2Uobil7Y29uc3Qgcj1OdW1iZXIobi5pZCksbz10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChyKTtpZihvKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShyKSxJbihuKSlvKG4pO2Vsc2V7Y29uc3QgYT1uZXcgUChuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7byhhKX1yZXR1cm59Y29uc3QgZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChyKTtpZihlPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSByZXNwb25zZSBmb3IgYW4gdW5rbm93biBtZXNzYWdlIElEOiAke0pTT04uc3RyaW5naWZ5KG4pfWApKTtyZXR1cm59dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUociksdGhpcy5fY2xlYW51cFRpbWVvdXQocik7bGV0IGk9ITE7aWYoSW4obikmJm4ucmVzdWx0JiZ0eXBlb2Ygbi5yZXN1bHQ9PSJvYmplY3QiKXtjb25zdCBhPW4ucmVzdWx0O2lmKGEudGFzayYmdHlwZW9mIGEudGFzaz09Im9iamVjdCIpe2NvbnN0IHM9YS50YXNrO3R5cGVvZiBzLnRhc2tJZD09InN0cmluZyImJihpPSEwLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5zZXQocy50YXNrSWQscikpfX1pZihpfHx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShyKSxJbihuKSllKG4pO2Vsc2V7Y29uc3QgYT1QLmZyb21FcnJvcihuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7ZShhKX19Z2V0IHRyYW5zcG9ydCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnR9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLl90cmFuc3BvcnQ/LmNsb3NlKCl9YXN5bmMqcmVxdWVzdFN0cmVhbShuLHIsbyl7Y29uc3R7dGFzazplfT1vPz97fTtpZighZSl7dHJ5e3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMucmVxdWVzdChuLHIsbyl9fWNhdGNoKGEpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjphIGluc3RhbmNlb2YgUD9hOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixTdHJpbmcoYSkpfX1yZXR1cm59bGV0IGk7dHJ5e2NvbnN0IGE9YXdhaXQgdGhpcy5yZXF1ZXN0KG4samEsbyk7aWYoYS50YXNrKWk9YS50YXNrLnRhc2tJZCx5aWVsZHt0eXBlOiJ0YXNrQ3JlYXRlZCIsdGFzazphLnRhc2t9O2Vsc2UgdGhyb3cgbmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNyZWF0aW9uIGRpZCBub3QgcmV0dXJuIGEgdGFzayIpO2Zvcig7Oyl7Y29uc3Qgcz1hd2FpdCB0aGlzLmdldFRhc2soe3Rhc2tJZDppfSxvKTtpZih5aWVsZHt0eXBlOiJ0YXNrU3RhdHVzIix0YXNrOnN9LHdlKHMuc3RhdHVzKSl7cy5zdGF0dXM9PT0iY29tcGxldGVkIj95aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTpzLnN0YXR1cz09PSJmYWlsZWQiP3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSBmYWlsZWRgKX06cy5zdGF0dXM9PT0iY2FuY2VsbGVkIiYmKHlpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSB3YXMgY2FuY2VsbGVkYCl9KTtyZXR1cm59aWYocy5zdGF0dXM9PT0iaW5wdXRfcmVxdWlyZWQiKXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTtyZXR1cm59Y29uc3QgYz1zLnBvbGxJbnRlcnZhbD8/dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzthd2FpdCBuZXcgUHJvbWlzZSh1PT5zZXRUaW1lb3V0KHUsYykpLG8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKX19Y2F0Y2goYSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmEgaW5zdGFuY2VvZiBQP2E6bmV3IFAoTi5JbnRlcm5hbEVycm9yLFN0cmluZyhhKSl9fX1yZXF1ZXN0KG4scixvKXtjb25zdHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YSx0YXNrOnMscmVsYXRlZFRhc2s6Y309bz8/e307cmV0dXJuIG5ldyBQcm9taXNlKCh1LGwpPT57Y29uc3QgZz1WPT57bChWKX07aWYoIXRoaXMuX3RyYW5zcG9ydCl7ZyhuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKSk7cmV0dXJufWlmKHRoaXMuX29wdGlvbnM/LmVuZm9yY2VTdHJpY3RDYXBhYmlsaXRpZXM9PT0hMCl0cnl7dGhpcy5hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKG4ubWV0aG9kKSxzJiZ0aGlzLmFzc2VydFRhc2tDYXBhYmlsaXR5KG4ubWV0aG9kKX1jYXRjaChWKXtnKFYpO3JldHVybn1vPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCk7Y29uc3Qgdj10aGlzLl9yZXF1ZXN0TWVzc2FnZUlkKyssXz17Li4ubixqc29ucnBjOiIyLjAiLGlkOnZ9O28/Lm9ucHJvZ3Jlc3MmJih0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLnNldCh2LG8ub25wcm9ncmVzcyksXy5wYXJhbXM9ey4uLm4ucGFyYW1zLF9tZXRhOnsuLi5uLnBhcmFtcz8uX21ldGF8fHt9LHByb2dyZXNzVG9rZW46dn19KSxzJiYoXy5wYXJhbXM9ey4uLl8ucGFyYW1zLHRhc2s6c30pLGMmJihfLnBhcmFtcz17Li4uXy5wYXJhbXMsX21ldGE6ey4uLl8ucGFyYW1zPy5fbWV0YXx8e30sW0llXTpjfX0pO2NvbnN0IHk9Vj0+e3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX2NsZWFudXBUaW1lb3V0KHYpLHRoaXMuX3RyYW5zcG9ydD8uc2VuZCh7anNvbnJwYzoiMi4wIixtZXRob2Q6Im5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIixwYXJhbXM6e3JlcXVlc3RJZDp2LHJlYXNvbjpTdHJpbmcoVil9fSx7cmVsYXRlZFJlcXVlc3RJZDplLHJlc3VtcHRpb25Ub2tlbjppLG9ucmVzdW1wdGlvbnRva2VuOmF9KS5jYXRjaChDPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke0N9YCkpKTtjb25zdCBGPVYgaW5zdGFuY2VvZiBQP1Y6bmV3IFAoTi5SZXF1ZXN0VGltZW91dCxTdHJpbmcoVikpO2woRil9O3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuc2V0KHYsVj0+e2lmKCFvPy5zaWduYWw/LmFib3J0ZWQpe2lmKFYgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbChWKTt0cnl7Y29uc3QgRj1OZChyLFYucmVzdWx0KTtGLnN1Y2Nlc3M/dShGLmRhdGEpOmwoRi5lcnJvcil9Y2F0Y2goRil7bChGKX19fSksbz8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9Pnt5KG8/LnNpZ25hbD8ucmVhc29uKX0pO2NvbnN0IHE9bz8udGltZW91dD8/amgsUj0oKT0+eShQLmZyb21FcnJvcihOLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6cX0pKTt0aGlzLl9zZXR1cFRpbWVvdXQodixxLG8/Lm1heFRvdGFsVGltZW91dCxSLG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCBaZT1jPy50YXNrSWQ7aWYoWmUpe2NvbnN0IFY9Rj0+e2NvbnN0IEM9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQodik7Qz9DKEYpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNwb25zZSBoYW5kbGVyIG1pc3NpbmcgZm9yIHNpZGUtY2hhbm5lbGVkIHJlcXVlc3QgJHt2fWApKX07dGhpcy5fcmVxdWVzdFJlc29sdmVycy5zZXQodixWKSx0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoWmUse3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6Xyx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKEY9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKEYpfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZChfLHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKFY9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKFYpfSl9KX1hc3luYyBnZXRUYXNrKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczpufSxQYSxyKX1hc3luYyBnZXRUYXNrUmVzdWx0KG4scixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOm59LHIsbyl9YXN5bmMgbGlzdFRhc2tzKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6bn0sTmEscil9YXN5bmMgY2FuY2VsVGFzayhuLHIpe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6bn0scHYscil9YXN5bmMgbm90aWZpY2F0aW9uKG4scil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkobi5tZXRob2QpO2NvbnN0IG89cj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBzPXsuLi5uLGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi5uLnBhcmFtcyxfbWV0YTp7Li4ubi5wYXJhbXM/Ll9tZXRhfHx7fSxbSWVdOnIucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTpzLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXMobi5tZXRob2QpJiYhbi5wYXJhbXMmJiFyPy5yZWxhdGVkUmVxdWVzdElkJiYhcj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyhuLm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZChuLm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZShuLm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IHM9ey4uLm4sanNvbnJwYzoiMi4wIn07cj8ucmVsYXRlZFRhc2smJihzPXsuLi5zLHBhcmFtczp7Li4ucy5wYXJhbXMsX21ldGE6ey4uLnMucGFyYW1zPy5fbWV0YXx8e30sW0llXTpyLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQocyxyKS5jYXRjaChjPT50aGlzLl9vbmVycm9yKGMpKX0pO3JldHVybn1sZXQgYT17Li4ubixqc29ucnBjOiIyLjAifTtyPy5yZWxhdGVkVGFzayYmKGE9ey4uLmEscGFyYW1zOnsuLi5hLnBhcmFtcyxfbWV0YTp7Li4uYS5wYXJhbXM/Ll9tZXRhfHx7fSxbSWVdOnIucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGEscil9c2V0UmVxdWVzdEhhbmRsZXIobixyKXtjb25zdCBvPWJzKG4pO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywoZSxpKT0+e2NvbnN0IGE9eXMobixlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIoYSxpKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcihuKXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKG4pfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKG4pe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXMobikpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHtufSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKXtjb25zdCBvPWJzKG4pO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLGU9Pntjb25zdCBpPXlzKG4sZSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKGkpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIobil7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKG4pfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihuKXtjb25zdCByPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQobik7ciE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHIpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUobikpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UobixyLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3QgZT10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZShuLHIsbyxlKX1hc3luYyBfY2xlYXJUYXNrUXVldWUobixyKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbChuLHIpO2Zvcihjb25zdCBlIG9mIG8paWYoZS50eXBlPT09InJlcXVlc3QiJiYkcyhlLm1lc3NhZ2UpKXtjb25zdCBpPWUubWVzc2FnZS5pZCxhPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KGkpO2E/KGEobmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWQiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUoaSkpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7aX0gZHVyaW5nIHRhc2sgJHtufSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKG4scil7bGV0IG89dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzt0cnl7Y29uc3QgZT1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2sobik7ZT8ucG9sbEludGVydmFsJiYobz1lLnBvbGxJbnRlcnZhbCl9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgoZSxpKT0+e2lmKHIuYWJvcnRlZCl7aShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKTtyZXR1cm59Y29uc3QgYT1zZXRUaW1lb3V0KGUsbyk7ci5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntjbGVhclRpbWVvdXQoYSksaShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUobixyKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIGU9PntpZighbil0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKGUsbi5pZCx7bWV0aG9kOm4ubWV0aG9kLHBhcmFtczpuLnBhcmFtc30scil9LGdldFRhc2s6YXN5bmMgZT0+e2NvbnN0IGk9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm4gaX0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKGUsaSxhKT0+e2F3YWl0IG8uc3RvcmVUYXNrUmVzdWx0KGUsaSxhLHIpO2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYocyl7Y29uc3QgYz1Qbi5wYXJzZSh7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1cyIscGFyYW1zOnN9KTthd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihjKSx3ZShzLnN0YXR1cykmJnRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKGUpfX0sZ2V0VGFza1Jlc3VsdDplPT5vLmdldFRhc2tSZXN1bHQoZSxyKSx1cGRhdGVUYXNrU3RhdHVzOmFzeW5jKGUsaSxhKT0+e2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIXMpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrICIke2V9IiBub3QgZm91bmQgLSBpdCBtYXkgaGF2ZSBiZWVuIGNsZWFuZWQgdXBgKTtpZih3ZShzLnN0YXR1cykpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7ZX0iIGZyb20gdGVybWluYWwgc3RhdHVzICIke3Muc3RhdHVzfSIgdG8gIiR7aX0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMoZSxpLGEscik7Y29uc3QgYz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZihjKXtjb25zdCB1PVBuLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6Y30pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHUpLHdlKGMuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoZSl9fSxsaXN0VGFza3M6ZT0+by5saXN0VGFza3MoZSxyKX19fWZ1bmN0aW9uIGtzKHQpe3JldHVybiB0IT09bnVsbCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheSh0KX1mdW5jdGlvbiBQaCh0LG4pe2NvbnN0IHI9ey4uLnR9O2Zvcihjb25zdCBvIGluIG4pe2NvbnN0IGU9byxpPW5bZV07aWYoaT09PXZvaWQgMCljb250aW51ZTtjb25zdCBhPXJbZV07a3MoYSkmJmtzKGkpP3JbZV09ey4uLmEsLi4uaX06cltlXT1pfXJldHVybiByfSh0PT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eSh0LHtnZXQ6KG4scik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTpuKVtyXX0pOnQpKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJyt0KyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIE9oIGV4dGVuZHMgVWh7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2gobixyKXt9X2Vuc3VyZUV2ZW50U2xvdChuKXtsZXQgcj10aGlzLl9ldmVudFNsb3RzLmdldChuKTtpZighcil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbbl07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKG4pfWApO3I9e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQobixyKTtsZXQgZT1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQoZSk7bGV0IGk9cjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8sYT0+e2xldCBzPWEucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKG4scyksaS5vbkhhbmRsZXI/LihzKTtmb3IobGV0IGMgb2ZbLi4uaS5saXN0ZW5lcnNdKWMocyl9KX1yZXR1cm4gcn1zZXRFdmVudEhhbmRsZXIobixyKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3Qobik7by5vbkhhbmRsZXImJnImJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKG4pfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcobil9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPXJ9Z2V0RXZlbnRIYW5kbGVyKG4pe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldChuKT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIobixyKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QobikubGlzdGVuZXJzLnB1c2gocil9cmVtb3ZlRXZlbnRMaXN0ZW5lcihuLHIpe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pO2lmKCFvKXJldHVybjtsZXQgZT1vLmxpc3RlbmVycy5pbmRleE9mKHIpO2UhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKGUsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KG4scik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4sInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIobixyKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0obixyKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobiwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZChuLHIsbyl7ciYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7bn0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPShuLHIpPT57bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKG4scil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4scil7bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtyfSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIERoPSIyMDI2LTAxLTI2IixOaD0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIEVoe2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3RvcihuPXdpbmRvdy5wYXJlbnQscil7dGhpcy5ldmVudFRhcmdldD1uLHRoaXMuZXZlbnRTb3VyY2U9cix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYociYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgZT1CZy5zYWZlUGFyc2Uoby5kYXRhKTtlLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixlLmRhdGEpLHRoaXMub25tZXNzYWdlPy4oZS5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK2UuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQobixyKXtuLm1ldGhvZCE9PU5oJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLG4pLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UobiwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgWmg9aihbbSgibGlnaHQiKSxtKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIiksX3Q9aihbbSgiaW5saW5lIiksbSgiZnVsbHNjcmVlbiIpLG0oInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLFJoPWooW20oIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxtKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksbSgiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLG0oIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksbSgiLS1jb2xvci10ZXh0LWdob3N0IiksbSgiLS1jb2xvci10ZXh0LWluZm8iKSxtKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksbSgiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxtKCItLWNvbG9yLXRleHQtd2FybmluZyIpLG0oIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxtKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxtKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxtKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLG0oIi0tY29sb3ItYm9yZGVyLWluZm8iKSxtKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxtKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksbSgiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLG0oIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksbSgiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxtKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksbSgiLS1jb2xvci1yaW5nLWludmVyc2UiKSxtKCItLWNvbG9yLXJpbmctaW5mbyIpLG0oIi0tY29sb3ItcmluZy1kYW5nZXIiKSxtKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLG0oIi0tY29sb3ItcmluZy13YXJuaW5nIiksbSgiLS1mb250LXNhbnMiKSxtKCItLWZvbnQtbW9ubyIpLG0oIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksbSgiLS1mb250LXdlaWdodC1tZWRpdW0iKSxtKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksbSgiLS1mb250LXdlaWdodC1ib2xkIiksbSgiLS1mb250LXRleHQteHMtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXNtLXNpemUiKSxtKCItLWZvbnQtdGV4dC1tZC1zaXplIiksbSgiLS1mb250LXRleHQtbGctc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksbSgiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksbSgiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLG0oIi0tYm9yZGVyLXJhZGl1cy14cyIpLG0oIi0tYm9yZGVyLXJhZGl1cy1zbSIpLG0oIi0tYm9yZGVyLXJhZGl1cy1tZCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1sZyIpLG0oIi0tYm9yZGVyLXJhZGl1cy14bCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksbSgiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLG0oIi0tc2hhZG93LWhhaXJsaW5lIiksbSgiLS1zaGFkb3ctc20iKSxtKCItLXNoYWRvdy1tZCIpLG0oIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLENoPVUoUmguZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksaihbcCgpLFZlKCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7Zih7bWV0aG9kOm0oInVpL29wZW4tbGluayIpLHBhcmFtczpmKHt1cmw6cCgpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIEFoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLExoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxNaD1mKHtpc0Vycm9yOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOmYoe30pfSk7dmFyIHFhPWYoe2Nvbm5lY3REb21haW5zOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLEZhPWYoe2NhbWVyYTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOmYoe3dpZHRoOnooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDp6KCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBxaD1mKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksRmg9Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLEpoPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOmYoe3JlYXNvbjpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxIaD1mKHtmb250czpwKCkub3B0aW9uYWwoKX0pLFZoPWYoe3ZhcmlhYmxlczpDaC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOkhoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxLaD1mKHttZXRob2Q6bSgidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6Zih7fSl9KTtVKHAoKSxPKCkpO3ZhciBTcz1mKHt0ZXh0OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczpmKHt9KS5vcHRpb25hbCgpfSk7dmFyIFdoPWYoe2V4cGVyaW1lbnRhbDpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMgKHN0cnVjdHVyZSBUQkQpLiIpLG9wZW5MaW5rczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OmYoe3Blcm1pc3Npb25zOkZhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpxYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDpTcy5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6U3Mub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzpmKHt0b29sczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxCaD1mKHtleHBlcmltZW50YWw6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIChzdHJ1Y3R1cmUgVEJEKS4iKSx0b29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOncoX3QpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOmYoe30pLm9wdGlvbmFsKCl9KTtmKHtjc3A6cWEub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOkZhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTtmKHttZXRob2Q6bSgidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6Zih7bW9kZTpfdC5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBHaD1mKHttb2RlOl90LmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSxYaD1qKFttKCJtb2RlbCIpLG0oImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO2Yoe3Jlc291cmNlVXJpOnAoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6dyhYaCkub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDpVZSgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6VWUoKS5vcHRpb25hbCgpfSk7Zih7bWltZVR5cGVzOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7Zih7bWV0aG9kOm0oInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6Zih7Y29udGVudHM6dyhqKFtubSxybV0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL21lc3NhZ2UiKSxwYXJhbXM6Zih7cm9sZTptKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50OncoeW4pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6Zih7aHRtbDpwKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpxYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOkZhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIFloPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOkpyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksdW09Zih7dG9vbEluZm86Zih7aWQ6Z24ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOk1hLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOlpoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6Vmgub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOl90Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6dyhfdCkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOmooW2Yoe2hlaWdodDp6KCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksZih7bWF4SGVpZ2h0OmooW3ooKSxWZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKGooW2Yoe3dpZHRoOnooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLGYoe21heFdpZHRoOmooW3ooKSxWZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06aihbbSgid2ViIiksbSgiZGVza3RvcCIpLG0oIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczpmKHt0b3VjaDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czpmKHt0b3A6eigpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDp6KCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOnooKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDp6KCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLFFoPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOnVtLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO2Yoe21ldGhvZDptKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczpmKHtjb250ZW50OncoeW4pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpVKHAoKSxPKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOmYoe2FwcEluZm86cXIuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOkJoLmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpwKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciBlXz1mKHtwcm90b2NvbFZlcnNpb246cCgpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOnFyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6V2guZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6dW0uZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCksdF89e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIHdzKHQsbil7bGV0IHI9dFsifnN0YW5kYXJkIl07aWYoci5qc29uU2NoZW1hKXJldHVybiByLmpzb25TY2hlbWFbbl0odF8pO2lmKHIudmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IGdtKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5GZyksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKHQse2lvOm59KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7ci52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBJcyh0LG4scj0iIil7bGV0IG89YXdhaXQgdFsifnN0YW5kYXJkIl0udmFsaWRhdGUobik7aWYoby5pc3N1ZXMpe2xldCBlPW8uaXNzdWVzLm1hcChpPT57bGV0IGE9aS5wYXRoPy5tYXAocz0+dHlwZW9mIHM9PSJvYmplY3QiP3Mua2V5OnMpLmpvaW4oIi4iKTtyZXR1cm4gYT9gJHthfTogJHtpLm1lc3NhZ2V9YDppLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKHIrZSl9cmV0dXJuIG8udmFsdWV9Y2xhc3MgSmEgZXh0ZW5kcyBPaHtfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKG4pe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gQXBwLiR7bn0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKHIpO2NvbnNvbGUud2FybihgJHtyfS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6cWgsdG9vbGlucHV0cGFydGlhbDpGaCx0b29scmVzdWx0OlloLHRvb2xjYW5jZWxsZWQ6SmgsaG9zdGNvbnRleHRjaGFuZ2VkOlFofTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKG4pe2lmKCFKYS5PTkVfU0hPVF9FVkVOVFMuaGFzKG4pfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKG4pfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZChuKSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gIiR7U3RyaW5nKG4pfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihyKTtjb25zb2xlLndhcm4ocil9c2V0RXZlbnRIYW5kbGVyKG4scil7ciYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5zZXRFdmVudEhhbmRsZXIobixyKX1hZGRFdmVudExpc3RlbmVyKG4scil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5hZGRFdmVudExpc3RlbmVyKG4scil9b25FdmVudERpc3BhdGNoKG4scil7bj09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLnJ9KX1jb25zdHJ1Y3RvcihuLHI9e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89bix0aGlzLl9jYXBhYmlsaXRpZXM9cix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8SCh7aml0bGVzczohMH0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoRnIsZT0+KGNvbnNvbGUubG9nKCJSZWNlaXZlZCBwaW5nOiIsZS5wYXJhbXMpLHt9KSksdGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdm9pZCAwKX1yZWdpc3RlckNhcGFiaWxpdGllcyhuKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGNhcGFiaWxpdGllcyBhZnRlciB0cmFuc3BvcnQgaXMgZXN0YWJsaXNoZWQiKTt0aGlzLl9jYXBhYmlsaXRpZXM9UGgodGhpcy5fY2FwYWJpbGl0aWVzLG4pfXJlZ2lzdGVyVG9vbChuLHIsbyl7aWYodGhpcy5fcmVnaXN0ZXJlZFRvb2xzW25dKXRocm93IEVycm9yKGBUb29sICR7bn0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IGU9dGhpcyxpPSgpPT57ZS5faW5pdGlhbGl6ZWRTZW50JiZlLl9jYXBhYmlsaXRpZXMudG9vbHM/Lmxpc3RDaGFuZ2VkJiZlLnNlbmRUb29sTGlzdENoYW5nZWQoKX0sYT1yLmlucHV0U2NoZW1hIT09dm9pZCAwLHM9e3RpdGxlOnIudGl0bGUsZGVzY3JpcHRpb246ci5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTpyLmlucHV0U2NoZW1hLG91dHB1dFNjaGVtYTpyLm91dHB1dFNjaGVtYSxhbm5vdGF0aW9uczpyLmFubm90YXRpb25zLF9tZXRhOnIuX21ldGEsZW5hYmxlZDohMCxlbmFibGUoKXt0aGlzLmVuYWJsZWQ9ITAsaSgpfSxkaXNhYmxlKCl7dGhpcy5lbmFibGVkPSExLGkoKX0sdXBkYXRlKGMpe09iamVjdC5hc3NpZ24odGhpcyxjKSxpKCl9LHJlbW92ZSgpe2UuX3JlZ2lzdGVyZWRUb29sc1tuXT09PXMmJihkZWxldGUgZS5fcmVnaXN0ZXJlZFRvb2xzW25dLGkoKSl9LGhhbmRsZXI6YXN5bmMoYyx1KT0+e2lmKCFzLmVuYWJsZWQpdGhyb3cgRXJyb3IoYFRvb2wgJHtufSBpcyBkaXNhYmxlZGApO2xldCBsO2lmKGEpe2xldCBnPXMuaW5wdXRTY2hlbWEsdj1nP2F3YWl0IElzKGcsYz8/e30sYEludmFsaWQgaW5wdXQgZm9yIHRvb2wgJHtufTogYCk6Yz8/e307bD1hd2FpdCBvKHYsdSl9ZWxzZSBsPWF3YWl0IG8odSk7cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYhbC5pc0Vycm9yJiYobC5zdHJ1Y3R1cmVkQ29udGVudD1hd2FpdCBJcyhzLm91dHB1dFNjaGVtYSxsLnN0cnVjdHVyZWRDb250ZW50LGBJbnZhbGlkIG91dHB1dCBmb3IgdG9vbCAke259OiBgKSksbH19O3JldHVybiB0aGlzLl9yZWdpc3RlcmVkVG9vbHNbbl09cywhdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzJiYhdGhpcy50cmFuc3BvcnQmJnRoaXMucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Rvb2xzOntsaXN0Q2hhbmdlZDohMH19KSx0aGlzLmVuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCksaSgpLHN9X3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSExO2Vuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCl7dGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWR8fCh0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMCx0aGlzLm9uY2FsbHRvb2w9YXN5bmMobixyKT0+e2xldCBvPXRoaXMuX3JlZ2lzdGVyZWRUb29sc1tuLm5hbWVdO2lmKCFvKXRocm93IEVycm9yKGBUb29sICR7bi5uYW1lfSBub3QgZm91bmRgKTtyZXR1cm4gby5oYW5kbGVyKG4uYXJndW1lbnRzLHIpfSx0aGlzLm9ubGlzdHRvb2xzPWFzeW5jKG4scik9Pih7dG9vbHM6YXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFRvb2xzKS5maWx0ZXIoKFtvLGVdKT0+ZS5lbmFibGVkKS5tYXAoYXN5bmMoW28sZV0pPT57bGV0IGk9e25hbWU6byx0aXRsZTplLnRpdGxlLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6ZS5pbnB1dFNjaGVtYT9hd2FpdCB3cyhlLmlucHV0U2NoZW1hLCJpbnB1dCIpOnt0eXBlOiJvYmplY3QiLHByb3BlcnRpZXM6e319fTtyZXR1cm4gZS5vdXRwdXRTY2hlbWEmJihpLm91dHB1dFNjaGVtYT1hd2FpdCB3cyhlLm91dHB1dFNjaGVtYSwib3V0cHV0IikpLGUuYW5ub3RhdGlvbnMmJihpLmFubm90YXRpb25zPWUuYW5ub3RhdGlvbnMpLGUuX21ldGEmJihpLl9tZXRhPWUuX21ldGEpLGl9KSl9KSl9YXN5bmMgc2VuZFRvb2xMaXN0Q2hhbmdlZChuPXt9KXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZFRvb2xMaXN0Q2hhbmdlZCIpLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIixwYXJhbXM6bn0pfWdldEhvc3RDYXBhYmlsaXRpZXMoKXtyZXR1cm4gdGhpcy5faG9zdENhcGFiaWxpdGllc31nZXRIb3N0VmVyc2lvbigpe3JldHVybiB0aGlzLl9ob3N0SW5mb31nZXRIb3N0Q29udGV4dCgpe3JldHVybiB0aGlzLl9ob3N0Q29udGV4dH1nZXQgb250b29saW5wdXQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIpfXNldCBvbnRvb2xpbnB1dChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0IixuKX1nZXQgb250b29saW5wdXRwYXJ0aWFsKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIil9c2V0IG9udG9vbGlucHV0cGFydGlhbChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIsbil9Z2V0IG9udG9vbHJlc3VsdCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIpfXNldCBvbnRvb2xyZXN1bHQobil7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiLG4pfWdldCBvbnRvb2xjYW5jZWxsZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiKX1zZXQgb250b29sY2FuY2VsbGVkKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIixuKX1nZXQgb25ob3N0Y29udGV4dGNoYW5nZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIpfXNldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIixuKX1fb250ZWFyZG93bjtnZXQgb250ZWFyZG93bigpe3JldHVybiB0aGlzLl9vbnRlYXJkb3dufXNldCBvbnRlYXJkb3duKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib250ZWFyZG93biIsdGhpcy5fb250ZWFyZG93bixuKSx0aGlzLl9vbnRlYXJkb3duPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoS2gsKHIsbyk9PntpZighdGhpcy5fb250ZWFyZG93bil0aHJvdyBFcnJvcigiTm8gb250ZWFyZG93biBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbnRlYXJkb3duKHIucGFyYW1zLG8pfSl9X29uY2FsbHRvb2w7Z2V0IG9uY2FsbHRvb2woKXtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbH1zZXQgb25jYWxsdG9vbChuKXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9uY2FsbHRvb2wiLHRoaXMuX29uY2FsbHRvb2wsbiksdGhpcy5fb25jYWxsdG9vbD1uLHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKG9tLChyLG8pPT57aWYoIXRoaXMuX29uY2FsbHRvb2wpdGhyb3cgRXJyb3IoIk5vIG9uY2FsbHRvb2wgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbChyLnBhcmFtcyxvKX0pfV9vbmxpc3R0b29scztnZXQgb25saXN0dG9vbHMoKXtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHN9c2V0IG9ubGlzdHRvb2xzKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25saXN0dG9vbHMiLHRoaXMuX29ubGlzdHRvb2xzLG4pLHRoaXMuX29ubGlzdHRvb2xzPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoaW0sKHIsbyk9PntpZighdGhpcy5fb25saXN0dG9vbHMpdGhyb3cgRXJyb3IoIk5vIG9ubGlzdHRvb2xzIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzKHIucGFyYW1zLG8pfSl9YXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZChuKXtzd2l0Y2gobil7Y2FzZSJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIjppZighdGhpcy5faG9zdENhcGFiaWxpdGllcz8uc2FtcGxpbmcpdGhyb3cgRXJyb3IoYEhvc3QgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyAocmVxdWlyZWQgZm9yICR7bn0pYCk7YnJlYWt9fWFzc2VydFJlcXVlc3RIYW5kbGVyQ2FwYWJpbGl0eShuKXtzd2l0Y2gobil7Y2FzZSJ0b29scy9jYWxsIjpjYXNlInRvb2xzL2xpc3QiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMpdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHRvb2wgY2FwYWJpbGl0eSAocmVxdWlyZWQgZm9yICR7bn0pYCk7cmV0dXJuO2Nhc2UicGluZyI6Y2FzZSJ1aS9yZXNvdXJjZS10ZWFyZG93biI6cmV0dXJuO2RlZmF1bHQ6dGhyb3cgRXJyb3IoYE5vIGhhbmRsZXIgZm9yIG1ldGhvZCAke259IHJlZ2lzdGVyZWRgKX19YXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eShuKXt9YXNzZXJ0VGFza0NhcGFiaWxpdHkobil7dGhyb3cgRXJyb3IoIlRhc2tzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KG4pe3Rocm93IEVycm9yKCJUYXNrIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXN5bmMgY2FsbFNlcnZlclRvb2wobixyKXtpZih0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY2FsbFNlcnZlclRvb2wiKSx0eXBlb2Ygbj09InN0cmluZyIpdGhyb3cgRXJyb3IoYGNhbGxTZXJ2ZXJUb29sKCkgZXhwZWN0cyBhbiBvYmplY3QgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBidXQgcmVjZWl2ZWQgYSBzdHJpbmcgKCIke259IikuIERpZCB5b3UgbWVhbjogY2FsbFNlcnZlclRvb2woeyBuYW1lOiAiJHtufSIsIGFyZ3VtZW50czogeyAuLi4gfSB9KT9gKTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRvb2xzL2NhbGwiLHBhcmFtczpufSxKcix7b25wcm9ncmVzczooKT0+e30scmVzZXRUaW1lb3V0T25Qcm9ncmVzczohMCwuLi5yfSl9YXN5bmMgcmVhZFNlcnZlclJlc291cmNlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZWFkU2VydmVyUmVzb3VyY2UiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL3JlYWQiLHBhcmFtczpufSx0bSxyKX1hc3luYyBsaXN0U2VydmVyUmVzb3VyY2VzKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJsaXN0U2VydmVyUmVzb3VyY2VzIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9saXN0IixwYXJhbXM6bn0sZW0scil9YXN5bmMgY3JlYXRlU2FtcGxpbmdNZXNzYWdlKG4scil7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNyZWF0ZVNhbXBsaW5nTWVzc2FnZSIpO2xldCBvPW4udG9vbHM/Y206c207cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIixwYXJhbXM6bn0sbyxyKX1zZW5kTWVzc2FnZShuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZE1lc3NhZ2UiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvbWVzc2FnZSIscGFyYW1zOm59LE1oLHIpfXNlbmRMb2cobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvbWVzc2FnZSIscGFyYW1zOm59KX11cGRhdGVNb2RlbENvbnRleHQobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInVwZGF0ZU1vZGVsQ29udGV4dCIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIscGFyYW1zOm59LHphLHIpfW9wZW5MaW5rKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJvcGVuTGluayIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9vcGVuLWxpbmsiLHBhcmFtczpufSxBaCxyKX1zZW5kT3Blbkxpbms9dGhpcy5vcGVuTGluaztkb3dubG9hZEZpbGUobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImRvd25sb2FkRmlsZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9kb3dubG9hZC1maWxlIixwYXJhbXM6bn0sTGgscil9cmVxdWVzdFRlYXJkb3duKG49e30pe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3JlcXVlc3QtdGVhcmRvd24iLHBhcmFtczpufSl9cmVxdWVzdERpc3BsYXlNb2RlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZXF1ZXN0RGlzcGxheU1vZGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiLHBhcmFtczpufSxHaCxyKX1zZW5kU2l6ZUNoYW5nZWQobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIixwYXJhbXM6bn0pfXNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl7bGV0IG49ITEscj0wLG89MCxlPSgpPT57bnx8KG49ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57bj0hMTtsZXQgYT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscz1hLnN0eWxlLmhlaWdodDthLnN0eWxlLmhlaWdodD0ibWF4LWNvbnRlbnQiO2xldCBjPU1hdGguY2VpbChhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7YS5zdHlsZS5oZWlnaHQ9cztsZXQgdT1NYXRoLmNlaWwod2luZG93LmlubmVyV2lkdGgpOyh1IT09cnx8YyE9PW8pJiYocj11LG89Yyx0aGlzLnNlbmRTaXplQ2hhbmdlZCh7d2lkdGg6dSxoZWlnaHQ6Y30pKX0pKX07ZSgpO2xldCBpPW5ldyBSZXNpemVPYnNlcnZlcihlKTtyZXR1cm4gaS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCksaS5vYnNlcnZlKGRvY3VtZW50LmJvZHkpLCgpPT5pLmRpc2Nvbm5lY3QoKX1hc3luYyBjb25uZWN0KG49bmV3IEVoKHdpbmRvdy5wYXJlbnQsd2luZG93LnBhcmVudCkscil7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkFwcCBpcyBhbHJlYWR5IGNvbm5lY3RlZC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIGFnYWluLiIpO3RoaXMuX2luaXRpYWxpemVkU2VudD0hMSxhd2FpdCBzdXBlci5jb25uZWN0KG4pO3RyeXtsZXQgbz1hd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvaW5pdGlhbGl6ZSIscGFyYW1zOnthcHBDYXBhYmlsaXRpZXM6dGhpcy5fY2FwYWJpbGl0aWVzLGFwcEluZm86dGhpcy5fYXBwSW5mbyxwcm90b2NvbFZlcnNpb246RGh9fSxlXyxyKTtpZihvPT09dm9pZCAwKXRocm93IEVycm9yKGBTZXJ2ZXIgc2VudCBpbnZhbGlkIGluaXRpYWxpemUgcmVzdWx0OiAke299YCk7dGhpcy5faG9zdENhcGFiaWxpdGllcz1vLmhvc3RDYXBhYmlsaXRpZXMsdGhpcy5faG9zdEluZm89by5ob3N0SW5mbyx0aGlzLl9ob3N0Q29udGV4dD1vLmhvc3RDb250ZXh0LGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQifSksdGhpcy5faW5pdGlhbGl6ZWRTZW50PSEwLHRoaXMub3B0aW9ucz8uYXV0b1Jlc2l6ZSYmdGhpcy5zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpfWNhdGNoKG8pe3Rocm93IHRoaXMuY2xvc2UoKSxvfX19Y29uc3QgZ2U9dD0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCksbl89e1VTRDoyLEVVUjoyLEdCUDoyLEpQWTowLFVTREM6NixVU0RUOjYsRVVSQzo2fSxDZT0odCxuKT0+e2NvbnN0IHI9bl9bKG58fCIiKS50b1VwcGVyQ2FzZSgpXT8/MixvPXQ8MCxlPVN0cmluZyhNYXRoLmFicyh0KSkucGFkU3RhcnQocisxLCIwIiksaT1lLnNsaWNlKDAsZS5sZW5ndGgtcikucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZywiLCIpLGE9cj4wP2AuJHtlLnNsaWNlKGUubGVuZ3RoLXIpfWA6IiI7cmV0dXJuYCR7bz8iLSI6IiJ9JHtpfSR7YX1gfSxiZT10PT5TdHJpbmcodCkucmVwbGFjZSgvWyY8PiJdL2csbj0+KHsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsifSlbbl0pLHJfPXQ9Pntjb25zdCBuPW5ldyBEYXRlKHQpO3JldHVybiBOdW1iZXIuaXNOYU4obi5nZXRUaW1lKCkpPyIiOm4udG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKX0sSGE9KHQsbixyKT0+e2dlKCJraW5kIikudGV4dENvbnRlbnQ9dCxnZSgibWVyY2hhbnQiKS50ZXh0Q29udGVudD1uPz8iIixnZSgibW9kZSIpLnRleHRDb250ZW50PXI/YCR7cn0gbW9kZWA6IiJ9LGlfPXQ9PntIYSgiQmFsYW5jZSIsdC5tZXJjaGFudElkLHQubW9kZSk7Y29uc3Qgbj10LmJhbGFuY2VzPz9bXTtpZighbi5sZW5ndGgpe2dlKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+Tm8gYmFsYW5jZSB5ZXQuPC9kaXY+JztyZXR1cm59Z2UoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImJhbCI+JHtuLm1hcChyPT5gPGRpdiBjbGFzcz0iYmFsLXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2N5Ij4ke2JlKHIuY3VycmVuY3kpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNldHRsZWQiPiR7Q2Uoci5zZXR0bGVkLHIuY3VycmVuY3kpfTxzcGFuIGNsYXNzPSJ1bml0Ij5zZXR0bGVkPC9zcGFuPjwvZGl2PgogICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic3ViIj5wZW5kaW5nIDxiPiR7Q2Uoci5wZW5kaW5nLHIuY3VycmVuY3kpfTwvYj4gwrcgcGF5YWJsZSA8Yj4ke0NlKHIucGF5YWJsZSxyLmN1cnJlbmN5KX08L2I+PC9kaXY+CiAgICAgIDwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmB9LG9fPXQ9PntIYSgiQ3VybGVzcyB3YWxsZXQiLHQubWVyY2hhbnRJZCx0Lm1vZGUpO2NvbnN0IG49dC5jdXJsZXNzV2FsbGV0Pz9bXTtpZighbi5sZW5ndGgpe2dlKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+Tm8gd2FsbGV0IGJhbGFuY2UgeWV0LjwvZGl2Pic7cmV0dXJufWdlKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJiYWwiPiR7bi5tYXAocj0+YDxkaXYgY2xhc3M9ImJhbC1yb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImNjeSI+JHtiZShyLmN1cnJlbmN5KX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0bGVkIj4ke0NlKHIuYXZhaWxhYmxlLHIuY3VycmVuY3kpfTxzcGFuIGNsYXNzPSJ1bml0Ij5hdmFpbGFibGU8L3NwYW4+PC9kaXY+CiAgICAgICAgPGRpdj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdWIiPmZyb3plbiA8Yj4ke0NlKHIuZnJvemVuLHIuY3VycmVuY3kpfTwvYj48L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YH0sYV89dD0+e2NvbnN0IG49KHQubGluZUl0ZW1zPz9bXSkubWFwKG89PmJlKGAke28ubmFtZX0ke28ucXVhbnRpdHk+MT9gIMOXJHtvLnF1YW50aXR5fWA6IiJ9YCkpLmpvaW4oIiwgIil8fGJlKHQuaWQpLHI9U3RyaW5nKHQuc3RhdHVzPz8iIik7cmV0dXJuYDxkaXYgY2xhc3M9Im9yZGVyIj4KICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bn08L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImFtdCI+JHtDZSh0LmFtb3VudCx0LmN1cnJlbmN5KX0gJHtiZSh0LmN1cnJlbmN5KX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7cl8odC5jcmVhdGVkQXQpfSDCtyAke2JlKHQuaWQpfTwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RhdHVzIGlzLSR7YmUocil9Ij4ke2JlKHIpfTwvZGl2PgogIDwvZGl2PmB9LEhyPTEwO2xldCBmZT0wO2NvbnN0IHNfPXQ9PntIYSgiT3JkZXJzIix0Lm1lcmNoYW50SWQsdC5tb2RlKTtjb25zdCBuPXQub3JkZXJzPz9bXTtpZighbi5sZW5ndGgpe2dlKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+Tm8gb3JkZXJzIHlldC48L2Rpdj4nO3JldHVybn1jb25zdCByPU1hdGguY2VpbChuLmxlbmd0aC9Icik7ZmU9MDtjb25zdCBvPSgpPT57ZmU9TWF0aC5tYXgoMCxNYXRoLm1pbihmZSxyLTEpKTtjb25zdCBlPWZlKkhyLGk9bi5zbGljZShlLGUrSHIpLm1hcChhXykuam9pbigiIiksYT1yPjE/YDxkaXYgY2xhc3M9InBhZ2VyIj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0ib3AtcHJldiIke2ZlPT09MD8iIGRpc2FibGVkIjoiIn0+4oC5IFByZXY8L2J1dHRvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhZ2VpbmZvIj5QYWdlICR7ZmUrMX0gLyAke3J9IMK3ICR7bi5sZW5ndGh9IG9yZGVyczwvc3Bhbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0ib3AtbmV4dCIke2ZlPj1yLTE/IiBkaXNhYmxlZCI6IiJ9Pk5leHQg4oC6PC9idXR0b24+CiAgICAgICAgICA8L2Rpdj5gOiIiO2dlKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJvcmRlcnMiPiR7aX08L2Rpdj4ke2F9YCxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3AtcHJldiIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntmZS09MSxvKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3AtbmV4dCIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntmZSs9MSxvKCl9KX07bygpfSxsbT10PT57dCYmKEFycmF5LmlzQXJyYXkodC5jdXJsZXNzV2FsbGV0KT9vXyh0KTpBcnJheS5pc0FycmF5KHQuYmFsYW5jZXMpP2lfKHQpOkFycmF5LmlzQXJyYXkodC5vcmRlcnMpJiZzXyh0KSl9LGRtPXQ9Pntjb25zdCBuPXQ/LnN0eWxlcz8udmFyaWFibGVzO2lmKG4pZm9yKGNvbnN0W3Isb11vZiBPYmplY3QuZW50cmllcyhuKSlvIT1udWxsJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocixTdHJpbmcobykpO3Q/LnRoZW1lJiYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQudGhlbWU9dC50aGVtZSl9LHB0PW5ldyBKYSh7bmFtZToiYWdlbnRiYW5rLW1lcmNoYW50LWtpdCIsdmVyc2lvbjoiMS4wLjAifSk7cHQub250b29scmVzdWx0PXQ9PmxtKHQ/LnN0cnVjdHVyZWRDb250ZW50KTtwdC5vbmhvc3Rjb250ZXh0Y2hhbmdlZD10PT5kbSh0KTtwdC5jb25uZWN0KCkudGhlbigoKT0+e2RtKHB0LmdldEhvc3RDb250ZXh0KCkpO2NvbnN0IHQ9cHQuZ2V0SG9zdENvbnRleHQoKT8udG9vbEluZm8/LnJlc3VsdD8uc3RydWN0dXJlZENvbnRlbnQ7dCYmbG0odCl9KS5jYXRjaCgoKT0+e30pOzwvc2NyaXB0PgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8ZGl2IGNsYXNzPSJoZWFkIiBpZD0iaGVhZCI+CiAgICAgICAgPGltZyBjbGFzcz0ibG9nbyIgYWx0PSJDdXJsZXNzIiBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSTBBQUFCNENBWUFBQURQQVhFUEFBQWtVRWxFUVZSNDJ1MmRlWmhjVlpuL3YrODU5MVoxZDdvN1lVa1FEYkxJNGlRUWtMQ2pVd2tKRUhZQ1ZKQlZjWno0akQ5UWxIR2NrYVZTamc2andvRGlNSUw0SUlnRzB1SzRrSVVBZGtwR1FVbURSR2lOaUpBUUVwT1FwWlBlcXU0NTcvZjNSMVYxVjI5SmQ2Yzc2UTUxbmlkVVVWM3J2Wi83YnVjOTM0TnJ2cmJxaEN0dlgzVVlBQ1FYMElJVWxFZDU5QmhKVzd4bmFzWlUvQW1XbDEzOTlWWFgxczBSRHhFbUY5Q1dEMUo1Rklia2dhbnoxZFZUOXg4elpzclJBZ0J6NzJQWXNuWDFmR01zTmphditjU1M5Q25ia2d0bzY1SlFpTEI4M043TjFxWE9BMEJsOVpSTEJQdzdnOWg5S0xnakFZQ3J2dkhXMG12djJyanVvLy94MnF6aXl4S3ArcUI4OE41MXczUzRvL0dUcXNmVUh2OVFaZTJ4Q3pGK1VuWG5VMGhCaWdZQXJ2N0dXMDk5OHQ1V1huSDc2L2QvOUt1dkh3QUFxUlJOcXZEMzh0amJSNkxEU0ZUdE0vVzhNZU5PZkx1cTlrUDFSY01Dd09SQkVDRXdEeURsbmRWL09MKzFhVjJtZXR6Ny9sRUVMMXp4bGRldVRhZEYwMm5Sdk5VcEI4cDdkNkNiY2VQR25YcHc5VDRuUG13bC9nU2hqYTNiWHByZWFZR2dYUUJJcFdqU2FkSGtGNWVQRGNidDgyU3NvdlprbDJ1RmQyNlI1ckpmWEpDZTlFb3h5NnFiSTc1OG9QY2FWeVNGMk1YVzdIdnE5WUMvMlVoc3ZQZHRTNXEzNGtLZ3dSVXNqYUxFNVBRRTU2dC9IaCtLclJkcko1TUFmZFJHMVR1OFcvdjF1dlQwNXFLN1NxZEZ5OGQ5dEdaRkNRdGtIQUNNM2UvVU0xVGtkZ0ZPQWdGcTlQVDJNZlpDckhtK3JXaGhTbDdZaTZGS0xyQjFkWFA4NWYvK2g0Tk1VSlVSeXFGUjFLYnh5bkVteWphdlZMcmI2bTZidktERDZwU3pyRkdiRlkwOTRDT0hna3lCK0JpWjU0THFmN1U5YkRzWDYxZTBkQWVtVDJoS1hkQWxYMzcxaUhoUWtRRndvTXUxWm0xUUVSZHI0YVBzWXUrajJ4NVBUMWxlekxJeTZXa2VLTU16d21GUkFCdy9QbEVkQ1Q4TDRUOEx6RGp2Y3ptSWphbTY1MlBVc3pkdi90MjIzb0RaSVRTZElFeDNjMjU1OFZoYldmdExndnU2YkpzamFNS0thdU9qTmsvaXU4TDIyK3ZTSjZ3dXd6TlNSNnFRK2FZVkFQWjd6L1JyRkx4RnhCeXBHb0hxMjBWc2hWZTMzRVN0WnpZMXZieTFMMkIyQ2swcE9NbGJHMDYxOGRxblZIMlZkMWtDSkFBYlZsVERaVnUzZ1ByTnR0ejJieTM4ejQ5czZiUlUwREk4ZXhxV3htS1FpMzBtenBnbGlsdEU1SFNxQjlWNWtpcGlRdS85N3pWc1A3TjVYY003cGU1clVOQ1VnblBKelMvT2pGWFdMUFFhQmVweStjaGIxY0dZSUl4VklaZHRXVTNWTzZLQTMzc2lmVUpyR1o2UkFjdjQ5NTk1dWlyK0RjQjVJRUdOUEFraHZZb0VnWHIzcWpQK2pKYjF6MjNZR1REOWhpWVBEb05NV3R5bHQ3NTRVUkN2L29uNkhMM0xHWUVJMVpPRUYydURJS3hBbEcxWlNmVjNib20xL2lDVG50NWVkbHU3dTlhU1ArbnZtVGpyUkcveEJaQkpRa0NmVTZvQ2dDSFZDV3lnZEgreXpzL1l0T2szYS9zRHpJQ2dBWUNwYzVlSERmZWZFRjEyMjB0WEJmSHFSNkpjcTZkM0JvQ0FoS29uU2JWQnpCb2JJc3ExL3BIUXUrTHRiejFTZDllY3RnNTQ1azN6NVd4cnFHR1p4R0xNY3NDaDU1MUU1ZWNCSmlIR3FNK1JWQVZwU1FLa0EweEE5YThqcDlPM2JIbjJyZjRDTTJCb1NzR1pmVnZEcCtJVlk3OFR0VFU3cXJNQWhGU1FCRldWVU5vZ2JvMEo0SEt0SzVYNGRwdTAvT0RwcjUzWlZIUmJrMTRGeTNXZVhhaXpKQklXbVh5ZEJRQU9QUFNpajZqb1owRmVBakZDbndQemJxQUFpNEpLSjJJQzByL2hsV2MwcmMrOE9SQmdCZ1ZOS1RpWDNQYmlUZkdLc1hka1c1c2M2SzJTQWhJa0FSQ3FYa0hTQnFFMU5nYVhiVjFOK2dlaXJENjQ1SjdwYS9MRnhKUnBiSndzZFhYSmN0elQzM2dsc2N5VXdDSUhISDdSK1VKY0Q4RlpnSUg2TEVEMUlHekhoVXlDOUY1Z3JhcGY0NjFPMzdZbTg1ZUJBak5vYUVxRDQ5bTNOc3lMVjR4TFpWdTNScUFQaTE4UVZCRDVKRXRWVlVnVmF3TWJWQ0RLTm05UjROR0ErTzdQLzJ2YVM2WHZPUTNMTkoxT2w2MVA5L09VVEJyVWRicWdndysrYUp5THhlWW9kSzZJVENVSjFSeEJWWklXZVRkVWdFVkJxZ2VNcGZxMUFwNnhhVzM5eXNFQXMwdlFBSkJFcXQ1bTB0UGQ3Qzh0dnpNK1p0em4yMXMyUnlERDd0Q1FtcjlWS3VnVllnSWJxMExVM3F3UWVaTGVmMitMM2JMbytVTGMwMkY5RmlUZjVaWG1IbFlGQi8zZFJ5Y3JlYTFRcjRUWWlVb0g5WkdDU2dJbHNHakhiUWN3OUJzMGNqTzJyTSs4a3AvTjduemYzUVVOQUVvaXRTd1B6czBOOThVcWErYm13VUVJYU1IaWxQNkFQRXhLSlpTZVlCQ0VsU0FKNzlwZUF6R2Y5STh0dWVmY3h0SXBEUUI0OTdpdmxFa2tscGxNQ1Nqakp5V3JLMjFzRnIxK25OU3pSSUtRUG9MWHlCZTZEa3pYWTF4NnpMMEhqRlZ5azlkb3h0YTM2MS9lRldDR0FKbzhPTWxrbmFtcm0rTXZ2bm41RDJNVk5WZG1XelpIUU5IaTlBWU5TNjRDZXBLdzFscGo0NGl5elJISmVpSG5xNGFMbnZyTzJSdDZBTFIzV1NBQlVwSkl3R1F5NlM0bjhwQXAxNTJzNmk0bk9OdUlPWVFrMU9kQVZRZlNFTXpEZ3A3SHVPQ1d2TUJZVmQxS3VyTTJyWG5taFYwRlpvaWd5VGR4cGVaQmdIbDRPVHIvZjhQNG1BdXpyVnNpQU9IT29Dbnh1NHA4RVNFd1FRVUF3R2RiTnhHeVZNSEhiZFJldi9SN2N6YVhUTWViQkthWkNZMGJPZnFzVU1vZzJTallzRUZLWFE4QUhQcWhmNWhDOVJjQ25FM2llQkVMMVFqMHpoY1NERVBWam9TREtCeERkTUtDTGpHTWJ2ZmVuYlg1N2FlZkh3cGdoZzZhd2tuRXZIbWM5Wm5Gc1lxYS9SY0dzYW9adVphdERvS2c5NnVnbDZzai84T3BwRklWeHVTdEQ2bnd1YmIxQU9xcCtvUURNcGtITGwzVGZXWit3NGJ4TW1IQ2lJTklnSlFrazQyeVljTWt5V1RTSGtESGQ1czZkVzY0R2ZJaElXYUI3bnlTSnhnVGlxcUQ5N204R3hjMUlFMkg1ZGFTaXcwRlM2TWxNYVI2RlRHR1pMTzY2THgzMWp6MXE2RUNabWloS2VuRlNYeTZ2bnJjMktxbmdyRGlsRnpyTmdkQlVIb1ZkTGMwSGZkUkd1MFhBWUtDaElpeDFzWkFLbHl1ZGJzU0w0am8wNTVtV1R6WHZ1S3BSNjV0NlJGdkplWlpBSmd3WVRMckpyMUtwTk1zUFdIREFrZ3FKY25HeWJKaHc2dVNtZEJJMVBYTVRnNC82WWFKRUQwWnFtZFMvVFFBUjRrSm9UNENOUUpWWGQ3MTBQUnFSYlRFdmFQem9pdkFvNEFZZ3UxZW8zTTNyVnBhUDVUQUREazBwZUNjOWJrbCsxYkc5Nm0zUVd4SzFMN2RBUXgyYW1rSzlaMU9hTG9FZGdUcGxSUUJyTmdZakJpNHFBM3FvN2NBTEtmaTF3TC8yd0Q0NHpNLytOaW12aXhpOGFRV0g1b3dZVEluVFhxVjZlSUQ2WG05Z0RWUGtBTFEyQ2hKSk5IMTlZMnNxOHUzSFBUbWlvNzhTUFBCSnRMakZQNDBVazhuZVl3eHRqci9zeU9vajBobElhaWxJU2xkanM5T29DaytoK29WRUFHUlUrWXUydmptazA4T05URERBazFwRTlmc0d6TUhha1U4WTB4d1JKUnQ5Z0RzWUtBcDNpOEo4S2hVRlpJa3JSZ3J4b1Q1T01pMVExMXVFOG1WSkZhUWZKa0dqWUUzYjJ6UzZ2V05kWE55dzJWbWpqcnRDelZCSUJNQk9aeDBSeXQ1SEpUSEVEek1tQ0FPQUhtM0V3SGVlNlZTT2l3S3VsbmIva0JURXRQazQwRUI0ZW5jeGV0WEwxcUlSQ0xvSGpPTldHaEt3Ym5ncHN5aEVvYS9NckFUbzF5ckY5QnFIMW5WVGl4TkY0aEs2eEQ1STZhRWtxQmFNVlpFTENBR3BFSmREdXB6YlZUOUc4azFwSzRHdUpyS3R3Ry8zbnR1Z3JvbU1XaWhzczJveVVVYWVSdkVHV1czRzBzRWFoRXozbGFxOFRWVTNVY3ArMU41b0VEZkIrSDc2WGt3aE8rajZnRmlBaEVScUdyQmtqaFF2YzliU3dpaEJnVnIwdmtiK2d0Tno1aW1BRXkrNlM3S1hiWmgxZUtmWXVyVUVBME4wVEFGYWNNNGpWYm8vcHQxMDlPVFlyWnFtUURqWGRUbUFkaStBK0crb05tQmErdFJFeW9FMC9rQlVSb0lqWWdCWUNBaUpkVnFCL1crRUU4NEpUVUM2WlQweUw5ZXFBd0VEQUNOQVFZUVV6aDBIWUVuVkIzb0M3ZXF2dkR4RUtoaGZrSlhTa3Y2WFNEb0JScVEwSDVCNHd0eG1nanBMLy9iWDM1ZU41ekFERHMwcGRNTjU5eTQ5SVF3TnVZWnFOWkdMcXZTb3lDMU0wdlRPelE5bjYvZHl1ZGRZcUw4WEdyaGNPZE52VXJoNnBlT2RleUZaNVJVVkV1Q2VFOW9mbHEyeS9kWE5RQWwvN0pDU295ZWNQU0VwbmpiaTZXQkFscnFna3ArbytaL0UwRVZNZGE1M0pVYi92cUwrY1Bsa3RCMStjTHdqa3g2dWt1azZvUEZkNSsxM1BuMkN5RFNibTBnSkh2Mm5rcUJnd0dWaURpUUM4U0l3SW9nRUNBUVNDQWlGb0lPMDVFZldxZzVlaFlOVnZFdmdBaEVqRUNDTHY5RVRQNFhEUFJDN092cExBbXJwY2VmZ0x3WkV4TllUM2ZkaHIvK1lqNm1UZzJIRzVqZEFrMHBPSXZ1blBHcktOZCtpWmpBaTdFb0ZCbEtBQmlrc2VSZ1R4SzdQeTZkLzBSS0lCQkkvblpBUkhCWFhJRHM1SjJOaW9TVzNuOXkvV3MvKy81d3U2VGREazBSbktsejd3c1hmM1BtNGlqWGVxVU5RaVBHc3J1cEVObWRUbGI2ZjRZSmlJeUV4YVVrSUY1TVlNbmMvMXYzbDU5OGIzY0NzMXVoQVlDRyt6OFZUWjE3WDdqa20yZlZ1V3piSjJ4WVljVVlYekMxZ3p6dGc3aWNCMW5pSzBSQy9UY2l1OEFZKzBiWEd4c0czdWMrdS9iUC8zdnY3Z1ptdDBOVENzN2liNTMxWUs2dCtiTkJiRXdnSWg0Y3BERWY4TlhQZ2ZzUEdTUUVITklNaFFDS3dQekx1dGNlL3hZU2lXQjNBd01BZTBTOGFGM0RFenAxN24zaHMvOXorWE9IblpDTXduanRtZDduSEVpem95Q0Z2WjF3N2dpRXZ1d0NDMmVGL2J5Kzg4OFg5T2V6ZHVVK3V6M0NUaHRIZUdOamdkZnNsOWIrcWU1cnV5TkxHbEhRRk1GSnBPcURwNzkrWnVhUXFjbUtXRVZOd3J1c3kzOG45c01Wc2VTU0hOb1QxaXRJN09zNUhCWm91bndvNlcwUUQ5Um41NzNkK05oWDlpUXdlOFE5ZFF1T2ZTSlZIeng1enpuL0ZyVnYrM2Fzb2pZa0dPMk9lZWZCUGI4VFc5bFYvOVAvc05mWklCNTQxLzdWTlkyUHBndkFlT3habVlrOW13cGswdE44Y3NFQ3UrU2VjMitJc3R1L0g2c1lHNUtJaGpSODdMUCswVStTdUNkS3B3U0F5QWJ4MFB2c045WTBQbnBMQ1RCOE4wTURRRmczSjZuSjVBSzc1SjV6cjR2YXQvODRWbGtiZ3AwV2h6dEpRQWQybG1Sd05NZ2c2T0V1TVJQWm9DSlVuNzM3clZkKzlDOGpCWmc5R3ROMEhXazB2cm9BS2NEOHBlcUluNWp0clNjRjhlcWp2R3VQU3I5amI0R3dEQ2FtRVE0Z2syS0pnV0kvTTdGZGpHbkl5SVlWb2ZyMi8xNzloMGMrTzVLQUdTR1dwaU4xWmhwQUpqM05OOFZhTG9seXJjK0c4ZW9RVkxmRGpKZEQ1Y0prcDVhbXA0MlNZWWhoOHNCNDEvN2RWU3QrY0QyU1NUdVNnQmxaME9SbHRUU1ZtaWZQM3pXbmphNzFBaDlsRzRKNFRVRFM3YmtwMTE2U3RlRUtoTW5JQmhXaDk5a0hWNjE0ZUM2U1NZcyttN3ZLMEpSd2s5WlVpdWJwKytjMFVUZWZxMUg3SDROWVZRQ3FHNWloNFFDTkRRZFJTSllodGpDVm9YZlpINzM1Kys5L0FxbVVHWW5BakVob2lqcCt5ZVFDKzlSM3J0MkE5cGF6dlkvZXRHRmxRTkQzMzlEc1lHSlNCdWVlZWs0amNtZ3lwdzZYbEh2c3paY2Z2QnFwbE5rTi9jd2p0NThHUTlEOU4rT1Q4NDhVVzVVUndYdGMxT1pCc1YwNjk4RCs5Tk4wdlVYM0hoZnRwWCtuZSsrT2Rtay83ZGNxQyt5NG40YjBrYlVWb1l2YWYvckdTKys3TlAvTDUzRWtMOGtaMFlMU2RYVnpmQ0tSQ3A1NTRJby8rMXpiTENxM1dCdTNwUlpIQmwrcFE3LzdXcnAwVGd6cGlHeFFHWHFmL2NVYnRhOGw4N0IwU2U5RzVCanhHMmVzV3BYUlJLbytXSGIzQmVzT1B1YWlaOFVHSHpXUXVOSjc2WUIrc0tYNmdhWGNQWlB1d2FmWkJDTWJ4RVA2M0pQeHRpMnpOeTVmVk5EcUhmbmlCNk5DdXI3WXhGWC8vU3QrNDZMV2l5RW1hMjFvQ2ZWOVgvenNSKzRzZy9iVXU5SWFrUWVtSXZRdTkweTBzZjNpeHNhNkNFaU5DbUJHRFRTbDRHUWV2T3BwbjJzNUQ1QnROcWl3cXVvRzVXNEdrVEt6eEJuSzRNZ2lnU2dJS2tQdmM1a3h1ZWFMVnExNnFIMDBBVE9xb0NrRlo5bEQxenpqc2kzVFFMNGVxNmdKbEhUb2Q3UHdqcTJMN0tUaGk0T3NLWkwwZ0NESTEySG1aODNHYzFhc2VLUWxMNm80dXZSNFJ1WG1HSWxFS3NoazB1N1VxeCtlRUEvakQ5Z2dkb0hMTmtQVkZSYmtkYzlVZHI1Y3B1ZXlrcDdMYVlET0pjWDl6cDdvcWFRM0pneFVYWTdxdi9UYWI3OTlKenBVT0VlZmdOT28zRUZ1MWFxTUpwTUw3Sk9QWHRuODV1OS9QUC85eDF6VUpHSk9EMktWRmVweVNsRHppNVA2M2JPeTgyQllCdkphRnB0RHZSaGpiUkEzNnQxelFIYk9hOC9mKzJPa1VnYVpESURNcUpSTEdiWGJEalkyMWhHa3BBRHowRGMvODl6RUtSYytMdVNCeGdTVGpRMk51cWdBVDNGMUFic0IwRjlvdWs1WTdqeDd5cTkvTVdLdERlSUczcTlUNzI1WitkeWFmOXEwNXFFMWlVUXFXUFZRMm85eVFaM1JQNHJ1Q2dBUzF6dzBrOEMvQWpKRGpJWEx0VUxWTzFKRkNFTlNPZ3R1cFM1bEorNnBJT2ZSZXlGUnRTaTVLaElJaklXUDJ0ZFQ5WUdZNGxzcm5ydHp3MmgyUjNzbE5FVTFpQlRtZFd3bGRQcFZEMDR6NEtlODZ2bEJFSzlXNzZDdUhkNTduKys1VlNrc3ZnY0xTMlo3cndoM2pXbFlYUEJiV0dFcFJBQ3hNR0lMS2xYK1phVSszQjc1Ui81YWdLVlkyY2JlSTkyMWQ0MWtjb0V0bFZjNzljb0hEaGJGaFlCZVJOV1RqUTJycGFEZW9MNjRPRjlWNlZuczRPNERHZ0hWRmhaWUZoSlB3a2Z0SUhVbGlTZUYrcE5YRXJGblVWQW56Y095OTJrRjdyVmJDM1lLUEhaZTRTZGRkZi9FSU9MSlZIZTZVbzhIOVhBbER6REdCaEFES1RaYTVlMUlwOElVdFFCWkRxcStDY1FxVUY4QjhUd3B2OTdYWTBXcFhsN2VYYzdiYXlYOTkvNzlLRk1wazFnR2s1a0dSVGQ5NGlsWGYyTk1WYmJ5UUJmNTk0SFJld0R1Ujg5YUFlS2Vhdkl0cDlwQ2xjMFEzUUN2YTJIczJ0OHZ1WGxqcjNGVlh2bEtSK3JzZEJtYVFRTFVJVzNXQzBRRHRXUWw3OE85SFpSM0x6Uzl5TmtpTlUrNnk2bjFOanAxKzBaMjJ3TEswd2psVWJZMFpmZFVobWIwQjhJUGo2bktidHRCSU93akFDMVUyU3dHNituY3VuSWcvSzVQdVhtNFVnOHd4Z1pTbUtycWtuSVg2alJLQlR0U2J0MEtjaldncjBEektYZXNhZDBmR2hydWo4b3A5MTVVM0RNMEY1RHU0aDBWOXdyNmRXU1hXZXl1eFQyQldpSmYzQk1Zc0tTNEo4cWxoSDM4bFdYbTJlSlV3ZDRLejE0N2paQzQ2c0ZwS3BoTDFmT05qZFgwT28xUUVHanM3elJDUVg2MVJLaVJFREtBV0lnWVVDTjQ3MTlHZVJvQm8yL0NVdVNMSUdZTytZUmxyMUt1dlUxWUduaVhYUS9GL1ZtdjMvN3JYalpoYVVmMXR5KzJSanlVOWgrKzVxRWpEem51c3Z1TUNXNFhZdzd6VVJ1OXp5a0lrZnp2N0JSTTZ1SXNpSDdJREJRNkt2cnNwNUZDazd1UVhyMkx2RUJxVFJBbUxQM1YreDE4U3JScDlVSExnWHMxa1VnRnExWmx0R3hwOXVDYUtBQklmT3hITjRyZ3k4YUdOYm4yNXFMNHJ1MUxYM2hRblh1OUNtUHZxSE5QcVVvdlJnSmpRdmdvOXh4YzdqTXJYL2p2NVNOOU1keGVDVTBSbUIyM2UvWm5zVnhmTFpybGRzKzl5ajBsVXZYQm9udlA5MzkvelVNZmlzZXJuclJCN0pSY2Ryc0RLU0tsTFo1OXVwSnV5VXcvTy9lNmlaMndQK3VicE9PL2h1bzh3TUFHOGJQSHZmZjRvNm9PK3ZDaWJXditNOHFETTdyYVB1MW9BeWFUbnU2bWYveEhaOWhZNVJLSUhCaGxXNXdSQ1RxdDVtQVh5KzBjR3BZSXFQVkx0SkZkUkVrTVFIaDF6dHI0c2NablB4emI3Nmk2bHZYMzVFWWJPSGEwQVpPNDdvY3piVmk1RU5BeDNtVzlFUk1NcFRDaTdBQWFHYWlsNlhsZkFGaXZVV1J0L0xCUXpNbTE0ZVFGVFUzZmRLTUpIRHU2TE16ODAyeXNjaUdvbGQ1SFhpQ1dISkJTWmkrYWEreFRkSFpIZjk5RmVWaXJHa1UyaUIyT1NweDQ0TGpERm16Y2VLOGZMZURZVVZHRGVlZzZOLzI2UjQrMXNjcWxBdFo2bi9NQ3NZT1RUOXRkUzFoMkxGY3JvRlYxa2JYeEl5TWJIRGZseUpxNlZhc09JVEJOUmpvNFpxUm5TWmxNMnMzNDVQd2piYXh5aVJqWngzdm5CY1lPWWhlV1FlYU1wVXRZaGp4SERyMXJpNnlOWDdCNjI1RUx1cm14c3FVWmJGcDkxc2ZuSHlTeE1iODB4azUwVWJ1WGp1L2NQM2N6ZUt2VHUxdVRnVmlhZnFpcEM4U3F6MFUyaUU4ZU8ySHpVVnYvZHRmalNFSHlpK25LMEdBZ202ZmVlKy9SZXViVkQwOUFWZTB6eG9aSCtGeWJFMEV3K0JSNkZ4WExCNnNrMmo5cGs3eXJDdUxIMWs0NCt2Q3RqOTM5ZU9jcXpESTAvUUFtWmRMcDZUcHo3b0t4cHJKMnFRMWlVMXkyMlVFazZQMUtIWVJNS3djSFRjOWRXQVlmMDNTL1gySnhqaHM3NFpqM2IzM3M3cDhobWJSb2JDeERzN09aNmt4NkhrLzUzT1RLT0tzV0JXSDhGTmZlN0NSZmg5bmxFOU4vMTlGTEVNemVCS3AyM1QzMW5sVlZuRkE3ZnZKN20rcC85UE9SQ0k0ZFVaT1B5NVlKcHNGV2JlZlB3dGlZR1ZGMmV3UklPSEoyWVJrNkpheSt2cWNJclBvb3NrSDhwTnJ4ay9adnFwK2YzeXA1MVNxV29lbDY4Q1haV0dmdXZmZDYvZURSY3g0TDQ5VVhSdTFOa1pRQU16eTdzUFJYNElpN2V4Y1dxejZLVEJBL3RYYjhwTnFtMy8xaXlVZ0N4NDRJWUJiVW1icjBISC8yOVF1L0gxYlVYSmxyYjRvQWhQMVhzUnFzekgwL1l4b3BOV3djaXVKZWZ5QzJxaTR5SnY3aG12R1RxcmE5OEl1bEl3V2NQUTJOSkZMVDdLTHJ6L2V6YmxoOFQ2eWlabTZ1dlNtU1hvRVpxc0pkWC8wME83QWszTWxHWlVNZGIzWHMrazFMNzV3SlloK3AzZitEZHRzTEM1OHBnS1B2V21pSzB3Tm4zN0Q0OW5oRnplZHo3ZHNLd1BRVk9mUTgwT1NRYjhxRnZpVmhCeGpUY0VoMmxoT3E4OGJHcHRmczkwRnVXNzZ3ZmsrRHM4ZWdtVHIzdnZDNS83ck1uWFA5NGkvRkttdFR1ZmJ0RWNoZ3gzc21EK2N1TFAwVE5kb3R1N0IwZlZ3Z0ZIcnZqWTNOcU43M3lQYnREWXVlM1pQZzJEMEZUTVA5bjRwbTNiRGtobGhsN1IxUiszYlhDUXgyc0FQQjBGN05BOUlSbGc2WDBZZjFHelpvaXB1UEM5VjdhMk5uamRubnlPYnREWXQvdmFmQXNYc0ttSE0rcy9TNnNLTDZPejdYNGtpMVhjWEgrMjlwSUJqQ2pHbkhscVo3ekxHYkxFM3BmSlJRdlRjbW5EVm0zT0dibTE5YzhqeW1UZzJ4YnAzdXRkQjBXSmpQTGsyR3NjcEhuTXQ2cUxkNUp6T0FxNzVMVE1OK3BNQjlCY0lEKzB6dXNIVmkyS0Vwc1RpcTFzVE9xeDUzK1BydHI5Yi9ibmVEWTNkbjBQdmNmMTNtWm4xbTZibGh2T3JINmlOUXZVQUtNKzNTMThrY0lUR043S0JXMU50OTJWWFgyZWZ6QmZsMVdpb212S0JtbnlQZTJ2NXFmY1B1Qk1mdXppenAzSnVlK2Zzd3JQd0YxWVhxSFRxQUthbTZEcDJsR1dqSzNmME1zOGYvU28rV2hSMThGb2ZGMG5SVXp3RVZRaFVtdUhqTVBrZSszdnhxL2U5M0Z6aDJkd0Z6em8zMUo0UmhmQW5KTWVvamRtMENIN2lyd01DTGJFVk5QUVdnSkxRZzM4b1NYa1JFUkNBQ0ZHOVIrZytFNWxmdmdqNHZPZHZ4SHV6c2d5bUZheGZxTkgxWlg3TEU0bERGbUV2SGpEMWlaVXZqc2hXN0l6Z2UxbWFmNUFMYXVqbmlMN3pwNlVsaXE1WUJHTzl5YlFxQjZiS1BVcmVsSmV4MS9WSHZ5MFE2bDh1V3ZvOFdOVGhKRXFJMEVCb1JBNGlCRkoxTWg1YWVSOTVkT2lVMUF1bEkrc0xyaGNwQXdBRFFHQXZydUR2OER3bXFMd2dFZUtnNlVOVVhQaDRDTmV4MEtYMnNzZExDVzNWS3pyS1A1VGFnbG9nVEVJVFhZdU9HODluTE52NTEwVTh3ZFdxSWhvWm8xRUZUYktLNjRLYk1vUktFdnpKaUowYTVWaS9vWE1TMnN3VnMvWWFHcWxxd0FGQzFZcXlJV0VCTS9pR1hoWGU1TmtEL1JuSU5WVmNEWEUzbDI0QmY3ejAzUVYyVENXeXpPdGR1MU9RaWpid040b3l5TkpiTmdWckVqTGVWYW53TlZmZFI1WGhTM2lQZyt3Z2VET2o3cVRvUjVBUXhnUWlrb0RaUkZCbndubFFpdjM3Y0ZLekVMa0tqeFl0TUN3Wk8xVWVYYm5oejRjK0hFeHdaVG1CbTM1ZzVVQ3ZpR1dPQ0k2SnNjMkVoVzErTHlrclhUR3UzbmQyS0M5UTZZS05TVmZLV3dJcXhZa3grNXNHN2RxakxiU0s1a3NRS2tpL1RvREh3NW8xTldyMitzVzVPYnJndWxLTk8rMEpORU1oRWdrZFFjVFRoandONXRGSS9ZRTBZQXdEMURsNGp3SHV2VkJhMGpNM2dMVTNuZXZMOHNtQTQ5ZTdDamFzV0xRRVNBWkJ4SXg2YVZJb21uUlk5NjNPLzJiY3lidXR0RUU2SjJwb2RoRUh4UitzT1ZpaWlUL2VrWkVIMldTQldiQWdqQmk1cWcvcm9MUURMcWZpMXdQODJBUDc0ekE4K3RtbG5hbGpvcnFkWEhPbDV2UVJWOHdRcEFJMk5ra1FTWFYvZnlMcSt4SXhTS1hQRU0wMkhXUEk0OVRpTmRLZVRQTWFZWUV6K1owZFFINUZLRDJoaFBYamVDdlVPVFVFNXZUczBJS2hlQVJFUU9mcmMrUnRXUC9uMGNJQWp3d0ZNOHRQMTFibXhWVThGWWVVcHVkWW1CMEhRNVVycHk5TDBjRS81MkFRRVJJeTFOZ1pTNFhLdDIwRzhRTkduUGMyeWVLNTl4Vk9QWE52U2ZmWThrWmhudTRvc0R2djZhVUVxMVNIOFdGREc2aUV4OG9FVC91a2dNZllVME0razZqUUFSNG9KQ25GVkJLbzZkbGlnZmtCVHFtaWhxb0FZUWx1VnVYUGZlZlBwekZDREkwUFpkWWQ1OHpqck00dGpsVFg3TDdTeHFobTVscTBPZ3FCL2E1NDdEa3ArNlR3VnhsaHJiQnlrd3VmYTFnT29wK29URHNoa0hyaDBUVThOdlBFeVljSkdqakNWY0FGU2trdzJ5b1lOa3lTVFNYZlptSDNxMUxuaE51QjRwendIMVBNQVRqVW1GTlVJM2tlRTBsUFVnSGxKL2c0THJaMHhUZmQ5RzZpcUFqRWttMGwzOXNiVlMzOHpsT0RJa0hYZHpZTUE4L0J5ZFA3L2h2SHFDN090bS9NOU1iM0FvYjN2Ykt1Rlh4N1lvQUlVd0dkYk41R3lsQ0kvTnJuV1pVdS9OMmR6VnkyOWFXWUVRdEtmSzh3ZzJTaEpBSFhkTE5FaHgxMTNMQlFYUWppYndJY0VCcW9SNkowdnVHOURWU25OTkR2am9DN0NBeDR3bHFwYnZlYk8zcnptbDc4YktuQmtTSnFva25XbXJtNk92L2ptNVQrTVZkUmNtVzNaSEFFTSs1TGswRjdpRkdzQ2E0SVlvbXh6QkxJZTVIelY3S0tudm5QcGhoNDZlbmxYTStyRmdUclBRZElrRXBPa1ZDb2ZBQTQrK3BwVENWeE82R3dqOXYwa0M1dDJxQVBWa3BRT1M5TkxHaytxRnhpcjFNMXdidVk3YTU5NWFTakFrVjBGSnBGYVpqUHA2VzcyelEzM3hTcHI1bVpiTmtja1FxQnZIUmZOUzVCNWdrRVFWb0lrdkd0N2pjcEhBWDEweVQzbk52WVVYTno3TnFib3l3b2xFc3RNSnRONVl2Yzc2aE0xVlVIN3VRQS9UdVZNRVJ2UVIvQWErVUloc2UrNlY4SGlLSFdqVno5ejY5dS9YTEdyNE1pdWRkM1ZGNEc1STE0MTlxYjJsczBSeUxEM2dodEJWWUxxS1NZSVlsV0kycHNWZ2lmcDlYdGI3SlpGejk4MXA2MDB3eWtWWEh4M2pwUkJZcGxCQ1VBVGowb2VRekVmZytvVk1QYTlWQWZWcUhpd2JXL2lUT3gwVlgrRFJ0TTNyY3Y4Q1VoYW9HZVFQcXpRRktjSFp0L2FNQzllT1RhVmJXbUtTQi8ybWcwVjFET05EYXdOS2hCbG03ZEE4U2pvSG5qaTdwa3ZscjduTkN6VDlON2plb2JPaFNXVEJuV1RXQlJCbWpncHVhODZYRTc0dVFKekhLbFFueXNTWTd1TE1wSHFBV1BoZFkxSWRzWTdhLy92ejRNRlJ3Ylg0ckE4YkxqL2hPaVNXMTY4S1ZZMTlvNWNhNU1EdmUyc0x4UlVvMVFWSkcwUVdtTmpjTm5XMWFSL0lETDY0Skt2VDE5VFhCelgyRGhaM2ozdVo2aXRUOUllZUtTL2dLclhBNWdCQVBRNTVoT0wwdXA3M3VJSXJLVzZWVjc5OUtiMXo3NHhHSEJrc01ETXZ1MmxUOFVyYXI0VHRUVTcwbGtRblhNckJjdGl3N2cxSm9UTHRhNFU4dHVodFB5ZzdtdG5OaFhucFNhOUNoWWxYTXRqRU5ZbmtiQ2xydXVBRDF3MERlU05nRjRFbUFJOFhrbllranFPRjdHVzZsK25SR2RzV2ZmcjFRTUZSd1lEekdXM3ZYUlZFSzkrSk1xMWVmcklGR1pjb2VwSlVtMFFzOGFHY0xtMlY2bThPNWJ6UDZ5NzY3UzJEcmMyYjVwL2Q4Y3FRNTk5QVowVjZRa0huMzhxaFA4TThKTDgxRVhFb21SdHdXMDV3QVNxYnFWMTdveE5tMzZ6ZGlEZ1NQOWpHQWFadExoTGIzM3hvaUJlL1pPODVtQlUwSlB6Sk9uRkJrRVFWaURLdHE2a3VqdmJtemM5dk9TZWM3T2RNZEEwWDNaQnd6bVNGdWlNZXlZY2ZQYXBKTDRBWURZaG9NOXBZVzdUa09vRU5sRDFqUkd5WjdScytPMzYvb0lqQXdsNkw3MzE1UmxodkdxUjF5aFFsOHZyMjZnNkdCT0VzU3Jrc2kycjZmMmQwVHRySDNqaS9ndGJPOXNqVUk1WGRuZmNBNkFJei80VFp5WUlmQW1Rcy9LSlNlUkpHRkE5eEFaVTkzdG43Wm5ONnpMdjlBY2M2Uzh3eVZ0WG5Hb3JxcGJTdXpIT1pZc2FxVFpXVVlOY3RtVUxWZS9PUnR2dldmaWZIOWxTMGt1ajc2WXRiVVk4UE8rZGNUNkJXeUZ5RXRYbkpYUkpGVEdocW10QXJtVm1VOVBMVzNjbVZTdjlBZWFqcVJWVEpGNVZUM0pmbDIxekJFMVlVVzE4MU9aSmZsZVl2YjB1ZmNMcXNoc2F5VzZyTHAvU0FtYmY5MDcvT0pVM2k1akRWQ05RZmJ1SXJWQjF6MXVmbTdWbFMwTlRRU1ZOQndSTnNldnVraSsvZWtROHFNZ0FPTkRsV3JNMnFJaUxzZkF1dTlqNzZMYkgwMU9XbDJFWlZmQjRBTmhubjVsakVZcytSL0R6QXFueFBwY1RzVEZWOTM5VlFldXM5ZXRYdFBRRmp1eW9pZXJ5Zi8vRFFTYW95Z2psMENocTAzalZPQk8xTjYrRTh0YkhVaCtzNjRBckNTMW5RNk1UbnByOS8vNElZMzBhbENzNkdnRFYvM0o3bFp5UE5jKzM5UWFPOU5rVDg5VS9qdy9FMWh0ckorY25UVjBiMWQvaDNkcXYxNlduTjZkU05BQlFyck9NNWxROVlZdHpVTFhqVHoyYkt2OGhndU1CZ2JyYzR1YXRMUmNEalZHQkUrMFZtaUl3VjZYK1hNc0t1elNzcUQzWjVWcmgxUzNTOXV3WEY2UW52VkxxdXNySEhYdko1cmRKeVZ1ZXFXSE5mdUdOcFA2cmxkaStYdHVlYU43U2NIRUJHT25wcWxJcEExSm0zYkFvZnVYdHJ5Lzd4LzlwNXhYLzhmcnFLNzd5MnJXbGdmRklseXN0ajExeFdmbFJXenYxQXpYalRueTBadC9UT0diczFDZEs1SU9sVTBlWUJSQkV1UDlCUnkrc0dudGdvbm5MMjk4bGNlTDhXNDU0T0pXaVNhVm9NdW5wcmh6bzdxMmp6aGRjVnJCdFc4UHIyN2UrOEZINjdHeUtPYkZ5N1BGUEZhd004OHprZ1JFQXVPcnJieTM5Mk4zdnJMMzhLMzg1cDZ0MUtZOTNvY3V5K1N4cjZ0aXFzY2ZQcjZvNTlxYzRjR3BWUjB3ejl6NkdMVnRYUFdwTTZKczJ2UEVQUC8vR2g3ZVhzNkx5S00yeUttcVB1Y0lvRGdzdDdwVlBmM3Q5OWRiV3RrK0w2dm9mL3V0aEQ1VUQzZkxvWTBMVWp4a3paUUxBQTNETjExYWRjT1h0cXc0cnd0SVIzNVJIZWZRUktQOS9sTVFZbUJ6VGc5OEFBQUFBU1VWT1JLNUNZSUk9IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCIgaWQ9ImtpbmQiPkJhbGFuY2U8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Im1lcmNoYW50IiBpZD0ibWVyY2hhbnQiPjwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icGlsbCBzcGFjZXIiIGlkPSJtb2RlIj48L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJjb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eSI+TG9hZGluZ+KApjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPgo=', 'base64').toString('utf8');
4
+ export const MERCHANT_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIFRoZW1lIG9mZiB0aGUgaG9zdCdzIG93biBkZXNpZ24gdG9rZW5zICh0aGUgU0RLIGluamVjdHMgdGhlbSkgc28gdGhlCiAgICAgICAgIGNhcmQgc2l0cyBuYXRpdmVseSBpbnNpZGUgQ2xhdWRlIOKAlCBsaWdodC9kYXJrLCBmb250cywgcmFkaWkgYWxsIG1hdGNoLgogICAgICAgICBGYWxsYmFja3Mga2VlcCBpdCB0YXN0ZWZ1bCBhbnl3aGVyZS4gKi8KICAgICAgOnJvb3QgewogICAgICAgIC0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgI2ZmZmZmZik7CiAgICAgICAgLS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgI2Y3ZjdmOCk7CiAgICAgICAgLS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMTgxODFiKTsKICAgICAgICAtLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNzE3MTdhKTsKICAgICAgICAtLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCAjYTFhMWFhKTsKICAgICAgICAtLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCAjZThlOGViKTsKICAgICAgICAtLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgIzE1ODAzZCk7CiAgICAgICAgLS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsICNmMGZkZjQpOwogICAgICAgIC0tcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnLCAxNHB4KTsKICAgICAgICAtLXJhZGl1cy1zbTogdmFyKC0tYm9yZGVyLXJhZGl1cy1zbSwgN3B4KTsKICAgICAgICAtLWZvbnQ6IHZhcigKICAgICAgICAgIC0tZm9udC1zYW5zLAogICAgICAgICAgc3lzdGVtLXVpLAogICAgICAgICAgLWFwcGxlLXN5c3RlbSwKICAgICAgICAgICdTZWdvZSBVSScsCiAgICAgICAgICBSb2JvdG8sCiAgICAgICAgICBzYW5zLXNlcmlmCiAgICAgICAgKTsKICAgICAgICAtLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAnU0YgTW9ubycsIE1lbmxvLCBtb25vc3BhY2UpOwogICAgICB9CiAgICAgICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KICAgICAgYm9keSB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250KTsKICAgICAgICBjb2xvcjogdmFyKC0tZmcpOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICB9CiAgICAgIC5jYXJkIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMpOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTsKICAgICAgICBwYWRkaW5nOiAyMHB4IDIycHg7CiAgICAgICAgbWF4LXdpZHRoOiA1NjBweDsKICAgICAgfQogICAgICAuaGVhZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxOHB4OwogICAgICB9CiAgICAgIC5oZWFkIC5sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgICAgLmhlYWQgLm1lcmNoYW50IHsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgfQogICAgICAuaGVhZCAubG9nbyB7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLnBpbGwgewogICAgICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTsKICAgICAgICBwYWRkaW5nOiAycHggOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICB9CiAgICAgIC5waWxsLnNwYWNlciB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAvKiBCYWxhbmNlIOKAlCBvbmUgZWxlZ2FudCByb3cgcGVyIGN1cnJlbmN5LCBzZXR0bGVkIGVtcGhhc2l6ZWQgKi8KICAgICAgLmJhbCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTRweDsKICAgICAgfQogICAgICAuYmFsLXJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG8gMWZyOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBnYXA6IDRweCAwOwogICAgICB9CiAgICAgIC5iYWwtcm93IC5jY3kgewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGdyaWQtcm93OiBzcGFuIDI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CiAgICAgIC5iYWwtcm93IC5zZXR0bGVkIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICBmb250LXdlaWdodDogNjUwOwogICAgICAgIGNvbG9yOiB2YXIoLS1nb29kKTsKICAgICAgfQogICAgICAuYmFsLXJvdyAuc2V0dGxlZCAudW5pdCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4OwogICAgICB9CiAgICAgIC5iYWwtcm93IC5zdWIgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgfQogICAgICAuYmFsLXJvdyAuc3ViIGIgewogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQoKICAgICAgLyogT3JkZXJzIOKAlCBxdWlldCBsaXN0LCBtb25vIGlkcyArIHRhYnVsYXIgYW1vdW50cyAqLwogICAgICAub3JkZXJzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KICAgICAgLm9yZGVyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87CiAgICAgICAgZ2FwOiAycHggMTJweDsKICAgICAgICBwYWRkaW5nOiAxMnB4IDA7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5vcmRlcjpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICBwYWRkaW5nLXRvcDogMnB4OwogICAgICB9CiAgICAgIC5vcmRlciAubmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1NTA7CiAgICAgIH0KICAgICAgLm9yZGVyIC5tZXRhIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgIH0KICAgICAgLm9yZGVyIC5hbXQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgICAgLm9yZGVyIC5zdGF0dXMgewogICAgICAgIGp1c3RpZnktc2VsZjogZW5kOwogICAgICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgICAgICBwYWRkaW5nOiAxcHggN3B4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgfQogICAgICAub3JkZXIgLnN0YXR1cy5pcy1zZXR0bGVkLAogICAgICAub3JkZXIgLnN0YXR1cy5pcy1yZWNvbmNpbGVkLAogICAgICAub3JkZXIgLnN0YXR1cy5pcy1jb21wbGV0ZWQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvb2QtYmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS1nb29kKTsKICAgICAgfQoKICAgICAgLyogT3JkZXJzIHBhZ2VyIOKAlCBxdWlldCBwcmV2L25leHQgKyBwYWdlIGluZGljYXRvciAqLwogICAgICAucGFnZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIG1hcmdpbi10b3A6IDE0cHg7CiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5wYWdlciBidXR0b24gewogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250KTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgICAgICBwYWRkaW5nOiA1cHggMTJweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgLnBhZ2VyIGJ1dHRvbjpkaXNhYmxlZCB7CiAgICAgICAgb3BhY2l0eTogMC40OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQogICAgICAucGFnZXIgLnBhZ2VpbmZvIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICB9CgogICAgICAvKiBDbGlja2FibGUgb3JkZXIgcm93cyDihpIgZGV0YWlsICovCiAgICAgIC5vcmRlci5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgICB9CiAgICAgIC5vcmRlci5jbGlja2FibGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICB9CgogICAgICAvKiBPcmRlciBkZXRhaWwgKi8KICAgICAgLmRldGFpbCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQogICAgICAuYmFjayB7CiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udCk7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLXNvZnQpOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICAgICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC5vZC10b3AgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgIH0KICAgICAgLm9kLXRvdGFsIHsKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDY4MDsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICB9CiAgICAgIC5vZC10b3RhbCAudW5pdCB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4OwogICAgICB9CiAgICAgIC5vZC1tZXRhIHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBtYXJnaW4tdG9wOiAtNnB4OwogICAgICB9CiAgICAgIC5vZC1tZXRhIC5tb25vIHsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgIH0KICAgICAgLmxpcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgfQogICAgICAubGkgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0byBhdXRvOwogICAgICAgIGdhcDogMCAxMnB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5saS1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDU1MDsKICAgICAgfQogICAgICAubGktcXR5IHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLXNvZnQpOwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIH0KICAgICAgLmxpLWFtdCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgfQogICAgICAub2QtcGF5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnKTsKICAgICAgfQogICAgICAub2QtcGF5IC5sYmwgewogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICAgIH0KICAgICAgLm9kLXBheSAuYnJhbmQgewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICAgIH0KICAgICAgLm9kLXBheSAubXV0ZWQgewogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgIH0KCiAgICAgIC5lbXB0eSB7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgcGFkZGluZzogNnB4IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+KGZ1bmN0aW9uKCl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZihuJiZuLnN1cHBvcnRzJiZuLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpcmV0dXJuO2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl0nKSlvKGUpO25ldyBNdXRhdGlvbk9ic2VydmVyKGU9Pntmb3IoY29uc3QgaSBvZiBlKWlmKGkudHlwZT09PSJjaGlsZExpc3QiKWZvcihjb25zdCBhIG9mIGkuYWRkZWROb2RlcylhLnRhZ05hbWU9PT0iTElOSyImJmEucmVsPT09Im1vZHVsZXByZWxvYWQiJiZvKGEpfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTtmdW5jdGlvbiByKGUpe2NvbnN0IGk9e307cmV0dXJuIGUuaW50ZWdyaXR5JiYoaS5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHkpLGUucmVmZXJyZXJQb2xpY3kmJihpLnJlZmVycmVyUG9saWN5PWUucmVmZXJyZXJQb2xpY3kpLGUuY3Jvc3NPcmlnaW49PT0idXNlLWNyZWRlbnRpYWxzIj9pLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjplLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/aS5jcmVkZW50aWFscz0ib21pdCI6aS5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLGl9ZnVuY3Rpb24gbyhlKXtpZihlLmVwKXJldHVybjtlLmVwPSEwO2NvbnN0IGk9cihlKTtmZXRjaChlLmhyZWYsaSl9fSkoKTtjb25zdCBobT0ibW9kdWxlcHJlbG9hZCIsJG09ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IFVSTCh0LG4pLmhyZWZ9LEdhPXt9LF9tPWZ1bmN0aW9uKG4scixvKXtsZXQgZT1Qcm9taXNlLnJlc29sdmUoKTtpZihyJiZyLmxlbmd0aD4wKXtsZXQgYT1mdW5jdGlvbihsKXtyZXR1cm4gUHJvbWlzZS5hbGwobC5tYXAoZz0+UHJvbWlzZS5yZXNvbHZlKGcpLnRoZW4odj0+KHtzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6dn0pLHY9Pih7c3RhdHVzOiJyZWplY3RlZCIscmVhc29uOnZ9KSkpKX07Y29uc3Qgcz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibWV0YVtwcm9wZXJ0eT1jc3Atbm9uY2VdIiksdT1jPy5ub25jZXx8Yz8uZ2V0QXR0cmlidXRlKCJub25jZSIpO2U9YShyLm1hcChsPT57aWYobD0kbShsLG8pLGwgaW4gR2EpcmV0dXJuO0dhW2xdPSEwO2NvbnN0IGc9bC5lbmRzV2l0aCgiLmNzcyIpLHY9Zz8nW3JlbD0ic3R5bGVzaGVldCJdJzoiIjtpZighIW8pZm9yKGxldCBxPXMubGVuZ3RoLTE7cT49MDtxLS0pe2NvbnN0IFI9c1txXTtpZihSLmhyZWY9PT1sJiYoIWd8fFIucmVsPT09InN0eWxlc2hlZXQiKSlyZXR1cm59ZWxzZSBpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW2hyZWY9IiR7bH0iXSR7dn1gKSlyZXR1cm47Y29uc3QgeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7aWYoeS5yZWw9Zz8ic3R5bGVzaGVldCI6aG0sZ3x8KHkuYXM9InNjcmlwdCIpLHkuY3Jvc3NPcmlnaW49IiIseS5ocmVmPWwsdSYmeS5zZXRBdHRyaWJ1dGUoIm5vbmNlIix1KSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHkpLGcpcmV0dXJuIG5ldyBQcm9taXNlKChxLFIpPT57eS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixxKSx5LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+UihuZXcgRXJyb3IoYFVuYWJsZSB0byBwcmVsb2FkIENTUyBmb3IgJHtsfWApKSl9KX0pKX1mdW5jdGlvbiBpKGEpe2NvbnN0IHM9bmV3IEV2ZW50KCJ2aXRlOnByZWxvYWRFcnJvciIse2NhbmNlbGFibGU6ITB9KTtpZihzLnBheWxvYWQ9YSx3aW5kb3cuZGlzcGF0Y2hFdmVudChzKSwhcy5kZWZhdWx0UHJldmVudGVkKXRocm93IGF9cmV0dXJuIGUudGhlbihhPT57Zm9yKGNvbnN0IHMgb2YgYXx8W10pcy5zdGF0dXM9PT0icmVqZWN0ZWQiJiZpKHMucmVhc29uKTtyZXR1cm4gbigpLmNhdGNoKGkpfSl9O3ZhciBYYTtjb25zdCBlaT1PYmplY3QuZnJlZXplKHtzdGF0dXM6ImFib3J0ZWQifSk7ZnVuY3Rpb24gZCh0LG4scil7ZnVuY3Rpb24gbyhzLGMpe2lmKHMuX3pvZHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIl96b2QiLHt2YWx1ZTp7ZGVmOmMsY29uc3RyOmEsdHJhaXRzOm5ldyBTZXR9LGVudW1lcmFibGU6ITF9KSxzLl96b2QudHJhaXRzLmhhcyh0KSlyZXR1cm47cy5fem9kLnRyYWl0cy5hZGQodCksbihzLGMpO2NvbnN0IHU9YS5wcm90b3R5cGUsbD1PYmplY3Qua2V5cyh1KTtmb3IobGV0IGc9MDtnPGwubGVuZ3RoO2crKyl7Y29uc3Qgdj1sW2ddO3YgaW4gc3x8KHNbdl09dVt2XS5iaW5kKHMpKX19Y29uc3QgZT1yPy5QYXJlbnQ/P09iamVjdDtjbGFzcyBpIGV4dGVuZHMgZXt9T2JqZWN0LmRlZmluZVByb3BlcnR5KGksIm5hbWUiLHt2YWx1ZTp0fSk7ZnVuY3Rpb24gYShzKXt2YXIgYztjb25zdCB1PXI/LlBhcmVudD9uZXcgaTp0aGlzO28odSxzKSwoYz11Ll96b2QpLmRlZmVycmVkPz8oYy5kZWZlcnJlZD1bXSk7Zm9yKGNvbnN0IGwgb2YgdS5fem9kLmRlZmVycmVkKWwoKTtyZXR1cm4gdX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImluaXQiLHt2YWx1ZTpvfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpzPT5yPy5QYXJlbnQmJnMgaW5zdGFuY2VvZiByLlBhcmVudD8hMDpzPy5fem9kPy50cmFpdHM/Lmhhcyh0KX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJuYW1lIix7dmFsdWU6dH0pLGF9Y29uc3QgdGk9U3ltYm9sKCJ6b2RfYnJhbmQiKTtjbGFzcyBUZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkVuY291bnRlcmVkIFByb21pc2UgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlLiBVc2UgLnBhcnNlQXN5bmMoKSBpbnN0ZWFkLiIpfX1jbGFzcyBFbiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4pe3N1cGVyKGBFbmNvdW50ZXJlZCB1bmlkaXJlY3Rpb25hbCB0cmFuc2Zvcm0gZHVyaW5nIGVuY29kZTogJHtufWApLHRoaXMubmFtZT0iWm9kRW5jb2RlRXJyb3IifX0oWGE9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsQ29uZmlnPz8oWGEuX196b2RfZ2xvYmFsQ29uZmlnPXt9KTtjb25zdCBmdD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZztmdW5jdGlvbiBIKHQpe3JldHVybiB0JiZPYmplY3QuYXNzaWduKGZ0LHQpLGZ0fWZ1bmN0aW9uIGJtKHQpe3JldHVybiB0fWZ1bmN0aW9uIHltKHQpe3JldHVybiB0fWZ1bmN0aW9uIGttKHQpe31mdW5jdGlvbiBTbSh0KXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIHdtKHQpe31mdW5jdGlvbiBuaSh0KXtjb25zdCBuPU9iamVjdC52YWx1ZXModCkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoW28sZV0pPT5uLmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sZV0pPT5lKX1mdW5jdGlvbiBfKHQsbj0ifCIpe3JldHVybiB0Lm1hcChyPT5rKHIpKS5qb2luKG4pfWZ1bmN0aW9uIFRuKHQsbil7cmV0dXJuIHR5cGVvZiBuPT0iYmlnaW50Ij9uLnRvU3RyaW5nKCk6bn1mdW5jdGlvbiBfdCh0KXtyZXR1cm57Z2V0IHZhbHVlKCl7e2NvbnN0IG49dCgpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmFsdWUiLHt2YWx1ZTpufSksbn19fX1mdW5jdGlvbiBOZSh0KXtyZXR1cm4gdD09bnVsbH1mdW5jdGlvbiBabih0KXtjb25zdCBuPXQuc3RhcnRzV2l0aCgiXiIpPzE6MCxyPXQuZW5kc1dpdGgoIiQiKT90Lmxlbmd0aC0xOnQubGVuZ3RoO3JldHVybiB0LnNsaWNlKG4scil9ZnVuY3Rpb24gVHModCxuKXtjb25zdCByPXQvbixvPU1hdGgucm91bmQociksZT1OdW1iZXIuRVBTSUxPTipNYXRoLm1heChNYXRoLmFicyhyKSwxKTtyZXR1cm4gTWF0aC5hYnMoci1vKTxlPzA6ci1vfWNvbnN0IFlhPVN5bWJvbCgiZXZhbHVhdGluZyIpO2Z1bmN0aW9uIFQodCxuLHIpe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2dldCgpe2lmKG8hPT1ZYSlyZXR1cm4gbz09PXZvaWQgMCYmKG89WWEsbz1yKCkpLG99LHNldChlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIEltKHQpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSl9ZnVuY3Rpb24gU2UodCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se3ZhbHVlOnIsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBnZSguLi50KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIHQpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocik7T2JqZWN0LmFzc2lnbihuLG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSxuKX1mdW5jdGlvbiB6bSh0KXtyZXR1cm4gZ2UodC5fem9kLmRlZil9ZnVuY3Rpb24geG0odCxuKXtyZXR1cm4gbj9uLnJlZHVjZSgocixvKT0+cj8uW29dLHQpOnR9ZnVuY3Rpb24gVG0odCl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxyPW4ubWFwKG89PnRbb10pO3JldHVybiBQcm9taXNlLmFsbChyKS50aGVuKG89Pntjb25zdCBlPXt9O2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKWVbbltpXV09b1tpXTtyZXR1cm4gZX0pfWZ1bmN0aW9uIGptKHQ9MTApe2NvbnN0IG49ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgcj0iIjtmb3IobGV0IG89MDtvPHQ7bysrKXIrPW5bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm4ubGVuZ3RoKV07cmV0dXJuIHJ9ZnVuY3Rpb24gQnIodCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWZ1bmN0aW9uIGpzKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3Qgcmk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi50KT0+e307ZnVuY3Rpb24gTGUodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwmJiFBcnJheS5pc0FycmF5KHQpfWNvbnN0IFVzPV90KCgpPT57aWYoZnQuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCB0PUZ1bmN0aW9uO3JldHVybiBuZXcgdCgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gamUodCl7aWYoTGUodCk9PT0hMSlyZXR1cm4hMTtjb25zdCBuPXQuY29uc3RydWN0b3I7aWYobj09PXZvaWQgMHx8dHlwZW9mIG4hPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgcj1uLnByb3RvdHlwZTtyZXR1cm4hKExlKHIpPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24gUm4odCl7cmV0dXJuIGplKHQpP3suLi50fTpBcnJheS5pc0FycmF5KHQpP1suLi50XTp0IGluc3RhbmNlb2YgTWFwP25ldyBNYXAodCk6dCBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KHQpOnR9ZnVuY3Rpb24gVW0odCl7bGV0IG49MDtmb3IoY29uc3QgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZuKys7cmV0dXJuIG59Y29uc3QgUG09dD0+e2NvbnN0IG49dHlwZW9mIHQ7c3dpdGNoKG4pe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4odCk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnQ9PT1udWxsPyJudWxsIjp0LnRoZW4mJnR5cGVvZiB0LnRoZW49PSJmdW5jdGlvbiImJnQuY2F0Y2gmJnR5cGVvZiB0LmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmdCBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmdCBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJnQgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJnQgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7bn1gKX19LGpuPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksUHM9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gaGUodCl7cmV0dXJuIHQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBhZSh0LG4scil7Y29uc3Qgbz1uZXcgdC5fem9kLmNvbnN0cihuPz90Ll96b2QuZGVmKTtyZXR1cm4oIW58fHI/LnBhcmVudCkmJihvLl96b2QucGFyZW50PXQpLG99ZnVuY3Rpb24gaCh0KXtjb25zdCBuPXQ7aWYoIW4pcmV0dXJue307aWYodHlwZW9mIG49PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+bn07aWYobj8ubWVzc2FnZSE9PXZvaWQgMCl7aWYobj8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTtuLmVycm9yPW4ubWVzc2FnZX1yZXR1cm4gZGVsZXRlIG4ubWVzc2FnZSx0eXBlb2Ygbi5lcnJvcj09InN0cmluZyI/ey4uLm4sZXJyb3I6KCk9Pm4uZXJyb3J9Om59ZnVuY3Rpb24gT20odCl7bGV0IG47cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KHIsbyxlKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmdldChuLG8sZSl9LHNldChyLG8sZSxpKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LnNldChuLG8sZSxpKX0saGFzKHIsbyl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5oYXMobixvKX0sZGVsZXRlUHJvcGVydHkocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KG4sbyl9LG93bktleXMocil7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5vd25LZXlzKG4pfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLG8pfSxkZWZpbmVQcm9wZXJ0eShyLG8sZSl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShuLG8sZSl9fSl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKSsibiI6dHlwZW9mIHQ9PSJzdHJpbmciP2AiJHt0fSJgOmAke3R9YH1mdW5jdGlvbiBPcyh0KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZmlsdGVyKG49PnRbbl0uX3pvZC5vcHRpbj09PSJvcHRpb25hbCImJnRbbl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBEcz17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sTnM9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIEVzKHQsbil7Y29uc3Qgcj10Ll96b2QuZGVmLG89ci5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9Z2UodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgYT17fTtmb3IoY29uc3QgcyBpbiBuKXtpZighKHMgaW4gci5zaGFwZSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtzfSJgKTtuW3NdJiYoYVtzXT1yLnNoYXBlW3NdKX1yZXR1cm4gU2UodGhpcywic2hhcGUiLGEpLGF9LGNoZWNrczpbXX0pO3JldHVybiBhZSh0LGkpfWZ1bmN0aW9uIFpzKHQsbil7Y29uc3Qgcj10Ll96b2QuZGVmLG89ci5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9Z2UodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgYT17Li4udC5fem9kLmRlZi5zaGFwZX07Zm9yKGNvbnN0IHMgaW4gbil7aWYoIShzIGluIHIuc2hhcGUpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7c30iYCk7bltzXSYmZGVsZXRlIGFbc119cmV0dXJuIFNlKHRoaXMsInNoYXBlIixhKSxhfSxjaGVja3M6W119KTtyZXR1cm4gYWUodCxpKX1mdW5jdGlvbiBScyh0LG4pe2lmKCFqZShuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl7Y29uc3QgaT10Ll96b2QuZGVmLnNoYXBlO2Zvcihjb25zdCBhIGluIG4paWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGEpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1jb25zdCBlPWdlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGk9ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubn07cmV0dXJuIFNlKHRoaXMsInNoYXBlIixpKSxpfX0pO3JldHVybiBhZSh0LGUpfWZ1bmN0aW9uIENzKHQsbil7aWYoIWplKG4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCB0byBzYWZlRXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHI9Z2UodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgbz17Li4udC5fem9kLmRlZi5zaGFwZSwuLi5ufTtyZXR1cm4gU2UodGhpcywic2hhcGUiLG8pLG99fSk7cmV0dXJuIGFlKHQscil9ZnVuY3Rpb24gQXModCxuKXtpZih0Ll96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCByPWdlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG89ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubi5fem9kLmRlZi5zaGFwZX07cmV0dXJuIFNlKHRoaXMsInNoYXBlIixvKSxvfSxnZXQgY2F0Y2hhbGwoKXtyZXR1cm4gbi5fem9kLmRlZi5jYXRjaGFsbH0sY2hlY2tzOm4uX3pvZC5kZWYuY2hlY2tzPz9bXX0pO3JldHVybiBhZSh0LHIpfWZ1bmN0aW9uIExzKHQsbixyKXtjb25zdCBlPW4uX3pvZC5kZWYuY2hlY2tzO2lmKGUmJmUubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIucGFydGlhbCgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBhPWdlKG4uX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IHM9bi5fem9kLmRlZi5zaGFwZSxjPXsuLi5zfTtpZihyKWZvcihjb25zdCB1IGluIHIpe2lmKCEodSBpbiBzKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3V9ImApO3JbdV0mJihjW3VdPXQ/bmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c1t1XX0pOnNbdV0pfWVsc2UgZm9yKGNvbnN0IHUgaW4gcyljW3VdPXQ/bmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c1t1XX0pOnNbdV07cmV0dXJuIFNlKHRoaXMsInNoYXBlIixjKSxjfSxjaGVja3M6W119KTtyZXR1cm4gYWUobixhKX1mdW5jdGlvbiBNcyh0LG4scil7Y29uc3Qgbz1nZShuLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBlPW4uX3pvZC5kZWYuc2hhcGUsaT17Li4uZX07aWYocilmb3IoY29uc3QgYSBpbiByKXtpZighKGEgaW4gaSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHthfSJgKTtyW2FdJiYoaVthXT1uZXcgdCh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTplW2FdfSkpfWVsc2UgZm9yKGNvbnN0IGEgaW4gZSlpW2FdPW5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmVbYV19KTtyZXR1cm4gU2UodGhpcywic2hhcGUiLGkpLGl9fSk7cmV0dXJuIGFlKG4sbyl9ZnVuY3Rpb24geGUodCxuPTApe2lmKHQuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgcj1uO3I8dC5pc3N1ZXMubGVuZ3RoO3IrKylpZih0Lmlzc3Vlc1tyXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBxcyh0LG49MCl7aWYodC5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCByPW47cjx0Lmlzc3Vlcy5sZW5ndGg7cisrKWlmKHQuaXNzdWVzW3JdPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHVlKHQsbil7cmV0dXJuIG4ubWFwKHI9Pnt2YXIgbztyZXR1cm4obz1yKS5wYXRoPz8oby5wYXRoPVtdKSxyLnBhdGgudW5zaGlmdCh0KSxyfSl9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OnQ/Lm1lc3NhZ2V9ZnVuY3Rpb24gb2UodCxuLHIpe2NvbnN0IG89dC5tZXNzYWdlP3QubWVzc2FnZTpwdCh0Lmluc3Q/Ll96b2QuZGVmPy5lcnJvcj8uKHQpKT8/cHQobj8uZXJyb3I/Lih0KSk/P3B0KHIuY3VzdG9tRXJyb3I/Lih0KSk/P3B0KHIubG9jYWxlRXJyb3I/Lih0KSk/PyJJbnZhbGlkIGlucHV0Iix7aW5zdDplLGNvbnRpbnVlOmksaW5wdXQ6YSwuLi5zfT10O3JldHVybiBzLnBhdGg/PyhzLnBhdGg9W10pLHMubWVzc2FnZT1vLG4/LnJlcG9ydElucHV0JiYocy5pbnB1dD1hKSxzfWZ1bmN0aW9uIENuKHQpe3JldHVybiB0IGluc3RhbmNlb2YgU2V0PyJzZXQiOnQgaW5zdGFuY2VvZiBNYXA/Im1hcCI6dCBpbnN0YW5jZW9mIEZpbGU/ImZpbGUiOiJ1bmtub3duIn1mdW5jdGlvbiBBbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnR5cGVvZiB0PT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gUyh0KXtjb25zdCBuPXR5cGVvZiB0O3N3aXRjaChuKXtjYXNlIm51bWJlciI6cmV0dXJuIE51bWJlci5pc05hTih0KT8ibmFuIjoibnVtYmVyIjtjYXNlIm9iamVjdCI6e2lmKHQ9PT1udWxsKXJldHVybiJudWxsIjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiJhcnJheSI7Y29uc3Qgcj10O2lmKHImJk9iamVjdC5nZXRQcm90b3R5cGVPZihyKSE9PU9iamVjdC5wcm90b3R5cGUmJiJjb25zdHJ1Y3RvciJpbiByJiZyLmNvbnN0cnVjdG9yKXJldHVybiByLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBufWZ1bmN0aW9uIE1lKC4uLnQpe2NvbnN0W24scixvXT10O3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/e21lc3NhZ2U6bixjb2RlOiJjdXN0b20iLGlucHV0OnIsaW5zdDpvfTp7Li4ubn19ZnVuY3Rpb24gRG0odCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoW24scl0pPT5OdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KG4sMTApKSkubWFwKG49Pm5bMV0pfWZ1bmN0aW9uIEZzKHQpe2NvbnN0IG49YXRvYih0KSxyPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKylyW29dPW4uY2hhckNvZGVBdChvKTtyZXR1cm4gcn1mdW5jdGlvbiBKcyh0KXtsZXQgbj0iIjtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbcl0pO3JldHVybiBidG9hKG4pfWZ1bmN0aW9uIE5tKHQpe2NvbnN0IG49dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSxyPSI9Ii5yZXBlYXQoKDQtbi5sZW5ndGglNCklNCk7cmV0dXJuIEZzKG4rcil9ZnVuY3Rpb24gRW0odCl7cmV0dXJuIEpzKHQpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX1mdW5jdGlvbiBabSh0KXtjb25zdCBuPXQucmVwbGFjZSgvXjB4LywiIik7aWYobi5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmcgbGVuZ3RoIik7Y29uc3Qgcj1uZXcgVWludDhBcnJheShuLmxlbmd0aC8yKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rPTIpcltvLzJdPU51bWJlci5wYXJzZUludChuLnNsaWNlKG8sbysyKSwxNik7cmV0dXJuIHJ9ZnVuY3Rpb24gUm0odCl7cmV0dXJuIEFycmF5LmZyb20odCkubWFwKG49Pm4udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIil9Y2xhc3MgQ217Y29uc3RydWN0b3IoLi4ubil7fX1jb25zdCBpaT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsQklHSU5UX0ZPUk1BVF9SQU5HRVM6TnMsQ2xhc3M6Q20sTlVNQkVSX0ZPUk1BVF9SQU5HRVM6RHMsYWJvcnRlZDp4ZSxhbGxvd3NFdmFsOlVzLGFzc2VydDp3bSxhc3NlcnRFcXVhbDpibSxhc3NlcnRJczprbSxhc3NlcnROZXZlcjpTbSxhc3NlcnROb3RFcXVhbDp5bSxhc3NpZ25Qcm9wOlNlLGJhc2U2NFRvVWludDhBcnJheTpGcyxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6Tm0sY2FjaGVkOl90LGNhcHR1cmVTdGFja1RyYWNlOnJpLGNsZWFuRW51bTpEbSxjbGVhblJlZ2V4OlpuLGNsb25lOmFlLGNsb25lRGVmOnptLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6T20sZGVmaW5lTGF6eTpULGVzYzpCcixlc2NhcGVSZWdleDpoZSxleHBsaWNpdGx5QWJvcnRlZDpxcyxleHRlbmQ6UnMsZmluYWxpemVJc3N1ZTpvZSxmbG9hdFNhZmVSZW1haW5kZXI6VHMsZ2V0RWxlbWVudEF0UGF0aDp4bSxnZXRFbnVtVmFsdWVzOm5pLGdldExlbmd0aGFibGVPcmlnaW46QW4sZ2V0UGFyc2VkVHlwZTpQbSxnZXRTaXphYmxlT3JpZ2luOkNuLGhleFRvVWludDhBcnJheTpabSxpc09iamVjdDpMZSxpc1BsYWluT2JqZWN0OmplLGlzc3VlOk1lLGpvaW5WYWx1ZXM6Xyxqc29uU3RyaW5naWZ5UmVwbGFjZXI6VG4sbWVyZ2U6QXMsbWVyZ2VEZWZzOmdlLG5vcm1hbGl6ZVBhcmFtczpoLG51bGxpc2g6TmUsbnVtS2V5czpVbSxvYmplY3RDbG9uZTpJbSxvbWl0OlpzLG9wdGlvbmFsS2V5czpPcyxwYXJzZWRUeXBlOlMscGFydGlhbDpMcyxwaWNrOkVzLHByZWZpeElzc3Vlczp1ZSxwcmltaXRpdmVUeXBlczpQcyxwcm9taXNlQWxsT2JqZWN0OlRtLHByb3BlcnR5S2V5VHlwZXM6am4scmFuZG9tU3RyaW5nOmptLHJlcXVpcmVkOk1zLHNhZmVFeHRlbmQ6Q3Msc2hhbGxvd0Nsb25lOlJuLHNsdWdpZnk6anMsc3RyaW5naWZ5UHJpbWl0aXZlOmssdWludDhBcnJheVRvQmFzZTY0OkpzLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpFbSx1aW50OEFycmF5VG9IZXg6Um0sdW53cmFwTWVzc2FnZTpwdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxIcz0odCxuKT0+e3QubmFtZT0iJFpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX3pvZCIse3ZhbHVlOnQuX3pvZCxlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImlzc3VlcyIse3ZhbHVlOm4sZW51bWVyYWJsZTohMX0pLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeShuLFRuLDIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ0b1N0cmluZyIse3ZhbHVlOigpPT50Lm1lc3NhZ2UsZW51bWVyYWJsZTohMX0pfSxvaT1kKCIkWm9kRXJyb3IiLEhzKSxzZT1kKCIkWm9kRXJyb3IiLEhzLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBMbih0LG49cj0+ci5tZXNzYWdlKXtjb25zdCByPXt9LG89W107Zm9yKGNvbnN0IGUgb2YgdC5pc3N1ZXMpZS5wYXRoLmxlbmd0aD4wPyhyW2UucGF0aFswXV09cltlLnBhdGhbMF1dfHxbXSxyW2UucGF0aFswXV0ucHVzaChuKGUpKSk6by5wdXNoKG4oZSkpO3JldHVybntmb3JtRXJyb3JzOm8sZmllbGRFcnJvcnM6cn19ZnVuY3Rpb24gTW4odCxuPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17X2Vycm9yczpbXX0sbz0oZSxpPVtdKT0+e2Zvcihjb25zdCBhIG9mIGUuaXNzdWVzKWlmKGEuY29kZT09PSJpbnZhbGlkX3VuaW9uIiYmYS5lcnJvcnMubGVuZ3RoKWEuZXJyb3JzLm1hcChzPT5vKHtpc3N1ZXM6c30sWy4uLmksLi4uYS5wYXRoXSkpO2Vsc2UgaWYoYS5jb2RlPT09ImludmFsaWRfa2V5IilvKHtpc3N1ZXM6YS5pc3N1ZXN9LFsuLi5pLC4uLmEucGF0aF0pO2Vsc2UgaWYoYS5jb2RlPT09ImludmFsaWRfZWxlbWVudCIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uaSwuLi5hLnBhdGhdKTtlbHNle2NvbnN0IHM9Wy4uLmksLi4uYS5wYXRoXTtpZihzLmxlbmd0aD09PTApci5fZXJyb3JzLnB1c2gobihhKSk7ZWxzZXtsZXQgYz1yLHU9MDtmb3IoO3U8cy5sZW5ndGg7KXtjb25zdCBsPXNbdV07dT09PXMubGVuZ3RoLTE/KGNbbF09Y1tsXXx8e19lcnJvcnM6W119LGNbbF0uX2Vycm9ycy5wdXNoKG4oYSkpKTpjW2xdPWNbbF18fHtfZXJyb3JzOltdfSxjPWNbbF0sdSsrfX19fTtyZXR1cm4gbyh0KSxyfWZ1bmN0aW9uIGFpKHQsbj1yPT5yLm1lc3NhZ2Upe2NvbnN0IHI9e2Vycm9yczpbXX0sbz0oZSxpPVtdKT0+e3ZhciBhLHM7Zm9yKGNvbnN0IGMgb2YgZS5pc3N1ZXMpaWYoYy5jb2RlPT09ImludmFsaWRfdW5pb24iJiZjLmVycm9ycy5sZW5ndGgpYy5lcnJvcnMubWFwKHU9Pm8oe2lzc3Vlczp1fSxbLi4uaSwuLi5jLnBhdGhdKSk7ZWxzZSBpZihjLmNvZGU9PT0iaW52YWxpZF9rZXkiKW8oe2lzc3VlczpjLmlzc3Vlc30sWy4uLmksLi4uYy5wYXRoXSk7ZWxzZSBpZihjLmNvZGU9PT0iaW52YWxpZF9lbGVtZW50IilvKHtpc3N1ZXM6Yy5pc3N1ZXN9LFsuLi5pLC4uLmMucGF0aF0pO2Vsc2V7Y29uc3QgdT1bLi4uaSwuLi5jLnBhdGhdO2lmKHUubGVuZ3RoPT09MCl7ci5lcnJvcnMucHVzaChuKGMpKTtjb250aW51ZX1sZXQgbD1yLGc9MDtmb3IoO2c8dS5sZW5ndGg7KXtjb25zdCB2PXVbZ10sJD1nPT09dS5sZW5ndGgtMTt0eXBlb2Ygdj09InN0cmluZyI/KGwucHJvcGVydGllcz8/KGwucHJvcGVydGllcz17fSksKGE9bC5wcm9wZXJ0aWVzKVt2XT8/KGFbdl09e2Vycm9yczpbXX0pLGw9bC5wcm9wZXJ0aWVzW3ZdKToobC5pdGVtcz8/KGwuaXRlbXM9W10pLChzPWwuaXRlbXMpW3ZdPz8oc1t2XT17ZXJyb3JzOltdfSksbD1sLml0ZW1zW3ZdKSwkJiZsLmVycm9ycy5wdXNoKG4oYykpLGcrK319fTtyZXR1cm4gbyh0KSxyfWZ1bmN0aW9uIFZzKHQpe2NvbnN0IG49W10scj10Lm1hcChvPT50eXBlb2Ygbz09Im9iamVjdCI/by5rZXk6byk7Zm9yKGNvbnN0IG8gb2Ygcil0eXBlb2Ygbz09Im51bWJlciI/bi5wdXNoKGBbJHtvfV1gKTp0eXBlb2Ygbz09InN5bWJvbCI/bi5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShTdHJpbmcobykpfV1gKTovW15cdyRdLy50ZXN0KG8pP24ucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkobyl9XWApOihuLmxlbmd0aCYmbi5wdXNoKCIuIiksbi5wdXNoKG8pKTtyZXR1cm4gbi5qb2luKCIiKX1mdW5jdGlvbiBzaSh0KXtjb25zdCBuPVtdLHI9Wy4uLnQuaXNzdWVzXS5zb3J0KChvLGUpPT4oby5wYXRoPz9bXSkubGVuZ3RoLShlLnBhdGg/P1tdKS5sZW5ndGgpO2Zvcihjb25zdCBvIG9mIHIpbi5wdXNoKGDinJYgJHtvLm1lc3NhZ2V9YCksby5wYXRoPy5sZW5ndGgmJm4ucHVzaChgICDihpIgYXQgJHtWcyhvLnBhdGgpfWApO3JldHVybiBuLmpvaW4oYApgKX1jb25zdCBidD10PT4obixyLG8sZSk9Pntjb25zdCBpPW8/ey4uLm8sYXN5bmM6ITF9Onthc3luYzohMX0sYT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0saSk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IFRlO2lmKGEuaXNzdWVzLmxlbmd0aCl7Y29uc3Qgcz1uZXcoZT8uRXJyPz90KShhLmlzc3Vlcy5tYXAoYz0+b2UoYyxpLEgoKSkpKTt0aHJvdyByaShzLGU/LmNhbGxlZSksc31yZXR1cm4gYS52YWx1ZX0sR3I9YnQoc2UpLHl0PXQ9PmFzeW5jKG4scixvLGUpPT57Y29uc3QgaT1vP3suLi5vLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBzPW5ldyhlPy5FcnI/P3QpKGEuaXNzdWVzLm1hcChjPT5vZShjLGksSCgpKSkpO3Rocm93IHJpKHMsZT8uY2FsbGVlKSxzfXJldHVybiBhLnZhbHVlfSxYcj15dChzZSksa3Q9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxhc3luYzohMX06e2FzeW5jOiExfSxpPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxlKTtpZihpIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgVGU7cmV0dXJuIGkuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcodD8/b2kpKGkuaXNzdWVzLm1hcChhPT5vZShhLGUsSCgpKSkpfTp7c3VjY2VzczohMCxkYXRhOmkudmFsdWV9fSxjaT1rdChzZSksU3Q9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBpPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxlKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2UmJihpPWF3YWl0IGkpLGkuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcgdChpLmlzc3Vlcy5tYXAoYT0+b2UoYSxlLEgoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTppLnZhbHVlfX0sS3M9U3Qoc2UpLHVpPXQ9PihuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIGJ0KHQpKG4scixlKX0sQW09dWkoc2UpLGxpPXQ9PihuLHIsbyk9PmJ0KHQpKG4scixvKSxMbT1saShzZSksZGk9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB5dCh0KShuLHIsZSl9LE1tPWRpKHNlKSxtaT10PT5hc3luYyhuLHIsbyk9Pnl0KHQpKG4scixvKSxxbT1taShzZSkscGk9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4ga3QodCkobixyLGUpfSxGbT1waShzZSksZmk9dD0+KG4scixvKT0+a3QodCkobixyLG8pLEptPWZpKHNlKSxnaT10PT5hc3luYyhuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIFN0KHQpKG4scixlKX0sSG09Z2koc2UpLHZpPXQ9PmFzeW5jKG4scixvKT0+U3QodCkobixyLG8pLFZtPXZpKHNlKSxXcz0vXltjQ11bMC05YS16XXs2LH0kLyxCcz0vXlswLTlhLXpdKyQvLEdzPS9eWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNn0kLyxYcz0vXlswLTlhLXZBLVZdezIwfSQvLFlzPS9eW0EtWmEtejAtOV17Mjd9JC8sUXM9L15bYS16QS1aMC05Xy1dezIxfSQvLGVjPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLEttPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sdGM9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLHFlPXQ9PnQ/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke3R9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxXbT1xZSg0KSxCbT1xZSg2KSxHbT1xZSg3KSxuYz0vXig/IVwuKSg/IS4qXC5cLikoW0EtWmEtejAtOV8nK1wtXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxYbT0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxZbT0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxyYz0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxRbT1yYyxlcD0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyx0cD0iXihcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXHB7RW1vamlfQ29tcG9uZW50fSkrJCI7ZnVuY3Rpb24gaWMoKXtyZXR1cm4gbmV3IFJlZ0V4cCh0cCwidSIpfWNvbnN0IG9jPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxhYz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopKSQvLHNjPXQ9Pntjb25zdCBuPWhlKHQ/PyI6Iik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oPzpbMC05QS1GXXsyfSR7bn0pezV9WzAtOUEtRl17Mn0kfF4oPzpbMC05YS1mXXsyfSR7bn0pezV9WzAtOWEtZl17Mn0kYCl9LGNjPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLyx1Yz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxsYz0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyxoaT0vXltBLVphLXowLTlfLV0qJC8sZGM9L14oPz0uezEsMjUzfVwuPyQpW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlstMC05YS16QS1aXXswLDYxfVswLTlhLXpBLVpdKT8pKlwuPyQvLG1jPS9eKFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pP1wuKStbYS16QS1aXXsyLH0kLywkaT0vXmh0dHBzPyQvLHBjPS9eXCtbMS05XVxkezYsMTR9JC8sZmM9Iig/Oig/OlxcZFxcZFsyNDY4XVswNDhdfFxcZFxcZFsxMzU3OV1bMjZdfFxcZFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcZHs0fS0oPzooPzowWzEzNTc4XXwxWzAyXSktKD86MFsxLTldfFsxMl1cXGR8M1swMV0pfCg/OjBbNDY5XXwxMSktKD86MFsxLTldfFsxMl1cXGR8MzApfCg/OjAyKS0oPzowWzEtOV18MVxcZHwyWzAtOF0pKSkiLGdjPW5ldyBSZWdFeHAoYF4ke2ZjfSRgKTtmdW5jdGlvbiB2Yyh0KXtjb25zdCBuPSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgdC5wcmVjaXNpb249PSJudW1iZXIiP3QucHJlY2lzaW9uPT09LTE/YCR7bn1gOnQucHJlY2lzaW9uPT09MD9gJHtufTpbMC01XVxcZGA6YCR7bn06WzAtNV1cXGRcXC5cXGR7JHt0LnByZWNpc2lvbn19YDpgJHtufSg/OjpbMC01XVxcZCg/OlxcLlxcZCspPyk/YH1mdW5jdGlvbiBoYyh0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dmModCl9JGApfWZ1bmN0aW9uICRjKHQpe2NvbnN0IG49dmMoe3ByZWNpc2lvbjp0LnByZWNpc2lvbn0pLHI9WyJaIl07dC5sb2NhbCYmci5wdXNoKCIiKSx0Lm9mZnNldCYmci5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBvPWAke259KD86JHtyLmpvaW4oInwiKX0pYDtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7ZmN9VCg/OiR7b30pJGApfWNvbnN0IF9jPXQ9Pntjb25zdCBuPXQ/YFtcXHNcXFNdeyR7dD8ubWluaW11bT8/MH0sJHt0Py5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7bn0kYCl9LGJjPS9eLT9cZCtuPyQvLHljPS9eLT9cZCskLyxfaT0vXi0/XGQrKD86XC5cZCspPyQvLGtjPS9eKD86dHJ1ZXxmYWxzZSkkL2ksU2M9L15udWxsJC9pLHdjPS9edW5kZWZpbmVkJC9pLEljPS9eW15BLVpdKiQvLHpjPS9eW15hLXpdKiQvLHhjPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gd3QodCxuKXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHt0fX0ke259JGApfWZ1bmN0aW9uIEl0KHQpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske3R9fSRgKX1jb25zdCBucD0vXlswLTlhLWZBLUZdezMyfSQvLHJwPXd0KDIyLCI9PSIpLGlwPUl0KDIyKSxvcD0vXlswLTlhLWZBLUZdezQwfSQvLGFwPXd0KDI3LCI9Iiksc3A9SXQoMjcpLGNwPS9eWzAtOWEtZkEtRl17NjR9JC8sdXA9d3QoNDMsIj0iKSxscD1JdCg0MyksZHA9L15bMC05YS1mQS1GXXs5Nn0kLyxtcD13dCg2NCwiIikscHA9SXQoNjQpLGZwPS9eWzAtOWEtZkEtRl17MTI4fSQvLGdwPXd0KDg2LCI9PSIpLHZwPUl0KDg2KSxxbj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmFzZTY0OmxjLGJhc2U2NHVybDpoaSxiaWdpbnQ6YmMsYm9vbGVhbjprYyxicm93c2VyRW1haWw6ZXAsY2lkcnY0OmNjLGNpZHJ2Njp1YyxjdWlkOldzLGN1aWQyOkJzLGRhdGU6Z2MsZGF0ZXRpbWU6JGMsZG9tYWluOm1jLGR1cmF0aW9uOmVjLGUxNjQ6cGMsZW1haWw6bmMsZW1vamk6aWMsZXh0ZW5kZWREdXJhdGlvbjpLbSxndWlkOnRjLGhleDp4Yyxob3N0bmFtZTpkYyxodG1sNUVtYWlsOlhtLGh0dHBQcm90b2NvbDokaSxpZG5FbWFpbDpRbSxpbnRlZ2VyOnljLGlwdjQ6b2MsaXB2NjphYyxrc3VpZDpZcyxsb3dlcmNhc2U6SWMsbWFjOnNjLG1kNV9iYXNlNjQ6cnAsbWQ1X2Jhc2U2NHVybDppcCxtZDVfaGV4Om5wLG5hbm9pZDpRcyxudWxsOlNjLG51bWJlcjpfaSxyZmM1MzIyRW1haWw6WW0sc2hhMV9iYXNlNjQ6YXAsc2hhMV9iYXNlNjR1cmw6c3Asc2hhMV9oZXg6b3Asc2hhMjU2X2Jhc2U2NDp1cCxzaGEyNTZfYmFzZTY0dXJsOmxwLHNoYTI1Nl9oZXg6Y3Asc2hhMzg0X2Jhc2U2NDptcCxzaGEzODRfYmFzZTY0dXJsOnBwLHNoYTM4NF9oZXg6ZHAsc2hhNTEyX2Jhc2U2NDpncCxzaGE1MTJfYmFzZTY0dXJsOnZwLHNoYTUxMl9oZXg6ZnAsc3RyaW5nOl9jLHRpbWU6aGMsdWxpZDpHcyx1bmRlZmluZWQ6d2MsdW5pY29kZUVtYWlsOnJjLHVwcGVyY2FzZTp6Yyx1dWlkOnFlLHV1aWQ0OldtLHV1aWQ2OkJtLHV1aWQ3OkdtLHhpZDpYc30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxNPWQoIiRab2RDaGVjayIsKHQsbik9Pnt2YXIgcjt0Ll96b2Q/Pyh0Ll96b2Q9e30pLHQuX3pvZC5kZWY9biwocj10Ll96b2QpLm9uYXR0YWNoPz8oci5vbmF0dGFjaD1bXSl9KSxUYz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxiaT1kKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPVRjW3R5cGVvZiBuLnZhbHVlXTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLGk9KG4uaW5jbHVzaXZlP2UubWF4aW11bTplLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi52YWx1ZTxpJiYobi5pbmNsdXNpdmU/ZS5tYXhpbXVtPW4udmFsdWU6ZS5leGNsdXNpdmVNYXhpbXVtPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPW89Pnsobi5pbmNsdXNpdmU/by52YWx1ZTw9bi52YWx1ZTpvLnZhbHVlPG4udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46cixjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnR5cGVvZiBuLnZhbHVlPT0ib2JqZWN0Ij9uLnZhbHVlLmdldFRpbWUoKTpuLnZhbHVlLGlucHV0Om8udmFsdWUsaW5jbHVzaXZlOm4uaW5jbHVzaXZlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHlpPWQoIiRab2RDaGVja0dyZWF0ZXJUaGFuIiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0IHI9VGNbdHlwZW9mIG4udmFsdWVdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcsaT0obi5pbmNsdXNpdmU/ZS5taW5pbXVtOmUuZXhjbHVzaXZlTWluaW11bSk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLnZhbHVlPmkmJihuLmluY2x1c2l2ZT9lLm1pbmltdW09bi52YWx1ZTplLmV4Y2x1c2l2ZU1pbmltdW09bi52YWx1ZSl9KSx0Ll96b2QuY2hlY2s9bz0+eyhuLmluY2x1c2l2ZT9vLnZhbHVlPj1uLnZhbHVlOm8udmFsdWU+bi52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0eXBlb2Ygbi52YWx1ZT09Im9iamVjdCI/bi52YWx1ZS5nZXRUaW1lKCk6bi52YWx1ZSxpbnB1dDpvLnZhbHVlLGluY2x1c2l2ZTpuLmluY2x1c2l2ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxqYz1kKCIkWm9kQ2hlY2tNdWx0aXBsZU9mIiwodCxuKT0+e00uaW5pdCh0LG4pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKHI9Pnt2YXIgbzsobz1yLl96b2QuYmFnKS5tdWx0aXBsZU9mPz8oby5tdWx0aXBsZU9mPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPXI9PntpZih0eXBlb2Ygci52YWx1ZSE9dHlwZW9mIG4udmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygci52YWx1ZT09ImJpZ2ludCI/ci52YWx1ZSVuLnZhbHVlPT09QmlnSW50KDApOlRzKHIudmFsdWUsbi52YWx1ZSk9PT0wKXx8ci5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiByLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjpuLnZhbHVlLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksVWM9ZCgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwodCxuKT0+e00uaW5pdCh0LG4pLG4uZm9ybWF0PW4uZm9ybWF0fHwiZmxvYXQ2NCI7Y29uc3Qgcj1uLmZvcm1hdD8uaW5jbHVkZXMoImludCIpLG89cj8iaW50IjoibnVtYmVyIixbZSxpXT1Ec1tuLmZvcm1hdF07dC5fem9kLm9uYXR0YWNoLnB1c2goYT0+e2NvbnN0IHM9YS5fem9kLmJhZztzLmZvcm1hdD1uLmZvcm1hdCxzLm1pbmltdW09ZSxzLm1heGltdW09aSxyJiYocy5wYXR0ZXJuPXljKX0pLHQuX3pvZC5jaGVjaz1hPT57Y29uc3Qgcz1hLnZhbHVlO2lmKHIpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXthLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDpuLmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OnMsaW5zdDp0fSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihzKSl7cz4wP2EuaXNzdWVzLnB1c2goe2lucHV0OnMsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDp0LG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohbi5hYm9ydH0pOmEuaXNzdWVzLnB1c2goe2lucHV0OnMsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OnQsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufX1zPGUmJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpzLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTplLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSxzPmkmJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpzLGNvZGU6InRvb19iaWciLG1heGltdW06aSxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksUGM9ZCgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0W3Isb109TnNbbi5mb3JtYXRdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5mb3JtYXQ9bi5mb3JtYXQsaS5taW5pbXVtPXIsaS5tYXhpbXVtPW99KSx0Ll96b2QuY2hlY2s9ZT0+e2NvbnN0IGk9ZS52YWx1ZTtpPHImJmUuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDppLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpyLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSxpPm8mJmUuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDppLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksT2M9ZCgiJFpvZENoZWNrTWF4U2l6ZSIsKHQsbik9Pnt2YXIgcjtNLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLm1heGltdW08ZSYmKG8uX3pvZC5iYWcubWF4aW11bT1uLm1heGltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7ZS5zaXplPD1uLm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpDbihlKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxEYz1kKCIkWm9kQ2hlY2tNaW5TaXplIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hTmUoZSkmJmUuc2l6ZSE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24ubWluaW11bT5lJiYoby5fem9kLmJhZy5taW5pbXVtPW4ubWluaW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtlLnNpemU+PW4ubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOkNuKGUpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksTmM9ZCgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKHQsbik9Pnt2YXIgcjtNLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UubWluaW11bT1uLnNpemUsZS5tYXhpbXVtPW4uc2l6ZSxlLnNpemU9bi5zaXplfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWUsaT1lLnNpemU7aWYoaT09PW4uc2l6ZSlyZXR1cm47Y29uc3QgYT1pPm4uc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46Q24oZSksLi4uYT97Y29kZToidG9vX2JpZyIsbWF4aW11bTpuLnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxFYz1kKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFOZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLm1heGltdW08ZSYmKG8uX3pvZC5iYWcubWF4aW11bT1uLm1heGltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7aWYoZS5sZW5ndGg8PW4ubWF4aW11bSlyZXR1cm47Y29uc3QgYT1BbihlKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxaYz1kKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFOZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLm1pbmltdW0+ZSYmKG8uX3pvZC5iYWcubWluaW11bT1uLm1pbmltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7aWYoZS5sZW5ndGg+PW4ubWluaW11bSlyZXR1cm47Y29uc3QgYT1BbihlKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFJjPWQoIiRab2RDaGVja0xlbmd0aEVxdWFscyIsKHQsbik9Pnt2YXIgcjtNLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLmxlbmd0aCE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5taW5pbXVtPW4ubGVuZ3RoLGUubWF4aW11bT1uLmxlbmd0aCxlLmxlbmd0aD1uLmxlbmd0aH0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlLGk9ZS5sZW5ndGg7aWYoaT09PW4ubGVuZ3RoKXJldHVybjtjb25zdCBhPUFuKGUpLHM9aT5uLmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi5zP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSx6dD1kKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLCh0LG4pPT57dmFyIHIsbztNLmluaXQodCxuKSx0Ll96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgaT1lLl96b2QuYmFnO2kuZm9ybWF0PW4uZm9ybWF0LG4ucGF0dGVybiYmKGkucGF0dGVybnM/PyhpLnBhdHRlcm5zPW5ldyBTZXQpLGkucGF0dGVybnMuYWRkKG4ucGF0dGVybikpfSksbi5wYXR0ZXJuPyhyPXQuX3pvZCkuY2hlY2s/PyhyLmNoZWNrPWU9PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KGUudmFsdWUpJiZlLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdCxpbnB1dDplLnZhbHVlLC4uLm4ucGF0dGVybj97cGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9KToobz10Ll96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksQ2M9ZCgiJFpvZENoZWNrUmVnZXgiLCh0LG4pPT57enQuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57bi5wYXR0ZXJuLmxhc3RJbmRleD0wLCFuLnBhdHRlcm4udGVzdChyLnZhbHVlKSYmci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpyLnZhbHVlLHBhdHRlcm46bi5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksQWM9ZCgiJFpvZENoZWNrTG93ZXJDYXNlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1JYyksenQuaW5pdCh0LG4pfSksTGM9ZCgiJFpvZENoZWNrVXBwZXJDYXNlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj16YyksenQuaW5pdCh0LG4pfSksTWM9ZCgiJFpvZENoZWNrSW5jbHVkZXMiLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1oZShuLmluY2x1ZGVzKSxvPW5ldyBSZWdFeHAodHlwZW9mIG4ucG9zaXRpb249PSJudW1iZXIiP2BeLnske24ucG9zaXRpb259fSR7cn1gOnIpO24ucGF0dGVybj1vLHQuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5wYXR0ZXJucz8/KGkucGF0dGVybnM9bmV3IFNldCksaS5wYXR0ZXJucy5hZGQobyl9KSx0Ll96b2QuY2hlY2s9ZT0+e2UudmFsdWUuaW5jbHVkZXMobi5pbmNsdWRlcyxuLnBvc2l0aW9uKXx8ZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIixpbmNsdWRlczpuLmluY2x1ZGVzLGlucHV0OmUudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSkscWM9ZCgiJFpvZENoZWNrU3RhcnRzV2l0aCIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPW5ldyBSZWdFeHAoYF4ke2hlKG4ucHJlZml4KX0uKmApO24ucGF0dGVybj8/KG4ucGF0dGVybj1yKSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UucGF0dGVybnM/PyhlLnBhdHRlcm5zPW5ldyBTZXQpLGUucGF0dGVybnMuYWRkKHIpfSksdC5fem9kLmNoZWNrPW89PntvLnZhbHVlLnN0YXJ0c1dpdGgobi5wcmVmaXgpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoic3RhcnRzX3dpdGgiLHByZWZpeDpuLnByZWZpeCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEZjPWQoIiRab2RDaGVja0VuZHNXaXRoIiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0IHI9bmV3IFJlZ0V4cChgLioke2hlKG4uc3VmZml4KX0kYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXIpLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5wYXR0ZXJucz8/KGUucGF0dGVybnM9bmV3IFNldCksZS5wYXR0ZXJucy5hZGQocil9KSx0Ll96b2QuY2hlY2s9bz0+e28udmFsdWUuZW5kc1dpdGgobi5zdWZmaXgpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIixzdWZmaXg6bi5zdWZmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KTtmdW5jdGlvbiBRYSh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnVlKHIsdC5pc3N1ZXMpKX1jb25zdCBKYz1kKCIkWm9kQ2hlY2tQcm9wZXJ0eSIsKHQsbik9PntNLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89bi5zY2hlbWEuX3pvZC5ydW4oe3ZhbHVlOnIudmFsdWVbbi5wcm9wZXJ0eV0saXNzdWVzOltdfSx7fSk7aWYobyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIG8udGhlbihlPT5RYShlLHIsbi5wcm9wZXJ0eSkpO1FhKG8scixuLnByb3BlcnR5KX19KSxIYz1kKCIkWm9kQ2hlY2tNaW1lVHlwZSIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPW5ldyBTZXQobi5taW1lKTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57by5fem9kLmJhZy5taW1lPW4ubWltZX0pLHQuX3pvZC5jaGVjaz1vPT57ci5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOm4ubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksVmM9ZCgiJFpvZENoZWNrT3ZlcndyaXRlIiwodCxuKT0+e00uaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57ci52YWx1ZT1uLnR4KHIudmFsdWUpfX0pO2NsYXNzIEtje2NvbnN0cnVjdG9yKG49W10pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMmJih0aGlzLmFyZ3M9bil9aW5kZW50ZWQobil7dGhpcy5pbmRlbnQrPTEsbih0aGlzKSx0aGlzLmluZGVudC09MX13cml0ZShuKXtpZih0eXBlb2Ygbj09ImZ1bmN0aW9uIil7bih0aGlzLHtleGVjdXRpb246InN5bmMifSksbih0aGlzLHtleGVjdXRpb246ImFzeW5jIn0pO3JldHVybn1jb25zdCBvPW4uc3BsaXQoYApgKS5maWx0ZXIoYT0+YSksZT1NYXRoLm1pbiguLi5vLm1hcChhPT5hLmxlbmd0aC1hLnRyaW1TdGFydCgpLmxlbmd0aCkpLGk9by5tYXAoYT0+YS5zbGljZShlKSkubWFwKGE9PiIgIi5yZXBlYXQodGhpcy5pbmRlbnQqMikrYSk7Zm9yKGNvbnN0IGEgb2YgaSl0aGlzLmNvbnRlbnQucHVzaChhKX1jb21waWxlKCl7Y29uc3Qgbj1GdW5jdGlvbixyPXRoaXM/LmFyZ3MsZT1bLi4uKHRoaXM/LmNvbnRlbnQ/P1siIl0pLm1hcChpPT5gICAke2l9YCldO3JldHVybiBuZXcgbiguLi5yLGUuam9pbihgCmApKX19Y29uc3QgV2M9e21ham9yOjQsbWlub3I6NCxwYXRjaDozfSxJPWQoIiRab2RUeXBlIiwodCxuKT0+e3ZhciByO3Q/Pyh0PXt9KSx0Ll96b2QuZGVmPW4sdC5fem9kLmJhZz10Ll96b2QuYmFnfHx7fSx0Ll96b2QudmVyc2lvbj1XYztjb25zdCBvPVsuLi50Ll96b2QuZGVmLmNoZWNrcz8/W11dO3QuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKSYmby51bnNoaWZ0KHQpO2Zvcihjb25zdCBlIG9mIG8pZm9yKGNvbnN0IGkgb2YgZS5fem9kLm9uYXR0YWNoKWkodCk7aWYoby5sZW5ndGg9PT0wKShyPXQuX3pvZCkuZGVmZXJyZWQ/PyhyLmRlZmVycmVkPVtdKSx0Ll96b2QuZGVmZXJyZWQ/LnB1c2goKCk9Pnt0Ll96b2QucnVuPXQuX3pvZC5wYXJzZX0pO2Vsc2V7Y29uc3QgZT0oYSxzLGMpPT57bGV0IHU9eGUoYSksbDtmb3IoY29uc3QgZyBvZiBzKXtpZihnLl96b2QuZGVmLndoZW4pe2lmKHFzKGEpfHwhZy5fem9kLmRlZi53aGVuKGEpKWNvbnRpbnVlfWVsc2UgaWYodSljb250aW51ZTtjb25zdCB2PWEuaXNzdWVzLmxlbmd0aCwkPWcuX3pvZC5jaGVjayhhKTtpZigkIGluc3RhbmNlb2YgUHJvbWlzZSYmYz8uYXN5bmM9PT0hMSl0aHJvdyBuZXcgVGU7aWYobHx8JCBpbnN0YW5jZW9mIFByb21pc2UpbD0obD8/UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oYXN5bmMoKT0+e2F3YWl0ICQsYS5pc3N1ZXMubGVuZ3RoIT09diYmKHV8fCh1PXhlKGEsdikpKX0pO2Vsc2V7aWYoYS5pc3N1ZXMubGVuZ3RoPT09diljb250aW51ZTt1fHwodT14ZShhLHYpKX19cmV0dXJuIGw/bC50aGVuKCgpPT5hKTphfSxpPShhLHMsYyk9PntpZih4ZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgdT1lKHMsbyxjKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoYy5hc3luYz09PSExKXRocm93IG5ldyBUZTtyZXR1cm4gdS50aGVuKGw9PnQuX3pvZC5wYXJzZShsLGMpKX1yZXR1cm4gdC5fem9kLnBhcnNlKHUsYyl9O3QuX3pvZC5ydW49KGEscyk9PntpZihzLnNraXBDaGVja3MpcmV0dXJuIHQuX3pvZC5wYXJzZShhLHMpO2lmKHMuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgdT10Ll96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4ucyxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHUgaW5zdGFuY2VvZiBQcm9taXNlP3UudGhlbihsPT5pKGwsYSxzKSk6aSh1LGEscyl9Y29uc3QgYz10Ll96b2QucGFyc2UoYSxzKTtpZihjIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYocy5hc3luYz09PSExKXRocm93IG5ldyBUZTtyZXR1cm4gYy50aGVuKHU9PmUodSxvLHMpKX1yZXR1cm4gZShjLG8scyl9fVQodCwifnN0YW5kYXJkIiwoKT0+KHt2YWxpZGF0ZTplPT57dHJ5e2NvbnN0IGk9Y2kodCxlKTtyZXR1cm4gaS5zdWNjZXNzP3t2YWx1ZTppLmRhdGF9Ontpc3N1ZXM6aS5lcnJvcj8uaXNzdWVzfX1jYXRjaHtyZXR1cm4gS3ModCxlKS50aGVuKGE9PmEuc3VjY2Vzcz97dmFsdWU6YS5kYXRhfTp7aXNzdWVzOmEuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX0pKX0pLHh0PWQoIiRab2RTdHJpbmciLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49Wy4uLnQ/Ll96b2QuYmFnPy5wYXR0ZXJucz8/W11dLnBvcCgpPz9fYyh0Ll96b2QuYmFnKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1TdHJpbmcoci52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2Ygci52YWx1ZT09InN0cmluZyJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyfX0pLEw9ZCgiJFpvZFN0cmluZ0Zvcm1hdCIsKHQsbik9Pnt6dC5pbml0KHQsbikseHQuaW5pdCh0LG4pfSksQmM9ZCgiJFpvZEdVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXRjKSxMLmluaXQodCxuKX0pLEdjPWQoIiRab2RVVUlEIiwodCxuKT0+e2lmKG4udmVyc2lvbil7Y29uc3Qgbz17djE6MSx2MjoyLHYzOjMsdjQ6NCx2NTo1LHY2OjYsdjc6Nyx2ODo4fVtuLnZlcnNpb25dO2lmKG89PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVVSUQgdmVyc2lvbjogIiR7bi52ZXJzaW9ufSJgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49cWUobykpfWVsc2Ugbi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXFlKCkpO0wuaW5pdCh0LG4pfSksWGM9ZCgiJFpvZEVtYWlsIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1uYyksTC5pbml0KHQsbil9KSxZYz1kKCIkWm9kVVJMIiwodCxuKT0+e0wuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57dHJ5e2NvbnN0IG89ci52YWx1ZS50cmltKCk7aWYoIW4ubm9ybWFsaXplJiZuLnByb3RvY29sPy5zb3VyY2U9PT0kaS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChvKSl7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIFVSTCBmb3JtYXQiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufWNvbnN0IGU9bmV3IFVSTChvKTtuLmhvc3RuYW1lJiYobi5ob3N0bmFtZS5sYXN0SW5kZXg9MCxuLmhvc3RuYW1lLnRlc3QoZS5ob3N0bmFtZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBob3N0bmFtZSIscGF0dGVybjpuLmhvc3RuYW1lLnNvdXJjZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pKSxuLnByb3RvY29sJiYobi5wcm90b2NvbC5sYXN0SW5kZXg9MCxuLnByb3RvY29sLnRlc3QoZS5wcm90b2NvbC5lbmRzV2l0aCgiOiIpP2UucHJvdG9jb2wuc2xpY2UoMCwtMSk6ZS5wcm90b2NvbCl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjpuLnByb3RvY29sLnNvdXJjZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pKSxuLm5vcm1hbGl6ZT9yLnZhbHVlPWUuaHJlZjpyLnZhbHVlPW87cmV0dXJufWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19fSksUWM9ZCgiJFpvZEVtb2ppIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1pYygpKSxMLmluaXQodCxuKX0pLGV1PWQoIiRab2ROYW5vSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVFzKSxMLmluaXQodCxuKX0pLHR1PWQoIiRab2RDVUlEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1XcyksTC5pbml0KHQsbil9KSxudT1kKCIkWm9kQ1VJRDIiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPUJzKSxMLmluaXQodCxuKX0pLHJ1PWQoIiRab2RVTElEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1HcyksTC5pbml0KHQsbil9KSxpdT1kKCIkWm9kWElEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1YcyksTC5pbml0KHQsbil9KSxvdT1kKCIkWm9kS1NVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVlzKSxMLmluaXQodCxuKX0pLGF1PWQoIiRab2RJU09EYXRlVGltZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49JGMobikpLEwuaW5pdCh0LG4pfSksc3U9ZCgiJFpvZElTT0RhdGUiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWdjKSxMLmluaXQodCxuKX0pLGN1PWQoIiRab2RJU09UaW1lIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1oYyhuKSksTC5pbml0KHQsbil9KSx1dT1kKCIkWm9kSVNPRHVyYXRpb24iLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWVjKSxMLmluaXQodCxuKX0pLGx1PWQoIiRab2RJUHY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1vYyksTC5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9ImlwdjQifSksZHU9ZCgiJFpvZElQdjYiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWFjKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmZvcm1hdD0iaXB2NiIsdC5fem9kLmNoZWNrPXI9Pnt0cnl7bmV3IFVSTChgaHR0cDovL1ske3IudmFsdWV9XWApfWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImlwdjYiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pLG11PWQoIiRab2RNQUMiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXNjKG4uZGVsaW1pdGVyKSksTC5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9Im1hYyJ9KSxwdT1kKCIkWm9kQ0lEUnY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1jYyksTC5pbml0KHQsbil9KSxmdT1kKCIkWm9kQ0lEUnY2IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj11YyksTC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pntjb25zdCBvPXIudmFsdWUuc3BsaXQoIi8iKTt0cnl7aWYoby5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcjtjb25zdFtlLGldPW87aWYoIWkpdGhyb3cgbmV3IEVycm9yO2NvbnN0IGE9TnVtYmVyKGkpO2lmKGAke2F9YCE9PWkpdGhyb3cgbmV3IEVycm9yO2lmKGE8MHx8YT4xMjgpdGhyb3cgbmV3IEVycm9yO25ldyBVUkwoYGh0dHA6Ly9bJHtlfV1gKX1jYXRjaHtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJjaWRydjYiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pO2Z1bmN0aW9uIGtpKHQpe2lmKHQ9PT0iIilyZXR1cm4hMDtpZigvXHMvLnRlc3QodCl8fHQubGVuZ3RoJTQhPT0wKXJldHVybiExO3RyeXtyZXR1cm4gYXRvYih0KSwhMH1jYXRjaHtyZXR1cm4hMX19Y29uc3QgZ3U9ZCgiJFpvZEJhc2U2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49bGMpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuY29udGVudEVuY29kaW5nPSJiYXNlNjQiLHQuX3pvZC5jaGVjaz1yPT57a2koci52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KTtmdW5jdGlvbiB2dSh0KXtpZighaGkudGVzdCh0KSlyZXR1cm4hMTtjb25zdCBuPXQucmVwbGFjZSgvWy1fXS9nLG89Pm89PT0iLSI/IisiOiIvIikscj1uLnBhZEVuZChNYXRoLmNlaWwobi5sZW5ndGgvNCkqNCwiPSIpO3JldHVybiBraShyKX1jb25zdCBodT1kKCIkWm9kQmFzZTY0VVJMIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1oaSksTC5pbml0KHQsbiksdC5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9ImJhc2U2NHVybCIsdC5fem9kLmNoZWNrPXI9Pnt2dShyLnZhbHVlKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiYmFzZTY0dXJsIixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLCR1PWQoIiRab2RFMTY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1wYyksTC5pbml0KHQsbil9KTtmdW5jdGlvbiBfdSh0LG49bnVsbCl7dHJ5e2NvbnN0IHI9dC5zcGxpdCgiLiIpO2lmKHIubGVuZ3RoIT09MylyZXR1cm4hMTtjb25zdFtvXT1yO2lmKCFvKXJldHVybiExO2NvbnN0IGU9SlNPTi5wYXJzZShhdG9iKG8pKTtyZXR1cm4hKCJ0eXAiaW4gZSYmZT8udHlwIT09IkpXVCJ8fCFlLmFsZ3x8biYmKCEoImFsZyJpbiBlKXx8ZS5hbGchPT1uKSl9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IGJ1PWQoIiRab2RKV1QiLCh0LG4pPT57TC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntfdShyLnZhbHVlLG4uYWxnKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiand0IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHl1PWQoIiRab2RDdXN0b21TdHJpbmdGb3JtYXQiLCh0LG4pPT57TC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntuLmZuKHIudmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0Om4uZm9ybWF0LGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksU2k9ZCgiJFpvZE51bWJlciIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj10Ll96b2QuYmFnLnBhdHRlcm4/P19pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPU51bWJlcihyLnZhbHVlKX1jYXRjaHt9Y29uc3QgZT1yLnZhbHVlO2lmKHR5cGVvZiBlPT0ibnVtYmVyIiYmIU51bWJlci5pc05hTihlKSYmTnVtYmVyLmlzRmluaXRlKGUpKXJldHVybiByO2NvbnN0IGk9dHlwZW9mIGU9PSJudW1iZXIiP051bWJlci5pc05hTihlKT8iTmFOIjpOdW1iZXIuaXNGaW5pdGUoZSk/dm9pZCAwOiJJbmZpbml0eSI6dm9pZCAwO3JldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0LC4uLmk/e3JlY2VpdmVkOml9Ont9fSkscn19KSxrdT1kKCIkWm9kTnVtYmVyRm9ybWF0IiwodCxuKT0+e1VjLmluaXQodCxuKSxTaS5pbml0KHQsbil9KSx3aT1kKCIkWm9kQm9vbGVhbiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1rYyx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT0hIXIudmFsdWV9Y2F0Y2h7fWNvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU9PSJib29sZWFuInx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLElpPWQoIiRab2RCaWdJbnQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49YmMsdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9QmlnSW50KHIudmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIHIudmFsdWU9PSJiaWdpbnQifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscn19KSxTdT1kKCIkWm9kQmlnSW50Rm9ybWF0IiwodCxuKT0+e1BjLmluaXQodCxuKSxJaS5pbml0KHQsbil9KSx3dT1kKCIkWm9kU3ltYm9sIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU9PSJzeW1ib2wifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxJdT1kKCIkWm9kVW5kZWZpbmVkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPXdjLHQuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT4idSJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLHp1PWQoIiRab2ROdWxsIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPVNjLHQuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gZT09PW51bGx8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSx4dT1kKCIkWm9kQW55IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT1yPT5yfSksVHU9ZCgiJFpvZFVua25vd24iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPXI9PnJ9KSxqdT1kKCIkWm9kTmV2ZXIiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT4oci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscil9KSxVdT1kKCIkWm9kVm9pZCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPiJ1Inx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLFB1PWQoIiRab2REYXRlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPW5ldyBEYXRlKHIudmFsdWUpfWNhdGNoe31jb25zdCBlPXIudmFsdWUsaT1lIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gaSYmIU51bWJlci5pc05hTihlLmdldFRpbWUoKSl8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsLi4uaT97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6dH0pLHJ9fSk7ZnVuY3Rpb24gZXModCxuLHIpe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi51ZShyLHQuaXNzdWVzKSksbi52YWx1ZVtyXT10LnZhbHVlfWNvbnN0IE91PWQoIiRab2RBcnJheSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHI7ci52YWx1ZT1BcnJheShlLmxlbmd0aCk7Y29uc3QgaT1bXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7Y29uc3Qgcz1lW2FdLGM9bi5lbGVtZW50Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7YyBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKGMudGhlbih1PT5lcyh1LHIsYSkpKTplcyhjLHIsYSl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24gVW4odCxuLHIsbyxlLGkpe2NvbnN0IGE9ciBpbiBvO2lmKHQuaXNzdWVzLmxlbmd0aCl7aWYoZSYmaSYmIWEpcmV0dXJuO24uaXNzdWVzLnB1c2goLi4udWUocix0Lmlzc3VlcykpfWlmKCFhJiYhZSl7dC5pc3N1ZXMubGVuZ3RofHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W3JdfSk7cmV0dXJufXQudmFsdWU9PT12b2lkIDA/YSYmKG4udmFsdWVbcl09dm9pZCAwKTpuLnZhbHVlW3JdPXQudmFsdWV9ZnVuY3Rpb24gRHUodCl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0LnNoYXBlKTtmb3IoY29uc3QgbyBvZiBuKWlmKCF0LnNoYXBlPy5bb10/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtvfSI6IGV4cGVjdGVkIGEgWm9kIHNjaGVtYWApO2NvbnN0IHI9T3ModC5zaGFwZSk7cmV0dXJuey4uLnQsa2V5czpuLGtleVNldDpuZXcgU2V0KG4pLG51bUtleXM6bi5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIE51KHQsbixyLG8sZSxpKXtjb25zdCBhPVtdLHM9ZS5rZXlTZXQsYz1lLmNhdGNoYWxsLl96b2QsdT1jLmRlZi50eXBlLGw9Yy5vcHRpbj09PSJvcHRpb25hbCIsZz1jLm9wdG91dD09PSJvcHRpb25hbCI7Zm9yKGNvbnN0IHYgaW4gbil7aWYodj09PSJfX3Byb3RvX18ifHxzLmhhcyh2KSljb250aW51ZTtpZih1PT09Im5ldmVyIil7YS5wdXNoKHYpO2NvbnRpbnVlfWNvbnN0ICQ9Yy5ydW4oe3ZhbHVlOm5bdl0saXNzdWVzOltdfSxvKTskIGluc3RhbmNlb2YgUHJvbWlzZT90LnB1c2goJC50aGVuKHk9PlVuKHkscix2LG4sbCxnKSkpOlVuKCQscix2LG4sbCxnKX1yZXR1cm4gYS5sZW5ndGgmJnIuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmEsaW5wdXQ6bixpbnN0Oml9KSx0Lmxlbmd0aD9Qcm9taXNlLmFsbCh0KS50aGVuKCgpPT5yKTpyfWNvbnN0IEV1PWQoIiRab2RPYmplY3QiLCh0LG4pPT57aWYoSS5pbml0KHQsbiksIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobiwic2hhcGUiKT8uZ2V0KXtjb25zdCBzPW4uc2hhcGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInNoYXBlIix7Z2V0OigpPT57Y29uc3QgYz17Li4uc307cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzaGFwZSIse3ZhbHVlOmN9KSxjfX0pfWNvbnN0IG89X3QoKCk9PkR1KG4pKTtUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pntjb25zdCBzPW4uc2hhcGUsYz17fTtmb3IoY29uc3QgdSBpbiBzKXtjb25zdCBsPXNbdV0uX3pvZDtpZihsLnZhbHVlcyl7Y1t1XT8/KGNbdV09bmV3IFNldCk7Zm9yKGNvbnN0IGcgb2YgbC52YWx1ZXMpY1t1XS5hZGQoZyl9fXJldHVybiBjfSk7Y29uc3QgZT1MZSxpPW4uY2F0Y2hhbGw7bGV0IGE7dC5fem9kLnBhcnNlPShzLGMpPT57YT8/KGE9by52YWx1ZSk7Y29uc3QgdT1zLnZhbHVlO2lmKCFlKHUpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoib2JqZWN0Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnUsaW5zdDp0fSkscztzLnZhbHVlPXt9O2NvbnN0IGw9W10sZz1hLnNoYXBlO2Zvcihjb25zdCB2IG9mIGEua2V5cyl7Y29uc3QgJD1nW3ZdLHk9JC5fem9kLm9wdGluPT09Im9wdGlvbmFsIixxPSQuX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiLFI9JC5fem9kLnJ1bih7dmFsdWU6dVt2XSxpc3N1ZXM6W119LGMpO1IgaW5zdGFuY2VvZiBQcm9taXNlP2wucHVzaChSLnRoZW4oUmU9PlVuKFJlLHMsdix1LHkscSkpKTpVbihSLHMsdix1LHkscSl9cmV0dXJuIGk/TnUobCx1LHMsYyxvLnZhbHVlLHQpOmwubGVuZ3RoP1Byb21pc2UuYWxsKGwpLnRoZW4oKCk9PnMpOnN9fSksWnU9ZCgiJFpvZE9iamVjdEpJVCIsKHQsbik9PntFdS5pbml0KHQsbik7Y29uc3Qgcj10Ll96b2QucGFyc2Usbz1fdCgoKT0+RHUobikpLGU9dj0+e2NvbnN0ICQ9bmV3IEtjKFsic2hhcGUiLCJwYXlsb2FkIiwiY3R4Il0pLHk9by52YWx1ZSxxPUY9Pntjb25zdCBDPUJyKEYpO3JldHVybmBzaGFwZVske0N9XS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFske0N9XSwgaXNzdWVzOiBbXSB9LCBjdHgpYH07JC53cml0ZSgiY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlOyIpO2NvbnN0IFI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgUmU9MDtmb3IoY29uc3QgRiBvZiB5LmtleXMpUltGXT1ga2V5XyR7UmUrK31gOyQud3JpdGUoImNvbnN0IG5ld1Jlc3VsdCA9IHt9OyIpO2Zvcihjb25zdCBGIG9mIHkua2V5cyl7Y29uc3QgQz1SW0ZdLFc9QnIoRiksV2E9dltGXSxCYT1XYT8uX3pvZD8ub3B0aW49PT0ib3B0aW9uYWwiLHZtPVdhPy5fem9kPy5vcHRvdXQ9PT0ib3B0aW9uYWwiOyQud3JpdGUoYGNvbnN0ICR7Q30gPSAke3EoRil9O2ApLEJhJiZ2bT8kLndyaXRlKGAKICAgICAgICBpZiAoJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBpZiAoJHtXfSBpbiBpbnB1dCkgewogICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0N9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7V30sIC4uLmlzcy5wYXRoXSA6IFske1d9XQogICAgICAgICAgICB9KSkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtDfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtXfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtXfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske1d9XSA9ICR7Q30udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTpCYT8kLndyaXRlKGAKICAgICAgICBpZiAoJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0N9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtXfSwgLi4uaXNzLnBhdGhdIDogWyR7V31dCiAgICAgICAgICB9KSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtDfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtXfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtXfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske1d9XSA9ICR7Q30udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTokLndyaXRlKGAKICAgICAgICBjb25zdCAke0N9X3ByZXNlbnQgPSAke1d9IGluIGlucHV0OwogICAgICAgIGlmICgke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7Q30uaXNzdWVzLm1hcChpc3MgPT4gKHsKICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske1d9LCAuLi5pc3MucGF0aF0gOiBbJHtXfV0KICAgICAgICAgIH0pKSk7CiAgICAgICAgfQogICAgICAgIGlmICghJHtDfV9wcmVzZW50ICYmICEke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goewogICAgICAgICAgICBjb2RlOiAiaW52YWxpZF90eXBlIiwKICAgICAgICAgICAgZXhwZWN0ZWQ6ICJub25vcHRpb25hbCIsCiAgICAgICAgICAgIGlucHV0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIHBhdGg6IFske1d9XQogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHtDfV9wcmVzZW50KSB7CiAgICAgICAgICBpZiAoJHtDfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske1d9XSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske1d9XSA9ICR7Q30udmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgYCl9JC53cml0ZSgicGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsiKSwkLndyaXRlKCJyZXR1cm4gcGF5bG9hZDsiKTtjb25zdCBWPSQuY29tcGlsZSgpO3JldHVybihGLEMpPT5WKHYsRixDKX07bGV0IGk7Y29uc3QgYT1MZSxzPSFmdC5qaXRsZXNzLHU9cyYmVXMudmFsdWUsbD1uLmNhdGNoYWxsO2xldCBnO3QuX3pvZC5wYXJzZT0odiwkKT0+e2c/PyhnPW8udmFsdWUpO2NvbnN0IHk9di52YWx1ZTtyZXR1cm4gYSh5KT9zJiZ1JiYkPy5hc3luYz09PSExJiYkLmppdGxlc3MhPT0hMD8oaXx8KGk9ZShuLnNoYXBlKSksdj1pKHYsJCksbD9OdShbXSx5LHYsJCxnLHQpOnYpOnIodiwkKToodi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDp5LGluc3Q6dH0pLHYpfX0pO2Z1bmN0aW9uIHRzKHQsbixyLG8pe2Zvcihjb25zdCBpIG9mIHQpaWYoaS5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gbi52YWx1ZT1pLnZhbHVlLG47Y29uc3QgZT10LmZpbHRlcihpPT4heGUoaSkpO3JldHVybiBlLmxlbmd0aD09PTE/KG4udmFsdWU9ZVswXS52YWx1ZSxlWzBdKToobi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OnIsZXJyb3JzOnQubWFwKGk9PmkuaXNzdWVzLm1hcChhPT5vZShhLG8sSCgpKSkpfSksbil9Y29uc3QgRm49ZCgiJFpvZFVuaW9uIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4ub3B0aW9ucy5zb21lKG89Pm8uX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpPyJvcHRpb25hbCI6dm9pZCAwKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vcHRpb25zLnNvbWUobz0+by5fem9kLm9wdG91dD09PSJvcHRpb25hbCIpPyJvcHRpb25hbCI6dm9pZCAwKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+e2lmKG4ub3B0aW9ucy5ldmVyeShvPT5vLl96b2QudmFsdWVzKSlyZXR1cm4gbmV3IFNldChuLm9wdGlvbnMuZmxhdE1hcChvPT5BcnJheS5mcm9tKG8uX3pvZC52YWx1ZXMpKSl9KSxUKHQuX3pvZCwicGF0dGVybiIsKCk9PntpZihuLm9wdGlvbnMuZXZlcnkobz0+by5fem9kLnBhdHRlcm4pKXtjb25zdCBvPW4ub3B0aW9ucy5tYXAoZT0+ZS5fem9kLnBhdHRlcm4pO3JldHVybiBuZXcgUmVnRXhwKGBeKCR7by5tYXAoZT0+Wm4oZS5zb3VyY2UpKS5qb2luKCJ8Iil9KSRgKX19KTtjb25zdCByPW4ub3B0aW9ucy5sZW5ndGg9PT0xP24ub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO3QuX3pvZC5wYXJzZT0obyxlKT0+e2lmKHIpcmV0dXJuIHIobyxlKTtsZXQgaT0hMTtjb25zdCBhPVtdO2Zvcihjb25zdCBzIG9mIG4ub3B0aW9ucyl7Y29uc3QgYz1zLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0sZSk7aWYoYyBpbnN0YW5jZW9mIFByb21pc2UpYS5wdXNoKGMpLGk9ITA7ZWxzZXtpZihjLmlzc3Vlcy5sZW5ndGg9PT0wKXJldHVybiBjO2EucHVzaChjKX19cmV0dXJuIGk/UHJvbWlzZS5hbGwoYSkudGhlbihzPT50cyhzLG8sdCxlKSk6dHMoYSxvLHQsZSl9fSk7ZnVuY3Rpb24gbnModCxuLHIsbyl7Y29uc3QgZT10LmZpbHRlcihpPT5pLmlzc3Vlcy5sZW5ndGg9PT0wKTtyZXR1cm4gZS5sZW5ndGg9PT0xPyhuLnZhbHVlPWVbMF0udmFsdWUsbik6KGUubGVuZ3RoPT09MD9uLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6dC5tYXAoaT0+aS5pc3N1ZXMubWFwKGE9Pm9lKGEsbyxIKCkpKSl9KTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6W10saW5jbHVzaXZlOiExfSksbil9Y29uc3QgUnU9ZCgiJFpvZFhvciIsKHQsbik9PntGbi5pbml0KHQsbiksbi5pbmNsdXNpdmU9ITE7Y29uc3Qgcj1uLm9wdGlvbnMubGVuZ3RoPT09MT9uLm9wdGlvbnNbMF0uX3pvZC5ydW46bnVsbDt0Ll96b2QucGFyc2U9KG8sZSk9PntpZihyKXJldHVybiByKG8sZSk7bGV0IGk9ITE7Y29uc3QgYT1bXTtmb3IoY29uc3QgcyBvZiBuLm9wdGlvbnMpe2NvbnN0IGM9cy5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LGUpO2MgaW5zdGFuY2VvZiBQcm9taXNlPyhhLnB1c2goYyksaT0hMCk6YS5wdXNoKGMpfXJldHVybiBpP1Byb21pc2UuYWxsKGEpLnRoZW4ocz0+bnMocyxvLHQsZSkpOm5zKGEsbyx0LGUpfX0pLEN1PWQoIiRab2REaXNjcmltaW5hdGVkVW5pb24iLCh0LG4pPT57bi5pbmNsdXNpdmU9ITEsRm4uaW5pdCh0LG4pO2NvbnN0IHI9dC5fem9kLnBhcnNlO1QodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+e2NvbnN0IGU9e307Zm9yKGNvbnN0IGkgb2Ygbi5vcHRpb25zKXtjb25zdCBhPWkuX3pvZC5wcm9wVmFsdWVzO2lmKCFhfHxPYmplY3Qua2V5cyhhKS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtuLm9wdGlvbnMuaW5kZXhPZihpKX0iYCk7Zm9yKGNvbnN0W3MsY11vZiBPYmplY3QuZW50cmllcyhhKSl7ZVtzXXx8KGVbc109bmV3IFNldCk7Zm9yKGNvbnN0IHUgb2YgYyllW3NdLmFkZCh1KX19cmV0dXJuIGV9KTtjb25zdCBvPV90KCgpPT57Y29uc3QgZT1uLm9wdGlvbnMsaT1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IHM9YS5fem9kLnByb3BWYWx1ZXM/LltuLmRpc2NyaW1pbmF0b3JdO2lmKCFzfHxzLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtuLm9wdGlvbnMuaW5kZXhPZihhKX0iYCk7Zm9yKGNvbnN0IGMgb2Ygcyl7aWYoaS5oYXMoYykpdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcoYyl9ImApO2kuc2V0KGMsYSl9fXJldHVybiBpfSk7dC5fem9kLnBhcnNlPShlLGkpPT57Y29uc3QgYT1lLnZhbHVlO2lmKCFMZShhKSlyZXR1cm4gZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoib2JqZWN0IixpbnB1dDphLGluc3Q6dH0pLGU7Y29uc3Qgcz1vLnZhbHVlLmdldChhPy5bbi5kaXNjcmltaW5hdG9yXSk7cmV0dXJuIHM/cy5fem9kLnJ1bihlLGkpOm4udW5pb25GYWxsYmFja3x8aS5kaXJlY3Rpb249PT0iYmFja3dhcmQiP3IoZSxpKTooZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6bi5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSksaW5wdXQ6YSxwYXRoOltuLmRpc2NyaW1pbmF0b3JdLGluc3Q6dH0pLGUpfX0pLEF1PWQoIiRab2RJbnRlcnNlY3Rpb24iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlLGk9bi5sZWZ0Ll96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbyksYT1uLnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlfHxhIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbaSxhXSkudGhlbigoW2MsdV0pPT5ycyhyLGMsdSkpOnJzKHIsaSxhKX19KTtmdW5jdGlvbiBZcih0LG4pe2lmKHQ9PT1uKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O2lmKHQgaW5zdGFuY2VvZiBEYXRlJiZuIGluc3RhbmNlb2YgRGF0ZSYmK3Q9PStuKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O2lmKGplKHQpJiZqZShuKSl7Y29uc3Qgcj1PYmplY3Qua2V5cyhuKSxvPU9iamVjdC5rZXlzKHQpLmZpbHRlcihpPT5yLmluZGV4T2YoaSkhPT0tMSksZT17Li4udCwuLi5ufTtmb3IoY29uc3QgaSBvZiBvKXtjb25zdCBhPVlyKHRbaV0sbltpXSk7aWYoIWEudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltpLC4uLmEubWVyZ2VFcnJvclBhdGhdfTtlW2ldPWEuZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTplfX1pZihBcnJheS5pc0FycmF5KHQpJiZBcnJheS5pc0FycmF5KG4pKXtpZih0Lmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX07Y29uc3Qgcj1bXTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3QgZT10W29dLGk9bltvXSxhPVlyKGUsaSk7aWYoIWEudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltvLC4uLmEubWVyZ2VFcnJvclBhdGhdfTtyLnB1c2goYS5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpyfX1yZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119fWZ1bmN0aW9uIHJzKHQsbixyKXtjb25zdCBvPW5ldyBNYXA7bGV0IGU7Zm9yKGNvbnN0IHMgb2Ygbi5pc3N1ZXMpaWYocy5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIil7ZT8/KGU9cyk7Zm9yKGNvbnN0IGMgb2Ygcy5rZXlzKW8uaGFzKGMpfHxvLnNldChjLHt9KSxvLmdldChjKS5sPSEwfWVsc2UgdC5pc3N1ZXMucHVzaChzKTtmb3IoY29uc3QgcyBvZiByLmlzc3VlcylpZihzLmNvZGU9PT0idW5yZWNvZ25pemVkX2tleXMiKWZvcihjb25zdCBjIG9mIHMua2V5cylvLmhhcyhjKXx8by5zZXQoYyx7fSksby5nZXQoYykucj0hMDtlbHNlIHQuaXNzdWVzLnB1c2gocyk7Y29uc3QgaT1bLi4ub10uZmlsdGVyKChbLHNdKT0+cy5sJiZzLnIpLm1hcCgoW3NdKT0+cyk7aWYoaS5sZW5ndGgmJmUmJnQuaXNzdWVzLnB1c2goey4uLmUsa2V5czppfSkseGUodCkpcmV0dXJuIHQ7Y29uc3QgYT1ZcihuLnZhbHVlLHIudmFsdWUpO2lmKCFhLnZhbGlkKXRocm93IG5ldyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoYS5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuIHQudmFsdWU9YS5kYXRhLHR9Y29uc3Qgemk9ZCgiJFpvZFR1cGxlIiwodCxuKT0+e0kuaW5pdCh0LG4pO2NvbnN0IHI9bi5pdGVtczt0Ll96b2QucGFyc2U9KG8sZSk9Pntjb25zdCBpPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OmksaW5zdDp0LGV4cGVjdGVkOiJ0dXBsZSIsY29kZToiaW52YWxpZF90eXBlIn0pLG87by52YWx1ZT1bXTtjb25zdCBhPVtdLHM9aXMociwib3B0aW4iKSxjPWlzKHIsIm9wdG91dCIpO2lmKCFuLnJlc3Qpe2lmKGkubGVuZ3RoPHMpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6dCxvcmlnaW46ImFycmF5In0pLG87aS5sZW5ndGg+ci5sZW5ndGgmJm8uaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06ci5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDp0LG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgdT1uZXcgQXJyYXkoci5sZW5ndGgpO2ZvcihsZXQgbD0wO2w8ci5sZW5ndGg7bCsrKXtjb25zdCBnPXJbbF0uX3pvZC5ydW4oe3ZhbHVlOmlbbF0saXNzdWVzOltdfSxlKTtnIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goZy50aGVuKHY9Pnt1W2xdPXZ9KSk6dVtsXT1nfWlmKG4ucmVzdCl7bGV0IGw9ci5sZW5ndGgtMTtjb25zdCBnPWkuc2xpY2Uoci5sZW5ndGgpO2Zvcihjb25zdCB2IG9mIGcpe2wrKztjb25zdCAkPW4ucmVzdC5fem9kLnJ1bih7dmFsdWU6dixpc3N1ZXM6W119LGUpOyQgaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaCgkLnRoZW4oeT0+b3MoeSxvLGwpKSk6b3MoJCxvLGwpfX1yZXR1cm4gYS5sZW5ndGg/UHJvbWlzZS5hbGwoYSkudGhlbigoKT0+YXModSxvLHIsaSxjKSk6YXModSxvLHIsaSxjKX19KTtmdW5jdGlvbiBpcyh0LG4pe2ZvcihsZXQgcj10Lmxlbmd0aC0xO3I+PTA7ci0tKWlmKHRbcl0uX3pvZFtuXSE9PSJvcHRpb25hbCIpcmV0dXJuIHIrMTtyZXR1cm4gMH1mdW5jdGlvbiBvcyh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnVlKHIsdC5pc3N1ZXMpKSxuLnZhbHVlW3JdPXQudmFsdWV9ZnVuY3Rpb24gYXModCxuLHIsbyxlKXtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7Y29uc3QgYT10W2ldLHM9aTxvLmxlbmd0aDtpZihhLmlzc3Vlcy5sZW5ndGgpe2lmKCFzJiZpPj1lKXtuLnZhbHVlLmxlbmd0aD1pO2JyZWFrfW4uaXNzdWVzLnB1c2goLi4udWUoaSxhLmlzc3VlcykpfW4udmFsdWVbaV09YS52YWx1ZX1mb3IobGV0IGk9bi52YWx1ZS5sZW5ndGgtMTtpPj1vLmxlbmd0aCYmKHJbaV0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZuLnZhbHVlW2ldPT09dm9pZCAwKTtpLS0pbi52YWx1ZS5sZW5ndGg9aTtyZXR1cm4gbn1jb25zdCBMdT1kKCIkWm9kUmVjb3JkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighamUoZSkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO2NvbnN0IGk9W10sYT1uLmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoYSl7ci52YWx1ZT17fTtjb25zdCBzPW5ldyBTZXQ7Zm9yKGNvbnN0IHUgb2YgYSlpZih0eXBlb2YgdT09InN0cmluZyJ8fHR5cGVvZiB1PT0ibnVtYmVyInx8dHlwZW9mIHU9PSJzeW1ib2wiKXtzLmFkZCh0eXBlb2YgdT09Im51bWJlciI/dS50b1N0cmluZygpOnUpO2NvbnN0IGw9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTp1LGlzc3VlczpbXX0sbyk7aWYobCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYobC5pc3N1ZXMubGVuZ3RoKXtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpsLmlzc3Vlcy5tYXAoJD0+b2UoJCxvLEgoKSkpLGlucHV0OnUscGF0aDpbdV0saW5zdDp0fSk7Y29udGludWV9Y29uc3QgZz1sLnZhbHVlLHY9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmVbdV0saXNzdWVzOltdfSxvKTt2IGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2godi50aGVuKCQ9PnskLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4udWUodSwkLmlzc3VlcykpLHIudmFsdWVbZ109JC52YWx1ZX0pKToodi5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLnVlKHUsdi5pc3N1ZXMpKSxyLnZhbHVlW2ddPXYudmFsdWUpfWxldCBjO2Zvcihjb25zdCB1IGluIGUpcy5oYXModSl8fChjPWM/P1tdLGMucHVzaCh1KSk7YyYmYy5sZW5ndGg+MCYmci5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGlucHV0OmUsaW5zdDp0LGtleXM6Y30pfWVsc2V7ci52YWx1ZT17fTtmb3IoY29uc3QgcyBvZiBSZWZsZWN0Lm93bktleXMoZSkpe2lmKHM9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHMpKWNvbnRpbnVlO2xldCBjPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiBzPT0ic3RyaW5nIiYmX2kudGVzdChzKSYmYy5pc3N1ZXMubGVuZ3RoKXtjb25zdCBnPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKHMpLGlzc3VlczpbXX0sbyk7aWYoZyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7Zy5pc3N1ZXMubGVuZ3RoPT09MCYmKGM9Zyl9aWYoYy5pc3N1ZXMubGVuZ3RoKXtuLm1vZGU9PT0ibG9vc2UiP3IudmFsdWVbc109ZVtzXTpyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpjLmlzc3Vlcy5tYXAoZz0+b2UoZyxvLEgoKSkpLGlucHV0OnMscGF0aDpbc10saW5zdDp0fSk7Y29udGludWV9Y29uc3QgbD1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6ZVtzXSxpc3N1ZXM6W119LG8pO2wgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChsLnRoZW4oZz0+e2cuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi51ZShzLGcuaXNzdWVzKSksci52YWx1ZVtjLnZhbHVlXT1nLnZhbHVlfSkpOihsLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4udWUocyxsLmlzc3VlcykpLHIudmFsdWVbYy52YWx1ZV09bC52YWx1ZSl9fXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pLE11PWQoIiRab2RNYXAiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCEoZSBpbnN0YW5jZW9mIE1hcCkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJtYXAiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO2NvbnN0IGk9W107ci52YWx1ZT1uZXcgTWFwO2Zvcihjb25zdFthLHNdb2YgZSl7Y29uc3QgYz1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmEsaXNzdWVzOltdfSxvKSx1PW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7YyBpbnN0YW5jZW9mIFByb21pc2V8fHUgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChQcm9taXNlLmFsbChbYyx1XSkudGhlbigoW2wsZ10pPT57c3MobCxnLHIsYSxlLHQsbyl9KSk6c3MoYyx1LHIsYSxlLHQsbyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24gc3ModCxuLHIsbyxlLGksYSl7dC5pc3N1ZXMubGVuZ3RoJiYoam4uaGFzKHR5cGVvZiBvKT9yLmlzc3Vlcy5wdXNoKC4uLnVlKG8sdC5pc3N1ZXMpKTpyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OmUsaW5zdDppLGlzc3Vlczp0Lmlzc3Vlcy5tYXAocz0+b2UocyxhLEgoKSkpfSkpLG4uaXNzdWVzLmxlbmd0aCYmKGpuLmhhcyh0eXBlb2Ygbyk/ci5pc3N1ZXMucHVzaCguLi51ZShvLG4uaXNzdWVzKSk6ci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJtYXAiLGNvZGU6ImludmFsaWRfZWxlbWVudCIsaW5wdXQ6ZSxpbnN0Omksa2V5Om8saXNzdWVzOm4uaXNzdWVzLm1hcChzPT5vZShzLGEsSCgpKSl9KSksci52YWx1ZS5zZXQodC52YWx1ZSxuLnZhbHVlKX1jb25zdCBxdT1kKCIkWm9kU2V0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighKGUgaW5zdGFuY2VvZiBTZXQpKXJldHVybiByLmlzc3Vlcy5wdXNoKHtpbnB1dDplLGluc3Q6dCxleHBlY3RlZDoic2V0Iixjb2RlOiJpbnZhbGlkX3R5cGUifSkscjtjb25zdCBpPVtdO3IudmFsdWU9bmV3IFNldDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBzPW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTphLGlzc3VlczpbXX0sbyk7cyBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKHMudGhlbihjPT5jcyhjLHIpKSk6Y3MocyxyKX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KTtmdW5jdGlvbiBjcyh0LG4pe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi50Lmlzc3Vlcyksbi52YWx1ZS5hZGQodC52YWx1ZSl9Y29uc3QgRnU9ZCgiJFpvZEVudW0iLCh0LG4pPT57SS5pbml0KHQsbik7Y29uc3Qgcj1uaShuLmVudHJpZXMpLG89bmV3IFNldChyKTt0Ll96b2QudmFsdWVzPW8sdC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke3IuZmlsdGVyKGU9PmpuLmhhcyh0eXBlb2YgZSkpLm1hcChlPT50eXBlb2YgZT09InN0cmluZyI/aGUoZSk6ZS50b1N0cmluZygpKS5qb2luKCJ8Iil9KSRgKSx0Ll96b2QucGFyc2U9KGUsaSk9Pntjb25zdCBhPWUudmFsdWU7cmV0dXJuIG8uaGFzKGEpfHxlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6cixpbnB1dDphLGluc3Q6dH0pLGV9fSksSnU9ZCgiJFpvZExpdGVyYWwiLCh0LG4pPT57aWYoSS5pbml0KHQsbiksbi52YWx1ZXMubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjcmVhdGUgbGl0ZXJhbCBzY2hlbWEgd2l0aCBubyB2YWxpZCB2YWx1ZXMiKTtjb25zdCByPW5ldyBTZXQobi52YWx1ZXMpO3QuX3pvZC52YWx1ZXM9cix0Ll96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeKCR7bi52YWx1ZXMubWFwKG89PnR5cGVvZiBvPT0ic3RyaW5nIj9oZShvKTpvP2hlKG8udG9TdHJpbmcoKSk6U3RyaW5nKG8pKS5qb2luKCJ8Iil9KSRgKSx0Ll96b2QucGFyc2U9KG8sZSk9Pntjb25zdCBpPW8udmFsdWU7cmV0dXJuIHIuaGFzKGkpfHxvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6bi52YWx1ZXMsaW5wdXQ6aSxpbnN0OnR9KSxvfX0pLEh1PWQoIiRab2RGaWxlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gZSBpbnN0YW5jZW9mIEZpbGV8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJmaWxlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxWdT1kKCIkWm9kVHJhbnNmb3JtIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgRW4odC5jb25zdHJ1Y3Rvci5uYW1lKTtjb25zdCBlPW4udHJhbnNmb3JtKHIudmFsdWUscik7aWYoby5hc3luYylyZXR1cm4oZSBpbnN0YW5jZW9mIFByb21pc2U/ZTpQcm9taXNlLnJlc29sdmUoZSkpLnRoZW4oYT0+KHIudmFsdWU9YSxyLmZhbGxiYWNrPSEwLHIpKTtpZihlIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgVGU7cmV0dXJuIHIudmFsdWU9ZSxyLmZhbGxiYWNrPSEwLHJ9fSk7ZnVuY3Rpb24gdXModCxuKXtyZXR1cm4gbj09PXZvaWQgMCYmKHQuaXNzdWVzLmxlbmd0aHx8dC5mYWxsYmFjayk/e2lzc3VlczpbXSx2YWx1ZTp2b2lkIDB9OnR9Y29uc3QgeGk9ZCgiJFpvZE9wdGlvbmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLHQuX3pvZC5vcHRvdXQ9Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ubi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsdm9pZCAwXSk6dm9pZCAwKSxUKHQuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCByPW4uaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gcj9uZXcgUmVnRXhwKGBeKCR7Wm4oci5zb3VyY2UpfSk/JGApOnZvaWQgMH0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uaW5uZXJUeXBlLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiKXtjb25zdCBlPXIudmFsdWUsaT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+dXMoYSxlKSk6dXMoaSxlKX1yZXR1cm4gci52YWx1ZT09PXZvaWQgMD9yOm4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9fSksS3U9ZCgiJFpvZEV4YWN0T3B0aW9uYWwiLCh0LG4pPT57eGkuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT5uLmlubmVyVHlwZS5fem9kLnBhdHRlcm4pLHQuX3pvZC5wYXJzZT0ocixvKT0+bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLFd1PWQoIiRab2ROdWxsYWJsZSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmlubmVyVHlwZS5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IHI9bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiByP25ldyBSZWdFeHAoYF4oJHtabihyLnNvdXJjZSl9fG51bGwpJGApOnZvaWQgMH0pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSx0Ll96b2QucGFyc2U9KHIsbyk9PnIudmFsdWU9PT1udWxsP3I6bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLEJ1PWQoIiRab2REZWZhdWx0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2lmKHIudmFsdWU9PT12b2lkIDApcmV0dXJuIHIudmFsdWU9bi5kZWZhdWx0VmFsdWUscjtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT5scyhpLG4pKTpscyhlLG4pfX0pO2Z1bmN0aW9uIGxzKHQsbil7cmV0dXJuIHQudmFsdWU9PT12b2lkIDAmJih0LnZhbHVlPW4uZGVmYXVsdFZhbHVlKSx0fWNvbnN0IEd1PWQoIiRab2RQcmVmYXVsdCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+KG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkInx8ci52YWx1ZT09PXZvaWQgMCYmKHIudmFsdWU9bi5kZWZhdWx0VmFsdWUpLG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbykpfSksWHU9ZCgiJFpvZE5vbk9wdGlvbmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT57Y29uc3Qgcj1uLmlubmVyVHlwZS5fem9kLnZhbHVlcztyZXR1cm4gcj9uZXcgU2V0KFsuLi5yXS5maWx0ZXIobz0+byE9PXZvaWQgMCkpOnZvaWQgMH0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PmRzKGksdCkpOmRzKGUsdCl9fSk7ZnVuY3Rpb24gZHModCxuKXtyZXR1cm4hdC5pc3N1ZXMubGVuZ3RoJiZ0LnZhbHVlPT09dm9pZCAwJiZ0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dC52YWx1ZSxpbnN0Om59KSx0fWNvbnN0IFl1PWQoIiRab2RTdWNjZXNzIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgRW4oIlpvZFN1Y2Nlc3MiKTtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLmlzc3Vlcy5sZW5ndGg9PT0wLHIpKTooci52YWx1ZT1lLmlzc3Vlcy5sZW5ndGg9PT0wLHIpfX0pLFF1PWQoIiRab2RDYXRjaCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PihyLnZhbHVlPWkudmFsdWUsaS5pc3N1ZXMubGVuZ3RoJiYoci52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnIsZXJyb3I6e2lzc3VlczppLmlzc3Vlcy5tYXAoYT0+b2UoYSxvLEgoKSkpfSxpbnB1dDpyLnZhbHVlfSksci5pc3N1ZXM9W10sci5mYWxsYmFjaz0hMCkscikpOihyLnZhbHVlPWUudmFsdWUsZS5pc3N1ZXMubGVuZ3RoJiYoci52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnIsZXJyb3I6e2lzc3VlczplLmlzc3Vlcy5tYXAoaT0+b2UoaSxvLEgoKSkpfSxpbnB1dDpyLnZhbHVlfSksci5pc3N1ZXM9W10sci5mYWxsYmFjaz0hMCkscil9fSksZWw9ZCgiJFpvZE5hTiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PigodHlwZW9mIHIudmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKHIudmFsdWUpKSYmci5pc3N1ZXMucHVzaCh7aW5wdXQ6ci52YWx1ZSxpbnN0OnQsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLHIpfSksVGk9ZCgiJFpvZFBpcGUiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW4uX3pvZC52YWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW4uX3pvZC5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4ub3V0Ll96b2Qub3B0b3V0KSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW4uX3pvZC5wcm9wVmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpe2NvbnN0IGk9bi5vdXQuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PmtuKGEsbi5pbixvKSk6a24oaSxuLmluLG8pfWNvbnN0IGU9bi5pbi5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+a24oaSxuLm91dCxvKSk6a24oZSxuLm91dCxvKX19KTtmdW5jdGlvbiBrbih0LG4scil7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8odC5hYm9ydGVkPSEwLHQpOm4uX3pvZC5ydW4oe3ZhbHVlOnQudmFsdWUsaXNzdWVzOnQuaXNzdWVzLGZhbGxiYWNrOnQuZmFsbGJhY2t9LHIpfWNvbnN0IGppPWQoIiRab2RDb2RlYyIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbi5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbi5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vdXQuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+bi5pbi5fem9kLnByb3BWYWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKChvLmRpcmVjdGlvbnx8ImZvcndhcmQiKT09PSJmb3J3YXJkIil7Y29uc3QgaT1uLmluLl96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT5TbihhLG4sbykpOlNuKGksbixvKX1lbHNle2NvbnN0IGk9bi5vdXQuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PlNuKGEsbixvKSk6U24oaSxuLG8pfX19KTtmdW5jdGlvbiBTbih0LG4scil7aWYodC5pc3N1ZXMubGVuZ3RoKXJldHVybiB0LmFib3J0ZWQ9ITAsdDtpZigoci5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IGU9bi50cmFuc2Zvcm0odC52YWx1ZSx0KTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PnduKHQsaSxuLm91dCxyKSk6d24odCxlLG4ub3V0LHIpfWVsc2V7Y29uc3QgZT1uLnJldmVyc2VUcmFuc2Zvcm0odC52YWx1ZSx0KTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PnduKHQsaSxuLmluLHIpKTp3bih0LGUsbi5pbixyKX19ZnVuY3Rpb24gd24odCxuLHIsbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8odC5hYm9ydGVkPSEwLHQpOnIuX3pvZC5ydW4oe3ZhbHVlOm4saXNzdWVzOnQuaXNzdWVzfSxvKX1jb25zdCB0bD1kKCIkWm9kUHJlcHJvY2VzcyIsKHQsbik9PntUaS5pbml0KHQsbil9KSxubD1kKCIkWm9kUmVhZG9ubHkiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dCksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKG1zKTptcyhlKX19KTtmdW5jdGlvbiBtcyh0KXtyZXR1cm4gdC52YWx1ZT1PYmplY3QuZnJlZXplKHQudmFsdWUpLHR9Y29uc3Qgcmw9ZCgiJFpvZFRlbXBsYXRlTGl0ZXJhbCIsKHQsbik9PntJLmluaXQodCxuKTtjb25zdCByPVtdO2Zvcihjb25zdCBvIG9mIG4ucGFydHMpaWYodHlwZW9mIG89PSJvYmplY3QiJiZvIT09bnVsbCl7aWYoIW8uX3pvZC5wYXR0ZXJuKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQsIG5vIHBhdHRlcm4gZm91bmQ6ICR7Wy4uLm8uX3pvZC50cmFpdHNdLnNoaWZ0KCl9YCk7Y29uc3QgZT1vLl96b2QucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cD9vLl96b2QucGF0dGVybi5zb3VyY2U6by5fem9kLnBhdHRlcm47aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvLl96b2QudHJhaXRzfWApO2NvbnN0IGk9ZS5zdGFydHNXaXRoKCJeIik/MTowLGE9ZS5lbmRzV2l0aCgiJCIpP2UubGVuZ3RoLTE6ZS5sZW5ndGg7ci5wdXNoKGUuc2xpY2UoaSxhKSl9ZWxzZSBpZihvPT09bnVsbHx8UHMuaGFzKHR5cGVvZiBvKSlyLnB1c2goaGUoYCR7b31gKSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke299YCk7dC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXiR7ci5qb2luKCIiKX0kYCksdC5fem9kLnBhcnNlPShvLGUpPT50eXBlb2Ygby52YWx1ZSE9InN0cmluZyI/KG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDp0LGV4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvKToodC5fem9kLnBhdHRlcm4ubGFzdEluZGV4PTAsdC5fem9kLnBhdHRlcm4udGVzdChvLnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7aW5wdXQ6by52YWx1ZSxpbnN0OnQsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdD8/InRlbXBsYXRlX2xpdGVyYWwiLHBhdHRlcm46dC5fem9kLnBhdHRlcm4uc291cmNlfSksbyl9KSxpbD1kKCIkWm9kRnVuY3Rpb24iLCh0LG4pPT4oSS5pbml0KHQsbiksdC5fZGVmPW4sdC5fem9kLmRlZj1uLHQuaW1wbGVtZW50PXI9PntpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvbiIpO3JldHVybiBmdW5jdGlvbiguLi5vKXtjb25zdCBlPXQuX2RlZi5pbnB1dD9Hcih0Ll9kZWYuaW5wdXQsbyk6byxpPVJlZmxlY3QuYXBwbHkocix0aGlzLGUpO3JldHVybiB0Ll9kZWYub3V0cHV0P0dyKHQuX2RlZi5vdXRwdXQsaSk6aX19LHQuaW1wbGVtZW50QXN5bmM9cj0+e2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gYXN5bmMgZnVuY3Rpb24oLi4ubyl7Y29uc3QgZT10Ll9kZWYuaW5wdXQ/YXdhaXQgWHIodC5fZGVmLmlucHV0LG8pOm8saT1hd2FpdCBSZWZsZWN0LmFwcGx5KHIsdGhpcyxlKTtyZXR1cm4gdC5fZGVmLm91dHB1dD9hd2FpdCBYcih0Ll9kZWYub3V0cHV0LGkpOml9fSx0Ll96b2QucGFyc2U9KHIsbyk9PnR5cGVvZiByLnZhbHVlIT0iZnVuY3Rpb24iPyhyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJmdW5jdGlvbiIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyKToodC5fZGVmLm91dHB1dCYmdC5fZGVmLm91dHB1dC5fem9kLmRlZi50eXBlPT09InByb21pc2UiP3IudmFsdWU9dC5pbXBsZW1lbnRBc3luYyhyLnZhbHVlKTpyLnZhbHVlPXQuaW1wbGVtZW50KHIudmFsdWUpLHIpLHQuaW5wdXQ9KC4uLnIpPT57Y29uc3Qgbz10LmNvbnN0cnVjdG9yO3JldHVybiBBcnJheS5pc0FycmF5KHJbMF0pP25ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6bmV3IHppKHt0eXBlOiJ0dXBsZSIsaXRlbXM6clswXSxyZXN0OnJbMV19KSxvdXRwdXQ6dC5fZGVmLm91dHB1dH0pOm5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6clswXSxvdXRwdXQ6dC5fZGVmLm91dHB1dH0pfSx0Lm91dHB1dD1yPT57Y29uc3Qgbz10LmNvbnN0cnVjdG9yO3JldHVybiBuZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0OnQuX2RlZi5pbnB1dCxvdXRwdXQ6cn0pfSx0KSksb2w9ZCgiJFpvZFByb21pc2UiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT5Qcm9taXNlLnJlc29sdmUoci52YWx1ZSkudGhlbihlPT5uLmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6ZSxpc3N1ZXM6W119LG8pKX0pLGFsPWQoIiRab2RMYXp5IiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgcj1uO3JldHVybiByLl9jYWNoZWRJbm5lcnx8KHIuX2NhY2hlZElubmVyPW4uZ2V0dGVyKCkpLHIuX2NhY2hlZElubmVyfSksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5wYXR0ZXJuKSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/LnByb3BWYWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLFQodC5fem9kLCJvcHRvdXQiLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQ/P3ZvaWQgMCksdC5fem9kLnBhcnNlPShyLG8pPT50Ll96b2QuaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9KSxzbD1kKCIkWm9kQ3VzdG9tIiwodCxuKT0+e00uaW5pdCh0LG4pLEkuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+cix0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89ci52YWx1ZSxlPW4uZm4obyk7aWYoZSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIGUudGhlbihpPT5wcyhpLHIsbyx0KSk7cHMoZSxyLG8sdCl9fSk7ZnVuY3Rpb24gcHModCxuLHIsbyl7aWYoIXQpe2NvbnN0IGU9e2NvZGU6ImN1c3RvbSIsaW5wdXQ6cixpbnN0Om8scGF0aDpbLi4uby5fem9kLmRlZi5wYXRoPz9bXV0sY29udGludWU6IW8uX3pvZC5kZWYuYWJvcnR9O28uX3pvZC5kZWYucGFyYW1zJiYoZS5wYXJhbXM9by5fem9kLmRlZi5wYXJhbXMpLG4uaXNzdWVzLnB1c2goTWUoZSkpfX1jb25zdCBocD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2K3YsdmBIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sZmlsZTp7dW5pdDoi2KjYp9mK2KoiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxhcnJheTp7dW5pdDoi2LnZhti12LEiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxzZXQ6e3VuaXQ6Iti52YbYtdixIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItmF2K/YrtmEIixlbWFpbDoi2KjYsdmK2K8g2KXZhNmD2KrYsdmI2YbZiiIsdXJsOiLYsdin2KjYtyIsZW1vamk6Itil2YrZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2KrYp9ix2YrYriDZiNmI2YLYqiDYqNmF2LnZitin2LEgSVNPIixkYXRlOiLYqtin2LHZitiuINio2YXYudmK2KfYsSBJU08iLHRpbWU6ItmI2YLYqiDYqNmF2LnZitin2LEgSVNPIixkdXJhdGlvbjoi2YXYr9ipINio2YXYudmK2KfYsSBJU08iLGlwdjQ6Iti52YbZiNin2YYgSVB2NCIsaXB2Njoi2LnZhtmI2KfZhiBJUHY2IixjaWRydjQ6ItmF2K/ZiSDYudmG2KfZiNmK2YYg2KjYtdmK2LrYqSBJUHY0IixjaWRydjY6ItmF2K/ZiSDYudmG2KfZiNmK2YYg2KjYtdmK2LrYqSBJUHY2IixiYXNlNjQ6ItmG2Y7YtSDYqNiq2LHZhdmK2LIgYmFzZTY0LWVuY29kZWQiLGJhc2U2NHVybDoi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjR1cmwtZW5jb2RlZCIsanNvbl9zdHJpbmc6ItmG2Y7YtSDYudmE2Ykg2YfZitim2KkgSlNPTiIsZTE2NDoi2LHZgtmFINmH2KfYqtmBINio2YXYudmK2KfYsSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItmF2K/YrtmEIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3YjCDZiNmE2YPZhiDYqtmFINil2K/Yrtin2YQgJHtzfWA6YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgJHtpfdiMINmI2YTZg9mGINiq2YUg2KXYr9iu2KfZhCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEICR7ayhlLnZhbHVlc1swXSl9YDpg2KfYrtiq2YrYp9ixINi62YrYsSDZhdmC2KjZiNmEOiDZitiq2YjZgti5INin2YbYqtmC2KfYoSDYo9it2K8g2YfYsNmHINin2YTYrtmK2KfYsdin2Ko6ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Ag2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2Uub3JpZ2luPz8i2KfZhNmC2YrZhdipIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdixIn1gOmDYo9mD2KjYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDYo9mGINiq2YPZiNmGICR7ZS5vcmlnaW4/PyLYp9mE2YLZitmF2KkifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2KPYtdi62LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2YTZgCAke2Uub3JpZ2lufSDYo9mGINmK2YPZiNmGICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg2KPYtdi62LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2YTZgCAke2Uub3JpZ2lufSDYo9mGINmK2YPZiNmGICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitio2K/YoyDYqNmAICIke2UucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrZhtiq2YfZiiDYqNmAICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitiq2LbZhdmR2Y7ZhiAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZiti32KfYqNmCINin2YTZhtmF2LcgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9INi62YrYsSDZhdmC2KjZiNmEYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNix2YLZhSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrZg9mI2YYg2YXZhiDZhdi22KfYudmB2KfYqiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDZhdi52LHZgSR7ZS5rZXlzLmxlbmd0aD4xPyLYp9iqIjoiIn0g2LrYsdmK2Kgke2Uua2V5cy5sZW5ndGg+MT8i2KkiOiIifTogJHtfKGUua2V5cywi2IwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2YXYudix2YEg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQifX19O2Z1bmN0aW9uICRwKCl7cmV0dXJue2xvY2FsZUVycm9yOmhwKCl9fWNvbnN0IF9wPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJzaW12b2wiLHZlcmI6Im9sbWFsxLFkxLFyIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsWTEsXIifSxhcnJheTp7dW5pdDoiZWxlbWVudCIsdmVyYjoib2xtYWzEsWTEsXIifSxzZXQ6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6Im9sbWFsxLFkxLFyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZW1haWwgYWRkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGV0aW1lIixkYXRlOiJJU08gZGF0ZSIsdGltZToiSVNPIHRpbWUiLGR1cmF0aW9uOiJJU08gZHVyYXRpb24iLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IG51bWJlciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRheGlsIG9sYW4gJHtzfWA6YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gJHtpfSwgZGF4aWwgb2xhbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7ayhlLnZhbHVlc1swXSl9YDpgWWFubMSxxZ8gc2XDp2ltOiBhxZ9hxJ/EsWRha8SxbGFyZGFuIGJpcmkgb2xtYWzEsWTEsXI6ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh294IGLDtnnDvGs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbj8/ImTJmXnJmXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50In1gOmDDh294IGLDtnnDvGs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbj8/ImTJmXnJmXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgw4dveCBracOnaWs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLnByZWZpeH0iIGlsyZkgYmHFn2xhbWFsxLFkxLFyYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BZYW5sxLHFnyBtyZl0bjogIiR7aS5zdWZmaXh9IiBpbMmZIGJpdG3JmWxpZGlyYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLmluY2x1ZGVzfSIgZGF4aWwgb2xtYWzEsWTEsXJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gWWFubMSxxZ8gbcmZdG46ICR7aS5wYXR0ZXJufSDFn2FibG9udW5hIHV5xJ91biBvbG1hbMSxZMSxcmA6YFlhbmzEscWfICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBZYW5sxLHFnyDJmWTJmWQ6ICR7ZS5kaXZpc29yfSBpbMmZIGLDtmzDvG7JmSBiaWzJmW4gb2xtYWzEsWTEsXJgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhw6dhciR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGHDp2FyYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJZYW5sxLHFnyBkyZl5yZlyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gZMmZecmZcmA7ZGVmYXVsdDpyZXR1cm4iWWFubMSxxZ8gZMmZecmZciJ9fX07ZnVuY3Rpb24gYnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6X3AoKX19ZnVuY3Rpb24gZnModCxuLHIsbyl7Y29uc3QgZT1NYXRoLmFicyh0KSxpPWUlMTAsYT1lJTEwMDtyZXR1cm4gYT49MTEmJmE8PTE5P286aT09PTE/bjppPj0yJiZpPD00P3I6b31jb25zdCB5cD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiLRgdGW0LzQstCw0LsiLGZldzoi0YHRltC80LLQsNC70YsiLG1hbnk6ItGB0ZbQvNCy0LDQu9Cw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9LGFycmF5Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0YsiLG1hbnk6ItGN0LvQtdC80LXQvdGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sc2V0Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0YsiLG1hbnk6ItGN0LvQtdC80LXQvdGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sZmlsZTp7dW5pdDp7b25lOiLQsdCw0LnRgiIsZmV3OiLQsdCw0LnRgtGLIixtYW55OiLQsdCw0LnRgtCw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLRg9Cy0L7QtCIsZW1haWw6ImVtYWlsINCw0LTRgNCw0YEiLHVybDoiVVJMIixlbW9qaToi0Y3QvNC+0LTQt9GWIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0LAg0ZYg0YfQsNGBIixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDRh9Cw0YEiLGR1cmF0aW9uOiJJU08g0L/RgNCw0YbRj9Cz0LvQsNGB0YbRjCIsaXB2NDoiSVB2NCDQsNC00YDQsNGBIixpcHY2OiJJUHY2INCw0LTRgNCw0YEiLGNpZHJ2NDoiSVB2NCDQtNGL0Y/Qv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTRi9GP0L/QsNC30L7QvSIsYmFzZTY0OiLRgNCw0LTQvtC6INGDINGE0LDRgNC80LDRhtC1IGJhc2U2NCIsYmFzZTY0dXJsOiLRgNCw0LTQvtC6INGDINGE0LDRgNC80LDRhtC1IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IkpTT04g0YDQsNC00L7QuiIsZTE2NDoi0L3Rg9C80LDRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItGD0LLQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0LvRltC6IixhcnJheToi0LzQsNGB0ZbRniJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNGe0YHRjyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINCw0YLRgNGL0LzQsNC90LAgJHtzfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0Z7RgdGPICR7aX0sINCw0YLRgNGL0LzQsNC90LAgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDQu9Cw0YHRjyAke2soZS52YWx1ZXNbMF0pfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LLQsNGA0YvRj9C90YI6INGH0LDQutCw0Z7RgdGPINCw0LTQt9GW0L0g0LcgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5tYXhpbXVtKSxjPWZzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0Y3QvdC90LUifSDQv9Cw0LLRltC90L3QsCAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfRjdC90L3QtSJ9INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5taW5pbXVtKSxjPWZzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2lufSDQv9Cw0LLRltC90L3QsCAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQvNCw0LvRizog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC/0LDRh9GL0L3QsNGG0YbQsCDQtyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC30LDQutCw0L3Rh9Cy0LDRhtGG0LAg0L3QsCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQvNGP0YjRh9Cw0YbRjCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQsNC00L/QsNCy0Y/QtNCw0YbRjCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdGLINC70ZbQujog0L/QsNCy0ZbQvdC10L0g0LHRi9GG0Ywg0LrRgNCw0YLQvdGL0LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDRgdC/0LDQt9C90LDQvdGLICR7ZS5rZXlzLmxlbmd0aD4xPyLQutC70Y7Rh9GLIjoi0LrQu9GO0YcifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdGLINC60LvRjtGHINGDICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90LDQtSDQt9C90LDRh9GN0L3QvdC1INGeICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0In19fTtmdW5jdGlvbiBrcCgpe3JldHVybntsb2NhbGVFcnJvcjp5cCgpfX1jb25zdCBTcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxmaWxlOnt1bml0OiLQsdCw0LnRgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLRhdC+0LQiLGVtYWlsOiLQuNC80LXQudC7INCw0LTRgNC10YEiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0LTQttC4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LLRgNC10LzQtSIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0LLRgNC10LzQtSIsZHVyYXRpb246IklTTyDQv9GA0L7QtNGK0LvQttC40YLQtdC70L3QvtGB0YIiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgSIsaXB2NjoiSVB2NiDQsNC00YDQtdGBIixjaWRydjQ6IklQdjQg0LTQuNCw0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00LjQsNC/0LDQt9C+0L0iLGJhc2U2NDoiYmFzZTY0LdC60L7QtNC40YDQsNC9INC90LjQtyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt0LrQvtC00LjRgNCw0L0g0L3QuNC3Iixqc29uX3N0cmluZzoiSlNPTiDQvdC40LciLGUxNjQ6IkUuMTY0INC90L7QvNC10YAiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstGF0L7QtCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHQuNCyIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9C+0LvRg9GH0LXQvSAke3N9YDpg0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSAke2l9LCDQv9C+0LvRg9GH0LXQvSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9ICR7ayhlLnZhbHVlc1swXSl9YDpg0J3QtdCy0LDQu9C40LTQvdCwINC+0L/RhtC40Y86INC+0YfQsNC60LLQsNC90L4g0LXQtNC90L4g0L7RgiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0KLQstGK0YDQtNC1INCz0L7Qu9GP0LzQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbj8/ItGB0YLQvtC50L3QvtGB0YIifSDQtNCwINGB0YrQtNGK0YDQttCwICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0LAifWA6YNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW4/PyLRgdGC0L7QudC90L7RgdGCIn0g0LTQsCDQsdGK0LTQtSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQotCy0YrRgNC00LUg0LzQsNC70LrQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbn0g0LTQsCDRgdGK0LTRitGA0LbQsCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg0KLQstGK0YDQtNC1INC80LDQu9C60L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW59INC00LAg0LHRitC00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO2lmKGkuZm9ybWF0PT09InN0YXJ0c193aXRoIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LfQsNC/0L7Rh9Cy0LAg0YEgIiR7aS5wcmVmaXh9ImA7aWYoaS5mb3JtYXQ9PT0iZW5kc193aXRoIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LfQsNCy0YrRgNGI0LLQsCDRgSAiJHtpLnN1ZmZpeH0iYDtpZihpLmZvcm1hdD09PSJpbmNsdWRlcyIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINCy0LrQu9GO0YfQstCwICIke2kuaW5jbHVkZXN9ImA7aWYoaS5mb3JtYXQ9PT0icmVnZXgiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDRgdGK0LLQv9Cw0LTQsCDRgSAke2kucGF0dGVybn1gO2xldCBhPSLQndC10LLQsNC70LjQtNC10L0iO3JldHVybiBpLmZvcm1hdD09PSJlbW9qaSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkYXRldGltZSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkYXRlIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QsCIpLGkuZm9ybWF0PT09InRpbWUiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdC+IiksaS5mb3JtYXQ9PT0iZHVyYXRpb24iJiYoYT0i0J3QtdCy0LDQu9C40LTQvdCwIiksYCR7YX0gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQstCw0LvQuNC00L3QviDRh9C40YHQu9C+OiDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQutGA0LDRgtC90L4g0L3QsCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNC30L/QvtC30L3QsNGCJHtlLmtleXMubGVuZ3RoPjE/ItC4IjoiIn0g0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0L7QstC1IjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC60LvRjtGHINCyICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQvdCwINGB0YLQvtC50L3QvtGB0YIg0LIgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtCJ9fX07ZnVuY3Rpb24gd3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6U3AoKX19Y29uc3QgSXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcsOgY3RlcnMiLHZlcmI6ImNvbnRlbmlyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImNvbnRlbmlyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRzIix2ZXJiOiJjb250ZW5pciJ9LHNldDp7dW5pdDoiZWxlbWVudHMiLHZlcmI6ImNvbnRlbmlyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHJhZGEiLGVtYWlsOiJhZHJlw6dhIGVsZWN0csOybmljYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBpIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhZGEgSVNPIixpcHY0OiJhZHJlw6dhIElQdjQiLGlwdjY6ImFkcmXDp2EgSVB2NiIsY2lkcnY0OiJyYW5nIElQdjQiLGNpZHJ2NjoicmFuZyBJUHY2IixiYXNlNjQ6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjYWRlbmEgSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXB1cyBpbnbDoGxpZDogcydlc3BlcmF2YSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHMnaGEgcmVidXQgJHtzfWA6YFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhICR7aX0sIHMnaGEgcmVidXQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVmFsb3IgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHtrKGUudmFsdWVzWzBdKX1gOmBPcGNpw7MgaW52w6BsaWRhOiBzJ2VzcGVyYXZhIHVuYSBkZSAke18oZS52YWx1ZXMsIiBvICIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iY29tIGEgbcOgeGltIjoibWVueXMgZGUiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW4/PyJlbCB2YWxvciJ9IGNvbnRpbmd1w6lzICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbj8/ImVsIHZhbG9yIn0gZm9zICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iY29tIGEgbcOtbmltIjoibcOpcyBkZSIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW59IGNvbnRpbmd1w6lzICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW59IGZvcyAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZGUgY29tZW7Dp2FyIGFtYiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGQnYWNhYmFyIGFtYiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZCdpbmNsb3VyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gRm9ybWF0IGludsOgbGlkOiBoYSBkZSBjb2luY2lkaXIgYW1iIGVsIHBhdHLDsyAke2kucGF0dGVybn1gOmBGb3JtYXQgaW52w6BsaWQgcGVyIGEgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6BsaWQ6IGhhIGRlIHNlciBtw7psdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2xhdSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm8gcmVjb25lZ3VkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2xhdSBpbnbDoGxpZGEgYSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoGxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gRWxlbWVudCBpbnbDoGxpZCBhICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyYWRhIGludsOgbGlkYSJ9fX07ZnVuY3Rpb24genAoKXtyZXR1cm57bG9jYWxlRXJyb3I6SXAoKX19Y29uc3QgeHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWvFryIsdmVyYjoibcOtdCJ9LGZpbGU6e3VuaXQ6ImJhanTFryIsdmVyYjoibcOtdCJ9LGFycmF5Ont1bml0OiJwcnZrxa8iLHZlcmI6Im3DrXQifSxzZXQ6e3VuaXQ6InBydmvFryIsdmVyYjoibcOtdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJyZWd1bMOhcm7DrSB2w71yYXoiLGVtYWlsOiJlLW1haWxvdsOhIGFkcmVzYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0dW0gYSDEjWFzIHZlIGZvcm3DoXR1IElTTyIsZGF0ZToiZGF0dW0gdmUgZm9ybcOhdHUgSVNPIix0aW1lOiLEjWFzIHZlIGZvcm3DoXR1IElTTyIsZHVyYXRpb246ImRvYmEgdHJ2w6Fuw60gSVNPIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoicm96c2FoIElQdjQiLGNpZHJ2Njoicm96c2FoIElQdjYiLGJhc2U2NDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjQiLGJhc2U2NHVybDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLFmWV0xJt6ZWMgdmUgZm9ybcOhdHUgSlNPTiIsZTE2NDoixI3DrXNsbyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InZzdHVwIn0sbz17bmFuOiJOYU4iLG51bWJlcjoixI3DrXNsbyIsc3RyaW5nOiLFmWV0xJt6ZWMiLGZ1bmN0aW9uOiJmdW5rY2UiLGFycmF5OiJwb2xlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb2JkcsW+ZW5vICR7c31gOmBOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyAke2l9LCBvYmRyxb5lbm8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOZXBsYXRuw6EgbW/Fvm5vc3Q6IG/EjWVrw6F2w6FuYSBqZWRuYSB6IGhvZG5vdCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIG3DrXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icHJ2a8WvIn1gOmBIb2Rub3RhIGplIHDFmcOtbGnFoSB2ZWxrw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BIb2Rub3RhIGplIHDFmcOtbGnFoSBtYWzDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gemHEjcOtbmF0IG5hICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIGtvbsSNaXQgbmEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBvYnNhaG92YXQgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9kcG92w61kYXQgdnpvcnUgJHtpLnBhdHRlcm59YDpgTmVwbGF0bsO9IGZvcm3DoXQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5lcGxhdG7DqSDEjcOtc2xvOiBtdXPDrSBiw710IG7DoXNvYmtlbSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZXpuw6Ftw6kga2zDrcSNZTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZXBsYXRuw70ga2zDrcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5lcGxhdG7DvSB2c3R1cCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXBsYXRuw6EgaG9kbm90YSB2ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZXBsYXRuw70gdnN0dXAifX19O2Z1bmN0aW9uIFRwKCl7cmV0dXJue2xvY2FsZUVycm9yOnhwKCl9fWNvbnN0IGpwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWduIix2ZXJiOiJoYXZkZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJoYXZkZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6ImluZGVob2xkdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiJpbmRlaG9sZHQifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLW1haWxhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2zDpnQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2zDpnQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZWQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJzdHJlbmciLG51bWJlcjoidGFsIixib29sZWFuOiJib29sZWFuIixhcnJheToibGlzdGUiLG9iamVjdDoib2JqZWt0IixzZXQ6InPDpnQiLGZpbGU6ImZpbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpayAke3N9YDpgVWd5bGRpZ3QgaW5wdXQ6IGZvcnZlbnRlZGUgJHtpfSwgZmlrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFVneWxkaWcgdsOmcmRpOiBmb3J2ZW50ZWRlICR7ayhlLnZhbHVlc1swXSl9YDpgVWd5bGRpZ3QgdmFsZzogZm9ydmVudGVkZSBlbiBhZiBmw7hsZ2VuZGUgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YEZvciBzdG9yOiBmb3J2ZW50ZWRlICR7cz8/InZhbHVlIn0gJHthLnZlcmJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZXIifWA6YEZvciBzdG9yOiBmb3J2ZW50ZWRlICR7cz8/InZhbHVlIn0gaGF2ZGUgJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YEZvciBsaWxsZTogZm9ydmVudGVkZSAke3N9ICR7YS52ZXJifSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YEZvciBsaWxsZTogZm9ydmVudGVkZSAke3N9IGhhdmRlICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgc3RhcnRlIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBlbmRlIG1lZCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFVneWxkaWcgc3RyZW5nOiBza2FsIGluZGVob2xkZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgbWF0Y2hlIG3DuG5zdGVyZXQgJHtpLnBhdHRlcm59YDpgVWd5bGRpZyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZ3QgdGFsOiBza2FsIHbDpnJlIGRlbGVsaWd0IG1lZCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVWtlbmR0ZSBuw7hnbGVyIjoiVWtlbmR0IG7DuGdsZSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4Z2xlIGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlVneWxkaWd0IGlucHV0OiBtYXRjaGVyIGluZ2VuIGFmIGRlIHRpbGxhZHRlIHR5cGVyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVneWxkaWcgdsOmcmRpIGkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlVneWxkaWd0IGlucHV0In19fTtmdW5jdGlvbiBVcCgpe3JldHVybntsb2NhbGVFcnJvcjpqcCgpfX1jb25zdCBQcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiWmVpY2hlbiIsdmVyYjoienUgaGFiZW4ifSxmaWxlOnt1bml0OiJCeXRlcyIsdmVyYjoienUgaGFiZW4ifSxhcnJheTp7dW5pdDoiRWxlbWVudGUiLHZlcmI6Inp1IGhhYmVuIn0sc2V0Ont1bml0OiJFbGVtZW50ZSIsdmVyYjoienUgaGFiZW4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiRWluZ2FiZSIsZW1haWw6IkUtTWFpbC1BZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6IkVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tRGF0dW0gdW5kIC1VaHJ6ZWl0IixkYXRlOiJJU08tRGF0dW0iLHRpbWU6IklTTy1VaHJ6ZWl0IixkdXJhdGlvbjoiSVNPLURhdWVyIixpcHY0OiJJUHY0LUFkcmVzc2UiLGlwdjY6IklQdjYtQWRyZXNzZSIsY2lkcnY0OiJJUHY0LUJlcmVpY2giLGNpZHJ2NjoiSVB2Ni1CZXJlaWNoIixiYXNlNjQ6IkJhc2U2NC1jb2RpZXJ0ZXIgU3RyaW5nIixiYXNlNjR1cmw6IkJhc2U2NC1VUkwtY29kaWVydGVyIFN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04tU3RyaW5nIixlMTY0OiJFLjE2NC1OdW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJFaW5nYWJlIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiWmFobCIsYXJyYXk6IkFycmF5In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBlcmhhbHRlbiAke3N9YDpgVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke2l9LCBlcmhhbHRlbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7ayhlLnZhbHVlc1swXSl9YDpgVW5nw7xsdGlnZSBPcHRpb246IGVyd2FydGV0IGVpbmUgdm9uICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BadSBncm/DnzogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbj8/IldlcnQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJFbGVtZW50ZSJ9IGhhdGA6YFp1IGdyb8OfOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2luPz8iV2VydCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSBpc3RgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSBoYXRgOmBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgbWl0ICIke2kucHJlZml4fSIgYmVnaW5uZW5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgIiR7aS5zdWZmaXh9IiBlbmRlbmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgIiR7aS5pbmNsdWRlc30iIGVudGhhbHRlbmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgZGVtIE11c3RlciAke2kucGF0dGVybn0gZW50c3ByZWNoZW5gOmBVbmfDvGx0aWc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVbmfDvGx0aWdlIFphaGw6IG11c3MgZWluIFZpZWxmYWNoZXMgdm9uICR7ZS5kaXZpc29yfSBzZWluYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlVuYmVrYW5udGUgU2NobMO8c3NlbCI6IlVuYmVrYW5udGVyIFNjaGzDvHNzZWwifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBVbmfDvGx0aWdlciBTY2hsw7xzc2VsIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVbmfDvGx0aWdlIEVpbmdhYmUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVW5nw7xsdGlnZXIgV2VydCBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVW5nw7xsdGlnZSBFaW5nYWJlIn19fTtmdW5jdGlvbiBPcCgpe3JldHVybntsb2NhbGVFcnJvcjpQcCgpfX1jb25zdCBEcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiz4fOsc+BzrHOus+Ezq7Pgc61z4IiLHZlcmI6Is69zrEgzq3Ph861zrkifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LGFycmF5Ont1bml0OiLPg8+Ezr/Ouc+HzrXOr86xIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sc2V0Ont1bml0OiLPg8+Ezr/Ouc+HzrXOr86xIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sbWFwOnt1bml0OiLOus6xz4TOsc+Hz4nPgc6uz4POtc65z4IiLHZlcmI6Is69zrEgzq3Ph861zrkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoizrXOr8+Dzr/OtM6/z4IiLGVtYWlsOiLOtM65zrXPjc64z4XOvc+DzrcgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDOt868zrXPgc6/zrzOt869zq/OsSDOus6xzrkgz47Pgc6xIixkYXRlOiJJU08gzrfOvM61z4HOv868zrfOvc6vzrEiLHRpbWU6IklTTyDPjs+BzrEiLGR1cmF0aW9uOiJJU08gzrTOuc6sz4HOus61zrnOsSIsaXB2NDoizrTOuc61z43OuM+Fzr3Pg863IElQdjQiLGlwdjY6Is60zrnOtc+NzrjPhc69z4POtyBJUHY2IixtYWM6Is60zrnOtc+NzrjPhc69z4POtyBNQUMiLGNpZHJ2NDoizrXPjc+Bzr/PgiBJUHY0IixjaWRydjY6Is61z43Pgc6/z4IgSVB2NiIsYmFzZTY0OiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgzrrPic60zrnOus6/z4DOv865zrfOvM6tzr3OtyDPg861IGJhc2U2NCIsYmFzZTY0dXJsOiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgzrrPic60zrnOus6/z4DOv865zrfOvM6tzr3OtyDPg861IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6Is+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrCBKU09OIixlMTY0OiLOsc+BzrnOuM68z4zPgiBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Is61zq/Pg86/zrTOv8+CIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuIHR5cGVvZiBlLmV4cGVjdGVkPT0ic3RyaW5nIiYmL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gzpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4I6IM6xzr3Osc68zrXOvc+Mz4TOsc69IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgzrvOrs+GzrjOt866zrUgJHtzfWA6YM6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+COiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2l9LCDOu86uz4bOuM63zrrOtSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgjogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtrKGUudmFsdWVzWzBdKX1gOmDOnM63IM6tzrPOus+Fz4HOtyDOtc+AzrnOu86/zrPOrjogzrHOvc6xzrzOtc69z4zPhM6xzr0gzq3Ovc6xIM6xz4DPjCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gzqDOv867z40gzrzOtc6zzqzOu86/OiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2luPz8iz4TOuc68zq4ifSDOvc6xIM6tz4fOtc65ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Is+Dz4TOv865z4fOtc6vzrEifWA6YM6gzr/Ou8+NIM68zrXOs86szrvOvzogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbj8/Is+EzrnOvM6uIn0gzr3OsSDOtc6vzr3Osc65ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YM6gzr/Ou8+NIM68zrnOus+Bz4w6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW59IM69zrEgzq3Ph861zrkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YM6gzr/Ou8+NIM68zrnOus+Bz4w6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW59IM69zrEgzrXOr869zrHOuSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDOvs61zrrOuc69zqwgzrzOtSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrXOu861zrnPjs69zrXOuSDOvM61ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDPgM61z4HOuc6tz4fOtc65ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrHOuc+BzrnOrM62zrXOuSDOvM61IM+Ezr8gzrzOv8+Ezq/Oss6/ICR7aS5wYXR0ZXJufWA6YM6czrcgzq3Os866z4XPgc6/OiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzr/PgiDOsc+BzrnOuM68z4zPgjogz4DPgc6tz4DOtc65IM69zrEgzrXOr869zrHOuSDPgM6/zrvOu86xz4DOu86sz4POuc6/IM+Ezr/PhSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDOhs6zzr3Pic+Dz4Qke2Uua2V5cy5sZW5ndGg+MT8izrEiOiLOvyJ9IM66zrvOtc65zrQke2Uua2V5cy5sZW5ndGg+MT8izrnOrCI6Is6vIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzr8gzrrOu861zrnOtM6vIM+Dz4TOvyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4izpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4IiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzrcgz4TOuc68zq4gz4PPhM6/ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgiJ9fX07ZnVuY3Rpb24gTnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6RHAoKX19Y29uc3QgRXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNoYXJhY3RlcnMiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxtYXA6e3VuaXQ6ImVudHJpZXMiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlbWFpbCBhZGRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0ZXRpbWUiLGRhdGU6IklTTyBkYXRlIix0aW1lOiJJU08gdGltZSIsZHVyYXRpb246IklTTyBkdXJhdGlvbiIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLG1hYzoiTUFDIGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgbnVtYmVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm5gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtpfSwgcmVjZWl2ZWQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtrKGUudmFsdWVzWzBdKX1gOmBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUb28gYmlnOiBleHBlY3RlZCAke2Uub3JpZ2luPz8idmFsdWUifSB0byBoYXZlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRzIn1gOmBUb28gYmlnOiBleHBlY3RlZCAke2Uub3JpZ2luPz8idmFsdWUifSB0byBiZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUb28gc21hbGw6IGV4cGVjdGVkICR7ZS5vcmlnaW59IHRvIGhhdmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtlLm9yaWdpbn0gdG8gYmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IHN0YXJ0IHdpdGggIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBpbmNsdWRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBtYXRjaCBwYXR0ZXJuICR7aS5wYXR0ZXJufWA6YEludmFsaWQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVW5yZWNvZ25pemVkIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIGUub3B0aW9ucyYmQXJyYXkuaXNBcnJheShlLm9wdGlvbnMpJiZlLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtlLm9wdGlvbnMubWFwKGE9PmAnJHthfSdgKS5qb2luKCIgfCAiKX1gOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uIGNsKCl7cmV0dXJue2xvY2FsZUVycm9yOkVwKCl9fWNvbnN0IFpwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3Ryb2puIix2ZXJiOiJoYXZpIn0sZmlsZTp7dW5pdDoiYmFqdG9qbiIsdmVyYjoiaGF2aSJ9LGFycmF5Ont1bml0OiJlbGVtZW50b2puIix2ZXJiOiJoYXZpIn0sc2V0Ont1bml0OiJlbGVtZW50b2puIix2ZXJiOiJoYXZpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVuaWdvIixlbWFpbDoicmV0YWRyZXNvIix1cmw6IlVSTCIsZW1vamk6ImVtb8SdaW8iLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1kYXRvdGVtcG8iLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08tdGVtcG8iLGR1cmF0aW9uOiJJU08tZGHFrXJvIixpcHY0OiJJUHY0LWFkcmVzbyIsaXB2NjoiSVB2Ni1hZHJlc28iLGNpZHJ2NDoiSVB2NC1yYW5nbyIsY2lkcnY2OiJJUHY2LXJhbmdvIixiYXNlNjQ6IjY0LXVtZSBrb2RpdGEga2FyYWt0cmFybyIsYmFzZTY0dXJsOiJVUkwtNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvIixqc29uX3N0cmluZzoiSlNPTi1rYXJha3RyYXJvIixlMTY0OiJFLjE2NC1ub21icm8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbmlnbyJ9LG89e25hbjoiTmFOIixudW1iZXI6Im5vbWJybyIsYXJyYXk6InRhYmVsbyIsbnVsbDoic2VudmFsb3JhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmljZXZpxJ1pcyAke3N9YDpgTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHtpfSwgcmljZXZpxJ1pcyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyAke2soZS52YWx1ZXNbMF0pfWA6YE5ldmFsaWRhIG9wY2lvOiBhdGVuZGnEnWlzIHVudSBlbCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvIGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2luPz8idmFsb3JvIn0gaGF2dSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b2puIn1gOmBUcm8gZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW4/PyJ2YWxvcm8ifSBoYXZ1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbn0gaGF2dSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvIG1hbGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2lufSBlc3R1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb21lbmNpxJ1pIHBlciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBmaW5pxJ1pIHBlciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGlua2x1eml2aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29uZ3J1aSBrdW4gbGEgbW9kZWxvICR7aS5wYXR0ZXJufWA6YE5ldmFsaWRhICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZhbGlkYSBub21icm86IGRldmFzIGVzdGkgb2JsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWtvbmF0YSR7ZS5rZXlzLmxlbmd0aD4xPyJqIjoiIn0gxZ1sb3NpbG8ke2Uua2V5cy5sZW5ndGg+MT8iaiI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmFsaWRhIMWdbG9zaWxvIGVuICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZXZhbGlkYSBlbmlnbyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXZhbGlkYSB2YWxvcm8gZW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5ldmFsaWRhIGVuaWdvIn19fTtmdW5jdGlvbiBScCgpe3JldHVybntsb2NhbGVFcnJvcjpacCgpfX1jb25zdCBDcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlcyIsdmVyYjoidGVuZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVuZXIifSxhcnJheTp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9LHNldDp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyYWRhIixlbWFpbDoiZGlyZWNjacOzbiBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJmZWNoYSB5IGhvcmEgSVNPIixkYXRlOiJmZWNoYSBJU08iLHRpbWU6ImhvcmEgSVNPIixkdXJhdGlvbjoiZHVyYWNpw7NuIElTTyIsaXB2NDoiZGlyZWNjacOzbiBJUHY0IixpcHY2OiJkaXJlY2Npw7NuIElQdjYiLGNpZHJ2NDoicmFuZ28gSVB2NCIsY2lkcnY2OiJyYW5nbyBJUHY2IixiYXNlNjQ6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2FkYSBlbiBiYXNlNjQiLGpzb25fc3RyaW5nOiJjYWRlbmEgSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJ0ZXh0byIsbnVtYmVyOiJuw7ptZXJvIixib29sZWFuOiJib29sZWFubyIsYXJyYXk6ImFycmVnbG8iLG9iamVjdDoib2JqZXRvIixzZXQ6ImNvbmp1bnRvIixmaWxlOiJhcmNoaXZvIixkYXRlOiJmZWNoYSIsYmlnaW50OiJuw7ptZXJvIGdyYW5kZSIsc3ltYm9sOiJzw61tYm9sbyIsdW5kZWZpbmVkOiJpbmRlZmluaWRvIixudWxsOiJudWxvIixmdW5jdGlvbjoiZnVuY2nDs24iLG1hcDoibWFwYSIscmVjb3JkOiJyZWdpc3RybyIsdHVwbGU6InR1cGxhIixlbnVtOiJlbnVtZXJhY2nDs24iLHVuaW9uOiJ1bmnDs24iLGxpdGVyYWw6ImxpdGVyYWwiLHByb21pc2U6InByb21lc2EiLHZvaWQ6InZhY8OtbyIsbmV2ZXI6Im51bmNhIix1bmtub3duOiJkZXNjb25vY2lkbyIsYW55OiJjdWFscXVpZXJhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJlY2liaWRvICR7c31gOmBFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHtpfSwgcmVjaWJpZG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhICR7ayhlLnZhbHVlc1swXSl9YDpgT3BjacOzbiBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhIHVuYSBkZSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7cz8/InZhbG9yIn0gdHV2aWVyYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b3MifWA6YERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke3M/PyJ2YWxvciJ9IGZ1ZXJhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YERlbWFzaWFkbyBwZXF1ZcOxbzogc2UgZXNwZXJhYmEgcXVlICR7c30gdHV2aWVyYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtzfSBmdWVyYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBjb21lbnphciBjb24gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSB0ZXJtaW5hciBlbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgaW5jbHVpciAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBjb2luY2lkaXIgY29uIGVsIHBhdHLDs24gJHtpLnBhdHRlcm59YDpgSW52w6FsaWRvICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOhbGlkbzogZGViZSBzZXIgbcO6bHRpcGxvIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYExsYXZlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBkZXNjb25vY2lkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTGxhdmUgaW52w6FsaWRhIGVuICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3IgaW52w6FsaWRvIGVuICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEifX19O2Z1bmN0aW9uIEFwKCl7cmV0dXJue2xvY2FsZUVycm9yOkNwKCl9fWNvbnN0IExwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLaqdin2LHYp9qp2KrYsSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LGZpbGU6e3VuaXQ6Itio2KfbjNiqIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sYXJyYXk6e3VuaXQ6Itii24zYqtmFIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sc2V0Ont1bml0OiLYotuM2KrZhSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLZiNix2YjYr9uMIixlbWFpbDoi2KLYr9ix2LMg2KfbjNmF24zZhCIsdXJsOiJVUkwiLGVtb2ppOiLYp9uM2YXZiNis24wiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Itiq2KfYsduM2K4g2Ygg2LLZhdin2YYg2KfbjNiy2YgiLGRhdGU6Itiq2KfYsduM2K4g2KfbjNiy2YgiLHRpbWU6Itiy2YXYp9mGINin24zYstmIIixkdXJhdGlvbjoi2YXYr9iqINiy2YXYp9mGINin24zYstmIIixpcHY0OiJJUHY0INii2K/YsdizIixpcHY2OiJJUHY2INii2K/YsdizIixjaWRydjQ6IklQdjQg2K/Yp9mF2YbZhyIsY2lkcnY2OiJJUHY2INiv2KfZhdmG2YciLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg2LHYtNiq2YciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2LHYtNiq2YciLGpzb25fc3RyaW5nOiJKU09OINix2LTYqtmHIixlMTY0OiJFLjE2NCDYudiv2K8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9uMIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KLYsdin24zZhyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXbjOKAjNio2YjYr9iMICR7c30g2K/YsduM2KfZgdiqINi02K9gOmDZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke2l9INmF24zigIzYqNmI2K/YjCAke3N9INiv2LHbjNin2YHYqiDYtNivYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke2soZS52YWx1ZXNbMF0pfSDZhduM4oCM2KjZiNivYDpg2q/YstuM2YbZhyDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2Kog24zaqduMINin2LIgJHtfKGUudmFsdWVzLCJ8Iil9INmF24zigIzYqNmI2K9gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2K7bjNmE24wg2KjYstix2q86ICR7ZS5vcmlnaW4/PyLZhdmC2K/Yp9ixIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhti12LEifSDYqNin2LTYr2A6YNiu24zZhNuMINio2LLYsdqvOiAke2Uub3JpZ2luPz8i2YXZgtiv2KfYsSJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNiu24zZhNuMINqp2YjahtqpOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9INio2KfYtNivYDpg2K7bjNmE24wg2qnZiNqG2qk6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyAiJHtpLnByZWZpeH0iINi02LHZiNi5INi02YjYr2A6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINio2KcgIiR7aS5zdWZmaXh9IiDYqtmF2KfZhSDYtNmI2K9gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINi02KfZhdmEICIke2kuaW5jbHVkZXN9IiDYqNin2LTYr2A6aS5mb3JtYXQ9PT0icmVnZXgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyDYp9mE2q/ZiNuMICR7aS5wYXR0ZXJufSDZhdi32KfYqNmC2Kog2K/Yp9i02KrZhyDYqNin2LTYr2A6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDZhtin2YXYudiq2KjYsWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYudiv2K8g2YbYp9mF2LnYqtio2LE6INio2KfbjNivINmF2LbYsdioICR7ZS5kaXZpc29yfSDYqNin2LTYr2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNqp2YTbjNivJHtlLmtleXMubGVuZ3RoPjE/ItmH2KfbjCI6IiJ9INmG2KfYtNmG2KfYszogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDaqdmE24zYryDZhtin2LTZhtin2LMg2K/YsSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhdmC2K/Yp9ixINmG2KfZhdi52KrYqNixINiv2LEgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LEifX19O2Z1bmN0aW9uIE1wKCl7cmV0dXJue2xvY2FsZUVycm9yOkxwKCl9fWNvbnN0IHFwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJtZXJra2nDpCIsc3ViamVjdDoibWVya2tpam9ub24ifSxmaWxlOnt1bml0OiJ0YXZ1YSIsc3ViamVjdDoidGllZG9zdG9uIn0sYXJyYXk6e3VuaXQ6ImFsa2lvdGEiLHN1YmplY3Q6Imxpc3RhbiJ9LHNldDp7dW5pdDoiYWxraW90YSIsc3ViamVjdDoiam91a29uIn0sbnVtYmVyOnt1bml0OiIiLHN1YmplY3Q6Imx1dnVuIn0sYmlnaW50Ont1bml0OiIiLHN1YmplY3Q6InN1dXJlbiBrb2tvbmFpc2x1dnVuIn0saW50Ont1bml0OiIiLHN1YmplY3Q6Imtva29uYWlzbHV2dW4ifSxkYXRlOnt1bml0OiIiLHN1YmplY3Q6InDDpGl2w6Rtw6TDpHLDpG4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoic8Okw6RubsO2bGxpbmVuIGxhdXNla2UiLGVtYWlsOiJzw6Roa8O2cG9zdGlvc29pdGUiLHVybDoiVVJMLW9zb2l0ZSIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tYWlrYWxlaW1hIixkYXRlOiJJU08tcMOkaXbDpG3DpMOkcsOkIix0aW1lOiJJU08tYWlrYSIsZHVyYXRpb246IklTTy1rZXN0byIsaXB2NDoiSVB2NC1vc29pdGUiLGlwdjY6IklQdjYtb3NvaXRlIixjaWRydjQ6IklQdjQtYWx1ZSIsY2lkcnY2OiJJUHY2LWFsdWUiLGJhc2U2NDoiYmFzZTY0LWtvb2RhdHR1IG1lcmtraWpvbm8iLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvb2RhdHR1IG1lcmtraWpvbm8iLGpzb25fc3RyaW5nOiJKU09OLW1lcmtraWpvbm8iLGUxNjQ6IkUuMTY0LWx1a3UiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ0ZW1wbGFhdHRpbWVya2tpam9ubyJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFZpcmhlZWxsaW5lbiB0eXlwcGk6IG9kb3RldHRpaW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvbGkgJHtzfWA6YFZpcmhlZWxsaW5lbiB0eXlwcGk6IG9kb3RldHRpaW4gJHtpfSwgb2xpICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgb2xsYSAke2soZS52YWx1ZXNbMF0pfWA6YFZpcmhlZWxsaW5lbiB2YWxpbnRhOiB0w6R5dHl5IG9sbGEgeWtzaSBzZXVyYWF2aXN0YTogJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YExpaWFuIHN1dXJpOiAke2Euc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gLnRyaW0oKTpgTGlpYW4gc3V1cmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BMaWlhbiBwaWVuaTogJHthLnN1YmplY3R9IHTDpHl0eXkgb2xsYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YC50cmltKCk6YExpaWFuIHBpZW5pOiBhcnZvbiB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgYWxrYWEgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBsb3BwdWEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IHNpc8OkbHTDpMOkICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IHZhc3RhdGEgc8Okw6RubsO2bGxpc3TDpCBsYXVzZWtldHRhICR7aS5wYXR0ZXJufWA6YFZpcmhlZWxsaW5lbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVmlyaGVlbGxpbmVuIGx1a3U6IHTDpHl0eXkgb2xsYSBsdXZ1biAke2UuZGl2aXNvcn0gbW9uaWtlcnRhYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlR1bnRlbWF0dG9tYXQgYXZhaW1ldCI6IlR1bnRlbWF0b24gYXZhaW4ifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiJWaXJoZWVsbGluZW4gYXZhaW4gdGlldHVlZXNzYSI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVmlyaGVlbGxpbmVuIHVuaW9uaSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybiJWaXJoZWVsbGluZW4gYXJ2byBqb3Vrb3NzYSI7ZGVmYXVsdDpyZXR1cm4iVmlyaGVlbGxpbmVuIHN5w7Z0ZSJ9fX07ZnVuY3Rpb24gRnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6cXAoKX19Y29uc3QgSnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHLDqWUiLGVtYWlsOiJhZHJlc3NlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0ZSBldCBoZXVyZSBJU08iLGRhdGU6ImRhdGUgSVNPIix0aW1lOiJoZXVyZSBJU08iLGR1cmF0aW9uOiJkdXLDqWUgSVNPIixpcHY0OiJhZHJlc3NlIElQdjQiLGlwdjY6ImFkcmVzc2UgSVB2NiIsY2lkcnY0OiJwbGFnZSBJUHY0IixjaWRydjY6InBsYWdlIElQdjYiLGJhc2U2NDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaGHDrm5lIEpTT04iLGUxNjQ6Im51bcOpcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyw6llIn0sbz17c3RyaW5nOiJjaGHDrm5lIixudW1iZXI6Im5vbWJyZSIsaW50OiJlbnRpZXIiLGJvb2xlYW46ImJvb2zDqWVuIixiaWdpbnQ6ImdyYW5kIGVudGllciIsc3ltYm9sOiJzeW1ib2xlIix1bmRlZmluZWQ6ImluZMOpZmluaSIsbnVsbDoibnVsbCIsbmV2ZXI6ImphbWFpcyIsdm9pZDoidmlkZSIsZGF0ZToiZGF0ZSIsYXJyYXk6InRhYmxlYXUiLG9iamVjdDoib2JqZXQiLHR1cGxlOiJ0dXBsZSIscmVjb3JkOiJlbnJlZ2lzdHJlbWVudCIsbWFwOiJjYXJ0ZSIsc2V0OiJlbnNlbWJsZSIsZmlsZToiZmljaGllciIsbm9ub3B0aW9uYWw6Im5vbi1vcHRpb25uZWwiLG5hbjoiTmFOIixmdW5jdGlvbjoiZm9uY3Rpb24ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50csOpZSBpbnZhbGlkZSA6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSBhdHRlbmR1LCAke3N9IHJlw6d1YDpgRW50csOpZSBpbnZhbGlkZSA6ICR7aX0gYXR0ZW5kdSwgJHtzfSByZcOndWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50csOpZSBpbnZhbGlkZSA6ICR7ayhlLnZhbHVlc1swXSl9IGF0dGVuZHVgOmBPcHRpb24gaW52YWxpZGUgOiB1bmUgdmFsZXVyIHBhcm1pICR7XyhlLnZhbHVlcywifCIpfSBhdHRlbmR1ZWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIGdyYW5kIDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IsOpbMOpbWVudChzKSJ9YDpgVHJvcCBncmFuZCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0IMOqdHJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgcGV0aXQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgcGV0aXQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCDDqnRyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBzZSB0ZXJtaW5lciBwYXIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBpbmNsdXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW9kw6hsZSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUifX19O2Z1bmN0aW9uIEhwKCl7cmV0dXJue2xvY2FsZUVycm9yOkpwKCl9fWNvbnN0IFZwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3TDqHJlcyIsdmVyYjoiYXZvaXIifSxmaWxlOnt1bml0OiJvY3RldHMiLHZlcmI6ImF2b2lyIn0sYXJyYXk6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn0sc2V0Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyw6llIixlbWFpbDoiYWRyZXNzZSBjb3VycmllbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0ZS1oZXVyZSBJU08iLGRhdGU6ImRhdGUgSVNPIix0aW1lOiJoZXVyZSBJU08iLGR1cmF0aW9uOiJkdXLDqWUgSVNPIixpcHY0OiJhZHJlc3NlIElQdjQiLGlwdjY6ImFkcmVzc2UgSVB2NiIsY2lkcnY0OiJwbGFnZSBJUHY0IixjaWRydjY6InBsYWdlIElQdjYiLGJhc2U2NDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaGHDrm5lIEpTT04iLGUxNjQ6Im51bcOpcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyw6llIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZcOndSAke3N9YDpgRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHtpfSwgcmXDp3UgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHtrKGUudmFsdWVzWzBdKX1gOmBPcHRpb24gaW52YWxpZGUgOiBhdHRlbmR1IGwndW5lIGRlcyB2YWxldXJzIHN1aXZhbnRlcyAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuKJpCI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgZ3JhbmQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2luPz8ibGEgdmFsZXVyIn0gYWl0ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbj8/ImxhIHZhbGV1ciJ9IHNvaXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuKJpSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2lufSBhaXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2lufSBzb2l0ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb21tZW5jZXIgcGFyICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvcnJlc3BvbmRyZSBhdSBtb3RpZiAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUifX19O2Z1bmN0aW9uIEtwKCl7cmV0dXJue2xvY2FsZUVycm9yOlZwKCl9fWNvbnN0IFdwPSgpPT57Y29uc3QgdD17c3RyaW5nOntsYWJlbDoi157Xl9eo15XXlteqIixnZW5kZXI6ImYifSxudW1iZXI6e2xhYmVsOiLXnteh16TXqCIsZ2VuZGVyOiJtIn0sYm9vbGVhbjp7bGFiZWw6Itei16jXmiDXkdeV15zXmdeQ16DXmSIsZ2VuZGVyOiJtIn0sYmlnaW50OntsYWJlbDoiQmlnSW50IixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiIsZ2VuZGVyOiJtIn0sYXJyYXk6e2xhYmVsOiLXntei16jXmiIsZ2VuZGVyOiJtIn0sb2JqZWN0OntsYWJlbDoi15DXldeR15nXmden15giLGdlbmRlcjoibSJ9LG51bGw6e2xhYmVsOiLXoteo15og16jXmdenIChudWxsKSIsZ2VuZGVyOiJtIn0sdW5kZWZpbmVkOntsYWJlbDoi16LXqNeaINec15Ag157XldeS15PXqCAodW5kZWZpbmVkKSIsZ2VuZGVyOiJtIn0sc3ltYm9sOntsYWJlbDoi16HXmdee15HXldecIChTeW1ib2wpIixnZW5kZXI6Im0ifSxmdW5jdGlvbjp7bGFiZWw6Itek15XXoNen16bXmdeUIixnZW5kZXI6ImYifSxtYXA6e2xhYmVsOiLXntek15QgKE1hcCkiLGdlbmRlcjoiZiJ9LHNldDp7bGFiZWw6Iten15HXldem15QgKFNldCkiLGdlbmRlcjoiZiJ9LGZpbGU6e2xhYmVsOiLXp9eV15HXpSIsZ2VuZGVyOiJtIn0scHJvbWlzZTp7bGFiZWw6IlByb21pc2UiLGdlbmRlcjoibSJ9LE5hTjp7bGFiZWw6Ik5hTiIsZ2VuZGVyOiJtIn0sdW5rbm93bjp7bGFiZWw6Itei16jXmiDXnNeQINeZ15PXldeiIixnZW5kZXI6Im0ifSx2YWx1ZTp7bGFiZWw6Itei16jXmiIsZ2VuZGVyOiJtIn19LG49e3N0cmluZzp7dW5pdDoi16rXldeV15nXnSIsc2hvcnRMYWJlbDoi16fXpteoIixsb25nTGFiZWw6IteQ16jXldeaIn0sZmlsZTp7dW5pdDoi15HXmdeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxhcnJheTp7dW5pdDoi16TXqNeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxzZXQ6e3VuaXQ6Itek16jXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sbnVtYmVyOnt1bml0OiIiLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9fSxyPXU9PnU/dFt1XTp2b2lkIDAsbz11PT57Y29uc3QgbD1yKHUpO3JldHVybiBsP2wubGFiZWw6dT8/dC51bmtub3duLmxhYmVsfSxlPXU9PmDXlCR7byh1KX1gLGk9dT0+KHIodSk/LmdlbmRlcj8/Im0iKT09PSJmIj8i16bXqNeZ15vXlCDXnNeU15nXldeqIjoi16bXqNeZ15og15zXlNeZ15XXqiIsYT11PT51P25bdV0/P251bGw6bnVsbCxzPXtyZWdleDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sZW1haWw6e2xhYmVsOiLXm9eq15XXkdeqINeQ15nXnteZ15nXnCIsZ2VuZGVyOiJmIn0sdXJsOntsYWJlbDoi15vXqteV15HXqiDXqNep16oiLGdlbmRlcjoiZiJ9LGVtb2ppOntsYWJlbDoi15DXmdee15XXkifXmSIsZ2VuZGVyOiJtIn0sdXVpZDp7bGFiZWw6IlVVSUQiLGdlbmRlcjoibSJ9LG5hbm9pZDp7bGFiZWw6Im5hbm9pZCIsZ2VuZGVyOiJtIn0sZ3VpZDp7bGFiZWw6IkdVSUQiLGdlbmRlcjoibSJ9LGN1aWQ6e2xhYmVsOiJjdWlkIixnZW5kZXI6Im0ifSxjdWlkMjp7bGFiZWw6ImN1aWQyIixnZW5kZXI6Im0ifSx1bGlkOntsYWJlbDoiVUxJRCIsZ2VuZGVyOiJtIn0seGlkOntsYWJlbDoiWElEIixnZW5kZXI6Im0ifSxrc3VpZDp7bGFiZWw6IktTVUlEIixnZW5kZXI6Im0ifSxkYXRldGltZTp7bGFiZWw6Iteq15DXqNeZ15og15XXltee158gSVNPIixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiBJU08iLGdlbmRlcjoibSJ9LHRpbWU6e2xhYmVsOiLXltee158gSVNPIixnZW5kZXI6Im0ifSxkdXJhdGlvbjp7bGFiZWw6Itee16nXmiDXltee158gSVNPIixnZW5kZXI6Im0ifSxpcHY0OntsYWJlbDoi15vXqteV15HXqiBJUHY0IixnZW5kZXI6ImYifSxpcHY2OntsYWJlbDoi15vXqteV15HXqiBJUHY2IixnZW5kZXI6ImYifSxjaWRydjQ6e2xhYmVsOiLXmNeV15XXlyBJUHY0IixnZW5kZXI6Im0ifSxjaWRydjY6e2xhYmVsOiLXmNeV15XXlyBJUHY2IixnZW5kZXI6Im0ifSxiYXNlNjQ6e2xhYmVsOiLXnteX16jXldeW16og15HXkdeh15nXoSA2NCIsZ2VuZGVyOiJmIn0sYmFzZTY0dXJsOntsYWJlbDoi157Xl9eo15XXlteqINeR15HXodeZ16EgNjQg15zXm9eq15XXkdeV16og16jXqdeqIixnZW5kZXI6ImYifSxqc29uX3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiBKU09OIixnZW5kZXI6ImYifSxlMTY0OntsYWJlbDoi157Xodek16ggRS4xNjQiLGdlbmRlcjoibSJ9LGp3dDp7bGFiZWw6IkpXVCIsZ2VuZGVyOiJtIn0sZW5kc193aXRoOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxpbmNsdWRlczp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sbG93ZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxzdGFydHNfd2l0aDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sdXBwZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifX0sYz17bmFuOiJOYU4ifTtyZXR1cm4gdT0+e3N3aXRjaCh1LmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgbD11LmV4cGVjdGVkLGc9Y1tsPz8iIl0/P28obCksdj1TKHUuaW5wdXQpLCQ9Y1t2XT8/dFt2XT8ubGFiZWw/P3Y7cmV0dXJuL15bQS1aXS8udGVzdCh1LmV4cGVjdGVkKT9g16fXnNeYINec15Ag16rXp9eZ1586INem16jXmdeaINec15TXmdeV16ogaW5zdGFuY2VvZiAke3UuZXhwZWN0ZWR9LCDXlNeq16fXkdecICR7JH1gOmDXp9ec15gg15zXkCDXqten15nXnzog16bXqNeZ15og15zXlNeZ15XXqiAke2d9LCDXlNeq16fXkdecICR7JH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6e2lmKHUudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefOiDXlNei16jXmiDXl9eZ15nXkSDXnNeU15nXldeqICR7ayh1LnZhbHVlc1swXSl9YDtjb25zdCBsPXUudmFsdWVzLm1hcCgkPT5rKCQpKTtpZih1LnZhbHVlcy5sZW5ndGg9PT0yKXJldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2xbMF19INeQ15UgJHtsWzFdfWA7Y29uc3QgZz1sW2wubGVuZ3RoLTFdO3JldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2wuc2xpY2UoMCwtMSkuam9pbigiLCAiKX0g15DXlSAke2d9YH1jYXNlInRvb19iaWciOntjb25zdCBsPWEodS5vcmlnaW4pLGc9ZSh1Lm9yaWdpbj8/InZhbHVlIik7aWYodS5vcmlnaW49PT0ic3RyaW5nIilyZXR1cm5gJHtsPy5sb25nTGFiZWw/PyLXkNeo15XXmiJ9INee15PXmTogJHtnfSDXpteo15nXm9eUINec15TXm9eZ15wgJHt1Lm1heGltdW0udG9TdHJpbmcoKX0gJHtsPy51bml0Pz8iIn0gJHt1LmluY2x1c2l2ZT8i15DXlSDXpNeX15XXqiI6Itec15vXnCDXlNeZ15XXqteoIn1gLnRyaW0oKTtpZih1Lm9yaWdpbj09PSJudW1iZXIiKXtjb25zdCB5PXUuaW5jbHVzaXZlP2DXp9eY158g15DXlSDXqdeV15XXlCDXnC0ke3UubWF4aW11bX1gOmDXp9eY158g154tJHt1Lm1heGltdW19YDtyZXR1cm5g15LXk9eV15wg157Xk9eZOiAke2d9INem16jXmdeaINec15TXmdeV16ogJHt5fWB9aWYodS5vcmlnaW49PT0iYXJyYXkifHx1Lm9yaWdpbj09PSJzZXQiKXtjb25zdCB5PXUub3JpZ2luPT09InNldCI/Item16jXmdeb15QiOiLXpteo15nXmiIscT11LmluY2x1c2l2ZT9gJHt1Lm1heGltdW19ICR7bD8udW5pdD8/IiJ9INeQ15Ug16TXl9eV16pgOmDXpNeX15XXqiDXni0ke3UubWF4aW11bX0gJHtsPy51bml0Pz8iIn1gO3JldHVybmDXkteT15XXnCDXnteT15k6ICR7Z30gJHt5fSDXnNeU15vXmdecICR7cX1gLnRyaW0oKX1jb25zdCB2PXUuaW5jbHVzaXZlPyI8PSI6IjwiLCQ9aSh1Lm9yaWdpbj8/InZhbHVlIik7cmV0dXJuIGw/LnVuaXQ/YCR7bC5sb25nTGFiZWx9INee15PXmTogJHtnfSAkeyR9ICR7dn0ke3UubWF4aW11bS50b1N0cmluZygpfSAke2wudW5pdH1gOmAke2w/LmxvbmdMYWJlbD8/IteS15PXldecIn0g157Xk9eZOiAke2d9ICR7JH0gJHt2fSR7dS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGw9YSh1Lm9yaWdpbiksZz1lKHUub3JpZ2luPz8idmFsdWUiKTtpZih1Lm9yaWdpbj09PSJzdHJpbmciKXJldHVybmAke2w/LnNob3J0TGFiZWw/PyLXp9em16gifSDXnteT15k6ICR7Z30g16bXqNeZ15vXlCDXnNeU15vXmdecICR7dS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bD8udW5pdD8/IiJ9ICR7dS5pbmNsdXNpdmU/IteQ15Ug15nXldeq16giOiLXnNek15fXldeqIn1gLnRyaW0oKTtpZih1Lm9yaWdpbj09PSJudW1iZXIiKXtjb25zdCB5PXUuaW5jbHVzaXZlP2DXkteT15XXnCDXkNeVINep15XXldeUINecLSR7dS5taW5pbXVtfWA6YNeS15PXldecINeeLSR7dS5taW5pbXVtfWA7cmV0dXJuYNen15jXnyDXnteT15k6ICR7Z30g16bXqNeZ15og15zXlNeZ15XXqiAke3l9YH1pZih1Lm9yaWdpbj09PSJhcnJheSJ8fHUub3JpZ2luPT09InNldCIpe2NvbnN0IHk9dS5vcmlnaW49PT0ic2V0Ij8i16bXqNeZ15vXlCI6Item16jXmdeaIjtpZih1Lm1pbmltdW09PT0xJiZ1LmluY2x1c2l2ZSl7Y29uc3QgUj0odS5vcmlnaW49PT0ic2V0Iiwi15zXpNeX15XXqiDXpNeo15nXmCDXkNeX15MiKTtyZXR1cm5g16fXmNefINee15PXmTogJHtnfSAke3l9INec15TXm9eZ15wgJHtSfWB9Y29uc3QgcT11LmluY2x1c2l2ZT9gJHt1Lm1pbmltdW19ICR7bD8udW5pdD8/IiJ9INeQ15Ug15nXldeq16hgOmDXmdeV16rXqCDXni0ke3UubWluaW11bX0gJHtsPy51bml0Pz8iIn1gO3JldHVybmDXp9eY158g157Xk9eZOiAke2d9ICR7eX0g15zXlNeb15nXnCAke3F9YC50cmltKCl9Y29uc3Qgdj11LmluY2x1c2l2ZT8iPj0iOiI+IiwkPWkodS5vcmlnaW4/PyJ2YWx1ZSIpO3JldHVybiBsPy51bml0P2Ake2wuc2hvcnRMYWJlbH0g157Xk9eZOiAke2d9ICR7JH0gJHt2fSR7dS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bC51bml0fWA6YCR7bD8uc2hvcnRMYWJlbD8/Iten15jXnyJ9INee15PXmTogJHtnfSAkeyR9ICR7dn0ke3UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGw9dTtpZihsLmZvcm1hdD09PSJzdGFydHNfd2l0aCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeq15fXmdecINeRICIke2wucHJlZml4fSJgO2lmKGwuZm9ybWF0PT09ImVuZHNfd2l0aCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeh16rXmdeZ150g15EgIiR7bC5zdWZmaXh9ImA7aWYobC5mb3JtYXQ9PT0iaW5jbHVkZXMiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15vXnNeV15wgIiR7bC5pbmNsdWRlc30iYDtpZihsLmZvcm1hdD09PSJyZWdleCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeq15DXmdedINec16rXkdeg15nXqiAke2wucGF0dGVybn1gO2NvbnN0IGc9c1tsLmZvcm1hdF0sdj1nPy5sYWJlbD8/bC5mb3JtYXQseT0oZz8uZ2VuZGVyPz8ibSIpPT09ImYiPyLXqten15nXoNeUIjoi16rXp9eZ158iO3JldHVybmAke3Z9INec15AgJHt5fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDXnteh16TXqCDXnNeQINeq16fXmdefOiDXl9eZ15nXkSDXnNeU15nXldeqINee15vXpNec15Qg16nXnCAke3UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDXntek16rXlyR7dS5rZXlzLmxlbmd0aD4xPyLXldeqIjoiIn0g15zXkCDXnteW15XXlCR7dS5rZXlzLmxlbmd0aD4xPyLXmdedIjoi15QifTogJHtfKHUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiLXqdeT15Qg15zXkCDXqten15nXnyDXkdeQ15XXkdeZ15nXp9eYIjtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLXp9ec15gg15zXkCDXqten15nXnyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDXoteo15og15zXkCDXqten15nXnyDXkSR7ZSh1Lm9yaWdpbj8/ImFycmF5Iil9YDtkZWZhdWx0OnJldHVybiLXp9ec15gg15zXkCDXqten15nXnyJ9fX07ZnVuY3Rpb24gQnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6V3AoKX19Y29uc3QgR3A9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWtvdmEiLHZlcmI6ImltYXRpIn0sZmlsZTp7dW5pdDoiYmFqdG92YSIsdmVyYjoiaW1hdGkifSxhcnJheTp7dW5pdDoic3RhdmtpIix2ZXJiOiJpbWF0aSJ9LHNldDp7dW5pdDoic3RhdmtpIix2ZXJiOiJpbWF0aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ1bm9zIixlbWFpbDoiZW1haWwgYWRyZXNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gaSB2cmlqZW1lIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyB2cmlqZW1lIixkdXJhdGlvbjoiSVNPIHRyYWphbmplIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoiSVB2NCByYXNwb24iLGNpZHJ2NjoiSVB2NiByYXNwb24iLGJhc2U2NDoiYmFzZTY0IGtvZGlyYW5pIHRla3N0IixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RpcmFuaSB0ZWtzdCIsanNvbl9zdHJpbmc6IkpTT04gdGVrc3QiLGUxNjQ6IkUuMTY0IGJyb2oiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ1bm9zIn0sbz17bmFuOiJOYU4iLHN0cmluZzoidGVrc3QiLG51bWJlcjoiYnJvaiIsYm9vbGVhbjoiYm9vbGVhbiIsYXJyYXk6Im5peiIsb2JqZWN0OiJvYmpla3QiLHNldDoic2t1cCIsZmlsZToiZGF0b3Rla2EiLGRhdGU6ImRhdHVtIixiaWdpbnQ6ImJpZ2ludCIsc3ltYm9sOiJzaW1ib2wiLHVuZGVmaW5lZDoidW5kZWZpbmVkIixudWxsOiJudWxsIixmdW5jdGlvbjoiZnVua2NpamEiLG1hcDoibWFwYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZWlzcHJhdmFuIHVub3M6IG/EjWVrdWplIHNlIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYSBwcmltbGplbm8gamUgJHtzfWA6YE5laXNwcmF2YW4gdW5vczogb8SNZWt1amUgc2UgJHtpfSwgYSBwcmltbGplbm8gamUgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmVpc3ByYXZuYSB2cmlqZWRub3N0OiBvxI1la2l2YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmVpc3ByYXZuYSBvcGNpamE6IG/EjWVraXZhbm8gamVkbm8gb2QgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YFByZXZlbGlrbzogb8SNZWtpdmFubyBkYSAke3M/PyJ2cmlqZWRub3N0In0gaW1hICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbmF0YSJ9YDpgUHJldmVsaWtvOiBvxI1la2l2YW5vIGRhICR7cz8/InZyaWplZG5vc3QifSBidWRlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YFByZW1hbG86IG/EjWVraXZhbm8gZGEgJHtzfSBpbWEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZW1hbG86IG/EjWVraXZhbm8gZGEgJHtzfSBidWRlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIHphcG/EjWluamF0aSBzICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgemF2csWhYXZhdGkgcyAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgc2FkcsW+YXZhdGkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgb2Rnb3ZhcmF0aSB1em9ya3UgJHtpLnBhdHRlcm59YDpgTmVpc3ByYXZuYSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmVpc3ByYXZhbiBicm9qOiBtb3JhIGJpdGkgdmnFoWVrcmF0bmlrIG9kICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lcHJlcG96bmF0JHtlLmtleXMubGVuZ3RoPjE/Imkga2xqdcSNZXZpIjoiIGtsanXEjSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5laXNwcmF2YW4ga2xqdcSNIHUgJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZWlzcHJhdmFuIHVub3MiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmVpc3ByYXZuYSB2cmlqZWRub3N0IHUgJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZWlzcHJhdmFuIHVub3MifX19O2Z1bmN0aW9uIFhwKCl7cmV0dXJue2xvY2FsZUVycm9yOkdwKCl9fWNvbnN0IFlwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibGVneWVuIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoibGVneWVuIn0sYXJyYXk6e3VuaXQ6ImVsZW0iLHZlcmI6ImxlZ3llbiJ9LHNldDp7dW5pdDoiZWxlbSIsdmVyYjoibGVneWVuIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImJlbWVuZXQiLGVtYWlsOiJlbWFpbCBjw61tIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaWTFkWLDqWx5ZWciLGRhdGU6IklTTyBkw6F0dW0iLHRpbWU6IklTTyBpZMWRIixkdXJhdGlvbjoiSVNPIGlkxZFpbnRlcnZhbGx1bSIsaXB2NDoiSVB2NCBjw61tIixpcHY2OiJJUHY2IGPDrW0iLGNpZHJ2NDoiSVB2NCB0YXJ0b23DoW55IixjaWRydjY6IklQdjYgdGFydG9tw6FueSIsYmFzZTY0OiJiYXNlNjQta8OzZG9sdCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWvDs2RvbHQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IHN6w6FtIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiYmVtZW5ldCJ9LG89e25hbjoiTmFOIixudW1iZXI6InN6w6FtIixhcnJheToidMO2bWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhIGthcG90dCDDqXJ0w6lrICR7c31gOmDDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayAke2l9LCBhIGthcG90dCDDqXJ0w6lrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7ayhlLnZhbHVlc1swXSl9YDpgw4lydsOpbnl0ZWxlbiBvcGNpw7M6IHZhbGFtZWx5aWsgw6lydMOpayB2w6FydCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMO6bCBuYWd5OiAke2Uub3JpZ2luPz8iw6lydMOpayJ9IG3DqXJldGUgdMO6bCBuYWd5ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW0ifWA6YFTDumwgbmFneTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW4/PyLDqXJ0w6lrIn0gdMO6bCBuYWd5OiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUw7psIGtpY3NpOiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbn0gbcOpcmV0ZSB0w7psIGtpY3NpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUw7psIGtpY3NpOiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbn0gdMO6bCBraWNzaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2kucHJlZml4fSIgw6lydMOpa2tlbCBrZWxsIGtlemTFkWRuaWVgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtpLnN1ZmZpeH0iIMOpcnTDqWtrZWwga2VsbCB2w6lnesWRZG5pZWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7aS5pbmNsdWRlc30iIMOpcnTDqWtldCBrZWxsIHRhcnRhbG1hem5pYWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogJHtpLnBhdHRlcm59IG1pbnTDoW5hayBrZWxsIG1lZ2ZlbGVsbmllYDpgw4lydsOpbnl0ZWxlbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gw4lydsOpbnl0ZWxlbiBzesOhbTogJHtlLmRpdmlzb3J9IHTDtmJic3rDtnLDtnPDqW5layBrZWxsIGxlbm5pZWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYElzbWVyZXRsZW4ga3VsY3Mke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYMOJcnbDqW55dGVsZW4ga3VsY3MgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsOJcnbDqW55dGVsZW4gYmVtZW5ldCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDDiXJ2w6lueXRlbGVuIMOpcnTDqWs6ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLDiXJ2w6lueXRlbGVuIGJlbWVuZXQifX19O2Z1bmN0aW9uIFFwKCl7cmV0dXJue2xvY2FsZUVycm9yOllwKCl9fWZ1bmN0aW9uIGdzKHQsbixyKXtyZXR1cm4gTWF0aC5hYnModCk9PT0xP246cn1mdW5jdGlvbiBDZSh0KXtpZighdClyZXR1cm4iIjtjb25zdCBuPVsi1aEiLCLVpSIsItWoIiwi1asiLCLVuCIsItW41oIiLCLWhSJdLHI9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdCsobi5pbmNsdWRlcyhyKT8i1bYiOiLVqCIpfWNvbnN0IGVmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6ItW21bfVodW2IixtYW55OiLVttW31aHVttW21aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sZmlsZTp7dW5pdDp7b25lOiLVotWh1bXVqSIsbWFueToi1aLVodW11anVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxhcnJheTp7dW5pdDp7b25lOiLVv9Wh1oDWgCIsbWFueToi1b/VodaA1oDVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxzZXQ6e3VuaXQ6e29uZToi1b/VodaA1oAiLG1hbnk6ItW/1aHWgNaA1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItW01bjWgtW/1oQiLGVtYWlsOiLVp9WsLiDVsNWh1b3WgdWlIix1cmw6IlVSTCIsZW1vamk6ItWn1bTVuNW71asiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDVodW01b3VodWp1avVviDWhyDVqtWh1bQiLGRhdGU6IklTTyDVodW01b3VodWp1avVviIsdGltZToiSVNPINWq1aHVtCIsZHVyYXRpb246IklTTyDVv9aH1bjVstW41oLVqdW11bjWgtW2IixpcHY0OiJJUHY0INWw1aHVvdaB1aUiLGlwdjY6IklQdjYg1bDVodW91oHVpSIsY2lkcnY0OiJJUHY0INW01avVu9Wh1a/VodW11oQiLGNpZHJ2NjoiSVB2NiDVtNWr1bvVodWv1aHVtdaEIixiYXNlNjQ6ImJhc2U2NCDVsdaH1aHVudWh1oPVuNW+INW/1bjVsiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg1bHWh9Wh1bnVodaD1bjVviDVv9W41bIiLGpzb25fc3RyaW5nOiJKU09OINW/1bjVsiIsZTE2NDoiRS4xNjQg1bDVodW01aHWgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItW01bjWgtW/1oQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLVqdWr1b4iLGFycmF5OiLVptWh1bbVo9W+1aHVriJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINW91b/VodaB1b7VpdWsINWnICR7c31gOmDVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke2l9LCDVvdW/1aHWgdW+1aXVrCDVpyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke2soZS52YWx1ZXNbMV0pfWA6YNWN1a3VodWsINW/1aHWgNWi1aXWgNWh1a/igKQg1b3VutWh1b3VvtW41oLVtCDVp9aAINWw1aXVv9aH1bXVodWs1bbVpdaA1avWgSDVtNWl1a/VqNWdICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWF4aW11bSksYz1ncyhzLGEudW5pdC5vbmUsYS51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbj8/ItWh1oDVqtWl1oQiKX0g1a/VuNaC1bbVpdW21aEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbj8/ItWh1oDVqtWl1oQiKX0g1azVq9W21asgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1pbmltdW0pLGM9Z3MocyxhLnVuaXQub25lLGEudW5pdC5tYW55KTtyZXR1cm5g1YnVodaD1aHVptWh1bbWgSDWg9W41oTWgCDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbil9INWv1bjWgtW21aXVttWhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g1YnVodaD1aHVptWh1bbWgSDWg9W41oTWgCDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbil9INWs1avVttWrICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1b3Vr9W91b7VqyAiJHtpLnByZWZpeH0iLdW41b5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVodW+1aHWgNW/1b7VqyAiJHtpLnN1ZmZpeH0iLdW41b5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINW61aHWgNW41oLVttWh1a/VqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWw1aHVtNWh1brVodW/1aHVvdWt1aHVttWrICR7aS5wYXR0ZXJufSDVsdaH1aHVudWh1oPVq9W2YDpg1Y3VrdWh1awgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNWN1a3VodWsINWp1avVvuKApCDVutWl1b/WhCDVpyDVotWh1abVtNWh1brVodW/1avVryDVrNWr1bbVqyAke2UuZGl2aXNvcn0t1atgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDVidWz1aHVttWh1bnVvtWh1a4g1aLVodW21aHVrNWrJHtlLmtleXMubGVuZ3RoPjE/ItW21aXWgCI6IiJ9LiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNWN1a3VodWsINWi1aHVttWh1azVqyAke0NlKGUub3JpZ2luKX0t1bjWgtW0YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNWN1a3VodWsINWh1oDVqtWl1oQgJHtDZShlLm9yaWdpbil9LdW41oLVtGA7ZGVmYXVsdDpyZXR1cm4i1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtCJ9fX07ZnVuY3Rpb24gdGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZWYoKX19Y29uc3QgbmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdGVyIix2ZXJiOiJtZW1pbGlraSJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6Im1lbWlsaWtpIn0sYXJyYXk6e3VuaXQ6Iml0ZW0iLHZlcmI6Im1lbWlsaWtpIn0sc2V0Ont1bml0OiJpdGVtIix2ZXJiOiJtZW1pbGlraSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFuZ2dhbCBkYW4gd2FrdHUgZm9ybWF0IElTTyIsZGF0ZToidGFuZ2dhbCBmb3JtYXQgSVNPIix0aW1lOiJqYW0gZm9ybWF0IElTTyIsZHVyYXRpb246ImR1cmFzaSBmb3JtYXQgSVNPIixpcHY0OiJhbGFtYXQgSVB2NCIsaXB2NjoiYWxhbWF0IElQdjYiLGNpZHJ2NDoicmVudGFuZyBhbGFtYXQgSVB2NCIsY2lkcnY2OiJyZW50YW5nIGFsYW1hdCBJUHY2IixiYXNlNjQ6InN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoiYW5na2EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtzfWA6YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7aX0sIGRpdGVyaW1hICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7ayhlLnZhbHVlc1swXSl9YDpgUGlsaWhhbiB0aWRhayB2YWxpZDogZGloYXJhcGthbiBzYWxhaCBzYXR1IGRhcmkgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbj8/InZhbHVlIn0gbWVtaWxpa2kgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVuIn1gOmBUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IG1lbmphZGkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW1pbGlraSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW5qYWRpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIGRpbXVsYWkgZGVuZ2FuICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgYmVyYWtoaXIgZGVuZ2FuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBtZW55ZXJ0YWthbiAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBzZXN1YWkgcG9sYSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gdGlkYWsgdmFsaWRgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gQW5na2EgdGlkYWsgdmFsaWQ6IGhhcnVzIGtlbGlwYXRhbiBkYXJpICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYEt1bmNpIHRpZGFrIGRpa2VuYWxpICR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS3VuY2kgdGlkYWsgdmFsaWQgZGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IHRpZGFrIHZhbGlkIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pbGFpIHRpZGFrIHZhbGlkIGRpICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCB0aWRhayB2YWxpZCJ9fX07ZnVuY3Rpb24gcmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6bmYoKX19Y29uc3Qgb2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InN0YWZpIix2ZXJiOiJhw7AgaGFmYSJ9LGZpbGU6e3VuaXQ6ImLDpnRpIix2ZXJiOiJhw7AgaGFmYSJ9LGFycmF5Ont1bml0OiJobHV0aSIsdmVyYjoiYcOwIGhhZmEifSxzZXQ6e3VuaXQ6ImhsdXRpIix2ZXJiOiJhw7AgaGFmYSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJnaWxkaSIsZW1haWw6Im5ldGZhbmciLHVybDoidmVmc2zDs8OwIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYWdzZXRuaW5nIG9nIHTDrW1pIixkYXRlOiJJU08gZGFnc2V0bmluZyIsdGltZToiSVNPIHTDrW1pIixkdXJhdGlvbjoiSVNPIHTDrW1hbGVuZ2QiLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJlbmd1ciIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJlbmd1ciIsanNvbl9zdHJpbmc6IkpTT04gc3RyZW5ndXIiLGUxNjQ6IkUuMTY0IHTDtmx1Z2lsZGkiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJnaWxkaSJ9LG89e25hbjoiTmFOIixudW1iZXI6Im7Dum1lciIsYXJyYXk6ImZ5bGtpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFJhbmd0IGdpbGRpOiDDnsO6IHNsw7NzdCBpbm4gJHtzfSDDvmFyIHNlbSDDoSBhw7AgdmVyYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH1gOmBSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7c30gw75hciBzZW0gw6EgYcOwIHZlcmEgJHtpfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gUmFuZ3QgZ2lsZGk6IGdlcnQgcsOhw7AgZnlyaXIgJHtrKGUudmFsdWVzWzBdKX1gOmDDk2dpbHQgdmFsOiBtw6EgdmVyYSBlaXR0IGFmIGVmdGlyZmFyYW5kaSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gT2Ygc3TDs3J0OiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2luPz8iZ2lsZGkifSBoYWZpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImhsdXRpIn1gOmBPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW4/PyJnaWxkaSJ9IHPDqSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BPZiBsw610acOwOiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2lufSBoYWZpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBPZiBsw610acOwOiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2lufSBzw6kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBieXJqYSDDoSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZW5kYSDDoSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBpbm5paGFsZGEgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBmeWxnamEgbXluc3RyaSAke2kucGF0dGVybn1gOmBSYW5ndCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gUsO2bmcgdGFsYTogdmVyw7B1ciBhw7AgdmVyYSBtYXJnZmVsZGkgYWYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gw5PDvmVra3QgJHtlLmtleXMubGVuZ3RoPjE/ImlyIGx5a2xhciI6InVyIGx5a2lsbCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFJhbmd1ciBseWtpbGwgw60gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlJhbmd0IGdpbGRpIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFJhbmd0IGdpbGRpIMOtICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJSYW5ndCBnaWxkaSJ9fX07ZnVuY3Rpb24gYWYoKXtyZXR1cm57bG9jYWxlRXJyb3I6b2YoKX19Y29uc3Qgc2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmF0dGVyaSIsdmVyYjoiYXZlcmUifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJhdmVyZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50aSIsdmVyYjoiYXZlcmUifSxzZXQ6e3VuaXQ6ImVsZW1lbnRpIix2ZXJiOiJhdmVyZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImluZGlyaXp6byBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJvcmEgSVNPIixkdXJhdGlvbjoiZHVyYXRhIElTTyIsaXB2NDoiaW5kaXJpenpvIElQdjQiLGlwdjY6ImluZGlyaXp6byBJUHY2IixjaWRydjQ6ImludGVydmFsbG8gSVB2NCIsY2lkcnY2OiJpbnRlcnZhbGxvIElQdjYiLGJhc2U2NDoic3RyaW5nYSBjb2RpZmljYXRhIGluIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2F0YSBpbiBiYXNlNjQiLGpzb25fc3RyaW5nOiJzdHJpbmdhIEpTT04iLGUxNjQ6Im51bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoibnVtZXJvIixhcnJheToidmV0dG9yZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByaWNldnV0byAke3N9YDpgSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7aX0sIHJpY2V2dXRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke2soZS52YWx1ZXNbMF0pfWA6YE9wemlvbmUgbm9uIHZhbGlkYTogYXR0ZXNvIHVubyB0cmEgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3BwbyBncmFuZGU6ICR7ZS5vcmlnaW4/PyJ2YWxvcmUifSBkZXZlIGF2ZXJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRpIn1gOmBUcm9wcG8gZ3JhbmRlOiAke2Uub3JpZ2luPz8idmFsb3JlIn0gZGV2ZSBlc3NlcmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcHBvIHBpY2NvbG86ICR7ZS5vcmlnaW59IGRldmUgYXZlcmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3BwbyBwaWNjb2xvOiAke2Uub3JpZ2lufSBkZXZlIGVzc2VyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluaXppYXJlIGNvbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgdGVybWluYXJlIGNvbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBpbmNsdWRlcmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBjb3JyaXNwb25kZXJlIGFsIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW5wdXQgbm9uIHZhbGlkbzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bWVybyBub24gdmFsaWRvOiBkZXZlIGVzc2VyZSB1biBtdWx0aXBsbyBkaSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGlhdiR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiZSJ9IG5vbiByaWNvbm9zY2l1dCR7ZS5rZXlzLmxlbmd0aD4xPyJlIjoiYSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoaWF2ZSBub24gdmFsaWRhIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnB1dCBub24gdmFsaWRvIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yZSBub24gdmFsaWRvIGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCBub24gdmFsaWRvIn19fTtmdW5jdGlvbiBjZigpe3JldHVybntsb2NhbGVFcnJvcjpzZigpfX1jb25zdCB1Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi5paH5a2XIix2ZXJiOiLjgafjgYLjgosifSxmaWxlOnt1bml0OiLjg5DjgqTjg4giLHZlcmI6IuOBp+OBguOCiyJ9LGFycmF5Ont1bml0OiLopoHntKAiLHZlcmI6IuOBp+OBguOCiyJ9LHNldDp7dW5pdDoi6KaB57SgIix2ZXJiOiLjgafjgYLjgosifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi5YWl5Yqb5YCkIixlbWFpbDoi44Oh44O844Or44Ki44OJ44Os44K5Iix1cmw6IlVSTCIsZW1vamk6Iue1teaWh+WtlyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNP5pel5pmCIixkYXRlOiJJU0/ml6Xku5giLHRpbWU6IklTT+aZguWIuyIsZHVyYXRpb246IklTT+acn+mWkyIsaXB2NDoiSVB2NOOCouODieODrOOCuSIsaXB2NjoiSVB2NuOCouODieODrOOCuSIsY2lkcnY0OiJJUHY056+E5ZuyIixjaWRydjY6IklQdjbnr4Tlm7IiLGJhc2U2NDoiYmFzZTY044Ko44Oz44Kz44O844OJ5paH5a2X5YiXIixiYXNlNjR1cmw6ImJhc2U2NHVybOOCqOODs+OCs+ODvOODieaWh+Wtl+WIlyIsanNvbl9zdHJpbmc6IkpTT07mloflrZfliJciLGUxNjQ6IkUuMTY055Wq5Y+3Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi5YWl5Yqb5YCkIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi5pWw5YCkIixhcnJheToi6YWN5YiXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOeEoeWKueOBquWFpeWKmzogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtzfeOBjOWFpeWKm+OBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBquWFpeWKmzogJHtpfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7c33jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOeEoeWKueOBquWFpeWKmzogJHtrKGUudmFsdWVzWzBdKX3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ9gOmDnhKHlirnjgarpgbjmip46ICR7XyhlLnZhbHVlcywi44CBIil944Gu44GE44Ga44KM44GL44Gn44GC44KL5b+F6KaB44GM44GC44KK44G+44GZYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLku6XkuIvjgafjgYLjgosiOiLjgojjgorlsI/jgZXjgYQiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOWkp+OBjeOBmeOBjuOCi+WApDogJHtlLm9yaWdpbj8/IuWApCJ944GvJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2EudW5pdD8/Iuimgee0oCJ9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWkp+OBjeOBmeOBjuOCi+WApDogJHtlLm9yaWdpbj8/IuWApCJ944GvJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2l95b+F6KaB44GM44GC44KK44G+44GZYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuS7peS4iuOBp+OBguOCiyI6IuOCiOOCiuWkp+OBjeOBhCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5bCP44GV44GZ44GO44KL5YCkOiAke2Uub3JpZ2lufeOBryR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHthLnVuaXR9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWwj+OBleOBmeOBjuOCi+WApDogJHtlLm9yaWdpbn3jga8ke2UubWluaW11bS50b1N0cmluZygpfSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLnByZWZpeH0i44Gn5aeL44G+44KL5b+F6KaB44GM44GC44KK44G+44GZYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DnhKHlirnjgarmloflrZfliJc6ICIke2kuc3VmZml4fSLjgafntYLjgo/jgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLmluY2x1ZGVzfSLjgpLlkKvjgoDlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09InJlZ2V4Ij9g54Sh5Yq544Gq5paH5a2X5YiXOiDjg5Hjgr/jg7zjg7Mke2kucGF0dGVybn3jgavkuIDoh7TjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmDnhKHlirnjgaoke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g54Sh5Yq544Gq5pWw5YCkOiAke2UuZGl2aXNvcn3jga7lgI3mlbDjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDoqo3orZjjgZXjgozjgabjgYTjgarjgYTjgq3jg7wke2Uua2V5cy5sZW5ndGg+MT8i576kIjoiIn06ICR7XyhlLmtleXMsIuOAgSIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq44Kt44O8YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLnhKHlirnjgarlhaXlipsiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn3lhoXjga7nhKHlirnjgarlgKRgO2RlZmF1bHQ6cmV0dXJuIueEoeWKueOBquWFpeWKmyJ9fX07ZnVuY3Rpb24gbGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6dWYoKX19Y29uc3QgZGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuGDoeGDmOGDm+GDkeGDneGDmuGDnSIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LGZpbGU6e3VuaXQ6IuGDkeGDkOGDmOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LGFycmF5Ont1bml0OiLhg5Thg5rhg5Thg5vhg5Thg5zhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxzZXQ6e3VuaXQ6IuGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AiLGVtYWlsOiLhg5Thg5ot4YOk4YOd4YOh4YOi4YOY4YOhIOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsdXJsOiJVUkwiLGVtb2ppOiLhg5Thg5vhg53hg6/hg5giLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuGDl+GDkOGDoOGDmOGDpuGDmC3hg5Phg6Dhg50iLGRhdGU6IuGDl+GDkOGDoOGDmOGDpuGDmCIsdGltZToi4YOT4YOg4YOdIixkdXJhdGlvbjoi4YOu4YOQ4YOc4YOS4YOg4YOr4YOa4YOY4YOV4YOd4YOR4YOQIixpcHY0OiJJUHY0IOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsaXB2NjoiSVB2NiDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLGNpZHJ2NDoiSVB2NCDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGNpZHJ2NjoiSVB2NiDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGJhc2U2NDoiYmFzZTY0LeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg5Xhg5Thg5rhg5giLGJhc2U2NHVybDoiYmFzZTY0dXJsLeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg5Xhg5Thg5rhg5giLGpzb25fc3RyaW5nOiJKU09OIOGDleGDlOGDmuGDmCIsZTE2NDoiRS4xNjQg4YOc4YOd4YOb4YOU4YOg4YOYIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi4YOg4YOY4YOq4YOu4YOV4YOYIixzdHJpbmc6IuGDleGDlOGDmuGDmCIsYm9vbGVhbjoi4YOR4YOj4YOa4YOU4YOQ4YOc4YOYIixmdW5jdGlvbjoi4YOk4YOj4YOc4YOl4YOq4YOY4YOQIixhcnJheToi4YOb4YOQ4YOh4YOY4YOV4YOYIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke3N9YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7aX0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtrKGUudmFsdWVzWzBdKX1gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOQ4YOg4YOY4YOQ4YOc4YOi4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5jhg5Ag4YOU4YOg4YOXLeGDlOGDoOGDl+GDmCAke18oZS52YWx1ZXMsInwiKX0t4YOT4YOQ4YOcYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg5Phg5jhg5Phg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2luPz8i4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbj8/IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCJ9IOGDmOGDp+GDneGDoSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0g4YOY4YOn4YOd4YOhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOY4YOs4YOn4YOU4YOR4YOd4YOT4YOU4YOhICIke2kucHJlZml4fSIt4YOY4YOXYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOb4YOX4YOQ4YOV4YOg4YOT4YOU4YOR4YOd4YOT4YOU4YOhICIke2kuc3VmZml4fSIt4YOY4YOXYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EgIiR7aS5pbmNsdWRlc30iLeGDoWA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOo4YOU4YOU4YOh4YOQ4YOR4YOQ4YOb4YOU4YOR4YOd4YOT4YOU4YOhIOGDqOGDkOGDkeGDmuGDneGDnOGDoSAke2kucGF0dGVybn1gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5ggJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Dhg5jhg6rhg67hg5Xhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6fhg53hg6EgJHtlLmRpdmlzb3J9LeGDmOGDoSDhg6/hg5Thg6Dhg5Dhg5Phg5hgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDhg6Phg6rhg5zhg53hg5Hhg5gg4YOS4YOQ4YOh4YOQ4YOm4YOU4YORJHtlLmtleXMubGVuZ3RoPjE/IuGDlOGDkeGDmCI6IuGDmCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Lhg5Dhg6Hhg5Dhg6bhg5Thg5Hhg5ggJHtlLm9yaWdpbn0t4YOo4YOYYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AgJHtlLm9yaWdpbn0t4YOo4YOYYDtkZWZhdWx0OnJldHVybiLhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn19fTtmdW5jdGlvbiBtZigpe3JldHVybntsb2NhbGVFcnJvcjpkZigpfX1jb25zdCBwZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4Z6P4Z694Z6i4Z6A4Z+S4Z6f4Z6aIix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxmaWxlOnt1bml0OiLhnpThn4MiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LGFycmF5Ont1bml0OiLhnpLhnrbhno/hnrsiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LHNldDp7dW5pdDoi4Z6S4Z624Z6P4Z67Iix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bIixlbWFpbDoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6T4Z6i4Z+K4Z644Z6Y4Z+C4Z6bIix1cmw6IlVSTCIsZW1vamk6IuGen+GeieGfkuGeieGetuGeouGetuGemuGemOGfkuGemOGejuGfjSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIOGek+Get+GehOGemOGfieGfhOGehCBJU08iLGRhdGU6IuGegOGetuGem+GelOGemuGet+GeheGfkuGehuGfgeGekSBJU08iLHRpbWU6IuGemOGfieGfhOGehCBJU08iLGR1cmF0aW9uOiLhnprhnpnhn4jhnpbhn4HhnpsgSVNPIixpcHY0OiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NCIsaXB2Njoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjYiLGNpZHJ2NDoi4Z6K4Z+C4Z6T4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjQiLGNpZHJ2Njoi4Z6K4Z+C4Z6T4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjYiLGJhc2U2NDoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6i4Z+K4Z634Z6A4Z684Z6KIGJhc2U2NCIsYmFzZTY0dXJsOiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnqLhn4rhnrfhnoDhnrzhnoogYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6aIEpTT04iLGUxNjQ6IuGem+GfgeGegSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGemyJ9LG89e25hbjoiTmFOIixudW1iZXI6IuGem+GfgeGegSIsYXJyYXk6IuGeouGetuGemuGfgSAoQXJyYXkpIixudWxsOiLhnoLhn5LhnpjhnrbhnpPhno/hnpjhn5Lhnpvhn4MgKG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IOGelOGfieGeu+Gek+GfkuGej+GfguGekeGekeGeveGem+GelOGetuGekyAke3N9YDpg4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2l9IOGelOGfieGeu+Gek+GfkuGej+GfguGekeGekeGeveGem+GelOGetuGekyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ayhlLnZhbHVlc1swXSl9YDpg4Z6H4Z6Y4Z+S4Z6a4Z6+4Z6f4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGeh+GetuGemOGeveGemeGegOGfkuGek+Geu+GehOGeheGfhuGejuGfhOGemCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuGekuGetuGej+GeuyJ9YDpg4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbn0gJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhno/hnrzhnoXhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW59ICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGeheGetuGelOGfi+GeleGfkuGej+GevuGemOGeiuGfhOGemSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6U4Z6J4Z+S4Z6F4Z6U4Z+L4Z6K4Z+E4Z6ZICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGemOGetuGekyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGej+GfguGeleGfkuGeguGevOGeleGfkuGeguGehOGek+GeueGehOGekeGemOGfkuGemuGehOGfi+GeiuGfguGem+GelOGetuGek+GegOGfhuGejuGej+GfiyAke2kucGF0dGVybn1gOmDhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5YgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOGem+GfgeGegeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnofhnrbhnpbhnqDhnrvhnoLhnrvhno7hnpPhn4MgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4Z6a4Z6A4Z6D4Z6+4Z6J4Z6f4Z+E4Z6Y4Z634Z6T4Z6f4Z+S4Z6C4Z624Z6b4Z+L4Z+WICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4Z6f4Z+E4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwifX19O2Z1bmN0aW9uIHVsKCl7cmV0dXJue2xvY2FsZUVycm9yOnBmKCl9fWZ1bmN0aW9uIGZmKCl7cmV0dXJuIHVsKCl9Y29uc3QgZ2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuusuOyekCIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6IuuwlOydtO2KuCIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiLqsJwiLHZlcmI6InRvIGhhdmUifSxzZXQ6e3VuaXQ6IuqwnCIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLsnoXroKUiLGVtYWlsOiLsnbTrqZTsnbwg7KO87IaMIix1cmw6IlVSTCIsZW1vamk6IuydtOuqqOyngCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOuCoOynnOyLnOqwhCIsZGF0ZToiSVNPIOuCoOynnCIsdGltZToiSVNPIOyLnOqwhCIsZHVyYXRpb246IklTTyDquLDqsIQiLGlwdjQ6IklQdjQg7KO87IaMIixpcHY2OiJJUHY2IOyjvOyGjCIsY2lkcnY0OiJJUHY0IOuylOychCIsY2lkcnY2OiJJUHY2IOuylOychCIsYmFzZTY0OiJiYXNlNjQg7J247L2U65SpIOusuOyekOyXtCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg7J247L2U65SpIOusuOyekOyXtCIsanNvbl9zdHJpbmc6IkpTT04g66y47J6Q7Je0IixlMTY0OiJFLjE2NCDrsojtmLgiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLsnoXroKUifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg67Cb7J2AIO2DgOyeheydgCAke3N97J6F64uI64ukYDpg7J6Y66q765CcIOyeheugpTog7JiI7IOBIO2DgOyeheydgCAke2l9LCDrsJvsnYAg7YOA7J6F7J2AICR7c33snoXri4jri6RgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOyemOuqu+uQnCDsnoXroKU6IOqwkuydgCAke2soZS52YWx1ZXNbMF0pfSDsnbTslrTslbwg7ZWp64uI64ukYDpg7J6Y66q765CcIOyYteyFmDogJHtfKGUudmFsdWVzLCLrmJDripQgIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLsnbTtlZgiOiLrr7jrp4wiLGE9aT09PSLrr7jrp4wiPyLsnbTslrTslbwg7ZWp64uI64ukIjoi7Jes7JW8IO2VqeuLiOuLpCIscz1uKGUub3JpZ2luKSxjPXM/LnVuaXQ/PyLsmpTshowiO3JldHVybiBzP2Ake2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2N9ICR7aX0ke2F9YDpgJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDtgb3ri4jri6Q6ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7aX0ke2F9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuydtOyDgSI6Iuy0iOqzvCIsYT1pPT09IuydtOyDgSI/IuydtOyWtOyVvCDtlanri4jri6QiOiLsl6zslbwg7ZWp64uI64ukIixzPW4oZS5vcmlnaW4pLGM9cz8udW5pdD8/IuyalOyGjCI7cmV0dXJuIHM/YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7J6R7Iq164uI64ukOiAke2UubWluaW11bS50b1N0cmluZygpfSR7Y30gJHtpfSR7YX1gOmAke2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IOyekeyKteuLiOuLpDogJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtpfSR7YX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g7J6Y66q765CcIOusuOyekOyXtDogIiR7aS5wcmVmaXh9IijsnLwp66GcIOyLnOyeke2VtOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kuc3VmZml4fSIo7Jy8KeuhnCDrgZ3rgpjslbwg7ZWp64uI64ukYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kuaW5jbHVkZXN9IuydhCjrpbwpIO2PrO2VqO2VtOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09InJlZ2V4Ij9g7J6Y66q765CcIOusuOyekOyXtDog7KCV6rec7IudICR7aS5wYXR0ZXJufSDtjKjthLTqs7wg7J287LmY7ZW07JW8IO2VqeuLiOuLpGA6YOyemOuqu+uQnCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g7J6Y66q765CcIOyIq+yekDogJHtlLmRpdmlzb3J97J2YIOuwsOyImOyXrOyVvCDtlanri4jri6RgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDsnbjsi53tlaAg7IiYIOyXhuuKlCDtgqQ6ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g7J6Y66q765CcIO2CpDogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g7J6Y66q765CcIOqwkjogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUifX19O2Z1bmN0aW9uIHZmKCl7cmV0dXJue2xvY2FsZUVycm9yOmdmKCl9fWNvbnN0IG10PXQ9PnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtmdW5jdGlvbiB2cyh0KXtjb25zdCBuPU1hdGguYWJzKHQpLHI9biUxMCxvPW4lMTAwO3JldHVybiBvPj0xMSYmbzw9MTl8fHI9PT0wPyJtYW55IjpyPT09MT8ib25lIjoiZmV3In1jb25zdCBoZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiJzaW1ib2xpcyIsZmV3OiJzaW1ib2xpYWkiLG1hbnk6InNpbWJvbGnFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSBpbGdlc27ElyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgdHJ1bXBlc27ElyBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgdHJ1bXBlc27ElyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgaWxnZXNuxJcga2FpcCJ9fX0sZmlsZTp7dW5pdDp7b25lOiJiYWl0YXMiLGZldzoiYmFpdGFpIixtYW55OiJiYWl0xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgZGlkZXNuaXMga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG1hxb5lc25pcyBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgbWHFvmVzbmlzIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBkaWRlc25pcyBrYWlwIn19fSxhcnJheTp7dW5pdDp7b25lOiJlbGVtZW50xIUiLGZldzoiZWxlbWVudHVzIixtYW55OiJlbGVtZW50xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBkYXVnaWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIG1hxb5pYXUga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgbWHFvmlhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXAifX19LHNldDp7dW5pdDp7b25lOiJlbGVtZW50xIUiLGZldzoiZWxlbWVudHVzIixtYW55OiJlbGVtZW50xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBkYXVnaWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIG1hxb5pYXUga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgbWHFvmlhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXAifX19fTtmdW5jdGlvbiBuKGUsaSxhLHMpe2NvbnN0IGM9dFtlXT8/bnVsbDtyZXR1cm4gYz09PW51bGw/Yzp7dW5pdDpjLnVuaXRbaV0sdmVyYjpjLnZlcmJbc11bYT8iaW5jbHVzaXZlIjoibm90SW5jbHVzaXZlIl19fWNvbnN0IHI9e3JlZ2V4OiLEr3Zlc3RpcyIsZW1haWw6ImVsLiBwYcWhdG8gYWRyZXNhcyIsdXJsOiJVUkwiLGVtb2ppOiJqYXVzdHVrYXMiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRhIGlyIGxhaWthcyIsZGF0ZToiSVNPIGRhdGEiLHRpbWU6IklTTyBsYWlrYXMiLGR1cmF0aW9uOiJJU08gdHJ1a23ElyIsaXB2NDoiSVB2NCBhZHJlc2FzIixpcHY2OiJJUHY2IGFkcmVzYXMiLGNpZHJ2NDoiSVB2NCB0aW5rbG8gcHJlZmlrc2FzIChDSURSKSIsY2lkcnY2OiJJUHY2IHRpbmtsbyBwcmVmaWtzYXMgKENJRFIpIixiYXNlNjQ6ImJhc2U2NCB1xb5rb2R1b3RhIGVpbHV0xJciLGJhc2U2NHVybDoiYmFzZTY0dXJsIHXFvmtvZHVvdGEgZWlsdXTElyIsanNvbl9zdHJpbmc6IkpTT04gZWlsdXTElyIsZTE2NDoiRS4xNjQgbnVtZXJpcyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSvdmVzdGlzIn0sbz17bmFuOiJOYU4iLG51bWJlcjoic2thacSNaXVzIixiaWdpbnQ6InN2ZWlrYXNpcyBza2FpxI1pdXMiLHN0cmluZzoiZWlsdXTElyIsYm9vbGVhbjoibG9naW7ElyByZWlrxaFtxJciLHVuZGVmaW5lZDoibmVhcGlicsSXxb50YSByZWlrxaFtxJciLGZ1bmN0aW9uOiJmdW5rY2lqYSIsc3ltYm9sOiJzaW1ib2xpcyIsYXJyYXk6Im1hc3l2YXMiLG9iamVjdDoib2JqZWt0YXMiLG51bGw6Im51bGluxJcgcmVpa8WhbcSXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdhdXRhcyB0aXBhcyAke3N9LCBvIHRpa8SXdGFzaSAtIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfWA6YEdhdXRhcyB0aXBhcyAke3N9LCBvIHRpa8SXdGFzaSAtICR7aX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFByaXZhbG8gYsWrdGkgJHtrKGUudmFsdWVzWzBdKX1gOmBQcml2YWxvIGLFq3RpIHZpZW5hcyBpxaEgJHtfKGUudmFsdWVzLCJ8Iil9IHBhc2lyaW5raW3Fs2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1vW2Uub3JpZ2luXT8/ZS5vcmlnaW4sYT1uKGUub3JpZ2luLHZzKE51bWJlcihlLm1heGltdW0pKSxlLmluY2x1c2l2ZT8/ITEsInNtYWxsZXIiKTtpZihhPy52ZXJiKXJldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7YS52ZXJifSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBzPWUuaW5jbHVzaXZlPyJuZSBkaWRlc25pcyBrYWlwIjoibWHFvmVzbmlzIGthaXAiO3JldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2E/LnVuaXR9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9b1tlLm9yaWdpbl0/P2Uub3JpZ2luLGE9bihlLm9yaWdpbix2cyhOdW1iZXIoZS5taW5pbXVtKSksZS5pbmNsdXNpdmU/PyExLCJiaWdnZXIiKTtpZihhPy52ZXJiKXJldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7YS52ZXJifSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBzPWUuaW5jbHVzaXZlPyJuZSBtYcW+ZXNuaXMga2FpcCI6ImRpZGVzbmlzIGthaXAiO3JldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2E/LnVuaXR9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEVpbHV0xJcgcHJpdmFsbyBwcmFzaWTEl3RpICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEVpbHV0xJcgcHJpdmFsbyBwYXNpYmFpZ3RpICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gRWlsdXTElyBwcml2YWxvIMSvdHJhdWt0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gRWlsdXTElyBwcml2YWxvIGF0aXRpa3RpICR7aS5wYXR0ZXJufWA6YE5ldGVpc2luZ2FzICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBTa2FpxI1pdXMgcHJpdmFsbyBixat0aSAke2UuZGl2aXNvcn0ga2FydG90aW5pcy5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWF0cGHFvmludCR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiYXMifSByYWt0JHtlLmtleXMubGVuZ3RoPjE/ImFpIjoiYXMifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiJSYXN0YXMga2xhaWRpbmdhcyByYWt0YXMiO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIktsYWlkaW5nYSDEr3Zlc3RpcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOntjb25zdCBpPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm5gJHttdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGtsYWlkaW5nxIUgxK92ZXN0xK9gfWRlZmF1bHQ6cmV0dXJuIktsYWlkaW5nYSDEr3Zlc3RpcyJ9fX07ZnVuY3Rpb24gJGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6aGYoKX19Y29uc3QgX2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItC30L3QsNGG0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGZpbGU6e3VuaXQ6ItCx0LDRmNGC0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGFycmF5Ont1bml0OiLRgdGC0LDQstC60LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LHNldDp7dW5pdDoi0YHRgtCw0LLQutC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLQvdC10YEiLGVtYWlsOiLQsNC00YDQtdGB0LAg0L3QsCDQtS3Qv9C+0YjRgtCwIix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtGf0LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLRg9C8INC4INCy0YDQtdC80LUiLGRhdGU6IklTTyDQtNCw0YLRg9C8Iix0aW1lOiJJU08g0LLRgNC10LzQtSIsZHVyYXRpb246IklTTyDQstGA0LXQvNC10YLRgNCw0LXRmtC1IixpcHY0OiJJUHY0INCw0LTRgNC10YHQsCIsaXB2NjoiSVB2NiDQsNC00YDQtdGB0LAiLGNpZHJ2NDoiSVB2NCDQvtC/0YHQtdCzIixjaWRydjY6IklQdjYg0L7Qv9GB0LXQsyIsYmFzZTY0OiJiYXNlNjQt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LAiLGJhc2U2NHVybDoiYmFzZTY0dXJsLdC10L3QutC+0LTQuNGA0LDQvdCwINC90LjQt9CwIixqc29uX3N0cmluZzoiSlNPTiDQvdC40LfQsCIsZTE2NDoiRS4xNjQg0LHRgNC+0ZgiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstC90LXRgSJ9LG89e25hbjoiTmFOIixudW1iZXI6ItCx0YDQvtGYIixhcnJheToi0L3QuNC30LAifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/RgNC40LzQtdC90L4gJHtzfWA6YNCT0YDQtdGI0LXQvSDQstC90LXRgTog0YHQtSDQvtGH0LXQutGD0LLQsCAke2l9LCDQv9GA0LjQvNC10L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2soZS52YWx1ZXNbMF0pfWA6YNCT0YDQtdGI0LDQvdCwINC+0L/RhtC40ZjQsDog0YHQtSDQvtGH0LXQutGD0LLQsCDQtdC00L3QsCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW4/PyLQstGA0LXQtNC90L7RgdGC0LAifSDQtNCwINC40LzQsCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLQtdC70LXQvNC10L3RgtC4In1gOmDQn9GA0LXQvNC90L7Qs9GDINCz0L7Qu9C10Lw6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbj8/ItCy0YDQtdC00L3QvtGB0YLQsCJ9INC00LAg0LHQuNC00LUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0J/RgNC10LzQvdC+0LPRgyDQvNCw0Ls6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbn0g0LTQsCDQuNC80LAgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCf0YDQtdC80L3QvtCz0YMg0LzQsNC7OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW59INC00LAg0LHQuNC00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQt9Cw0L/QvtGH0L3Rg9Cy0LAg0YHQviAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LfQsNCy0YDRiNGD0LLQsCDRgdC+ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINCy0LrQu9GD0YfRg9Cy0LAgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQvtC00LPQvtCw0YDQsCDQvdCwINC/0LDRgtC10YDQvdC+0YIgJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0JPRgNC10YjQtdC9INCx0YDQvtGYOiDQvNC+0YDQsCDQtNCwINCx0LjQtNC1INC00LXQu9C40LIg0YHQviAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8i0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC90Lgg0LrQu9GD0YfQtdCy0LgiOiLQndC10L/RgNC10L/QvtC30L3QsNC10L0g0LrQu9GD0YcifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQk9GA0LXRiNC10L0g0LrQu9GD0Ycg0LLQviAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0JPRgNC10YjQtdC9INCy0L3QtdGBIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCT0YDQtdGI0L3QsCDQstGA0LXQtNC90L7RgdGCINCy0L4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCT0YDQtdGI0LXQvSDQstC90LXRgSJ9fX07ZnVuY3Rpb24gYmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6X2YoKX19Y29uc3QgeWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImFrc2FyYSIsdmVyYjoibWVtcHVueWFpIn0sZmlsZTp7dW5pdDoiYmFpdCIsdmVyYjoibWVtcHVueWFpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbiIsdmVyYjoibWVtcHVueWFpIn0sc2V0Ont1bml0OiJlbGVtZW4iLHZlcmI6Im1lbXB1bnlhaSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlLW1lbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFyaWtoIG1hc2EgSVNPIixkYXRlOiJ0YXJpa2ggSVNPIix0aW1lOiJtYXNhIElTTyIsZHVyYXRpb246InRlbXBvaCBJU08iLGlwdjQ6ImFsYW1hdCBJUHY0IixpcHY2OiJhbGFtYXQgSVB2NiIsY2lkcnY0OiJqdWxhdCBJUHY0IixjaWRydjY6Imp1bGF0IElQdjYiLGJhc2U2NDoic3RyaW5nIGRpa29ka2FuIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoic3RyaW5nIEpTT04iLGUxNjQ6Im5vbWJvciBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoibm9tYm9yIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBkaXRlcmltYSAke3N9YDpgSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke2l9LCBkaXRlcmltYSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thICR7ayhlLnZhbHVlc1swXSl9YDpgUGlsaWhhbiB0aWRhayBzYWg6IGRpamFuZ2thIHNhbGFoIHNhdHUgZGFyaXBhZGEgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW4ifWA6YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9IGFkYWxhaCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGtlY2lsOiBkaWphbmdrYSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7ZS5vcmlnaW59IGFkYWxhaCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgYmVybXVsYSBkZW5nYW4gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgYmVyYWtoaXIgZGVuZ2FuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgbWVuZ2FuZHVuZ2kgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIHNlcGFkYW4gZGVuZ2FuIGNvcmFrICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSB0aWRhayBzYWhgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYm9yIHRpZGFrIHNhaDogcGVybHUgZ2FuZGFhbiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLdW5jaSB0aWRhayBkaWtlbmFsaTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLdW5jaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IHRpZGFrIHNhaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIklucHV0IHRpZGFrIHNhaCJ9fX07ZnVuY3Rpb24ga2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6eWYoKX19Y29uc3QgU2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRla2VucyIsdmVyYjoiaGVlZnQifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGVlZnQifSxhcnJheTp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnZvZXIiLGVtYWlsOiJlbWFpbGFkcmVzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gZW4gdGlqZCIsZGF0ZToiSVNPIGRhdHVtIix0aW1lOiJJU08gdGlqZCIsZHVyYXRpb246IklTTyBkdXVyIixpcHY0OiJJUHY0LWFkcmVzIixpcHY2OiJJUHY2LWFkcmVzIixjaWRydjQ6IklQdjQtYmVyZWlrIixjaWRydjY6IklQdjYtYmVyZWlrIixiYXNlNjQ6ImJhc2U2NC1nZWNvZGVlcmRlIHRla3N0IixiYXNlNjR1cmw6ImJhc2U2NCBVUkwtZ2Vjb2RlZXJkZSB0ZWtzdCIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnZvZXIifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJnZXRhbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9udHZpbmcgJHtzfWA6YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0ICR7aX0sIG9udHZpbmcgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtrKGUudmFsdWVzWzBdKX1gOmBPbmdlbGRpZ2Ugb3B0aWU6IHZlcndhY2h0IMOpw6luIHZhbiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPWUub3JpZ2luPT09ImRhdGUiPyJsYWF0IjplLm9yaWdpbj09PSJzdHJpbmciPyJsYW5nIjoiZ3Jvb3QiO3JldHVybiBhP2BUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbj8/IndhYXJkZSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlbiJ9ICR7YS52ZXJifWA6YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2luPz8id2FhcmRlIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPWUub3JpZ2luPT09ImRhdGUiPyJ2cm9lZyI6ZS5vcmlnaW49PT0ic3RyaW5nIj8ia29ydCI6ImtsZWluIjtyZXR1cm4gYT9gVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSBpc2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgbWV0ICIke2kucHJlZml4fSIgYmVnaW5uZW5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvcCAiJHtpLnN1ZmZpeH0iIGVpbmRpZ2VuYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCAiJHtpLmluY2x1ZGVzfSIgYmV2YXR0ZW5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG92ZXJlZW5rb21lbiBtZXQgcGF0cm9vbiAke2kucGF0dGVybn1gOmBPbmdlbGRpZzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9uZ2VsZGlnIGdldGFsOiBtb2V0IGVlbiB2ZWVsdm91ZCB2YW4gJHtlLmRpdmlzb3J9IHppam5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBPbmJla2VuZGUga2V5JHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPbmdlbGRpZ2Uga2V5IGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJPbmdlbGRpZ2UgaW52b2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE9uZ2VsZGlnZSB3YWFyZGUgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk9uZ2VsZGlnZSBpbnZvZXIifX19O2Z1bmN0aW9uIHdmKCl7cmV0dXJue2xvY2FsZUVycm9yOlNmKCl9fWNvbnN0IElmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWduIix2ZXJiOiLDpSBoYSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiLDpSBoYSJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6IsOlIGlubmVob2xkZSJ9LHNldDp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiLDpSBpbm5laG9sZGUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLXBvc3RhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2xldHQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2xldHQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZXQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RlciIsY2lkcnY2OiJJUHY2LXNwZWt0ZXIiLGJhc2U2NDoiYmFzZTY0LWVua29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmtvZGV0IHN0cmVuZyIsanNvbl9zdHJpbmc6IkpTT04tc3RyZW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6InRhbGwiLGFycmF5OiJsaXN0ZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlnIGlucHV0OiBmb3J2ZW50ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWtrICR7c31gOmBVZ3lsZGlnIGlucHV0OiBmb3J2ZW50ZXQgJHtpfSwgZmlrayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVZ3lsZGlnIHZlcmRpOiBmb3J2ZW50ZXQgJHtrKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlnIHZhbGc6IGZvcnZlbnRldCBlbiBhdiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRm9yIHN0b3IodCk6IGZvcnZlbnRldCAke2Uub3JpZ2luPz8idmFsdWUifSB0aWwgw6UgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGVyIn1gOmBGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRpbCDDpSBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGb3IgbGl0ZShuKTogZm9ydmVudGV0ICR7ZS5vcmlnaW59IHRpbCDDpSBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRm9yIGxpdGUobik6IGZvcnZlbnRldCAke2Uub3JpZ2lufSB0aWwgw6UgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBtw6Ugc3RhcnRlIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIGVuZGUgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVWd5bGRpZyBzdHJlbmc6IG3DpSBpbm5laG9sZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFVneWxkaWcgc3RyZW5nOiBtw6UgbWF0Y2hlIG3DuG5zdGVyZXQgJHtpLnBhdHRlcm59YDpgVWd5bGRpZyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZyB0YWxsOiBtw6UgdsOmcmUgZXQgbXVsdGlwbHVtIGF2ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2plbnRlIG7DuGtsZXIiOiJVa2plbnQgbsO4a2tlbCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4a2tlbCBpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVZ3lsZGlnIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVneWxkaWcgdmVyZGkgaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVWd5bGRpZyBpbnB1dCJ9fX07ZnVuY3Rpb24gemYoKXtyZXR1cm57bG9jYWxlRXJyb3I6SWYoKX19Y29uc3QgeGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImhhcmYiLHZlcmI6Im9sbWFsxLFkxLFyIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsWTEsXIifSxhcnJheTp7dW5pdDoidW5zdXIiLHZlcmI6Im9sbWFsxLFkxLFyIn0sc2V0Ont1bml0OiJ1bnN1ciIsdmVyYjoib2xtYWzEsWTEsXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZ2lyZW4iLGVtYWlsOiJlcG9zdGFnw6JoIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaGVuZ8OibcSxIixkYXRlOiJJU08gdGFyaWhpIix0aW1lOiJJU08gemFtYW7EsSIsZHVyYXRpb246IklTTyBtw7xkZGV0aSIsaXB2NDoiSVB2NCBuacWfw6JuxLEiLGlwdjY6IklQdjYgbmnFn8OibsSxIixjaWRydjQ6IklQdjQgbWVuemlsaSIsY2lkcnY2OiJJUHY2IG1lbnppbGkiLGJhc2U2NDoiYmFzZTY0LcWfaWZyZWxpIG1ldGluIixiYXNlNjR1cmw6ImJhc2U2NHVybC3Fn2lmcmVsaSBtZXRpbiIsanNvbl9zdHJpbmc6IkpTT04gbWV0aW4iLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lyZW4ifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1hcmEiLGFycmF5OiJzYWYiLG51bGw6ImdheWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRsOic2l0IGdpcmVuOiB1bXVsYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhbMSxbmFuICR7c31gOmBGw6JzaXQgZ2lyZW46IHVtdWxhbiAke2l9LCBhbMSxbmFuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEbDonNpdCBnaXJlbjogdW11bGFuICR7ayhlLnZhbHVlc1swXSl9YDpgRsOic2l0IHRlcmNpaDogbcO7dGViZXJsZXIgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZhemxhIGLDvHnDvGs6ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9LCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGLDvHnDvGs6ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9LCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gb2xtYWzEsXlkxLEuYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRmF6bGEga8O8w6fDvGs6ICR7ZS5vcmlnaW59LCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGvDvMOnw7xrOiAke2Uub3JpZ2lufSwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BGw6JzaXQgbWV0aW46ICIke2kucHJlZml4fSIgaWxlIGJhxZ9sYW1hbMSxLmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gRsOic2l0IG1ldGluOiAiJHtpLnN1ZmZpeH0iIGlsZSBiaXRtZWxpLmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BGw6JzaXQgbWV0aW46ICIke2kuaW5jbHVkZXN9IiBpaHRpdsOiIGV0bWVsaS5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gRsOic2l0IG1ldGluOiAke2kucGF0dGVybn0gbmFrxZ/EsW5hIHV5bWFsxLEuYDpgRsOic2l0ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBGw6JzaXQgc2F5xLE6ICR7ZS5kaXZpc29yfSBrYXTEsSBvbG1hbMSxeWTEsS5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhbmFodGFyICR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4gYW5haHRhciB2YXIuYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJHaXJlbiB0YW7EsW5hbWFkxLEuIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luIHRhbsSxbm1heWFuIGvEsXltZXQgdmFyLmA7ZGVmYXVsdDpyZXR1cm4iS8SxeW1ldCB0YW7EsW5hbWFkxLEuIn19fTtmdW5jdGlvbiBUZigpe3JldHVybntsb2NhbGVFcnJvcjp4ZigpfX1jb25zdCBqZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn0sZmlsZTp7dW5pdDoi2KjYp9uM2bzYsyIsdmVyYjoi2YjZhNix2YoifSxhcnJheTp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn0sc2V0Ont1bml0OiLYqtmI2qnZiiIsdmVyYjoi2YjZhNix2YoifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2YjYsdmI2K/ZiiIsZW1haWw6Itio2LHbjNqa2YbYp9mE24zaqSIsdXJsOiLbjNmIINii2LEg2KfZhCIsZW1vamk6Itin24zZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2YbbjNm82Ycg2KfZiCDZiNiu2KoiLGRhdGU6ItmG25DZvNmHIix0aW1lOiLZiNiu2KoiLGR1cmF0aW9uOiLZhdmI2K/ZhyIsaXB2NDoi2K8gSVB2NCDZvtiq2YciLGlwdjY6ItivIElQdjYg2b7YqtmHIixjaWRydjQ6ItivIElQdjQg2LPYp9it2YciLGNpZHJ2Njoi2K8gSVB2NiDYs9in2K3ZhyIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDZhdiq2YYiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2YXYqtmGIixqc29uX3N0cmluZzoiSlNPTiDZhdiq2YYiLGUxNjQ6ItivIEUuMTY0INi02YXbkNix2YciLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9mKIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KfYsduQIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZiNin24wsINmF2qvYsSAke3N9INiq2LHZhNin2LPZhyDYtNmIYDpg2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gJHtpfSDZiNin24wsINmF2qvYsSAke3N9INiq2LHZhNin2LPZhyDYtNmIYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke2soZS52YWx1ZXNbMF0pfSDZiNin24xgOmDZhtin2LPZhSDYp9mG2KrYrtin2Kg6INio2KfbjNivINuM2Ygg2YTZhyAke18oZS52YWx1ZXMsInwiKX0g2oXYrtmHINmI2KfbjGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DaiduM2LEg2YTZiNuMOiAke2Uub3JpZ2luPz8i2KfYsdiy2prYqiJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdix2YjZhtmHIn0g2YjZhNix2YpgOmDaiduM2LEg2YTZiNuMOiAke2Uub3JpZ2luPz8i2KfYsdiy2prYqiJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDZiNmKYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2onbjNixINqp2YjahtmG24w6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g2YjZhNix2YpgOmDaiduM2LEg2qnZiNqG2YbbjDogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INmI2YpgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAiJHtpLnByZWZpeH0iINiz2LHZhyDZvtuM2YQg2LTZimA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAiJHtpLnN1ZmZpeH0iINiz2LHZhyDZvtin24wg2KrZhyDZiNix2LPZitqW2YpgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryAiJHtpLmluY2x1ZGVzfSIg2YjZhNix2YpgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAke2kucGF0dGVybn0g2LPYsdmHINmF2LfYp9io2YLYqiDZiNmE2LHZimA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDZhtin2LPZhSDYr9uMYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNmG2KfYs9mFINi52K/Yrzog2KjYp9uM2K8g2K8gJHtlLmRpdmlzb3J9INmF2LbYsdioINmI2YpgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDZhtin2LPZhSAke2Uua2V5cy5sZW5ndGg+MT8i2qnZhNuM2onZiNmG2YciOiLaqdmE24zaiSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNmG2KfYs9mFINqp2YTbjNqJINm+2YcgJHtlLm9yaWdpbn0g2qnbkGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YbYp9iz2YXZhyDZiNix2YjYr9mKIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNmG2KfYs9mFINi52YbYtdixINm+2YcgJHtlLm9yaWdpbn0g2qnbkGA7ZGVmYXVsdDpyZXR1cm4i2YbYp9iz2YXZhyDZiNix2YjYr9mKIn19fTtmdW5jdGlvbiBVZigpe3JldHVybntsb2NhbGVFcnJvcjpqZigpfX1jb25zdCBQZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha8OzdyIsdmVyYjoibWllxIcifSxmaWxlOnt1bml0OiJiYWp0w7N3Iix2ZXJiOiJtaWXEhyJ9LGFycmF5Ont1bml0OiJlbGVtZW50w7N3Iix2ZXJiOiJtaWXEhyJ9LHNldDp7dW5pdDoiZWxlbWVudMOzdyIsdmVyYjoibWllxIcifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoid3lyYcW8ZW5pZSIsZW1haWw6ImFkcmVzIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgZ29kemluYSB3IGZvcm1hY2llIElTTyIsZGF0ZToiZGF0YSB3IGZvcm1hY2llIElTTyIsdGltZToiZ29kemluYSB3IGZvcm1hY2llIElTTyIsZHVyYXRpb246ImN6YXMgdHJ3YW5pYSBJU08iLGlwdjQ6ImFkcmVzIElQdjQiLGlwdjY6ImFkcmVzIElQdjYiLGNpZHJ2NDoiemFrcmVzIElQdjQiLGNpZHJ2NjoiemFrcmVzIElQdjYiLGJhc2U2NDoiY2nEhWcgem5ha8OzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0IixiYXNlNjR1cmw6ImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNpxIVnIHpuYWvDs3cgdyBmb3JtYWNpZSBKU09OIixlMTY0OiJsaWN6YmEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ3ZWrFm2NpZSJ9LG89e25hbjoiTmFOIixudW1iZXI6ImxpY3piYSIsYXJyYXk6InRhYmxpY2EifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb3RyenltYW5vICR7c31gOmBOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtpfSwgb3RyenltYW5vICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke2soZS52YWx1ZXNbMF0pfWA6YE5pZXByYXdpZMWCb3dhIG9wY2phOiBvY3pla2l3YW5vIGplZG5laiB6IHdhcnRvxZtjaSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWmEgZHXFvGEgd2FydG/Fm8SHOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgbWllxIcgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMOzdyJ9YDpgWmJ5dCBkdcW8KHkvYS9lKTogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIHd5bm9zacSHICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFphIG1hxYJhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgbWHFgih5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSB6YWN6eW5hxIcgc2nEmSBvZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIGtvxYRjennEhyBzacSZIG5hICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSB6YXdpZXJhxIcgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgb2Rwb3dpYWRhxIcgd3pvcmNvd2kgJHtpLnBhdHRlcm59YDpgTmllcHJhd2lkxYJvdyh5L2EvZSkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5pZXByYXdpZMWCb3dhIGxpY3piYTogbXVzaSBiecSHIHdpZWxva3JvdG5vxZtjacSFICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5pZXJvenBvem5hbmUga2x1Y3plJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOaWVwcmF3aWTFgm93eSBrbHVjeiB3ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2UiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmllcHJhd2lkxYJvd2Egd2FydG/Fm8SHIHcgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZSJ9fX07ZnVuY3Rpb24gT2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6UGYoKX19Y29uc3QgRGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZXMiLHZlcmI6InRlciJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0ZXIifSxhcnJheTp7dW5pdDoiaXRlbnMiLHZlcmI6InRlciJ9LHNldDp7dW5pdDoiaXRlbnMiLHZlcmI6InRlciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJwYWRyw6NvIixlbWFpbDoiZW5kZXJlw6dvIGRlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhw6fDo28gSVNPIixpcHY0OiJlbmRlcmXDp28gSVB2NCIsaXB2NjoiZW5kZXJlw6dvIElQdjYiLGNpZHJ2NDoiZmFpeGEgZGUgSVB2NCIsY2lkcnY2OiJmYWl4YSBkZSBJUHY2IixiYXNlNjQ6InRleHRvIGNvZGlmaWNhZG8gZW0gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVtIGJhc2U2NCIsanNvbl9zdHJpbmc6InRleHRvIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibsO6bWVybyIsbnVsbDoibnVsbyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZWNlYmlkbyAke3N9YDpgVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvICR7aX0sIHJlY2ViaWRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHJhZGEgaW52w6FsaWRhOiBlc3BlcmFkbyAke2soZS52YWx1ZXNbMF0pfWA6YE9ww6fDo28gaW52w6FsaWRhOiBlc3BlcmFkYSB1bWEgZGFzICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNdWl0byBncmFuZGU6IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2luPz8idmFsb3IifSB0aXZlc3NlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvcyJ9YDpgTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbj8/InZhbG9yIn0gZm9zc2UgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW59IHRpdmVzc2UgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2lufSBmb3NzZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGNvbWXDp2FyIGNvbSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgdGVybWluYXIgY29tICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGluY2x1aXIgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFRleHRvIGludsOhbGlkbzogZGV2ZSBjb3JyZXNwb25kZXIgYW8gcGFkcsOjbyAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52w6FsaWRvYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6FsaWRvOiBkZXZlIHNlciBtw7psdGlwbG8gZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hhdmUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IGRlc2NvbmhlY2lkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2hhdmUgaW52w6FsaWRhIGVtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyYWRhIGludsOhbGlkYSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvciBpbnbDoWxpZG8gZW0gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkNhbXBvIGludsOhbGlkbyJ9fX07ZnVuY3Rpb24gTmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6RGYoKX19Y29uc3QgRWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZSIsdmVyYjoic8SDIGFpYsSDIn0sZmlsZTp7dW5pdDoib2N0ZcibaSIsdmVyYjoic8SDIGFpYsSDIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlIix2ZXJiOiJzxIMgYWlixIMifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlIix2ZXJiOiJzxIMgYWlixIMifSxtYXA6e3VuaXQ6ImludHLEg3JpIix2ZXJiOiJzxIMgYWlixIMifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW50cmFyZSIsZW1haWw6ImFkcmVzxIMgZGUgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdMSDIMiZaSBvcsSDIElTTyIsZGF0ZToiZGF0xIMgSVNPIix0aW1lOiJvcsSDIElTTyIsZHVyYXRpb246ImR1cmF0xIMgSVNPIixpcHY0OiJhZHJlc8SDIElQdjQiLGlwdjY6ImFkcmVzxIMgSVB2NiIsbWFjOiJhZHJlc8SDIE1BQyIsY2lkcnY0OiJpbnRlcnZhbCBJUHY0IixjaWRydjY6ImludGVydmFsIElQdjYiLGJhc2U2NDoiyJlpciBjb2RhdCBiYXNlNjQiLGJhc2U2NHVybDoiyJlpciBjb2RhdCBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLImWlyIEpTT04iLGUxNjQ6Im51bcSDciBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImludHJhcmUifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiLImWlyIixudW1iZXI6Im51bcSDciIsYm9vbGVhbjoiYm9vbGVhbiIsZnVuY3Rpb246ImZ1bmPIm2llIixhcnJheToibWF0cmljZSIsb2JqZWN0OiJvYmllY3QiLHVuZGVmaW5lZDoibmVkZWZpbml0IixzeW1ib2w6InNpbWJvbCIsYmlnaW50OiJudW3Eg3IgbWFyZSIsdm9pZDoidm9pZCIsbmV2ZXI6Im5ldmVyIixtYXA6ImhhcnTEgyIsc2V0OiJzZXQifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuYEludHJhcmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgJHtpfSwgcHJpbWl0ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEludHJhcmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgJHtrKGUudmFsdWVzWzBdKX1gOmBPcMibaXVuZSBpbnZhbGlkxIM6IGHImXRlcHRhdCB1bmEgZGludHJlICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmVhIG1hcmU6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2luPz8idmFsb2FyZWEifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGUifWA6YFByZWEgbWFyZTogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW4/PyJ2YWxvYXJlYSJ9IHPEgyBmaWUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJlYSBtaWM6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZWEgbWljOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbn0gc8SDIGZpZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyDDrm5jZWFwxIMgY3UgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBzZSB0ZXJtaW5lIGN1ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBpbmNsdWTEgyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBzZSBwb3RyaXZlYXNjxIMgY3UgbW9kZWx1bCAke2kucGF0dGVybn1gOmBGb3JtYXQgaW52YWxpZDogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bcSDciBpbnZhbGlkOiB0cmVidWllIHPEgyBmaWUgbXVsdGlwbHUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hlaSBuZXJlY3Vub3NjdXRlOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoZWllIGludmFsaWTEgyDDrm4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkludHJhcmUgaW52YWxpZMSDIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9hcmUgaW52YWxpZMSDIMOubiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW50cmFyZSBpbnZhbGlkxIMifX19O2Z1bmN0aW9uIFpmKCl7cmV0dXJue2xvY2FsZUVycm9yOkVmKCl9fWZ1bmN0aW9uIGhzKHQsbixyLG8pe2NvbnN0IGU9TWF0aC5hYnModCksaT1lJTEwLGE9ZSUxMDA7cmV0dXJuIGE+PTExJiZhPD0xOT9vOmk9PT0xP246aT49MiYmaTw9ND9yOm99Y29uc3QgUmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToi0YHQuNC80LLQvtC7IixmZXc6ItGB0LjQvNCy0L7Qu9CwIixtYW55OiLRgdC40LzQstC+0LvQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9LGZpbGU6e3VuaXQ6e29uZToi0LHQsNC50YIiLGZldzoi0LHQsNC50YLQsCIsbWFueToi0LHQsNC50YIifSx2ZXJiOiLQuNC80LXRgtGMIn0sYXJyYXk6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLQsCIsbWFueToi0Y3Qu9C10LzQtdC90YLQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9LHNldDp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtCwIixtYW55OiLRjdC70LXQvNC10L3RgtC+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0LLQvtC0IixlbWFpbDoiZW1haWwg0LDQtNGA0LXRgSIsdXJsOiJVUkwiLGVtb2ppOiLRjdC80L7QtNC30LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLQsCDQuCDQstGA0LXQvNGPIixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDQstGA0LXQvNGPIixkdXJhdGlvbjoiSVNPINC00LvQuNGC0LXQu9GM0L3QvtGB0YLRjCIsaXB2NDoiSVB2NCDQsNC00YDQtdGBIixpcHY2OiJJUHY2INCw0LTRgNC10YEiLGNpZHJ2NDoiSVB2NCDQtNC40LDQv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTQuNCw0L/QsNC30L7QvSIsYmFzZTY0OiLRgdGC0YDQvtC60LAg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0IixiYXNlNjR1cmw6ItGB0YLRgNC+0LrQsCDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJKU09OINGB0YLRgNC+0LrQsCIsZTE2NDoi0L3QvtC80LXRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0LLQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9C+0LvRg9GH0LXQvdC+ICR7c31gOmDQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgJHtpfSwg0L/QvtC70YPRh9C10L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10LLQtdGA0L3Ri9C5INCy0LDRgNC40LDQvdGCOiDQvtC20LjQtNCw0LvQvtGB0Ywg0L7QtNC90L4g0LjQtyAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1heGltdW0pLGM9aHMocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90LjQtSJ9INCx0YPQtNC10YIg0LjQvNC10YLRjCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCh0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QuNC1In0g0LHRg9C00LXRgiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWluaW11bSksYz1ocyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2lufSDQsdGD0LTQtdGCINC40LzQtdGC0YwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbn0g0LHRg9C00LXRgiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDQvdCw0YfQuNC90LDRgtGM0YHRjyDRgSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINC30LDQutCw0L3Rh9C40LLQsNGC0YzRgdGPINC90LAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINGB0L7QtNC10YDQttCw0YLRjCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC90YMgJHtpLnBhdHRlcm59YDpg0J3QtdCy0LXRgNC90YvQuSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3QtdCy0LXRgNC90L7QtSDRh9C40YHQu9C+OiDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LrRgNCw0YLQvdGL0LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDRgdC/0L7Qt9C90LDQvdC9JHtlLmtleXMubGVuZ3RoPjE/ItGL0LUiOiLRi9C5In0g0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0LgiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10LLQtdGA0L3Ri9C5INC60LvRjtGHINCyICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10LLQtdGA0L3Ri9C1INCy0YXQvtC00L3Ri9C1INC00LDQvdC90YvQtSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndC10LLQtdGA0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LIgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQstC10YDQvdGL0LUg0LLRhdC+0LTQvdGL0LUg0LTQsNC90L3Ri9C1In19fTtmdW5jdGlvbiBDZigpe3JldHVybntsb2NhbGVFcnJvcjpSZigpfX1jb25zdCBBZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha292Iix2ZXJiOiJpbWV0aSJ9LGZpbGU6e3VuaXQ6ImJhanRvdiIsdmVyYjoiaW1ldGkifSxhcnJheTp7dW5pdDoiZWxlbWVudG92Iix2ZXJiOiJpbWV0aSJ9LHNldDp7dW5pdDoiZWxlbWVudG92Iix2ZXJiOiJpbWV0aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ2bm9zIixlbWFpbDoiZS1wb8WhdG5pIG5hc2xvdiIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdHVtIGluIMSNYXMiLGRhdGU6IklTTyBkYXR1bSIsdGltZToiSVNPIMSNYXMiLGR1cmF0aW9uOiJJU08gdHJhamFuamUiLGlwdjQ6IklQdjQgbmFzbG92IixpcHY2OiJJUHY2IG5hc2xvdiIsY2lkcnY0OiJvYnNlZyBJUHY0IixjaWRydjY6Im9ic2VnIElQdjYiLGJhc2U2NDoiYmFzZTY0IGtvZGlyYW4gbml6IixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RpcmFuIG5peiIsanNvbl9zdHJpbmc6IkpTT04gbml6IixlMTY0OiJFLjE2NCDFoXRldmlsa2EiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ2bm9zIn0sbz17bmFuOiJOYU4iLG51bWJlcjoixaF0ZXZpbG8iLGFycmF5OiJ0YWJlbGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBwcmVqZXRvICR7c31gOmBOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyAke2l9LCBwcmVqZXRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmV2ZWxqYXZuYSBtb8W+bm9zdDogcHJpxI1ha292YW5vIGVubyBpem1lZCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJldmVsaWtvOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW4/PyJ2cmVkbm9zdCJ9IGltZWxvICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvdiJ9YDpgUHJldmVsaWtvOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW4/PyJ2cmVkbm9zdCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2lufSBpbWVsbyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUHJlbWFqaG5vOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXZlbGphdmVuIG5pejogbW9yYSBzZSB6YcSNZXRpIHogIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2Uga29uxI1hdGkgeiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHZzZWJvdmF0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdXN0cmV6YXRpIHZ6b3JjdSAke2kucGF0dGVybn1gOmBOZXZlbGphdmVuICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZlbGphdm5vIMWhdGV2aWxvOiBtb3JhIGJpdGkgdmXEjWtyYXRuaWsgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVwcmVwb3puYW4ke2Uua2V5cy5sZW5ndGg+MT8iaSBrbGp1xI1pIjoiIGtsanXEjSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmVsamF2ZW4ga2xqdcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5ldmVsamF2ZW4gdm5vcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXZlbGphdm5hIHZyZWRub3N0IHYgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5ldmVsamF2ZW4gdm5vcyJ9fX07ZnVuY3Rpb24gTGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6QWYoKX19Y29uc3QgTWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRlY2tlbiIsdmVyYjoiYXR0IGhhIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImF0dCBoYSJ9LGFycmF5Ont1bml0OiJvYmpla3QiLHZlcmI6ImF0dCBpbm5laMOlbGxhIn0sc2V0Ont1bml0OiJvYmpla3QiLHZlcmI6ImF0dCBpbm5laMOlbGxhIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InJlZ3VsasOkcnQgdXR0cnljayIsZW1haWw6ImUtcG9zdGFkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLWRhdHVtIG9jaCB0aWQiLGRhdGU6IklTTy1kYXR1bSIsdGltZToiSVNPLXRpZCIsZHVyYXRpb246IklTTy12YXJha3RpZ2hldCIsaXB2NDoiSVB2NC1pbnRlcnZhbGwiLGlwdjY6IklQdjYtaW50ZXJ2YWxsIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kYWQgc3Ryw6RuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29kYWQgc3Ryw6RuZyIsanNvbl9zdHJpbmc6IkpTT04tc3Ryw6RuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoibWFsbC1saXRlcmFsIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiYW50YWwiLGFycmF5OiJsaXN0YSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWNrICR7c31gOmBPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgJHtpfSwgZmljayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgJHtrKGUudmFsdWVzWzBdKX1gOmBPZ2lsdGlndCB2YWw6IGbDtnJ2w6RudGFkZSBlbiBhdiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRsO2ciBzdG9yKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudCJ9YDpgRsO2ciBzdG9yKHQpOiBmw7ZydsOkbnRhdCAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGw7ZyIGxpdGUodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIGLDtnJqYSBtZWQgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgc2x1dGEgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgaW5uZWjDpWxsYSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgbWF0Y2hhIG3Dtm5zdHJldCAiJHtpLnBhdHRlcm59ImA6YE9naWx0aWcodCkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9naWx0aWd0IHRhbDogbcOlc3RlIHZhcmEgZW4gbXVsdGlwZWwgYXYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/Ik9rw6RuZGEgbnlja2xhciI6Ik9rw6RuZCBueWNrZWwifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPZ2lsdGlnIG55Y2tlbCBpICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk9naWx0aWcgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gT2dpbHRpZ3QgdsOkcmRlIGkgJHtlLm9yaWdpbj8/InbDpHJkZXQifWA7ZGVmYXVsdDpyZXR1cm4iT2dpbHRpZyBpbnB1dCJ9fX07ZnVuY3Rpb24gcWYoKXtyZXR1cm57bG9jYWxlRXJyb3I6TWYoKX19Y29uc3QgRmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuCujuCutOCvgeCupOCvjeCupOCvgeCuleCvjeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LGZpbGU6e3VuaXQ6IuCuquCviOCun+CvjeCun+CvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LGFycmF5Ont1bml0OiLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxzZXQ6e3VuaXQ6IuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLgrongrrPgr43grrPgr4Dgrp/gr4EiLGVtYWlsOiLgrq7grr/grqngr43grqngrp7gr43grprgrrLgr40g4K6u4K+B4K6V4K614K6w4K6/Iix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g4K6k4K+H4K6k4K6/IOCuqOCvh+CusOCuruCvjSIsZGF0ZToiSVNPIOCupOCvh+CupOCuvyIsdGltZToiSVNPIOCuqOCvh+CusOCuruCvjSIsZHVyYXRpb246IklTTyDgrpXgrr7grrIg4K6F4K6z4K614K+BIixpcHY0OiJJUHY0IOCuruCvgeCuleCuteCusOCuvyIsaXB2NjoiSVB2NiDgrq7gr4HgrpXgrrXgrrDgrr8iLGNpZHJ2NDoiSVB2NCDgrrXgrrDgrq7gr43grqrgr4EiLGNpZHJ2NjoiSVB2NiDgrrXgrrDgrq7gr43grqrgr4EiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg4K6a4K6w4K6u4K+NIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIOCumuCusOCuruCvjSIsanNvbl9zdHJpbmc6IkpTT04g4K6a4K6w4K6u4K+NIixlMTY0OiJFLjE2NCDgro7grqPgr40iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6IuCujuCuo+CvjSIsYXJyYXk6IuCuheCuo+CuvyIsbnVsbDoi4K614K+G4K6x4K+B4K6u4K+IIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3N9YDpg4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7aX0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtrKGUudmFsdWVzWzBdKX1gOmDgrqTgrrXgrrHgrr7grqkg4K614K6/4K6w4K+B4K6q4K+N4K6q4K6u4K+NOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtfKGUudmFsdWVzLCJ8Iil9IOCuh+CusuCvjSDgrpLgrqngr43grrHgr4FgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4K6u4K6/4K6VIOCuquCvhuCusOCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW4/PyLgrq7grqTgrr/grqrgr43grqrgr4EifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40ifSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2luPz8i4K6u4K6k4K6/4K6q4K+N4K6q4K+BIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpXgrprgr40g4K6a4K6/4K6x4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kucHJlZml4fSIg4K6H4K6y4K+NIOCupOCviuCun+CumeCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kuc3VmZml4fSIg4K6H4K6y4K+NIOCuruCvgeCun+Cuv+CuteCun+CviOCuryDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7aS5pbmNsdWRlc30iIOCukCDgrongrrPgr43grrPgrp/grpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDppLmZvcm1hdD09PSJyZWdleCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICR7aS5wYXR0ZXJufSDgrq7gr4HgrrHgr4jgrqrgrr7grp/gr43grp/gr4Hgrp/grqngr40g4K6q4K+K4K6w4K+B4K6o4K+N4K6kIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCupOCuteCuseCuvuCuqSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4K6k4K614K6x4K6+4K6pIOCujuCuo+CvjTogJHtlLmRpdmlzb3J9IOCuh+CuqeCvjSDgrqrgrrLgrq7grr7grpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOCuheCun+CviOCur+CuvuCus+CuruCvjSDgrqTgr4bgrrDgrr/grq/grr7grqQg4K614K6/4K6a4K+IJHtlLmtleXMubGVuZ3RoPjE/IuCuleCus+CvjSI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IOCuh+CusuCvjSDgrqTgrrXgrrHgrr7grqkg4K614K6/4K6a4K+IYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOCuh+CusuCvjSDgrqTgrrXgrrHgrr7grqkg4K6u4K6k4K6/4K6q4K+N4K6q4K+BYDtkZWZhdWx0OnJldHVybiLgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BIn19fTtmdW5jdGlvbiBKZigpe3JldHVybntsb2NhbGVFcnJvcjpGZigpfX1jb25zdCBIZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4LiV4Lix4Lin4Lit4Lix4LiB4Lip4LijIix2ZXJiOiLguITguKfguKPguKHguLUifSxmaWxlOnt1bml0OiLguYTguJrguJXguYwiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LGFycmF5Ont1bml0OiLguKPguLLguKLguIHguLLguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LHNldDp7dW5pdDoi4Lij4Liy4Lii4LiB4Liy4LijIix2ZXJiOiLguITguKfguKPguKHguLUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lib4LmJ4Lit4LiZIixlbWFpbDoi4LiX4Li14LmI4Lit4Lii4Li54LmI4Lit4Li14LmA4Lih4LilIix1cmw6IlVSTCIsZW1vamk6IuC4reC4tOC5guC4oeC4iOC4tCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4Lin4Lix4LiZ4LiX4Li14LmI4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsZGF0ZToi4Lin4Lix4LiZ4LiX4Li14LmI4LmB4Lia4LiaIElTTyIsdGltZToi4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsZHVyYXRpb246IuC4iuC5iOC4p+C4h+C5gOC4p+C4peC4suC5geC4muC4miBJU08iLGlwdjQ6IuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY0IixpcHY2OiLguJfguLXguYjguK3guKLguLnguYggSVB2NiIsY2lkcnY0OiLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjQiLGNpZHJ2Njoi4LiK4LmI4Lin4LiHIElQIOC5geC4muC4miBJUHY2IixiYXNlNjQ6IuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBCYXNlNjQiLGJhc2U2NHVybDoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCDguKrguLPguKvguKPguLHguJogVVJMIixqc29uX3N0cmluZzoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEpTT04iLGUxNjQ6IuC5gOC4muC4reC4o+C5jOC5guC4l+C4o+C4qOC4seC4nuC4l+C5jOC4o+C4sOC4q+C4p+C5iOC4suC4h+C4m+C4o+C4sOC5gOC4l+C4qCAoRS4xNjQpIixqd3Q6IuC5guC4l+C5gOC4hOC4mSBKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4m+C5ieC4reC4mSJ9LG89e25hbjoiTmFOIixudW1iZXI6IuC4leC4seC4p+C5gOC4peC4giIsYXJyYXk6IuC4reC4suC4o+C5jOC5gOC4o+C4ouC5jCAoQXJyYXkpIixudWxsOiLguYTguKHguYjguKHguLXguITguYjguLIgKG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOC4m+C4o+C4sOC5gOC4oOC4l+C4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtzfWA6YOC4m+C4o+C4sOC5gOC4oOC4l+C4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZICR7aX0g4LmB4LiV4LmI4LmE4LiU4LmJ4Lij4Lix4LiaICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOC4hOC5iOC4suC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZICR7ayhlLnZhbHVlc1swXSl9YDpg4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJnguKvguJnguLbguYjguIfguYPguJkgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLguYTguKHguYjguYDguIHguLTguJkiOiLguJnguYnguK3guKLguIHguKfguYjguLIiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLguKPguLLguKLguIHguLLguKMifWA6YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4Lit4Lii4LmI4Liy4LiH4LiZ4LmJ4Lit4LiiIjoi4Lih4Liy4LiB4LiB4Lin4LmI4LiyIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DguJnguYnguK3guKLguIHguKfguYjguLLguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4Liy4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2lufSDguITguKfguKPguKHguLUke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4LiC4Li24LmJ4LiZ4LiV4LmJ4LiZ4LiU4LmJ4Lin4LiiICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4Lil4LiH4LiX4LmJ4Liy4Lii4LiU4LmJ4Lin4LiiICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguKHguLUgIiR7aS5pbmNsdWRlc30iIOC4reC4ouC4ueC5iOC5g+C4meC4guC5ieC4reC4hOC4p+C4suC4oWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4leC5ieC4reC4h+C4leC4o+C4h+C4geC4seC4muC4o+C4ueC4m+C5geC4muC4muC4l+C4teC5iOC4geC4s+C4q+C4meC4lCAke2kucGF0dGVybn1gOmDguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDguJXguLHguKfguYDguKXguILguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4leC5ieC4reC4h+C5gOC4m+C5h+C4meC4iOC4s+C4meC4p+C4meC4l+C4teC5iOC4q+C4suC4o+C4lOC5ieC4p+C4oiAke2UuZGl2aXNvcn0g4LmE4LiU4LmJ4Lil4LiH4LiV4Lix4LinYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4Lie4Lia4LiE4Li14Lii4LmM4LiX4Li14LmI4LmE4Lih4LmI4Lij4Li54LmJ4LiI4Lix4LiBOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOC4hOC4teC4ouC5jOC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguYTguKHguYjguJXguKPguIfguIHguLHguJrguKPguLnguJvguYHguJrguJrguKLguLnguYDguJnguLXguKLguJnguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiH4LmD4LiZICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIcifX19O2Z1bmN0aW9uIFZmKCl7cmV0dXJue2xvY2FsZUVycm9yOkhmKCl9fWNvbnN0IEtmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoib2xtYWzEsSJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLEifSxhcnJheTp7dW5pdDoiw7bEn2UiLHZlcmI6Im9sbWFsxLEifSxzZXQ6e3VuaXQ6IsO2xJ9lIix2ZXJiOiJvbG1hbMSxIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImdpcmRpIixlbWFpbDoiZS1wb3N0YSBhZHJlc2kiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyB0YXJpaCB2ZSBzYWF0IixkYXRlOiJJU08gdGFyaWgiLHRpbWU6IklTTyBzYWF0IixkdXJhdGlvbjoiSVNPIHPDvHJlIixpcHY0OiJJUHY0IGFkcmVzaSIsaXB2NjoiSVB2NiBhZHJlc2kiLGNpZHJ2NDoiSVB2NCBhcmFsxLHEn8SxIixjaWRydjY6IklQdjYgYXJhbMSxxJ/EsSIsYmFzZTY0OiJiYXNlNjQgaWxlIMWfaWZyZWxlbm1pxZ8gbWV0aW4iLGJhc2U2NHVybDoiYmFzZTY0dXJsIGlsZSDFn2lmcmVsZW5tacWfIG1ldGluIixqc29uX3N0cmluZzoiSlNPTiBkaXplc2kiLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoixZ5hYmxvbiBkaXplc2kifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGFsxLFuYW4gJHtzfWA6YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuICR7aX0sIGFsxLFuYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gJHtrKGUudmFsdWVzWzBdKX1gOmBHZcOnZXJzaXogc2XDp2VuZWs6IGHFn2HEn8SxZGFraWxlcmRlbiBiaXJpIG9sbWFsxLE6ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh29rIGLDvHnDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW4/PyJkZcSfZXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLDtsSfZSJ9YDpgw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2Uub3JpZ2luPz8iZGXEn2VyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YMOHb2sga8O8w6fDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BHZcOnZXJzaXogbWV0aW46ICIke2kucHJlZml4fSIgaWxlIGJhxZ9sYW1hbMSxYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BHZcOnZXJzaXogbWV0aW46ICIke2kuc3VmZml4fSIgaWxlIGJpdG1lbGlgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gR2XDp2Vyc2l6IG1ldGluOiAiJHtpLmluY2x1ZGVzfSIgacOnZXJtZWxpYDppLmZvcm1hdD09PSJyZWdleCI/YEdlw6dlcnNpeiBtZXRpbjogJHtpLnBhdHRlcm59IGRlc2VuaW5lIHV5bWFsxLFgOmBHZcOnZXJzaXogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEdlw6dlcnNpeiBzYXnEsTogJHtlLmRpdmlzb3J9IGlsZSB0YW0gYsO2bMO8bmViaWxtZWxpYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVGFuxLFubWF5YW4gYW5haHRhciR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbmRlIGdlw6dlcnNpeiBhbmFodGFyYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJHZcOnZXJzaXogZGXEn2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGRlxJ9lcmA7ZGVmYXVsdDpyZXR1cm4iR2XDp2Vyc2l6IGRlxJ9lciJ9fX07ZnVuY3Rpb24gV2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6S2YoKX19Y29uc3QgQmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItGB0LjQvNCy0L7Qu9GW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9LGZpbGU6e3VuaXQ6ItCx0LDQudGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sc2V0Ont1bml0OiLQtdC70LXQvNC10L3RgtGW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstGF0ZbQtNC90ZYg0LTQsNC90ZYiLGVtYWlsOiLQsNC00YDQtdGB0LAg0LXQu9C10LrRgtGA0L7QvdC90L7RlyDQv9C+0YjRgtC4Iix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtC00LfRliIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi0LTQsNGC0LAg0YLQsCDRh9Cw0YEgSVNPIixkYXRlOiLQtNCw0YLQsCBJU08iLHRpbWU6ItGH0LDRgSBJU08iLGR1cmF0aW9uOiLRgtGA0LjQstCw0LvRltGB0YLRjCBJU08iLGlwdjQ6ItCw0LTRgNC10YHQsCBJUHY0IixpcHY2OiLQsNC00YDQtdGB0LAgSVB2NiIsY2lkcnY0OiLQtNGW0LDQv9Cw0LfQvtC9IElQdjQiLGNpZHJ2Njoi0LTRltCw0L/QsNC30L7QvSBJUHY2IixiYXNlNjQ6ItGA0Y/QtNC+0Log0YMg0LrQvtC00YPQstCw0L3QvdGWIGJhc2U2NCIsYmFzZTY0dXJsOiLRgNGP0LTQvtC6INGDINC60L7QtNGD0LLQsNC90L3RliBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLRgNGP0LTQvtC6IEpTT04iLGUxNjQ6ItC90L7QvNC10YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstGF0ZbQtNC90ZYg0LTQsNC90ZYifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLRh9C40YHQu9C+IixhcnJheToi0LzQsNGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQvtGC0YDQuNC80LDQvdC+ICR7c31gOmDQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gJHtpfSwg0L7RgtGA0LjQvNCw0L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10L/RgNCw0LLQuNC70YzQvdCwINC+0L/RhtGW0Y86INC+0YfRltC60YPRlNGC0YzRgdGPINC+0LTQvdC1INC3ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQl9Cw0L3QsNC00YLQviDQstC10LvQuNC60LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QvdGPIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0ZbQsiJ9YDpg0JfQsNC90LDQtNGC0L4g0LLQtdC70LjQutC1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90L3RjyJ9INCx0YPQtNC1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCX0LDQvdCw0LTRgtC+INC80LDQu9C1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCX0LDQvdCw0LTRgtC+INC80LDQu9C1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2lufSDQsdGD0LTQtSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC/0L7Rh9C40L3QsNGC0LjRgdGPINC3ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQt9Cw0LrRltC90YfRg9Cy0LDRgtC40YHRjyDQvdCwICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC80ZbRgdGC0LjRgtC4ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndC10L/RgNCw0LLQuNC70YzQvdC40LkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0YfQuNGB0LvQvjog0L/QvtCy0LjQvdC90L4g0LHRg9GC0Lgg0LrRgNCw0YLQvdC40LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0L7Qt9C/0ZbQt9C90LDQvdC40Lkg0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0ZYiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0LfQvdCw0YfQtdC90L3RjyDRgyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZYifX19O2Z1bmN0aW9uIGxsKCl7cmV0dXJue2xvY2FsZUVycm9yOkJmKCl9fWZ1bmN0aW9uIEdmKCl7cmV0dXJuIGxsKCl9Y29uc3QgWGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itit2LHZiNmBIix2ZXJiOiLbgdmI2YbYpyJ9LGZpbGU6e3VuaXQ6Itio2KfYptm52LMiLHZlcmI6ItuB2YjZhtinIn0sYXJyYXk6e3VuaXQ6Itii2KbZudmF2LIiLHZlcmI6ItuB2YjZhtinIn0sc2V0Ont1bml0OiLYotim2bnZhdiyIix2ZXJiOiLbgdmI2YbYpyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLYp9mGINm+2bkiLGVtYWlsOiLYp9uMINmF24zZhCDYp9uM2ojYsduM2LMiLHVybDoi24zZiCDYotixINin24zZhCIsZW1vamk6Itin24zZhdmI2KzbjCIsdXVpZDoi24zZiCDbjNmIINii2KbbjCDaiNuMIix1dWlkdjQ6ItuM2Ygg24zZiCDYotim24wg2ojbjCDZiNuMIDQiLHV1aWR2Njoi24zZiCDbjNmIINii2KbbjCDaiNuMINmI24wgNiIsbmFub2lkOiLZhtuM2YbZiCDYotim24wg2ojbjCIsZ3VpZDoi2KzbjCDbjNmIINii2KbbjCDaiNuMIixjdWlkOiLYs9uMINuM2Ygg2KLYptuMINqI24wiLGN1aWQyOiLYs9uMINuM2Ygg2KLYptuMINqI24wgMiIsdWxpZDoi24zZiCDYp9uM2YQg2KLYptuMINqI24wiLHhpZDoi2KfbjNqp2LMg2KLYptuMINqI24wiLGtzdWlkOiLaqduSINin24zYsyDbjNmIINii2KbbjCDaiNuMIixkYXRldGltZToi2KLYptuMINin24zYsyDYp9mIINqI24zZuSDZudin2KbZhSIsZGF0ZToi2KLYptuMINin24zYsyDYp9mIINiq2KfYsduM2K4iLHRpbWU6Itii2KbbjCDYp9uM2LMg2KfZiCDZiNmC2KoiLGR1cmF0aW9uOiLYotim24wg2KfbjNizINin2Ygg2YXYr9iqIixpcHY0OiLYotim24wg2b7bjCDZiNuMIDQg2KfbjNqI2LHbjNizIixpcHY2OiLYotim24wg2b7bjCDZiNuMIDYg2KfbjNqI2LHbjNizIixjaWRydjQ6Itii2KbbjCDZvtuMINmI24wgNCDYsduM2YbYrCIsY2lkcnY2OiLYotim24wg2b7bjCDZiNuMIDYg2LHbjNmG2KwiLGJhc2U2NDoi2KjbjNizIDY0INin2YYg2qnZiNqI2ogg2LPZudix2YbaryIsYmFzZTY0dXJsOiLYqNuM2LMgNjQg24zZiCDYotixINin24zZhCDYp9mGINqp2YjaiNqIINiz2bnYsdmG2q8iLGpzb25fc3RyaW5nOiLYrNuSINin24zYsyDYp9mIINin24zZhiDYs9m52LHZhtqvIixlMTY0OiLYp9uMIDE2NCDZhtmF2KjYsSIsand0OiLYrNuSINqI2KjZhNuM2Ygg2bnbjCIsdGVtcGxhdGVfbGl0ZXJhbDoi2KfZhiDZvtm5In0sbz17bmFuOiJOYU4iLG51bWJlcjoi2YbZhdio2LEiLGFycmF5OiLYotix25IiLG51bGw6ItmG2YQifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2LrZhNi3INin2YYg2b7ZuTogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9INmF2KrZiNmC2Lkg2Kravtin2IwgJHtzfSDZhdmI2LXZiNmEINuB2YjYp2A6YNi62YTYtyDYp9mGINm+2bk6ICR7aX0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke3N9INmF2YjYtdmI2YQg24HZiNinYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DYutmE2Lcg2KfZhiDZvtm5OiAke2soZS52YWx1ZXNbMF0pfSDZhdiq2YjZgti5INiq2r7Yp2A6YNi62YTYtyDYotm+2LTZhjogJHtfKGUudmFsdWVzLCJ8Iil9INmF24zauiDYs9uSINin24zaqSDZhdiq2YjZgti5INiq2r7Yp2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYqNuB2Kog2KjakdinOiAke2Uub3JpZ2luPz8i2YjbjNmE24zZiCJ9INqp25IgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhtin2LXYsSJ9INuB2YjZhtuSINmF2KrZiNmC2Lkg2KravtuSYDpg2KjbgdiqINio2pHYpzogJHtlLm9yaWdpbj8/ItmI24zZhNuM2YgifSDaqdinICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNio24HYqiDahtq+2YjZudinOiAke2Uub3JpZ2lufSDaqduSICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g24HZiNmG25Ig2YXYqtmI2YLYuSDYqtq+25JgOmDYqNuB2Kog2obavtmI2bnYpzogJHtlLm9yaWdpbn0g2qnYpyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g24HZiNmG2Kcg2YXYqtmI2YLYuSDYqtq+2KdgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2LrZhNi3INiz2bnYsdmG2q86ICIke2kucHJlZml4fSIg2LPbkiDYtNix2YjYuSDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DYutmE2Lcg2LPZudix2YbarzogIiR7aS5zdWZmaXh9IiDZvtixINiu2KrZhSDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtpLmluY2x1ZGVzfSIg2LTYp9mF2YQg24HZiNmG2Kcg2obYp9uB24zbkmA6aS5mb3JtYXQ9PT0icmVnZXgiP2DYutmE2Lcg2LPZudix2Ybarzog2b7bjNm52LHZhiAke2kucGF0dGVybn0g2LPbkiDZhduM2oYg24HZiNmG2Kcg2obYp9uB24zbkmA6YNi62YTYtyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2LrZhNi3INmG2YXYqNixOiAke2UuZGl2aXNvcn0g2qnYpyDZhdi22KfYudmBINuB2YjZhtinINqG2KfbgduM25JgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDYutuM2LEg2KrYs9mE24zZhSDYtNiv24Eg2qnbjCR7ZS5rZXlzLmxlbmd0aD4xPyLYsiI6IiJ9OiAke18oZS5rZXlzLCLYjCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDZhduM2rog2LrZhNi3INqp24xgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIti62YTYtyDYp9mGINm+2bkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDZiNuM2YTbjNmIYDtkZWZhdWx0OnJldHVybiLYutmE2Lcg2KfZhiDZvtm5In19fTtmdW5jdGlvbiBZZigpe3JldHVybntsb2NhbGVFcnJvcjpYZigpfX1jb25zdCBRZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiYmVsZ2kiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxzZXQ6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxtYXA6e3VuaXQ6InlvenV2Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImtpcmlzaCIsZW1haWw6ImVsZWt0cm9uIHBvY2h0YSBtYW56aWxpIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gc2FuYSB2YSB2YXF0aSIsZGF0ZToiSVNPIHNhbmEiLHRpbWU6IklTTyB2YXF0IixkdXJhdGlvbjoiSVNPIGRhdm9taXlsaWsiLGlwdjQ6IklQdjQgbWFuemlsIixpcHY2OiJJUHY2IG1hbnppbCIsbWFjOiJNQUMgbWFuemlsIixjaWRydjQ6IklQdjQgZGlhcGF6b24iLGNpZHJ2NjoiSVB2NiBkaWFwYXpvbiIsYmFzZTY0OiJiYXNlNjQga29kbGFuZ2FuIHNhdHIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGxhbmdhbiBzYXRyIixqc29uX3N0cmluZzoiSlNPTiBzYXRyIixlMTY0OiJFLjE2NCByYXFhbSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImtpcmlzaCJ9LG89e25hbjoiTmFOIixudW1iZXI6InJhcWFtIixhcnJheToibWFzc2l2In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHFhYnVsIHFpbGluZ2FuICR7c31gOmBOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHtpfSwgcWFidWwgcWlsaW5nYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuICR7ayhlLnZhbHVlc1swXSl9YDpgTm90b+KAmGfigJhyaSB2YXJpYW50OiBxdXlpZGFnaWxhcmRhbiBiaXJpIGt1dGlsZ2FuICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BKdWRhIGthdHRhOiBrdXRpbGdhbiAke2Uub3JpZ2luPz8icWl5bWF0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSAke2EudmVyYn1gOmBKdWRhIGthdHRhOiBrdXRpbGdhbiAke2Uub3JpZ2luPz8icWl5bWF0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICIke2kucHJlZml4fSIgYmlsYW4gYm9zaGxhbmlzaGkga2VyYWtgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5zdWZmaXh9IiBiaWxhbiB0dWdhc2hpIGtlcmFrYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5pbmNsdWRlc30iIG5pIG/igJh6IGljaGlnYSBvbGlzaGkga2VyYWtgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTm90b+KAmGfigJhyaSBzYXRyOiAke2kucGF0dGVybn0gc2hhYmxvbmlnYSBtb3Mga2VsaXNoaSBrZXJha2A6YE5vdG/igJhn4oCYcmkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vdG/igJhn4oCYcmkgcmFxYW06ICR7ZS5kaXZpc29yfSBuaW5nIGthcnJhbGlzaSBib+KAmGxpc2hpIGtlcmFrYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTm9tYeKAmWx1bSBrYWxpdCR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBkYWdpIGthbGl0IG5vdG/igJhn4oCYcmlgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5vdG/igJhn4oCYcmkga2lyaXNoIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGRhIG5vdG/igJhn4oCYcmkgcWl5bWF0YDtkZWZhdWx0OnJldHVybiJOb3Rv4oCYZ+KAmHJpIGtpcmlzaCJ9fX07ZnVuY3Rpb24gZWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6UWYoKX19Y29uc3QgdGc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImvDvSB04buxIix2ZXJiOiJjw7MifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJjw7MifSxhcnJheTp7dW5pdDoicGjhuqduIHThu60iLHZlcmI6ImPDsyJ9LHNldDp7dW5pdDoicGjhuqduIHThu60iLHZlcmI6ImPDsyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLEkeG6p3UgdsOgbyIsZW1haWw6IsSR4buLYSBjaOG7iSBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToibmfDoHkgZ2nhu50gSVNPIixkYXRlOiJuZ8OgeSBJU08iLHRpbWU6Imdp4budIElTTyIsZHVyYXRpb246Imtob+G6o25nIHRo4budaSBnaWFuIElTTyIsaXB2NDoixJHhu4thIGNo4buJIElQdjQiLGlwdjY6IsSR4buLYSBjaOG7iSBJUHY2IixjaWRydjQ6ImThuqNpIElQdjQiLGNpZHJ2NjoiZOG6o2kgSVB2NiIsYmFzZTY0OiJjaHXhu5dpIG3DoyBow7NhIGJhc2U2NCIsYmFzZTY0dXJsOiJjaHXhu5dpIG3DoyBow7NhIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNodeG7l2kgSlNPTiIsZTE2NDoic+G7kSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSR4bqndSB2w6BvIn0sbz17bmFuOiJOYU4iLG51bWJlcjoic+G7kSIsYXJyYXk6Im3huqNuZyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBuaOG6rW4gxJHGsOG7o2MgJHtzfWA6YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke2l9LCBuaOG6rW4gxJHGsOG7o2MgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpICR7ayhlLnZhbHVlc1swXSl9YDpgVMO5eSBjaOG7jW4ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIG3hu5l0IHRyb25nIGPDoWMgZ2nDoSB0cuG7iyAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUXXDoSBs4bubbjogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbj8/Imdpw6EgdHLhu4sifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icGjhuqduIHThu60ifWA6YFF1w6EgbOG7m246IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW4/PyJnacOhIHRy4buLIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUXXDoSBuaOG7jzogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBRdcOhIG5o4buPOiBtb25nIMSR4bujaSAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGLhuq90IMSR4bqndSBi4bqxbmcgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGvhur90IHRow7pjIGLhurFuZyAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBiYW8gZ+G7k20gIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBraOG7m3AgduG7m2kgbeG6q3UgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGtow7RuZyBo4bujcCBs4buHYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFPhu5Ega2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBsw6AgYuG7mWkgc+G7kSBj4bunYSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLaMOzYSBraMO0bmcgxJHGsOG7o2Mgbmjhuq1uIGThuqFuZzogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLaMOzYSBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4ixJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4ciO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gR2nDoSB0cuG7iyBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4ixJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4cifX19O2Z1bmN0aW9uIG5nKCl7cmV0dXJue2xvY2FsZUVycm9yOnRnKCl9fWNvbnN0IHJnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLlrZfnrKYiLHZlcmI6IuWMheWQqyJ9LGZpbGU6e3VuaXQ6IuWtl+iKgiIsdmVyYjoi5YyF5ZCrIn0sYXJyYXk6e3VuaXQ6IumhuSIsdmVyYjoi5YyF5ZCrIn0sc2V0Ont1bml0OiLpobkiLHZlcmI6IuWMheWQqyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLovpPlhaUiLGVtYWlsOiLnlLXlrZDpgq7ku7YiLHVybDoiVVJMIixlbW9qaToi6KGo5oOF56ym5Y+3Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU0/ml6XmnJ/ml7bpl7QiLGRhdGU6IklTT+aXpeacnyIsdGltZToiSVNP5pe26Ze0IixkdXJhdGlvbjoiSVNP5pe26ZW/IixpcHY0OiJJUHY05Zyw5Z2AIixpcHY2OiJJUHY25Zyw5Z2AIixjaWRydjQ6IklQdjTnvZHmrrUiLGNpZHJ2NjoiSVB2Nue9keautSIsYmFzZTY0OiJiYXNlNjTnvJbnoIHlrZfnrKbkuLIiLGJhc2U2NHVybDoiYmFzZTY0dXJs57yW56CB5a2X56ym5LiyIixqc29uX3N0cmluZzoiSlNPTuWtl+espuS4siIsZTE2NDoiRS4xNjTlj7fnoIEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLovpPlhaUifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLmlbDlrZciLGFycmF5OiLmlbDnu4QiLG51bGw6IuepuuWAvChudWxsKSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2Dml6DmlYjovpPlhaXvvJrmnJ/mnJsgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR977yM5a6e6ZmF5o6l5pS2ICR7c31gOmDml6DmlYjovpPlhaXvvJrmnJ/mnJsgJHtpfe+8jOWunumZheaOpeaUtiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2Dml6DmlYjovpPlhaXvvJrmnJ/mnJsgJHtrKGUudmFsdWVzWzBdKX1gOmDml6DmlYjpgInpobnvvJrmnJ/mnJvku6XkuIvkuYvkuIAgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVsOWAvOi/h+Wkp++8muacn+acmyAke2Uub3JpZ2luPz8i5YC8In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i5Liq5YWD57SgIn1gOmDmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtlLm9yaWdpbj8/IuWAvCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVsOWAvOi/h+Wwj++8muacn+acmyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg5pWw5YC86L+H5bCP77ya5pyf5pybICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgIiR7aS5wcmVmaXh9IiDlvIDlpLRgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+S7pSAiJHtpLnN1ZmZpeH0iIOe7k+WwvmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4XpobvljIXlkKsgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+a7oei2s+ato+WImeihqOi+vuW8jyAke2kucGF0dGVybn1gOmDml6DmlYgke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g5peg5pWI5pWw5a2X77ya5b+F6aG75pivICR7ZS5kaXZpc29yfSDnmoTlgI3mlbBgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDlh7rnjrDmnKrnn6XnmoTplK4oa2V5KTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDkuK3nmoTplK4oa2V5KeaXoOaViGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i5peg5pWI6L6T5YWlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reWMheWQq+aXoOaViOWAvCh2YWx1ZSlgO2RlZmF1bHQ6cmV0dXJuIuaXoOaViOi+k+WFpSJ9fX07ZnVuY3Rpb24gaWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6cmcoKX19Y29uc3Qgb2c9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuWtl+WFgyIsdmVyYjoi5pOB5pyJIn0sZmlsZTp7dW5pdDoi5L2N5YWD57WEIix2ZXJiOiLmk4HmnIkifSxhcnJheTp7dW5pdDoi6aCF55uuIix2ZXJiOiLmk4HmnIkifSxzZXQ6e3VuaXQ6IumgheebriIsdmVyYjoi5pOB5pyJIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Iui8uOWFpSIsZW1haWw6IumDteS7tuWcsOWdgCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOaXpeacn+aZgumWkyIsZGF0ZToiSVNPIOaXpeacnyIsdGltZToiSVNPIOaZgumWkyIsZHVyYXRpb246IklTTyDmnJ/plpMiLGlwdjQ6IklQdjQg5L2N5Z2AIixpcHY2OiJJUHY2IOS9jeWdgCIsY2lkcnY0OiJJUHY0IOevhOWcjSIsY2lkcnY2OiJJUHY2IOevhOWcjSIsYmFzZTY0OiJiYXNlNjQg57eo56K85a2X5LiyIixiYXNlNjR1cmw6ImJhc2U2NHVybCDnt6jnorzlrZfkuLIiLGpzb25fc3RyaW5nOiJKU09OIOWtl+S4siIsZTE2NDoiRS4xNjQg5pW45YC8Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi6Ly45YWlIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfe+8jOS9huaUtuWIsCAke3N9YDpg54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6ICR7aX3vvIzkvYbmlLbliLAgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6ICR7ayhlLnZhbHVlc1swXSl9YDpg54Sh5pWI55qE6YG46aCF77ya6aCQ5pyf54K65Lul5LiL5YW25Lit5LmL5LiAICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtlLm9yaWdpbj8/IuWAvCJ9IOaHieeCuiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLlgIvlhYPntKAifWA6YOaVuOWAvOmBjuWkp++8mumgkOacnyAke2Uub3JpZ2luPz8i5YC8In0g5oeJ54K6ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVuOWAvOmBjuWwj++8mumgkOacnyAke2Uub3JpZ2lufSDmh4nngrogJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOaVuOWAvOmBjuWwj++8mumgkOacnyAke2Uub3JpZ2lufSDmh4nngrogJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSAiJHtpLnByZWZpeH0iIOmWi+mgrWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5LulICIke2kuc3VmZml4fSIg57WQ5bC+YDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOWMheWQqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI56ym5ZCI5qC85byPICR7aS5wYXR0ZXJufWA6YOeEoeaViOeahCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g54Sh5pWI55qE5pW45a2X77ya5b+F6aCI54K6ICR7ZS5kaXZpc29yfSDnmoTlgI3mlbhgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDnhKHms5XorZjliKXnmoTpjbXlgLwke2Uua2V5cy5sZW5ndGg+MT8i5YCRIjoiIn3vvJoke18oZS5rZXlzLCLjgIEiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTpjbXlgLxgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTlgLxgO2RlZmF1bHQ6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCJ9fX07ZnVuY3Rpb24gYWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6b2coKX19Y29uc3Qgc2c9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IsOgbWkiLHZlcmI6Im7DrSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJuw60ifSxhcnJheTp7dW5pdDoibmthbiIsdmVyYjoibsOtIn0sc2V0Ont1bml0OiJua2FuIix2ZXJiOiJuw60ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4bq5zIBy4buNIMOsYsOhd+G7jWzDqSIsZW1haWw6IsOgZMOtcuG6ucyBc8OsIMOsbeG6ucyBbMOsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLDoGvDs2vDsiBJU08iLGRhdGU6IuG7jWrhu43MgSBJU08iLHRpbWU6IsOga8Oza8OyIElTTyIsZHVyYXRpb246IsOga8Oza8OyIHTDsyBww6kgSVNPIixpcHY0OiLDoGTDrXLhurnMgXPDrCBJUHY0IixpcHY2OiLDoGTDrXLhurnMgXPDrCBJUHY2IixjaWRydjQ6IsOgZ2LDqGdiw6ggSVB2NCIsY2lkcnY2OiLDoGdiw6hnYsOoIElQdjYiLGJhc2U2NDoi4buNzIBy4buNzIAgdMOtIGEga+G7jcyBIG7DrSBiYXNlNjQiLGJhc2U2NHVybDoi4buNzIBy4buNzIAgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4buNzIBy4buNzIAgSlNPTiIsZTE2NDoibuG7jcyBbWLDoCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuG6ucyAcuG7jSDDrGLDoXfhu41sw6kifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJu4buNzIFtYsOgIixhcnJheToiYWtvcOG7jSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDDoG3hu43MgCBhIHLDrSAke3N9YDpgw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7aX0sIMOgbeG7jcyAIGEgcsOtICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke2soZS52YWx1ZXNbMF0pfWA6YMOA4bmjw6B5w6BuIGHhuaPDrOG5o2U6IHlhbiDhu43MgGthbiBsw6FyYSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMOzIHDhu43MgCBqw7k6IGEgbsOtIGzDoXRpIGrhurnMgSBww6kgJHtlLm9yaWdpbj8/Iml5ZSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW19ICR7YS51bml0fWA6YFTDsyBw4buNzIAgasO5OiBhIG7DrSBsw6F0aSBq4bq5zIEgJHtpfSR7ZS5tYXhpbXVtfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEvDqXLDqSBqdTogYSBuw60gbMOhdGkgauG6ucyBIHDDqSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtfSAke2EudW5pdH1gOmBLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSAke2l9JHtlLm1pbmltdW19YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYuG6ucyAcuG6ucyAIHDhurnMgGzDuiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIHBhcsOtIHDhurnMgGzDuiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgbsOtICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGLDoSDDoHDhurnhurly4bq5IG11ICR7aS5wYXR0ZXJufWA6YEHhuaPDrOG5o2U6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBO4buNzIFtYsOgIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgauG6ucyBIMOoecOgIHDDrXDDrW4gdGkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQuG7jXTDrG7DrCDDoMOsbeG7jcyAOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYELhu410w6xuw6wgYeG5o8Os4bmjZSBuw61uw7ogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEl5ZSBh4bmjw6zhuaNlIG7DrW7DuiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iw4xiw6F34buNbMOpIGHhuaPDrOG5o2UifX19O2Z1bmN0aW9uIGNnKCl7cmV0dXJue2xvY2FsZUVycm9yOnNnKCl9fWNvbnN0IFVpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxhcjokcCxhejpicCxiZTprcCxiZzp3cCxjYTp6cCxjczpUcCxkYTpVcCxkZTpPcCxlbDpOcCxlbjpjbCxlbzpScCxlczpBcCxmYTpNcCxmaTpGcCxmcjpIcCxmckNBOktwLGhlOkJwLGhyOlhwLGh1OlFwLGh5OnRmLGlkOnJmLGlzOmFmLGl0OmNmLGphOmxmLGthOm1mLGtoOmZmLGttOnVsLGtvOnZmLGx0OiRmLG1rOmJmLG1zOmtmLG5sOndmLG5vOnpmLG90YTpUZixwbDpPZixwczpVZixwdDpOZixybzpaZixydTpDZixzbDpMZixzdjpxZix0YTpKZix0aDpWZix0cjpXZix1YTpHZix1azpsbCx1cjpZZix1ejplZyx2aTpuZyx5bzpjZyx6aENOOmlnLHpoVFc6YWd9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7dmFyICRzO2NvbnN0IFBpPVN5bWJvbCgiWm9kT3V0cHV0IiksT2k9U3ltYm9sKCJab2RJbnB1dCIpO2NsYXNzIGRse2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXB9YWRkKG4sLi4ucil7Y29uc3Qgbz1yWzBdO3JldHVybiB0aGlzLl9tYXAuc2V0KG4sbyksbyYmdHlwZW9mIG89PSJvYmplY3QiJiYiaWQiaW4gbyYmdGhpcy5faWRtYXAuc2V0KG8uaWQsbiksdGhpc31jbGVhcigpe3JldHVybiB0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcCx0aGlzfXJlbW92ZShuKXtjb25zdCByPXRoaXMuX21hcC5nZXQobik7cmV0dXJuIHImJnR5cGVvZiByPT0ib2JqZWN0IiYmImlkImluIHImJnRoaXMuX2lkbWFwLmRlbGV0ZShyLmlkKSx0aGlzLl9tYXAuZGVsZXRlKG4pLHRoaXN9Z2V0KG4pe2NvbnN0IHI9bi5fem9kLnBhcmVudDtpZihyKXtjb25zdCBvPXsuLi50aGlzLmdldChyKT8/e319O2RlbGV0ZSBvLmlkO2NvbnN0IGU9ey4uLm8sLi4udGhpcy5fbWFwLmdldChuKX07cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD9lOnZvaWQgMH1yZXR1cm4gdGhpcy5fbWFwLmdldChuKX1oYXMobil7cmV0dXJuIHRoaXMuX21hcC5oYXMobil9fWZ1bmN0aW9uIEpuKCl7cmV0dXJuIG5ldyBkbH0oJHM9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsUmVnaXN0cnk/Pygkcy5fX3pvZF9nbG9iYWxSZWdpc3RyeT1KbigpKTtjb25zdCByZT1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5O2Z1bmN0aW9uIG1sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLC4uLmgobil9KX1mdW5jdGlvbiBwbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIERpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZW1haWwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gUG4odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJndWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIE5pKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBFaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIFppKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY2IiwuLi5oKG4pfSl9ZnVuY3Rpb24gUmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjciLC4uLmgobil9KX1mdW5jdGlvbiBIbih0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBDaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtb2ppIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEFpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibmFub2lkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIExpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBNaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQyIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIHFpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidWxpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBGaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InhpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBKaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImtzdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEhpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaXB2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBWaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjYiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gZmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJtYWMiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gS2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gV2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjYiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gQmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gR2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjR1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gWGkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlMTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFlpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiand0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWNvbnN0IFFpPXtBbnk6bnVsbCxNaW51dGU6LTEsU2Vjb25kOjAsTWlsbGlzZWNvbmQ6MyxNaWNyb3NlY29uZDo2fTtmdW5jdGlvbiBnbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGV0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLmgobil9KX1mdW5jdGlvbiB2bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gaGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIscHJlY2lzaW9uOm51bGwsLi4uaChuKX0pfWZ1bmN0aW9uICRsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZHVyYXRpb24iLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gX2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2tzOltdLC4uLmgobil9KX1mdW5jdGlvbiBibCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjb2VyY2U6ITAsY2hlY2tzOltdLC4uLmgobil9KX1mdW5jdGlvbiB5bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi5oKG4pfSl9ZnVuY3Rpb24ga2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIFNsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLmgobil9KX1mdW5jdGlvbiB3bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIElsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIHpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJib29sZWFuIiwuLi5oKG4pfSl9ZnVuY3Rpb24geGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gVGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsLi4uaChuKX0pfWZ1bmN0aW9uIGpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gVWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLmgobil9KX1mdW5jdGlvbiBQbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLmgobil9KX1mdW5jdGlvbiBPbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3ltYm9sIiwuLi5oKG4pfSl9ZnVuY3Rpb24gRGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuZGVmaW5lZCIsLi4uaChuKX0pfWZ1bmN0aW9uIE5sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudWxsIiwuLi5oKG4pfSl9ZnVuY3Rpb24gRWwodCl7cmV0dXJuIG5ldyB0KHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gWmwodCl7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIFJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJuZXZlciIsLi4uaChuKX0pfWZ1bmN0aW9uIENsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ2b2lkIiwuLi5oKG4pfSl9ZnVuY3Rpb24gQWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImRhdGUiLC4uLmgobil9KX1mdW5jdGlvbiBMbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBNbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibmFuIiwuLi5oKG4pfSl9ZnVuY3Rpb24gJGUodCxuKXtyZXR1cm4gbmV3IGJpKHtjaGVjazoibGVzc190aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gaWUodCxuKXtyZXR1cm4gbmV3IGJpKHtjaGVjazoibGVzc190aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gX2UodCxuKXtyZXR1cm4gbmV3IHlpKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gdGUodCxuKXtyZXR1cm4gbmV3IHlpKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gVm4odCl7cmV0dXJuIF9lKDAsdCl9ZnVuY3Rpb24gS24odCl7cmV0dXJuICRlKDAsdCl9ZnVuY3Rpb24gV24odCl7cmV0dXJuIGllKDAsdCl9ZnVuY3Rpb24gQm4odCl7cmV0dXJuIHRlKDAsdCl9ZnVuY3Rpb24gVWUodCxuKXtyZXR1cm4gbmV3IGpjKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLmgobiksdmFsdWU6dH0pfWZ1bmN0aW9uIEVlKHQsbil7cmV0dXJuIG5ldyBPYyh7Y2hlY2s6Im1heF9zaXplIiwuLi5oKG4pLG1heGltdW06dH0pfWZ1bmN0aW9uIGJlKHQsbil7cmV0dXJuIG5ldyBEYyh7Y2hlY2s6Im1pbl9zaXplIiwuLi5oKG4pLG1pbmltdW06dH0pfWZ1bmN0aW9uIFhlKHQsbil7cmV0dXJuIG5ldyBOYyh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi5oKG4pLHNpemU6dH0pfWZ1bmN0aW9uIFllKHQsbil7cmV0dXJuIG5ldyBFYyh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLmgobiksbWF4aW11bTp0fSl9ZnVuY3Rpb24ga2UodCxuKXtyZXR1cm4gbmV3IFpjKHtjaGVjazoibWluX2xlbmd0aCIsLi4uaChuKSxtaW5pbXVtOnR9KX1mdW5jdGlvbiBRZSh0LG4pe3JldHVybiBuZXcgUmMoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi5oKG4pLGxlbmd0aDp0fSl9ZnVuY3Rpb24gVHQodCxuKXtyZXR1cm4gbmV3IENjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4uaChuKSxwYXR0ZXJuOnR9KX1mdW5jdGlvbiBqdCh0KXtyZXR1cm4gbmV3IEFjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLmgodCl9KX1mdW5jdGlvbiBVdCh0KXtyZXR1cm4gbmV3IExjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLmgodCl9KX1mdW5jdGlvbiBQdCh0LG4pe3JldHVybiBuZXcgTWMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi5oKG4pLGluY2x1ZGVzOnR9KX1mdW5jdGlvbiBPdCh0LG4pe3JldHVybiBuZXcgcWMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi5oKG4pLHByZWZpeDp0fSl9ZnVuY3Rpb24gRHQodCxuKXtyZXR1cm4gbmV3IEZjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLmgobiksc3VmZml4OnR9KX1mdW5jdGlvbiBHbih0LG4scil7cmV0dXJuIG5ldyBKYyh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTp0LHNjaGVtYTpuLC4uLmgocil9KX1mdW5jdGlvbiBOdCh0LG4pe3JldHVybiBuZXcgSGMoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6dCwuLi5oKG4pfSl9ZnVuY3Rpb24gdmUodCl7cmV0dXJuIG5ldyBWYyh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6dH0pfWZ1bmN0aW9uIEV0KHQpe3JldHVybiB2ZShuPT5uLm5vcm1hbGl6ZSh0KSl9ZnVuY3Rpb24gWnQoKXtyZXR1cm4gdmUodD0+dC50cmltKCkpfWZ1bmN0aW9uIFJ0KCl7cmV0dXJuIHZlKHQ9PnQudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gQ3QoKXtyZXR1cm4gdmUodD0+dC50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBBdCgpe3JldHVybiB2ZSh0PT5qcyh0KSl9ZnVuY3Rpb24gcWwodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6biwuLi5oKHIpfSl9ZnVuY3Rpb24gdWcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6biwuLi5oKHIpfSl9ZnVuY3Rpb24gbGcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6bixpbmNsdXNpdmU6ITEsLi4uaChyKX0pfWZ1bmN0aW9uIGRnKHQsbixyLG8pe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6cixkaXNjcmltaW5hdG9yOm4sLi4uaChvKX0pfWZ1bmN0aW9uIG1nKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDpuLHJpZ2h0OnJ9KX1mdW5jdGlvbiBwZyh0LG4scixvKXtjb25zdCBlPXIgaW5zdGFuY2VvZiBJLGk9ZT9vOnIsYT1lP3I6bnVsbDtyZXR1cm4gbmV3IHQoe3R5cGU6InR1cGxlIixpdGVtczpuLHJlc3Q6YSwuLi5oKGkpfSl9ZnVuY3Rpb24gZmcodCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6bix2YWx1ZVR5cGU6ciwuLi5oKG8pfSl9ZnVuY3Rpb24gZ2codCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJtYXAiLGtleVR5cGU6bix2YWx1ZVR5cGU6ciwuLi5oKG8pfSl9ZnVuY3Rpb24gdmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToic2V0Iix2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gaGcodCxuLHIpe2NvbnN0IG89QXJyYXkuaXNBcnJheShuKT9PYmplY3QuZnJvbUVudHJpZXMobi5tYXAoZT0+W2UsZV0pKTpuO3JldHVybiBuZXcgdCh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLmgocil9KX1mdW5jdGlvbiAkZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJlbnVtIixlbnRyaWVzOm4sLi4uaChyKX0pfWZ1bmN0aW9uIF9nKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KG4pP246W25dLC4uLmgocil9KX1mdW5jdGlvbiBGbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZmlsZSIsLi4uaChuKX0pfWZ1bmN0aW9uIGJnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTpufSl9ZnVuY3Rpb24geWcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIGtnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBTZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6bixnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoKTpSbihyKX19KX1mdW5jdGlvbiB3Zyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIElnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIHpnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6bixjYXRjaFZhbHVlOnR5cGVvZiByPT0iZnVuY3Rpb24iP3I6KCk9PnJ9KX1mdW5jdGlvbiB4Zyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJwaXBlIixpbjpuLG91dDpyfSl9ZnVuY3Rpb24gVGcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIGpnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOm4sLi4uaChyKX0pfWZ1bmN0aW9uIFVnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJsYXp5IixnZXR0ZXI6bn0pfWZ1bmN0aW9uIFBnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIEpsKHQsbixyKXtjb25zdCBvPWgocik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgdCh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpuLC4uLm99KX1mdW5jdGlvbiBIbCh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOm4sLi4uaChyKX0pfWZ1bmN0aW9uIFZsKHQsbil7Y29uc3Qgcj1LbChvPT4oby5hZGRJc3N1ZT1lPT57aWYodHlwZW9mIGU9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goTWUoZSxvLnZhbHVlLHIuX3pvZC5kZWYpKTtlbHNle2NvbnN0IGk9ZTtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSxpLmlucHV0Pz8oaS5pbnB1dD1vLnZhbHVlKSxpLmluc3Q/PyhpLmluc3Q9ciksaS5jb250aW51ZT8/KGkuY29udGludWU9IXIuX3pvZC5kZWYuYWJvcnQpLG8uaXNzdWVzLnB1c2goTWUoaSkpfX0sdChvLnZhbHVlLG8pKSxuKTtyZXR1cm4gcn1mdW5jdGlvbiBLbCh0LG4pe2NvbnN0IHI9bmV3IE0oe2NoZWNrOiJjdXN0b20iLC4uLmgobil9KTtyZXR1cm4gci5fem9kLmNoZWNrPXQscn1mdW5jdGlvbiBXbCh0KXtjb25zdCBuPW5ldyBNKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIG4uX3pvZC5vbmF0dGFjaD1bcj0+e2NvbnN0IG89cmUuZ2V0KHIpPz97fTtyZS5hZGQocix7Li4ubyxkZXNjcmlwdGlvbjp0fSl9XSxuLl96b2QuY2hlY2s9KCk9Pnt9LG59ZnVuY3Rpb24gQmwodCl7Y29uc3Qgbj1uZXcgTSh7Y2hlY2s6Im1ldGEifSk7cmV0dXJuIG4uX3pvZC5vbmF0dGFjaD1bcj0+e2NvbnN0IG89cmUuZ2V0KHIpPz97fTtyZS5hZGQocix7Li4ubywuLi50fSl9XSxuLl96b2QuY2hlY2s9KCk9Pnt9LG59ZnVuY3Rpb24gR2wodCxuKXtjb25zdCByPWgobik7bGV0IG89ci50cnV0aHk/P1sidHJ1ZSIsIjEiLCJ5ZXMiLCJvbiIsInkiLCJlbmFibGVkIl0sZT1yLmZhbHN5Pz9bImZhbHNlIiwiMCIsIm5vIiwib2ZmIiwibiIsImRpc2FibGVkIl07ci5jYXNlIT09InNlbnNpdGl2ZSImJihvPW8ubWFwKCQ9PnR5cGVvZiAkPT0ic3RyaW5nIj8kLnRvTG93ZXJDYXNlKCk6JCksZT1lLm1hcCgkPT50eXBlb2YgJD09InN0cmluZyI/JC50b0xvd2VyQ2FzZSgpOiQpKTtjb25zdCBpPW5ldyBTZXQobyksYT1uZXcgU2V0KGUpLHM9dC5Db2RlYz8/amksYz10LkJvb2xlYW4/P3dpLHU9dC5TdHJpbmc/P3h0LGw9bmV3IHUoe3R5cGU6InN0cmluZyIsZXJyb3I6ci5lcnJvcn0pLGc9bmV3IGMoe3R5cGU6ImJvb2xlYW4iLGVycm9yOnIuZXJyb3J9KSx2PW5ldyBzKHt0eXBlOiJwaXBlIixpbjpsLG91dDpnLHRyYW5zZm9ybTooKCQseSk9PntsZXQgcT0kO3JldHVybiByLmNhc2UhPT0ic2Vuc2l0aXZlIiYmKHE9cS50b0xvd2VyQ2FzZSgpKSxpLmhhcyhxKT8hMDphLmhhcyhxKT8hMTooeS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsZXhwZWN0ZWQ6InN0cmluZ2Jvb2wiLHZhbHVlczpbLi4uaSwuLi5hXSxpbnB1dDp5LnZhbHVlLGluc3Q6dixjb250aW51ZTohMX0pLHt9KX0pLHJldmVyc2VUcmFuc2Zvcm06KCgkLHkpPT4kPT09ITA/b1swXXx8InRydWUiOmVbMF18fCJmYWxzZSIpLGVycm9yOnIuZXJyb3J9KTtyZXR1cm4gdn1mdW5jdGlvbiBMdCh0LG4scixvPXt9KXtjb25zdCBlPWgobyksaT17Li4uaChvKSxjaGVjazoic3RyaW5nX2Zvcm1hdCIsdHlwZToic3RyaW5nIixmb3JtYXQ6bixmbjp0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yOnM9PnIudGVzdChzKSwuLi5lfTtyZXR1cm4gciBpbnN0YW5jZW9mIFJlZ0V4cCYmKGkucGF0dGVybj1yKSxuZXcgdChpKX1mdW5jdGlvbiBGZSh0KXtsZXQgbj10Py50YXJnZXQ/PyJkcmFmdC0yMDIwLTEyIjtyZXR1cm4gbj09PSJkcmFmdC00IiYmKG49ImRyYWZ0LTA0Iiksbj09PSJkcmFmdC03IiYmKG49ImRyYWZ0LTA3Iikse3Byb2Nlc3NvcnM6dC5wcm9jZXNzb3JzPz97fSxtZXRhZGF0YVJlZ2lzdHJ5OnQ/Lm1ldGFkYXRhPz9yZSx0YXJnZXQ6bix1bnJlcHJlc2VudGFibGU6dD8udW5yZXByZXNlbnRhYmxlPz8idGhyb3ciLG92ZXJyaWRlOnQ/Lm92ZXJyaWRlPz8oKCk9Pnt9KSxpbzp0Py5pbz8/Im91dHB1dCIsY291bnRlcjowLHNlZW46bmV3IE1hcCxjeWNsZXM6dD8uY3ljbGVzPz8icmVmIixyZXVzZWQ6dD8ucmV1c2VkPz8iaW5saW5lIixleHRlcm5hbDp0Py5leHRlcm5hbD8/dm9pZCAwfX1mdW5jdGlvbiBFKHQsbixyPXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgbztjb25zdCBlPXQuX3pvZC5kZWYsaT1uLnNlZW4uZ2V0KHQpO2lmKGkpcmV0dXJuIGkuY291bnQrKyxyLnNjaGVtYVBhdGguaW5jbHVkZXModCkmJihpLmN5Y2xlPXIucGF0aCksaS5zY2hlbWE7Y29uc3QgYT17c2NoZW1hOnt9LGNvdW50OjEsY3ljbGU6dm9pZCAwLHBhdGg6ci5wYXRofTtuLnNlZW4uc2V0KHQsYSk7Y29uc3Qgcz10Ll96b2QudG9KU09OU2NoZW1hPy4oKTtpZihzKWEuc2NoZW1hPXM7ZWxzZXtjb25zdCBsPXsuLi5yLHNjaGVtYVBhdGg6Wy4uLnIuc2NoZW1hUGF0aCx0XSxwYXRoOnIucGF0aH07aWYodC5fem9kLnByb2Nlc3NKU09OU2NoZW1hKXQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYShuLGEuc2NoZW1hLGwpO2Vsc2V7Y29uc3Qgdj1hLnNjaGVtYSwkPW4ucHJvY2Vzc29yc1tlLnR5cGVdO2lmKCEkKXRocm93IG5ldyBFcnJvcihgW3RvSlNPTlNjaGVtYV06IE5vbi1yZXByZXNlbnRhYmxlIHR5cGUgZW5jb3VudGVyZWQ6ICR7ZS50eXBlfWApOyQodCxuLHYsbCl9Y29uc3QgZz10Ll96b2QucGFyZW50O2cmJihhLnJlZnx8KGEucmVmPWcpLEUoZyxuLGwpLG4uc2Vlbi5nZXQoZykuaXNQYXJlbnQ9ITApfWNvbnN0IGM9bi5tZXRhZGF0YVJlZ2lzdHJ5LmdldCh0KTtyZXR1cm4gYyYmT2JqZWN0LmFzc2lnbihhLnNjaGVtYSxjKSxuLmlvPT09ImlucHV0IiYmZWUodCkmJihkZWxldGUgYS5zY2hlbWEuZXhhbXBsZXMsZGVsZXRlIGEuc2NoZW1hLmRlZmF1bHQpLG4uaW89PT0iaW5wdXQiJiYiX3ByZWZhdWx0ImluIGEuc2NoZW1hJiYoKG89YS5zY2hlbWEpLmRlZmF1bHQ/PyhvLmRlZmF1bHQ9YS5zY2hlbWEuX3ByZWZhdWx0KSksZGVsZXRlIGEuc2NoZW1hLl9wcmVmYXVsdCxuLnNlZW4uZ2V0KHQpLnNjaGVtYX1mdW5jdGlvbiBKZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQ7aWYocyl7Y29uc3QgYz1vLmdldChzKTtpZihjJiZjIT09YVswXSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBzY2hlbWEgaWQgIiR7c30iIGRldGVjdGVkIGR1cmluZyBKU09OIFNjaGVtYSBjb252ZXJzaW9uLiBUd28gZGlmZmVyZW50IHNjaGVtYXMgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGlkIHdoZW4gY29udmVydGVkIHRvZ2V0aGVyLmApO28uc2V0KHMsYVswXSl9fWNvbnN0IGU9YT0+e2NvbnN0IHM9dC50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2lmKHQuZXh0ZXJuYWwpe2NvbnN0IGc9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQoYVswXSk/LmlkLHY9dC5leHRlcm5hbC51cmk/Pyh5PT55KTtpZihnKXJldHVybntyZWY6dihnKX07Y29uc3QgJD1hWzFdLmRlZklkPz9hWzFdLnNjaGVtYS5pZD8/YHNjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm4gYVsxXS5kZWZJZD0kLHtkZWZJZDokLHJlZjpgJHt2KCJfX3NoYXJlZCIpfSMvJHtzfS8keyR9YH19aWYoYVsxXT09PXIpcmV0dXJue3JlZjoiIyJ9O2NvbnN0IHU9YCMvJHtzfS9gLGw9YVsxXS5zY2hlbWEuaWQ/P2BfX3NjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm57ZGVmSWQ6bCxyZWY6dStsfX0saT1hPT57aWYoYVsxXS5zY2hlbWEuJHJlZilyZXR1cm47Y29uc3Qgcz1hWzFdLHtyZWY6YyxkZWZJZDp1fT1lKGEpO3MuZGVmPXsuLi5zLnNjaGVtYX0sdSYmKHMuZGVmSWQ9dSk7Y29uc3QgbD1zLnNjaGVtYTtmb3IoY29uc3QgZyBpbiBsKWRlbGV0ZSBsW2ddO2wuJHJlZj1jfTtpZih0LmN5Y2xlcz09PSJ0aHJvdyIpZm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz1hWzFdO2lmKHMuY3ljbGUpdGhyb3cgbmV3IEVycm9yKGBDeWNsZSBkZXRlY3RlZDogIy8ke3MuY3ljbGU/LmpvaW4oIi8iKX0vPHJvb3Q+CgpTZXQgdGhlIFxgY3ljbGVzXGAgcGFyYW1ldGVyIHRvIFxgInJlZiJcYCB0byByZXNvbHZlIGN5Y2xpY2FsIHNjaGVtYXMgd2l0aCBkZWZzLmApfWZvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9YVsxXTtpZihuPT09YVswXSl7aShhKTtjb250aW51ZX1pZih0LmV4dGVybmFsKXtjb25zdCB1PXQuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGFbMF0pPy5pZDtpZihuIT09YVswXSYmdSl7aShhKTtjb250aW51ZX19aWYodC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQpe2koYSk7Y29udGludWV9aWYocy5jeWNsZSl7aShhKTtjb250aW51ZX1pZihzLmNvdW50PjEmJnQucmV1c2VkPT09InJlZiIpe2koYSk7Y29udGludWV9fX1mdW5jdGlvbiBIZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1zPT57Y29uc3QgYz10LnNlZW4uZ2V0KHMpO2lmKGMucmVmPT09bnVsbClyZXR1cm47Y29uc3QgdT1jLmRlZj8/Yy5zY2hlbWEsbD17Li4udX0sZz1jLnJlZjtpZihjLnJlZj1udWxsLGcpe28oZyk7Y29uc3QgJD10LnNlZW4uZ2V0KGcpLHk9JC5zY2hlbWE7aWYoeS4kcmVmJiYodC50YXJnZXQ9PT0iZHJhZnQtMDcifHx0LnRhcmdldD09PSJkcmFmdC0wNCJ8fHQudGFyZ2V0PT09Im9wZW5hcGktMy4wIik/KHUuYWxsT2Y9dS5hbGxPZj8/W10sdS5hbGxPZi5wdXNoKHkpKTpPYmplY3QuYXNzaWduKHUseSksT2JqZWN0LmFzc2lnbih1LGwpLHMuX3pvZC5wYXJlbnQ9PT1nKWZvcihjb25zdCBSIGluIHUpUj09PSIkcmVmInx8Uj09PSJhbGxPZiJ8fFIgaW4gbHx8ZGVsZXRlIHVbUl07aWYoeS4kcmVmJiYkLmRlZilmb3IoY29uc3QgUiBpbiB1KVI9PT0iJHJlZiJ8fFI9PT0iYWxsT2YifHxSIGluICQuZGVmJiZKU09OLnN0cmluZ2lmeSh1W1JdKT09PUpTT04uc3RyaW5naWZ5KCQuZGVmW1JdKSYmZGVsZXRlIHVbUl19Y29uc3Qgdj1zLl96b2QucGFyZW50O2lmKHYmJnYhPT1nKXtvKHYpO2NvbnN0ICQ9dC5zZWVuLmdldCh2KTtpZigkPy5zY2hlbWEuJHJlZiYmKHUuJHJlZj0kLnNjaGVtYS4kcmVmLCQuZGVmKSlmb3IoY29uc3QgeSBpbiB1KXk9PT0iJHJlZiJ8fHk9PT0iYWxsT2YifHx5IGluICQuZGVmJiZKU09OLnN0cmluZ2lmeSh1W3ldKT09PUpTT04uc3RyaW5naWZ5KCQuZGVmW3ldKSYmZGVsZXRlIHVbeV19dC5vdmVycmlkZSh7em9kU2NoZW1hOnMsanNvblNjaGVtYTp1LHBhdGg6Yy5wYXRoPz9bXX0pfTtmb3IoY29uc3QgcyBvZlsuLi50LnNlZW4uZW50cmllcygpXS5yZXZlcnNlKCkpbyhzWzBdKTtjb25zdCBlPXt9O2lmKHQudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiP2UuJHNjaGVtYT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiOnQudGFyZ2V0PT09ImRyYWZ0LTA3Ij9lLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI6dC50YXJnZXQ9PT0iZHJhZnQtMDQiP2UuJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIjp0LnRhcmdldCx0LmV4dGVybmFsPy51cmkpe2NvbnN0IHM9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQobik/LmlkO2lmKCFzKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYW4gYGlkYCBwcm9wZXJ0eSIpO2UuJGlkPXQuZXh0ZXJuYWwudXJpKHMpfU9iamVjdC5hc3NpZ24oZSxyLmRlZj8/ci5zY2hlbWEpO2NvbnN0IGk9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChuKT8uaWQ7aSE9PXZvaWQgMCYmZS5pZD09PWkmJmRlbGV0ZSBlLmlkO2NvbnN0IGE9dC5leHRlcm5hbD8uZGVmcz8/e307Zm9yKGNvbnN0IHMgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3QgYz1zWzFdO2MuZGVmJiZjLmRlZklkJiYoYy5kZWYuaWQ9PT1jLmRlZklkJiZkZWxldGUgYy5kZWYuaWQsYVtjLmRlZklkXT1jLmRlZil9dC5leHRlcm5hbHx8T2JqZWN0LmtleXMoYSkubGVuZ3RoPjAmJih0LnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj9lLiRkZWZzPWE6ZS5kZWZpbml0aW9ucz1hKTt0cnl7Y29uc3Qgcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIn5zdGFuZGFyZCIse3ZhbHVlOnsuLi5uWyJ+c3RhbmRhcmQiXSxqc29uU2NoZW1hOntpbnB1dDpndChuLCJpbnB1dCIsdC5wcm9jZXNzb3JzKSxvdXRwdXQ6Z3Qobiwib3V0cHV0Iix0LnByb2Nlc3NvcnMpfX0sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMX0pLHN9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIHNjaGVtYSB0byBKU09OLiIpfX1mdW5jdGlvbiBlZSh0LG4pe2NvbnN0IHI9bj8/e3NlZW46bmV3IFNldH07aWYoci5zZWVuLmhhcyh0KSlyZXR1cm4hMTtyLnNlZW4uYWRkKHQpO2NvbnN0IG89dC5fem9kLmRlZjtpZihvLnR5cGU9PT0idHJhbnNmb3JtIilyZXR1cm4hMDtpZihvLnR5cGU9PT0iYXJyYXkiKXJldHVybiBlZShvLmVsZW1lbnQscik7aWYoby50eXBlPT09InNldCIpcmV0dXJuIGVlKG8udmFsdWVUeXBlLHIpO2lmKG8udHlwZT09PSJsYXp5IilyZXR1cm4gZWUoby5nZXR0ZXIoKSxyKTtpZihvLnR5cGU9PT0icHJvbWlzZSJ8fG8udHlwZT09PSJvcHRpb25hbCJ8fG8udHlwZT09PSJub25vcHRpb25hbCJ8fG8udHlwZT09PSJudWxsYWJsZSJ8fG8udHlwZT09PSJyZWFkb25seSJ8fG8udHlwZT09PSJkZWZhdWx0Inx8by50eXBlPT09InByZWZhdWx0IilyZXR1cm4gZWUoby5pbm5lclR5cGUscik7aWYoby50eXBlPT09ImludGVyc2VjdGlvbiIpcmV0dXJuIGVlKG8ubGVmdCxyKXx8ZWUoby5yaWdodCxyKTtpZihvLnR5cGU9PT0icmVjb3JkInx8by50eXBlPT09Im1hcCIpcmV0dXJuIGVlKG8ua2V5VHlwZSxyKXx8ZWUoby52YWx1ZVR5cGUscik7aWYoby50eXBlPT09InBpcGUiKXJldHVybiB0Ll96b2QudHJhaXRzLmhhcygiJFpvZENvZGVjIik/ITA6ZWUoby5pbixyKXx8ZWUoby5vdXQscik7aWYoby50eXBlPT09Im9iamVjdCIpe2Zvcihjb25zdCBlIGluIG8uc2hhcGUpaWYoZWUoby5zaGFwZVtlXSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihvLnR5cGU9PT0idW5pb24iKXtmb3IoY29uc3QgZSBvZiBvLm9wdGlvbnMpaWYoZWUoZSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihvLnR5cGU9PT0idHVwbGUiKXtmb3IoY29uc3QgZSBvZiBvLml0ZW1zKWlmKGVlKGUscikpcmV0dXJuITA7cmV0dXJuISEoby5yZXN0JiZlZShvLnJlc3QscikpfXJldHVybiExfWNvbnN0IFhsPSh0LG49e30pPT5yPT57Y29uc3Qgbz1GZSh7Li4ucixwcm9jZXNzb3JzOm59KTtyZXR1cm4gRSh0LG8pLEplKG8sdCksSGUobyx0KX0sZ3Q9KHQsbixyPXt9KT0+bz0+e2NvbnN0e2xpYnJhcnlPcHRpb25zOmUsdGFyZ2V0Oml9PW8/P3t9LGE9RmUoey4uLmU/P3t9LHRhcmdldDppLGlvOm4scHJvY2Vzc29yczpyfSk7cmV0dXJuIEUodCxhKSxKZShhLHQpLEhlKGEsdCl9LE9nPXtndWlkOiJ1dWlkIix1cmw6InVyaSIsZGF0ZXRpbWU6ImRhdGUtdGltZSIsanNvbl9zdHJpbmc6Impzb24tc3RyaW5nIixyZWdleDoiIn0sWWw9KHQsbixyLG8pPT57Y29uc3QgZT1yO2UudHlwZT0ic3RyaW5nIjtjb25zdHttaW5pbXVtOmksbWF4aW11bTphLGZvcm1hdDpzLHBhdHRlcm5zOmMsY29udGVudEVuY29kaW5nOnV9PXQuX3pvZC5iYWc7aWYodHlwZW9mIGk9PSJudW1iZXIiJiYoZS5taW5MZW5ndGg9aSksdHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhMZW5ndGg9YSkscyYmKGUuZm9ybWF0PU9nW3NdPz9zLGUuZm9ybWF0PT09IiImJmRlbGV0ZSBlLmZvcm1hdCxzPT09InRpbWUiJiZkZWxldGUgZS5mb3JtYXQpLHUmJihlLmNvbnRlbnRFbmNvZGluZz11KSxjJiZjLnNpemU+MCl7Y29uc3QgbD1bLi4uY107bC5sZW5ndGg9PT0xP2UucGF0dGVybj1sWzBdLnNvdXJjZTpsLmxlbmd0aD4xJiYoZS5hbGxPZj1bLi4ubC5tYXAoZz0+KHsuLi5uLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3t0eXBlOiJzdHJpbmcifTp7fSxwYXR0ZXJuOmcuc291cmNlfSkpXSl9fSxRbD0odCxuLHIsbyk9Pntjb25zdCBlPXIse21pbmltdW06aSxtYXhpbXVtOmEsZm9ybWF0OnMsbXVsdGlwbGVPZjpjLGV4Y2x1c2l2ZU1heGltdW06dSxleGNsdXNpdmVNaW5pbXVtOmx9PXQuX3pvZC5iYWc7dHlwZW9mIHM9PSJzdHJpbmciJiZzLmluY2x1ZGVzKCJpbnQiKT9lLnR5cGU9ImludGVnZXIiOmUudHlwZT0ibnVtYmVyIjtjb25zdCBnPXR5cGVvZiBsPT0ibnVtYmVyIiYmbD49KGk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSksdj10eXBlb2YgdT09Im51bWJlciImJnU8PShhPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLCQ9bi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI7Zz8kPyhlLm1pbmltdW09bCxlLmV4Y2x1c2l2ZU1pbmltdW09ITApOmUuZXhjbHVzaXZlTWluaW11bT1sOnR5cGVvZiBpPT0ibnVtYmVyIiYmKGUubWluaW11bT1pKSx2PyQ/KGUubWF4aW11bT11LGUuZXhjbHVzaXZlTWF4aW11bT0hMCk6ZS5leGNsdXNpdmVNYXhpbXVtPXU6dHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhpbXVtPWEpLHR5cGVvZiBjPT0ibnVtYmVyIiYmKGUubXVsdGlwbGVPZj1jKX0sZWQ9KHQsbixyLG8pPT57ci50eXBlPSJib29sZWFuIn0sdGQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxuZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxyZD0odCxuLHIsbyk9PntuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KHIudHlwZT0ic3RyaW5nIixyLm51bGxhYmxlPSEwLHIuZW51bT1bbnVsbF0pOnIudHlwZT0ibnVsbCJ9LGlkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlVuZGVmaW5lZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sb2Q9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiVm9pZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sYWQ9KHQsbixyLG8pPT57ci5ub3Q9e319LHNkPSh0LG4scixvKT0+e30sY2Q9KHQsbixyLG8pPT57fSx1ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJEYXRlIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxsZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1uaShlLmVudHJpZXMpO2kuZXZlcnkoYT0+dHlwZW9mIGE9PSJudW1iZXIiKSYmKHIudHlwZT0ibnVtYmVyIiksaS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpJiYoci50eXBlPSJzdHJpbmciKSxyLmVudW09aX0sZGQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9W107Zm9yKGNvbnN0IGEgb2YgZS52YWx1ZXMpaWYoYT09PXZvaWQgMCl7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiTGl0ZXJhbCBgdW5kZWZpbmVkYCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX1lbHNlIGlmKHR5cGVvZiBhPT0iYmlnaW50Iil7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpO2kucHVzaChOdW1iZXIoYSkpfWVsc2UgaS5wdXNoKGEpO2lmKGkubGVuZ3RoIT09MClpZihpLmxlbmd0aD09PTEpe2NvbnN0IGE9aVswXTtyLnR5cGU9YT09PW51bGw/Im51bGwiOnR5cGVvZiBhLG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3IuZW51bT1bYV06ci5jb25zdD1hfWVsc2UgaS5ldmVyeShhPT50eXBlb2YgYT09Im51bWJlciIpJiYoci50eXBlPSJudW1iZXIiKSxpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikmJihyLnR5cGU9InN0cmluZyIpLGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJib29sZWFuIikmJihyLnR5cGU9ImJvb2xlYW4iKSxpLmV2ZXJ5KGE9PmE9PT1udWxsKSYmKHIudHlwZT0ibnVsbCIpLHIuZW51bT1pfSxtZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHBkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5wYXR0ZXJuO2lmKCFpKXRocm93IG5ldyBFcnJvcigiUGF0dGVybiBub3QgZm91bmQgaW4gdGVtcGxhdGUgbGl0ZXJhbCIpO2UudHlwZT0ic3RyaW5nIixlLnBhdHRlcm49aS5zb3VyY2V9LGZkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmluYXJ5Iixjb250ZW50RW5jb2Rpbmc6ImJpbmFyeSJ9LHttaW5pbXVtOmEsbWF4aW11bTpzLG1pbWU6Y309dC5fem9kLmJhZzthIT09dm9pZCAwJiYoaS5taW5MZW5ndGg9YSkscyE9PXZvaWQgMCYmKGkubWF4TGVuZ3RoPXMpLGM/Yy5sZW5ndGg9PT0xPyhpLmNvbnRlbnRNZWRpYVR5cGU9Y1swXSxPYmplY3QuYXNzaWduKGUsaSkpOihPYmplY3QuYXNzaWduKGUsaSksZS5hbnlPZj1jLm1hcCh1PT4oe2NvbnRlbnRNZWRpYVR5cGU6dX0pKSk6T2JqZWN0LmFzc2lnbihlLGkpfSxnZD0odCxuLHIsbyk9PntyLnR5cGU9ImJvb2xlYW4ifSx2ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJDdXN0b20gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGhkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkZ1bmN0aW9uIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSwkZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxfZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGJkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlNldCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0seWQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZix7bWluaW11bTphLG1heGltdW06c309dC5fem9kLmJhZzt0eXBlb2YgYT09Im51bWJlciImJihlLm1pbkl0ZW1zPWEpLHR5cGVvZiBzPT0ibnVtYmVyIiYmKGUubWF4SXRlbXM9cyksZS50eXBlPSJhcnJheSIsZS5pdGVtcz1FKGkuZWxlbWVudCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiaXRlbXMiXX0pfSxrZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0ib2JqZWN0IixlLnByb3BlcnRpZXM9e307Y29uc3QgYT1pLnNoYXBlO2Zvcihjb25zdCB1IGluIGEpZS5wcm9wZXJ0aWVzW3VdPUUoYVt1XSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwicHJvcGVydGllcyIsdV19KTtjb25zdCBzPW5ldyBTZXQoT2JqZWN0LmtleXMoYSkpLGM9bmV3IFNldChbLi4uc10uZmlsdGVyKHU9Pntjb25zdCBsPWkuc2hhcGVbdV0uX3pvZDtyZXR1cm4gbi5pbz09PSJpbnB1dCI/bC5vcHRpbj09PXZvaWQgMDpsLm9wdG91dD09PXZvaWQgMH0pKTtjLnNpemU+MCYmKGUucmVxdWlyZWQ9QXJyYXkuZnJvbShjKSksaS5jYXRjaGFsbD8uX3pvZC5kZWYudHlwZT09PSJuZXZlciI/ZS5hZGRpdGlvbmFsUHJvcGVydGllcz0hMTppLmNhdGNoYWxsP2kuY2F0Y2hhbGwmJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPUUoaS5jYXRjaGFsbCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pKTpuLmlvPT09Im91dHB1dCImJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExKX0sZW89KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9ZS5pbmNsdXNpdmU9PT0hMSxhPWUub3B0aW9ucy5tYXAoKHMsYyk9PkUocyxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxpPyJvbmVPZiI6ImFueU9mIixjXX0pKTtpP3Iub25lT2Y9YTpyLmFueU9mPWF9LFNkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPUUoZS5sZWZ0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhbGxPZiIsMF19KSxhPUUoZS5yaWdodCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWxsT2YiLDFdfSkscz11PT4iYWxsT2YiaW4gdSYmT2JqZWN0LmtleXModSkubGVuZ3RoPT09MSxjPVsuLi5zKGkpP2kuYWxsT2Y6W2ldLC4uLnMoYSk/YS5hbGxPZjpbYV1dO3IuYWxsT2Y9Y30sd2Q9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9ImFycmF5Ijtjb25zdCBhPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyJwcmVmaXhJdGVtcyI6Iml0ZW1zIixzPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/Iml0ZW1zIjoiYWRkaXRpb25hbEl0ZW1zIixjPWkuaXRlbXMubWFwKCh2LCQpPT5FKHYsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsYSwkXX0pKSx1PWkucmVzdD9FKGkucmVzdCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxzLC4uLm4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj9baS5pdGVtcy5sZW5ndGhdOltdXX0pOm51bGw7bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/KGUucHJlZml4SXRlbXM9Yyx1JiYoZS5pdGVtcz11KSk6bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhlLml0ZW1zPXthbnlPZjpjfSx1JiZlLml0ZW1zLmFueU9mLnB1c2godSksZS5taW5JdGVtcz1jLmxlbmd0aCx1fHwoZS5tYXhJdGVtcz1jLmxlbmd0aCkpOihlLml0ZW1zPWMsdSYmKGUuYWRkaXRpb25hbEl0ZW1zPXUpKTtjb25zdHttaW5pbXVtOmwsbWF4aW11bTpnfT10Ll96b2QuYmFnO3R5cGVvZiBsPT0ibnVtYmVyIiYmKGUubWluSXRlbXM9bCksdHlwZW9mIGc9PSJudW1iZXIiJiYoZS5tYXhJdGVtcz1nKX0sSWQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9Im9iamVjdCI7Y29uc3QgYT1pLmtleVR5cGUsYz1hLl96b2QuYmFnPy5wYXR0ZXJucztpZihpLm1vZGU9PT0ibG9vc2UiJiZjJiZjLnNpemU+MCl7Y29uc3QgbD1FKGkudmFsdWVUeXBlLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJwYXR0ZXJuUHJvcGVydGllcyIsIioiXX0pO2UucGF0dGVyblByb3BlcnRpZXM9e307Zm9yKGNvbnN0IGcgb2YgYyllLnBhdHRlcm5Qcm9wZXJ0aWVzW2cuc291cmNlXT1sfWVsc2Uobi50YXJnZXQ9PT0iZHJhZnQtMDcifHxuLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIikmJihlLnByb3BlcnR5TmFtZXM9RShpLmtleVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsInByb3BlcnR5TmFtZXMiXX0pKSxlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPUUoaS52YWx1ZVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIl19KTtjb25zdCB1PWEuX3pvZC52YWx1ZXM7aWYodSl7Y29uc3QgbD1bLi4udV0uZmlsdGVyKGc9PnR5cGVvZiBnPT0ic3RyaW5nInx8dHlwZW9mIGc9PSJudW1iZXIiKTtsLmxlbmd0aD4wJiYoZS5yZXF1aXJlZD1sKX19LHpkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPUUoZS5pbm5lclR5cGUsbixvKSxhPW4uc2Vlbi5nZXQodCk7bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhhLnJlZj1lLmlubmVyVHlwZSxyLm51bGxhYmxlPSEwKTpyLmFueU9mPVtpLHt0eXBlOiJudWxsIn1dfSx4ZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0sVGQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsci5kZWZhdWx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kZWZhdWx0VmFsdWUpKX0samQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsbi5pbz09PSJpbnB1dCImJihyLl9wcmVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuZGVmYXVsdFZhbHVlKSkpfSxVZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZTtsZXQgYTt0cnl7YT1lLmNhdGNoVmFsdWUodm9pZCAwKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgY2F0Y2ggdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEpTT04gU2NoZW1hIil9ci5kZWZhdWx0PWF9LFBkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPWUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIiksYT1uLmlvPT09ImlucHV0Ij9pP2Uub3V0OmUuaW46ZS5vdXQ7RShhLG4sbyk7Y29uc3Qgcz1uLnNlZW4uZ2V0KHQpO3MucmVmPWF9LE9kPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlLHIucmVhZE9ubHk9ITB9LERkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSx0bz0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0sTmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuaW5uZXJUeXBlO0UoZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lfSxRcj17c3RyaW5nOllsLG51bWJlcjpRbCxib29sZWFuOmVkLGJpZ2ludDp0ZCxzeW1ib2w6bmQsbnVsbDpyZCx1bmRlZmluZWQ6aWQsdm9pZDpvZCxuZXZlcjphZCxhbnk6c2QsdW5rbm93bjpjZCxkYXRlOnVkLGVudW06bGQsbGl0ZXJhbDpkZCxuYW46bWQsdGVtcGxhdGVfbGl0ZXJhbDpwZCxmaWxlOmZkLHN1Y2Nlc3M6Z2QsY3VzdG9tOnZkLGZ1bmN0aW9uOmhkLHRyYW5zZm9ybTokZCxtYXA6X2Qsc2V0OmJkLGFycmF5OnlkLG9iamVjdDprZCx1bmlvbjplbyxpbnRlcnNlY3Rpb246U2QsdHVwbGU6d2QscmVjb3JkOklkLG51bGxhYmxlOnpkLG5vbm9wdGlvbmFsOnhkLGRlZmF1bHQ6VGQscHJlZmF1bHQ6amQsY2F0Y2g6VWQscGlwZTpQZCxyZWFkb25seTpPZCxwcm9taXNlOkRkLG9wdGlvbmFsOnRvLGxhenk6TmR9O2Z1bmN0aW9uIG5vKHQsbil7aWYoIl9pZG1hcCJpbiB0KXtjb25zdCBvPXQsZT1GZSh7Li4ubixwcm9jZXNzb3JzOlFyfSksaT17fTtmb3IoY29uc3QgYyBvZiBvLl9pZG1hcC5lbnRyaWVzKCkpe2NvbnN0W3UsbF09YztFKGwsZSl9Y29uc3QgYT17fSxzPXtyZWdpc3RyeTpvLHVyaTpuPy51cmksZGVmczppfTtlLmV4dGVybmFsPXM7Zm9yKGNvbnN0IGMgb2Ygby5faWRtYXAuZW50cmllcygpKXtjb25zdFt1LGxdPWM7SmUoZSxsKSxhW3VdPUhlKGUsbCl9aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoPjApe2NvbnN0IGM9ZS50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2EuX19zaGFyZWQ9e1tjXTppfX1yZXR1cm57c2NoZW1hczphfX1jb25zdCByPUZlKHsuLi5uLHByb2Nlc3NvcnM6UXJ9KTtyZXR1cm4gRSh0LHIpLEplKHIsdCksSGUocix0KX1jbGFzcyBEZ3tnZXQgbWV0YWRhdGFSZWdpc3RyeSgpe3JldHVybiB0aGlzLmN0eC5tZXRhZGF0YVJlZ2lzdHJ5fWdldCB0YXJnZXQoKXtyZXR1cm4gdGhpcy5jdHgudGFyZ2V0fWdldCB1bnJlcHJlc2VudGFibGUoKXtyZXR1cm4gdGhpcy5jdHgudW5yZXByZXNlbnRhYmxlfWdldCBvdmVycmlkZSgpe3JldHVybiB0aGlzLmN0eC5vdmVycmlkZX1nZXQgaW8oKXtyZXR1cm4gdGhpcy5jdHguaW99Z2V0IGNvdW50ZXIoKXtyZXR1cm4gdGhpcy5jdHguY291bnRlcn1zZXQgY291bnRlcihuKXt0aGlzLmN0eC5jb3VudGVyPW59Z2V0IHNlZW4oKXtyZXR1cm4gdGhpcy5jdHguc2Vlbn1jb25zdHJ1Y3RvcihuKXtsZXQgcj1uPy50YXJnZXQ/PyJkcmFmdC0yMDIwLTEyIjtyPT09ImRyYWZ0LTQiJiYocj0iZHJhZnQtMDQiKSxyPT09ImRyYWZ0LTciJiYocj0iZHJhZnQtMDciKSx0aGlzLmN0eD1GZSh7cHJvY2Vzc29yczpRcix0YXJnZXQ6ciwuLi5uPy5tZXRhZGF0YSYme21ldGFkYXRhOm4ubWV0YWRhdGF9LC4uLm4/LnVucmVwcmVzZW50YWJsZSYme3VucmVwcmVzZW50YWJsZTpuLnVucmVwcmVzZW50YWJsZX0sLi4ubj8ub3ZlcnJpZGUmJntvdmVycmlkZTpuLm92ZXJyaWRlfSwuLi5uPy5pbyYme2lvOm4uaW99fSl9cHJvY2VzcyhuLHI9e3BhdGg6W10sc2NoZW1hUGF0aDpbXX0pe3JldHVybiBFKG4sdGhpcy5jdHgscil9ZW1pdChuLHIpe3ImJihyLmN5Y2xlcyYmKHRoaXMuY3R4LmN5Y2xlcz1yLmN5Y2xlcyksci5yZXVzZWQmJih0aGlzLmN0eC5yZXVzZWQ9ci5yZXVzZWQpLHIuZXh0ZXJuYWwmJih0aGlzLmN0eC5leHRlcm5hbD1yLmV4dGVybmFsKSksSmUodGhpcy5jdHgsbik7Y29uc3Qgbz1IZSh0aGlzLmN0eCxuKSx7In5zdGFuZGFyZCI6ZSwuLi5pfT1vO3JldHVybiBpfX1jb25zdCBOZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksRWQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRab2RBbnk6eHUsJFpvZEFycmF5Ok91LCRab2RBc3luY0Vycm9yOlRlLCRab2RCYXNlNjQ6Z3UsJFpvZEJhc2U2NFVSTDpodSwkWm9kQmlnSW50OklpLCRab2RCaWdJbnRGb3JtYXQ6U3UsJFpvZEJvb2xlYW46d2ksJFpvZENJRFJ2NDpwdSwkWm9kQ0lEUnY2OmZ1LCRab2RDVUlEOnR1LCRab2RDVUlEMjpudSwkWm9kQ2F0Y2g6UXUsJFpvZENoZWNrOk0sJFpvZENoZWNrQmlnSW50Rm9ybWF0OlBjLCRab2RDaGVja0VuZHNXaXRoOkZjLCRab2RDaGVja0dyZWF0ZXJUaGFuOnlpLCRab2RDaGVja0luY2x1ZGVzOk1jLCRab2RDaGVja0xlbmd0aEVxdWFsczpSYywkWm9kQ2hlY2tMZXNzVGhhbjpiaSwkWm9kQ2hlY2tMb3dlckNhc2U6QWMsJFpvZENoZWNrTWF4TGVuZ3RoOkVjLCRab2RDaGVja01heFNpemU6T2MsJFpvZENoZWNrTWltZVR5cGU6SGMsJFpvZENoZWNrTWluTGVuZ3RoOlpjLCRab2RDaGVja01pblNpemU6RGMsJFpvZENoZWNrTXVsdGlwbGVPZjpqYywkWm9kQ2hlY2tOdW1iZXJGb3JtYXQ6VWMsJFpvZENoZWNrT3ZlcndyaXRlOlZjLCRab2RDaGVja1Byb3BlcnR5OkpjLCRab2RDaGVja1JlZ2V4OkNjLCRab2RDaGVja1NpemVFcXVhbHM6TmMsJFpvZENoZWNrU3RhcnRzV2l0aDpxYywkWm9kQ2hlY2tTdHJpbmdGb3JtYXQ6enQsJFpvZENoZWNrVXBwZXJDYXNlOkxjLCRab2RDb2RlYzpqaSwkWm9kQ3VzdG9tOnNsLCRab2RDdXN0b21TdHJpbmdGb3JtYXQ6eXUsJFpvZERhdGU6UHUsJFpvZERlZmF1bHQ6QnUsJFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpDdSwkWm9kRTE2NDokdSwkWm9kRW1haWw6WGMsJFpvZEVtb2ppOlFjLCRab2RFbmNvZGVFcnJvcjpFbiwkWm9kRW51bTpGdSwkWm9kRXJyb3I6b2ksJFpvZEV4YWN0T3B0aW9uYWw6S3UsJFpvZEZpbGU6SHUsJFpvZEZ1bmN0aW9uOmlsLCRab2RHVUlEOkJjLCRab2RJUHY0Omx1LCRab2RJUHY2OmR1LCRab2RJU09EYXRlOnN1LCRab2RJU09EYXRlVGltZTphdSwkWm9kSVNPRHVyYXRpb246dXUsJFpvZElTT1RpbWU6Y3UsJFpvZEludGVyc2VjdGlvbjpBdSwkWm9kSldUOmJ1LCRab2RLU1VJRDpvdSwkWm9kTGF6eTphbCwkWm9kTGl0ZXJhbDpKdSwkWm9kTUFDOm11LCRab2RNYXA6TXUsJFpvZE5hTjplbCwkWm9kTmFub0lEOmV1LCRab2ROZXZlcjpqdSwkWm9kTm9uT3B0aW9uYWw6WHUsJFpvZE51bGw6enUsJFpvZE51bGxhYmxlOld1LCRab2ROdW1iZXI6U2ksJFpvZE51bWJlckZvcm1hdDprdSwkWm9kT2JqZWN0OkV1LCRab2RPYmplY3RKSVQ6WnUsJFpvZE9wdGlvbmFsOnhpLCRab2RQaXBlOlRpLCRab2RQcmVmYXVsdDpHdSwkWm9kUHJlcHJvY2Vzczp0bCwkWm9kUHJvbWlzZTpvbCwkWm9kUmVhZG9ubHk6bmwsJFpvZFJlYWxFcnJvcjpzZSwkWm9kUmVjb3JkOkx1LCRab2RSZWdpc3RyeTpkbCwkWm9kU2V0OnF1LCRab2RTdHJpbmc6eHQsJFpvZFN0cmluZ0Zvcm1hdDpMLCRab2RTdWNjZXNzOll1LCRab2RTeW1ib2w6d3UsJFpvZFRlbXBsYXRlTGl0ZXJhbDpybCwkWm9kVHJhbnNmb3JtOlZ1LCRab2RUdXBsZTp6aSwkWm9kVHlwZTpJLCRab2RVTElEOnJ1LCRab2RVUkw6WWMsJFpvZFVVSUQ6R2MsJFpvZFVuZGVmaW5lZDpJdSwkWm9kVW5pb246Rm4sJFpvZFVua25vd246VHUsJFpvZFZvaWQ6VXUsJFpvZFhJRDppdSwkWm9kWG9yOlJ1LCRicmFuZDp0aSwkY29uc3RydWN0b3I6ZCwkaW5wdXQ6T2ksJG91dHB1dDpQaSxEb2M6S2MsSlNPTlNjaGVtYTpOZyxKU09OU2NoZW1hR2VuZXJhdG9yOkRnLE5FVkVSOmVpLFRpbWVQcmVjaXNpb246UWksX2FueTpFbCxfYXJyYXk6cWwsX2Jhc2U2NDpCaSxfYmFzZTY0dXJsOkdpLF9iaWdpbnQ6VGwsX2Jvb2xlYW46emwsX2NhdGNoOnpnLF9jaGVjazpLbCxfY2lkcnY0OktpLF9jaWRydjY6V2ksX2NvZXJjZWRCaWdpbnQ6amwsX2NvZXJjZWRCb29sZWFuOnhsLF9jb2VyY2VkRGF0ZTpMbCxfY29lcmNlZE51bWJlcjpibCxfY29lcmNlZFN0cmluZzpwbCxfY3VpZDpMaSxfY3VpZDI6TWksX2N1c3RvbTpKbCxfZGF0ZTpBbCxfZGVjb2RlOmxpLF9kZWNvZGVBc3luYzptaSxfZGVmYXVsdDpTZyxfZGlzY3JpbWluYXRlZFVuaW9uOmRnLF9lMTY0OlhpLF9lbWFpbDpEaSxfZW1vamk6Q2ksX2VuY29kZTp1aSxfZW5jb2RlQXN5bmM6ZGksX2VuZHNXaXRoOkR0LF9lbnVtOmhnLF9maWxlOkZsLF9mbG9hdDMyOmtsLF9mbG9hdDY0OlNsLF9ndDpfZSxfZ3RlOnRlLF9ndWlkOlBuLF9pbmNsdWRlczpQdCxfaW50OnlsLF9pbnQzMjp3bCxfaW50NjQ6VWwsX2ludGVyc2VjdGlvbjptZyxfaXB2NDpIaSxfaXB2NjpWaSxfaXNvRGF0ZTp2bCxfaXNvRGF0ZVRpbWU6Z2wsX2lzb0R1cmF0aW9uOiRsLF9pc29UaW1lOmhsLF9qd3Q6WWksX2tzdWlkOkppLF9sYXp5OlVnLF9sZW5ndGg6UWUsX2xpdGVyYWw6X2csX2xvd2VyY2FzZTpqdCxfbHQ6JGUsX2x0ZTppZSxfbWFjOmZsLF9tYXA6Z2csX21heDppZSxfbWF4TGVuZ3RoOlllLF9tYXhTaXplOkVlLF9taW1lOk50LF9taW46dGUsX21pbkxlbmd0aDprZSxfbWluU2l6ZTpiZSxfbXVsdGlwbGVPZjpVZSxfbmFuOk1sLF9uYW5vaWQ6QWksX25hdGl2ZUVudW06JGcsX25lZ2F0aXZlOktuLF9uZXZlcjpSbCxfbm9ubmVnYXRpdmU6Qm4sX25vbm9wdGlvbmFsOndnLF9ub25wb3NpdGl2ZTpXbixfbm9ybWFsaXplOkV0LF9udWxsOk5sLF9udWxsYWJsZTprZyxfbnVtYmVyOl9sLF9vcHRpb25hbDp5Zyxfb3ZlcndyaXRlOnZlLF9wYXJzZTpidCxfcGFyc2VBc3luYzp5dCxfcGlwZTp4ZyxfcG9zaXRpdmU6Vm4sX3Byb21pc2U6UGcsX3Byb3BlcnR5OkduLF9yZWFkb25seTpUZyxfcmVjb3JkOmZnLF9yZWZpbmU6SGwsX3JlZ2V4OlR0LF9zYWZlRGVjb2RlOmZpLF9zYWZlRGVjb2RlQXN5bmM6dmksX3NhZmVFbmNvZGU6cGksX3NhZmVFbmNvZGVBc3luYzpnaSxfc2FmZVBhcnNlOmt0LF9zYWZlUGFyc2VBc3luYzpTdCxfc2V0OnZnLF9zaXplOlhlLF9zbHVnaWZ5OkF0LF9zdGFydHNXaXRoOk90LF9zdHJpbmc6bWwsX3N0cmluZ0Zvcm1hdDpMdCxfc3RyaW5nYm9vbDpHbCxfc3VjY2VzczpJZyxfc3VwZXJSZWZpbmU6VmwsX3N5bWJvbDpPbCxfdGVtcGxhdGVMaXRlcmFsOmpnLF90b0xvd2VyQ2FzZTpSdCxfdG9VcHBlckNhc2U6Q3QsX3RyYW5zZm9ybTpiZyxfdHJpbTpadCxfdHVwbGU6cGcsX3VpbnQzMjpJbCxfdWludDY0OlBsLF91bGlkOnFpLF91bmRlZmluZWQ6RGwsX3VuaW9uOnVnLF91bmtub3duOlpsLF91cHBlcmNhc2U6VXQsX3VybDpIbixfdXVpZDpOaSxfdXVpZHY0OkVpLF91dWlkdjY6WmksX3V1aWR2NzpSaSxfdm9pZDpDbCxfeGlkOkZpLF94b3I6bGcsY2xvbmU6YWUsY29uZmlnOkgsY3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kOmd0LGNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZDpYbCxkZWNvZGU6TG0sZGVjb2RlQXN5bmM6cW0sZGVzY3JpYmU6V2wsZW5jb2RlOkFtLGVuY29kZUFzeW5jOk1tLGV4dHJhY3REZWZzOkplLGZpbmFsaXplOkhlLGZsYXR0ZW5FcnJvcjpMbixmb3JtYXRFcnJvcjpNbixnbG9iYWxDb25maWc6ZnQsZ2xvYmFsUmVnaXN0cnk6cmUsaW5pdGlhbGl6ZUNvbnRleHQ6RmUsaXNWYWxpZEJhc2U2NDpraSxpc1ZhbGlkQmFzZTY0VVJMOnZ1LGlzVmFsaWRKV1Q6X3UsbG9jYWxlczpVaSxtZXRhOkJsLHBhcnNlOkdyLHBhcnNlQXN5bmM6WHIscHJldHRpZnlFcnJvcjpzaSxwcm9jZXNzOkUscmVnZXhlczpxbixyZWdpc3RyeTpKbixzYWZlRGVjb2RlOkptLHNhZmVEZWNvZGVBc3luYzpWbSxzYWZlRW5jb2RlOkZtLHNhZmVFbmNvZGVBc3luYzpIbSxzYWZlUGFyc2U6Y2ksc2FmZVBhcnNlQXN5bmM6S3MsdG9Eb3RQYXRoOlZzLHRvSlNPTlNjaGVtYTpubyx0cmVlaWZ5RXJyb3I6YWksdXRpbDppaSx2ZXJzaW9uOldjfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2Z1bmN0aW9uIHJvKHQpe3JldHVybiEhdC5fem9kfWZ1bmN0aW9uIFpkKHQsbil7cmV0dXJuIHJvKHQpP2NpKHQsbik6dC5zYWZlUGFyc2Uobil9ZnVuY3Rpb24gRWcodCl7aWYoIXQpcmV0dXJuO2xldCBuO2lmKHJvKHQpP249dC5fem9kPy5kZWY/LnNoYXBlOm49dC5zaGFwZSwhIW4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXRyeXtyZXR1cm4gbigpfWNhdGNoe3JldHVybn1yZXR1cm4gbn19ZnVuY3Rpb24gWmcodCl7aWYocm8odCkpe2NvbnN0IGk9dC5fem9kPy5kZWY7aWYoaSl7aWYoaS52YWx1ZSE9PXZvaWQgMClyZXR1cm4gaS52YWx1ZTtpZihBcnJheS5pc0FycmF5KGkudmFsdWVzKSYmaS52YWx1ZXMubGVuZ3RoPjApcmV0dXJuIGkudmFsdWVzWzBdfX1jb25zdCByPXQuX2RlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19Y29uc3Qgbz10LnZhbHVlO2lmKG8hPT12b2lkIDApcmV0dXJuIG99Y29uc3QgUmc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGVuZHNXaXRoOkR0LGd0Ol9lLGd0ZTp0ZSxpbmNsdWRlczpQdCxsZW5ndGg6UWUsbG93ZXJjYXNlOmp0LGx0OiRlLGx0ZTppZSxtYXhMZW5ndGg6WWUsbWF4U2l6ZTpFZSxtaW1lOk50LG1pbkxlbmd0aDprZSxtaW5TaXplOmJlLG11bHRpcGxlT2Y6VWUsbmVnYXRpdmU6S24sbm9ubmVnYXRpdmU6Qm4sbm9ucG9zaXRpdmU6V24sbm9ybWFsaXplOkV0LG92ZXJ3cml0ZTp2ZSxwb3NpdGl2ZTpWbixwcm9wZXJ0eTpHbixyZWdleDpUdCxzaXplOlhlLHNsdWdpZnk6QXQsc3RhcnRzV2l0aDpPdCx0b0xvd2VyQ2FzZTpSdCx0b1VwcGVyQ2FzZTpDdCx0cmltOlp0LHVwcGVyY2FzZTpVdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxYbj1kKCJab2RJU09EYXRlVGltZSIsKHQsbik9PnthdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBpbyh0KXtyZXR1cm4gZ2woWG4sdCl9Y29uc3QgWW49ZCgiWm9kSVNPRGF0ZSIsKHQsbik9PntzdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBSZCh0KXtyZXR1cm4gdmwoWW4sdCl9Y29uc3QgUW49ZCgiWm9kSVNPVGltZSIsKHQsbik9PntjdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBDZCh0KXtyZXR1cm4gaGwoUW4sdCl9Y29uc3QgZXI9ZCgiWm9kSVNPRHVyYXRpb24iLCh0LG4pPT57dXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gQWQodCl7cmV0dXJuICRsKGVyLHQpfWNvbnN0IG9vPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RJU09EYXRlOlluLFpvZElTT0RhdGVUaW1lOlhuLFpvZElTT0R1cmF0aW9uOmVyLFpvZElTT1RpbWU6UW4sZGF0ZTpSZCxkYXRldGltZTppbyxkdXJhdGlvbjpBZCx0aW1lOkNkfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLExkPSh0LG4pPT57b2kuaW5pdCh0LG4pLHQubmFtZT0iWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQse2Zvcm1hdDp7dmFsdWU6cj0+TW4odCxyKX0sZmxhdHRlbjp7dmFsdWU6cj0+TG4odCxyKX0sYWRkSXNzdWU6e3ZhbHVlOnI9Pnt0Lmlzc3Vlcy5wdXNoKHIpLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeSh0Lmlzc3VlcyxUbiwyKX19LGFkZElzc3Vlczp7dmFsdWU6cj0+e3QuaXNzdWVzLnB1c2goLi4uciksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KHQuaXNzdWVzLFRuLDIpfX0saXNFbXB0eTp7Z2V0KCl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD09PTB9fX0pfSxNZD1kKCJab2RFcnJvciIsTGQpLG5lPWQoIlpvZEVycm9yIixMZCx7UGFyZW50OkVycm9yfSksYW89YnQobmUpLHNvPXl0KG5lKSxjbz1rdChuZSksdW89U3QobmUpLGxvPXVpKG5lKSxtbz1saShuZSkscG89ZGkobmUpLGZvPW1pKG5lKSxnbz1waShuZSksdm89ZmkobmUpLGhvPWdpKG5lKSwkbz12aShuZSksX3M9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gTXQodCxuLHIpe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO2xldCBlPV9zLmdldChvKTtpZihlfHwoZT1uZXcgU2V0LF9zLnNldChvLGUpKSwhZS5oYXMobikpe2UuYWRkKG4pO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IGE9cltpXTtPYmplY3QuZGVmaW5lUHJvcGVydHkobyxpLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSxnZXQoKXtjb25zdCBzPWEuYmluZCh0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6c30pLHN9LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxpLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpzfSl9fSl9fX1jb25zdCB4PWQoIlpvZFR5cGUiLCh0LG4pPT4oSS5pbml0KHQsbiksT2JqZWN0LmFzc2lnbih0WyJ+c3RhbmRhcmQiXSx7anNvblNjaGVtYTp7aW5wdXQ6Z3QodCwiaW5wdXQiKSxvdXRwdXQ6Z3QodCwib3V0cHV0Iil9fSksdC50b0pTT05TY2hlbWE9WGwodCx7fSksdC5kZWY9bix0LnR5cGU9bi50eXBlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfZGVmIix7dmFsdWU6bn0pLHQucGFyc2U9KHIsbyk9PmFvKHQscixvLHtjYWxsZWU6dC5wYXJzZX0pLHQuc2FmZVBhcnNlPShyLG8pPT5jbyh0LHIsbyksdC5wYXJzZUFzeW5jPWFzeW5jKHIsbyk9PnNvKHQscixvLHtjYWxsZWU6dC5wYXJzZUFzeW5jfSksdC5zYWZlUGFyc2VBc3luYz1hc3luYyhyLG8pPT51byh0LHIsbyksdC5zcGE9dC5zYWZlUGFyc2VBc3luYyx0LmVuY29kZT0ocixvKT0+bG8odCxyLG8pLHQuZGVjb2RlPShyLG8pPT5tbyh0LHIsbyksdC5lbmNvZGVBc3luYz1hc3luYyhyLG8pPT5wbyh0LHIsbyksdC5kZWNvZGVBc3luYz1hc3luYyhyLG8pPT5mbyh0LHIsbyksdC5zYWZlRW5jb2RlPShyLG8pPT5nbyh0LHIsbyksdC5zYWZlRGVjb2RlPShyLG8pPT52byh0LHIsbyksdC5zYWZlRW5jb2RlQXN5bmM9YXN5bmMocixvKT0+aG8odCxyLG8pLHQuc2FmZURlY29kZUFzeW5jPWFzeW5jKHIsbyk9PiRvKHQscixvKSxNdCh0LCJab2RUeXBlIix7Y2hlY2soLi4ucil7Y29uc3Qgbz10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZShnZShvLHtjaGVja3M6Wy4uLm8uY2hlY2tzPz9bXSwuLi5yLm1hcChlPT50eXBlb2YgZT09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6ZSxkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19OmUpXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5yKXtyZXR1cm4gdGhpcy5jaGVjayguLi5yKX0sY2xvbmUocixvKXtyZXR1cm4gYWUodGhpcyxyLG8pfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihyLG8pe3JldHVybiByLmFkZCh0aGlzLG8pLHRoaXN9LHJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKE1yKHIsbykpfSxzdXBlclJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKHFyKHIsbykpfSxvdmVyd3JpdGUocil7cmV0dXJuIHRoaXMuY2hlY2sodmUocikpfSxvcHRpb25hbCgpe3JldHVybiBBKHRoaXMpfSxleGFjdE9wdGlvbmFsKCl7cmV0dXJuIHlyKHRoaXMpfSxudWxsYWJsZSgpe3JldHVybiBXZSh0aGlzKX0sbnVsbGlzaCgpe3JldHVybiBBKFdlKHRoaXMpKX0sbm9ub3B0aW9uYWwocil7cmV0dXJuIHhyKHRoaXMscil9LGFycmF5KCl7cmV0dXJuIHcodGhpcyl9LG9yKHIpe3JldHVybiBqKFt0aGlzLHJdKX0sYW5kKHIpe3JldHVybiBzdCh0aGlzLHIpfSx0cmFuc2Zvcm0ocil7cmV0dXJuIGh0KHRoaXMsbG4ocikpfSxkZWZhdWx0KHIpe3JldHVybiB3cih0aGlzLHIpfSxwcmVmYXVsdChyKXtyZXR1cm4genIodGhpcyxyKX0sY2F0Y2gocil7cmV0dXJuIFVyKHRoaXMscil9LHBpcGUocil7cmV0dXJuIGh0KHRoaXMscil9LHJlYWRvbmx5KCl7cmV0dXJuIE5yKHRoaXMpfSxkZXNjcmliZShyKXtjb25zdCBvPXRoaXMuY2xvbmUoKTtyZXR1cm4gcmUuYWRkKG8se2Rlc2NyaXB0aW9uOnJ9KSxvfSxtZXRhKC4uLnIpe2lmKHIubGVuZ3RoPT09MClyZXR1cm4gcmUuZ2V0KHRoaXMpO2NvbnN0IG89dGhpcy5jbG9uZSgpO3JldHVybiByZS5hZGQobyxyWzBdKSxvfSxpc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc30saXNOdWxsYWJsZSgpe3JldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzfSxhcHBseShyKXtyZXR1cm4gcih0aGlzKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVzY3JpcHRpb24iLHtnZXQoKXtyZXR1cm4gcmUuZ2V0KHQpPy5kZXNjcmlwdGlvbn0sY29uZmlndXJhYmxlOiEwfSksdCkpLHF0PWQoIl9ab2RTdHJpbmciLCh0LG4pPT57eHQuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5ZbCh0LG8sZSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QuZm9ybWF0PXIuZm9ybWF0Pz9udWxsLHQubWluTGVuZ3RoPXIubWluaW11bT8/bnVsbCx0Lm1heExlbmd0aD1yLm1heGltdW0/P251bGwsTXQodCwiX1pvZFN0cmluZyIse3JlZ2V4KC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKFR0KC4uLm8pKX0saW5jbHVkZXMoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soUHQoLi4ubykpfSxzdGFydHNXaXRoKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKE90KC4uLm8pKX0sZW5kc1dpdGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soRHQoLi4ubykpfSxtaW4oLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soa2UoLi4ubykpfSxtYXgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soWWUoLi4ubykpfSxsZW5ndGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soUWUoLi4ubykpfSxub25lbXB0eSguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhrZSgxLC4uLm8pKX0sbG93ZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKGp0KG8pKX0sdXBwZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKFV0KG8pKX0sdHJpbSgpe3JldHVybiB0aGlzLmNoZWNrKFp0KCkpfSxub3JtYWxpemUoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soRXQoLi4ubykpfSx0b0xvd2VyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKFJ0KCkpfSx0b1VwcGVyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKEN0KCkpfSxzbHVnaWZ5KCl7cmV0dXJuIHRoaXMuY2hlY2soQXQoKSl9fSl9KSxldD1kKCJab2RTdHJpbmciLCh0LG4pPT57eHQuaW5pdCh0LG4pLHF0LmluaXQodCxuKSx0LmVtYWlsPXI9PnQuY2hlY2soRGkoRnQscikpLHQudXJsPXI9PnQuY2hlY2soSG4odHQscikpLHQuand0PXI9PnQuY2hlY2soWWkob24scikpLHQuZW1vamk9cj0+dC5jaGVjayhDaShKdCxyKSksdC5ndWlkPXI9PnQuY2hlY2soUG4oVmUscikpLHQudXVpZD1yPT50LmNoZWNrKE5pKG1lLHIpKSx0LnV1aWR2ND1yPT50LmNoZWNrKEVpKG1lLHIpKSx0LnV1aWR2Nj1yPT50LmNoZWNrKFppKG1lLHIpKSx0LnV1aWR2Nz1yPT50LmNoZWNrKFJpKG1lLHIpKSx0Lm5hbm9pZD1yPT50LmNoZWNrKEFpKEh0LHIpKSx0Lmd1aWQ9cj0+dC5jaGVjayhQbihWZSxyKSksdC5jdWlkPXI9PnQuY2hlY2soTGkoVnQscikpLHQuY3VpZDI9cj0+dC5jaGVjayhNaShLdCxyKSksdC51bGlkPXI9PnQuY2hlY2socWkoV3QscikpLHQuYmFzZTY0PXI9PnQuY2hlY2soQmkodG4scikpLHQuYmFzZTY0dXJsPXI9PnQuY2hlY2soR2kobm4scikpLHQueGlkPXI9PnQuY2hlY2soRmkoQnQscikpLHQua3N1aWQ9cj0+dC5jaGVjayhKaShHdCxyKSksdC5pcHY0PXI9PnQuY2hlY2soSGkoWHQscikpLHQuaXB2Nj1yPT50LmNoZWNrKFZpKFl0LHIpKSx0LmNpZHJ2ND1yPT50LmNoZWNrKEtpKFF0LHIpKSx0LmNpZHJ2Nj1yPT50LmNoZWNrKFdpKGVuLHIpKSx0LmUxNjQ9cj0+dC5jaGVjayhYaShybixyKSksdC5kYXRldGltZT1yPT50LmNoZWNrKGlvKHIpKSx0LmRhdGU9cj0+dC5jaGVjayhSZChyKSksdC50aW1lPXI9PnQuY2hlY2soQ2QocikpLHQuZHVyYXRpb249cj0+dC5jaGVjayhBZChyKSl9KTtmdW5jdGlvbiBwKHQpe3JldHVybiBtbChldCx0KX1jb25zdCBaPWQoIlpvZFN0cmluZ0Zvcm1hdCIsKHQsbik9PntMLmluaXQodCxuKSxxdC5pbml0KHQsbil9KSxGdD1kKCJab2RFbWFpbCIsKHQsbik9PntYYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBfbyh0KXtyZXR1cm4gRGkoRnQsdCl9Y29uc3QgVmU9ZCgiWm9kR1VJRCIsKHQsbik9PntCYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBibyh0KXtyZXR1cm4gUG4oVmUsdCl9Y29uc3QgbWU9ZCgiWm9kVVVJRCIsKHQsbik9PntHYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiB5byh0KXtyZXR1cm4gTmkobWUsdCl9ZnVuY3Rpb24ga28odCl7cmV0dXJuIEVpKG1lLHQpfWZ1bmN0aW9uIFNvKHQpe3JldHVybiBaaShtZSx0KX1mdW5jdGlvbiB3byh0KXtyZXR1cm4gUmkobWUsdCl9Y29uc3QgdHQ9ZCgiWm9kVVJMIiwodCxuKT0+e1ljLmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIElvKHQpe3JldHVybiBIbih0dCx0KX1mdW5jdGlvbiB6byh0KXtyZXR1cm4gSG4odHQse3Byb3RvY29sOiRpLGhvc3RuYW1lOm1jLC4uLmgodCl9KX1jb25zdCBKdD1kKCJab2RFbW9qaSIsKHQsbik9PntRYy5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiB4byh0KXtyZXR1cm4gQ2koSnQsdCl9Y29uc3QgSHQ9ZCgiWm9kTmFub0lEIiwodCxuKT0+e2V1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFRvKHQpe3JldHVybiBBaShIdCx0KX1jb25zdCBWdD1kKCJab2RDVUlEIiwodCxuKT0+e3R1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIGpvKHQpe3JldHVybiBMaShWdCx0KX1jb25zdCBLdD1kKCJab2RDVUlEMiIsKHQsbik9PntudS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBVbyh0KXtyZXR1cm4gTWkoS3QsdCl9Y29uc3QgV3Q9ZCgiWm9kVUxJRCIsKHQsbik9PntydS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBQbyh0KXtyZXR1cm4gcWkoV3QsdCl9Y29uc3QgQnQ9ZCgiWm9kWElEIiwodCxuKT0+e2l1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE9vKHQpe3JldHVybiBGaShCdCx0KX1jb25zdCBHdD1kKCJab2RLU1VJRCIsKHQsbik9PntvdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBEbyh0KXtyZXR1cm4gSmkoR3QsdCl9Y29uc3QgWHQ9ZCgiWm9kSVB2NCIsKHQsbik9PntsdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBObyh0KXtyZXR1cm4gSGkoWHQsdCl9Y29uc3QgdHI9ZCgiWm9kTUFDIiwodCxuKT0+e211LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEVvKHQpe3JldHVybiBmbCh0cix0KX1jb25zdCBZdD1kKCJab2RJUHY2IiwodCxuKT0+e2R1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFpvKHQpe3JldHVybiBWaShZdCx0KX1jb25zdCBRdD1kKCJab2RDSURSdjQiLCh0LG4pPT57cHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gUm8odCl7cmV0dXJuIEtpKFF0LHQpfWNvbnN0IGVuPWQoIlpvZENJRFJ2NiIsKHQsbik9PntmdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBDbyh0KXtyZXR1cm4gV2koZW4sdCl9Y29uc3QgdG49ZCgiWm9kQmFzZTY0IiwodCxuKT0+e2d1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEFvKHQpe3JldHVybiBCaSh0bix0KX1jb25zdCBubj1kKCJab2RCYXNlNjRVUkwiLCh0LG4pPT57aHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gTG8odCl7cmV0dXJuIEdpKG5uLHQpfWNvbnN0IHJuPWQoIlpvZEUxNjQiLCh0LG4pPT57JHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gTW8odCl7cmV0dXJuIFhpKHJuLHQpfWNvbnN0IG9uPWQoIlpvZEpXVCIsKHQsbik9PntidS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBxbyh0KXtyZXR1cm4gWWkob24sdCl9Y29uc3QgWmU9ZCgiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwodCxuKT0+e3l1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEZvKHQsbixyPXt9KXtyZXR1cm4gTHQoWmUsdCxuLHIpfWZ1bmN0aW9uIEpvKHQpe3JldHVybiBMdChaZSwiaG9zdG5hbWUiLGRjLHQpfWZ1bmN0aW9uIEhvKHQpe3JldHVybiBMdChaZSwiaGV4Iix4Yyx0KX1mdW5jdGlvbiBWbyh0LG4pe2NvbnN0IHI9bj8uZW5jPz8iaGV4IixvPWAke3R9XyR7cn1gLGU9cW5bb107aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gTHQoWmUsbyxlLG4pfWNvbnN0IG50PWQoIlpvZE51bWJlciIsKHQsbik9PntTaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PlFsKHQsbyxlKSxNdCh0LCJab2ROdW1iZXIiLHtndChvLGUpe3JldHVybiB0aGlzLmNoZWNrKF9lKG8sZSkpfSxndGUobyxlKXtyZXR1cm4gdGhpcy5jaGVjayh0ZShvLGUpKX0sbWluKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2sodGUobyxlKSl9LGx0KG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soJGUobyxlKSl9LGx0ZShvLGUpe3JldHVybiB0aGlzLmNoZWNrKGllKG8sZSkpfSxtYXgobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhpZShvLGUpKX0saW50KG8pe3JldHVybiB0aGlzLmNoZWNrKHZ0KG8pKX0sc2FmZShvKXtyZXR1cm4gdGhpcy5jaGVjayh2dChvKSl9LHBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKF9lKDAsbykpfSxub25uZWdhdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayh0ZSgwLG8pKX0sbmVnYXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2soJGUoMCxvKSl9LG5vbnBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKGllKDAsbykpfSxtdWx0aXBsZU9mKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soVWUobyxlKSl9LHN0ZXAobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhVZShvLGUpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9TWF0aC5tYXgoci5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNaW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpPz9udWxsLHQubWF4VmFsdWU9TWF0aC5taW4oci5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpPz9udWxsLHQuaXNJbnQ9KHIuZm9ybWF0Pz8iIikuaW5jbHVkZXMoImludCIpfHxOdW1iZXIuaXNTYWZlSW50ZWdlcihyLm11bHRpcGxlT2Y/Py41KSx0LmlzRmluaXRlPSEwLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24geih0KXtyZXR1cm4gX2wobnQsdCl9Y29uc3Qgd2U9ZCgiWm9kTnVtYmVyRm9ybWF0IiwodCxuKT0+e2t1LmluaXQodCxuKSxudC5pbml0KHQsbil9KTtmdW5jdGlvbiB2dCh0KXtyZXR1cm4geWwod2UsdCl9ZnVuY3Rpb24gS28odCl7cmV0dXJuIGtsKHdlLHQpfWZ1bmN0aW9uIFdvKHQpe3JldHVybiBTbCh3ZSx0KX1mdW5jdGlvbiBCbyh0KXtyZXR1cm4gd2wod2UsdCl9ZnVuY3Rpb24gR28odCl7cmV0dXJuIElsKHdlLHQpfWNvbnN0IHJ0PWQoIlpvZEJvb2xlYW4iLCh0LG4pPT57d2kuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5lZCh0LHIsbyl9KTtmdW5jdGlvbiBEKHQpe3JldHVybiB6bChydCx0KX1jb25zdCBpdD1kKCJab2RCaWdJbnQiLCh0LG4pPT57SWkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT50ZCh0LG8pLHQuZ3RlPShvLGUpPT50LmNoZWNrKHRlKG8sZSkpLHQubWluPShvLGUpPT50LmNoZWNrKHRlKG8sZSkpLHQuZ3Q9KG8sZSk9PnQuY2hlY2soX2UobyxlKSksdC5ndGU9KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5taW49KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5sdD0obyxlKT0+dC5jaGVjaygkZShvLGUpKSx0Lmx0ZT0obyxlKT0+dC5jaGVjayhpZShvLGUpKSx0Lm1heD0obyxlKT0+dC5jaGVjayhpZShvLGUpKSx0LnBvc2l0aXZlPW89PnQuY2hlY2soX2UoQmlnSW50KDApLG8pKSx0Lm5lZ2F0aXZlPW89PnQuY2hlY2soJGUoQmlnSW50KDApLG8pKSx0Lm5vbnBvc2l0aXZlPW89PnQuY2hlY2soaWUoQmlnSW50KDApLG8pKSx0Lm5vbm5lZ2F0aXZlPW89PnQuY2hlY2sodGUoQmlnSW50KDApLG8pKSx0Lm11bHRpcGxlT2Y9KG8sZSk9PnQuY2hlY2soVWUobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9ci5taW5pbXVtPz9udWxsLHQubWF4VmFsdWU9ci5tYXhpbXVtPz9udWxsLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24gWG8odCl7cmV0dXJuIFRsKGl0LHQpfWNvbnN0IGFuPWQoIlpvZEJpZ0ludEZvcm1hdCIsKHQsbik9PntTdS5pbml0KHQsbiksaXQuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gWW8odCl7cmV0dXJuIFVsKGFuLHQpfWZ1bmN0aW9uIFFvKHQpe3JldHVybiBQbChhbix0KX1jb25zdCBucj1kKCJab2RTeW1ib2wiLCh0LG4pPT57d3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5uZCh0LHIpfSk7ZnVuY3Rpb24gZWEodCl7cmV0dXJuIE9sKG5yLHQpfWNvbnN0IHJyPWQoIlpvZFVuZGVmaW5lZCIsKHQsbik9PntJdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmlkKHQscil9KTtmdW5jdGlvbiBLZSh0KXtyZXR1cm4gRGwocnIsdCl9Y29uc3QgaXI9ZCgiWm9kTnVsbCIsKHQsbik9Pnt6dS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnJkKHQscixvKX0pO2Z1bmN0aW9uIHNuKHQpe3JldHVybiBObChpcix0KX1jb25zdCBvcj1kKCJab2RBbnkiLCh0LG4pPT57eHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5zZCgpfSk7ZnVuY3Rpb24gdGEoKXtyZXR1cm4gRWwob3IpfWNvbnN0IGFyPWQoIlpvZFVua25vd24iLCh0LG4pPT57VHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5jZCgpfSk7ZnVuY3Rpb24gTygpe3JldHVybiBabChhcil9Y29uc3Qgc3I9ZCgiWm9kTmV2ZXIiLCh0LG4pPT57anUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5hZCh0LHIsbyl9KTtmdW5jdGlvbiBQZSh0KXtyZXR1cm4gUmwoc3IsdCl9Y29uc3QgY3I9ZCgiWm9kVm9pZCIsKHQsbik9PntVdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pm9kKHQscil9KTtmdW5jdGlvbiBuYSh0KXtyZXR1cm4gQ2woY3IsdCl9Y29uc3QgY249ZCgiWm9kRGF0ZSIsKHQsbik9PntQdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PnVkKHQsbyksdC5taW49KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5tYXg9KG8sZSk9PnQuY2hlY2soaWUobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluRGF0ZT1yLm1pbmltdW0/bmV3IERhdGUoci5taW5pbXVtKTpudWxsLHQubWF4RGF0ZT1yLm1heGltdW0/bmV3IERhdGUoci5tYXhpbXVtKTpudWxsfSk7ZnVuY3Rpb24gcmEodCl7cmV0dXJuIEFsKGNuLHQpfWNvbnN0IHVyPWQoIlpvZEFycmF5IiwodCxuKT0+e091LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+eWQodCxyLG8sZSksdC5lbGVtZW50PW4uZWxlbWVudCxNdCh0LCJab2RBcnJheSIse21pbihyLG8pe3JldHVybiB0aGlzLmNoZWNrKGtlKHIsbykpfSxub25lbXB0eShyKXtyZXR1cm4gdGhpcy5jaGVjayhrZSgxLHIpKX0sbWF4KHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soWWUocixvKSl9LGxlbmd0aChyLG8pe3JldHVybiB0aGlzLmNoZWNrKFFlKHIsbykpfSx1bndyYXAoKXtyZXR1cm4gdGhpcy5lbGVtZW50fX0pfSk7ZnVuY3Rpb24gdyh0LG4pe3JldHVybiBxbCh1cix0LG4pfWZ1bmN0aW9uIGlhKHQpe2NvbnN0IG49dC5fem9kLmRlZi5zaGFwZTtyZXR1cm4gRyhPYmplY3Qua2V5cyhuKSl9Y29uc3Qgb3Q9ZCgiWm9kT2JqZWN0IiwodCxuKT0+e1p1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+a2QodCxyLG8sZSksVCh0LCJzaGFwZSIsKCk9Pm4uc2hhcGUpLE10KHQsIlpvZE9iamVjdCIse2tleW9mKCl7cmV0dXJuIEcoT2JqZWN0LmtleXModGhpcy5fem9kLmRlZi5zaGFwZSkpfSxjYXRjaGFsbChyKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpyfSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TygpfSl9LGxvb3NlKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TygpfSl9LHN0cmljdCgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOlBlKCl9KX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDp2b2lkIDB9KX0sZXh0ZW5kKHIpe3JldHVybiBScyh0aGlzLHIpfSxzYWZlRXh0ZW5kKHIpe3JldHVybiBDcyh0aGlzLHIpfSxtZXJnZShyKXtyZXR1cm4gQXModGhpcyxyKX0scGljayhyKXtyZXR1cm4gRXModGhpcyxyKX0sb21pdChyKXtyZXR1cm4gWnModGhpcyxyKX0scGFydGlhbCguLi5yKXtyZXR1cm4gTHMoZG4sdGhpcyxyWzBdKX0scmVxdWlyZWQoLi4ucil7cmV0dXJuIE1zKG1uLHRoaXMsclswXSl9fSl9KTtmdW5jdGlvbiBmKHQsbil7Y29uc3Qgcj17dHlwZToib2JqZWN0IixzaGFwZTp0Pz97fSwuLi5oKG4pfTtyZXR1cm4gbmV3IG90KHIpfWZ1bmN0aW9uIG9hKHQsbil7cmV0dXJuIG5ldyBvdCh7dHlwZToib2JqZWN0IixzaGFwZTp0LGNhdGNoYWxsOlBlKCksLi4uaChuKX0pfWZ1bmN0aW9uIEIodCxuKXtyZXR1cm4gbmV3IG90KHt0eXBlOiJvYmplY3QiLHNoYXBlOnQsY2F0Y2hhbGw6TygpLC4uLmgobil9KX1jb25zdCBhdD1kKCJab2RVbmlvbiIsKHQsbik9PntGbi5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmVvKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiBqKHQsbil7cmV0dXJuIG5ldyBhdCh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi5oKG4pfSl9Y29uc3QgbHI9ZCgiWm9kWG9yIiwodCxuKT0+e2F0LmluaXQodCxuKSxSdS5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmVvKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiBhYSh0LG4pe3JldHVybiBuZXcgbHIoe3R5cGU6InVuaW9uIixvcHRpb25zOnQsaW5jbHVzaXZlOiExLC4uLmgobil9KX1jb25zdCBkcj1kKCJab2REaXNjcmltaW5hdGVkVW5pb24iLCh0LG4pPT57YXQuaW5pdCh0LG4pLEN1LmluaXQodCxuKX0pO2Z1bmN0aW9uIHVuKHQsbixyKXtyZXR1cm4gbmV3IGRyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLGRpc2NyaW1pbmF0b3I6dCwuLi5oKHIpfSl9Y29uc3QgbXI9ZCgiWm9kSW50ZXJzZWN0aW9uIiwodCxuKT0+e0F1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+U2QodCxyLG8sZSl9KTtmdW5jdGlvbiBzdCh0LG4pe3JldHVybiBuZXcgbXIoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1jb25zdCBwcj1kKCJab2RUdXBsZSIsKHQsbik9Pnt6aS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PndkKHQscixvLGUpLHQucmVzdD1yPT50LmNsb25lKHsuLi50Ll96b2QuZGVmLHJlc3Q6cn0pfSk7ZnVuY3Rpb24gZnIodCxuLHIpe2NvbnN0IG89biBpbnN0YW5jZW9mIEksZT1vP3I6bixpPW8/bjpudWxsO3JldHVybiBuZXcgcHIoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi5oKGUpfSl9Y29uc3QgT2U9ZCgiWm9kUmVjb3JkIiwodCxuKT0+e0x1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+SWQodCxyLG8sZSksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZX0pO2Z1bmN0aW9uIFUodCxuLHIpe3JldHVybiFufHwhbi5fem9kP25ldyBPZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOnAoKSx2YWx1ZVR5cGU6dCwuLi5oKG4pfSk6bmV3IE9lKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gc2EodCxuLHIpe2NvbnN0IG89YWUodCk7cmV0dXJuIG8uX3pvZC52YWx1ZXM9dm9pZCAwLG5ldyBPZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOm8sdmFsdWVUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIGNhKHQsbixyKXtyZXR1cm4gbmV3IE9lKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6bixtb2RlOiJsb29zZSIsLi4uaChyKX0pfWNvbnN0IGdyPWQoIlpvZE1hcCIsKHQsbik9PntNdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pl9kKHQsciksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZSx0Lm1pbj0oLi4ucik9PnQuY2hlY2soYmUoLi4ucikpLHQubm9uZW1wdHk9cj0+dC5jaGVjayhiZSgxLHIpKSx0Lm1heD0oLi4ucik9PnQuY2hlY2soRWUoLi4ucikpLHQuc2l6ZT0oLi4ucik9PnQuY2hlY2soWGUoLi4ucikpfSk7ZnVuY3Rpb24gdWEodCxuLHIpe3JldHVybiBuZXcgZ3Ioe3R5cGU6Im1hcCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLC4uLmgocil9KX1jb25zdCB2cj1kKCJab2RTZXQiLCh0LG4pPT57cXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5iZCh0LHIpLHQubWluPSguLi5yKT0+dC5jaGVjayhiZSguLi5yKSksdC5ub25lbXB0eT1yPT50LmNoZWNrKGJlKDEscikpLHQubWF4PSguLi5yKT0+dC5jaGVjayhFZSguLi5yKSksdC5zaXplPSguLi5yKT0+dC5jaGVjayhYZSguLi5yKSl9KTtmdW5jdGlvbiBsYSh0LG4pe3JldHVybiBuZXcgdnIoe3R5cGU6InNldCIsdmFsdWVUeXBlOnQsLi4uaChuKX0pfWNvbnN0IERlPWQoIlpvZEVudW0iLCh0LG4pPT57RnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5sZCh0LG8sZSksdC5lbnVtPW4uZW50cmllcyx0Lm9wdGlvbnM9T2JqZWN0LnZhbHVlcyhuLmVudHJpZXMpO2NvbnN0IHI9bmV3IFNldChPYmplY3Qua2V5cyhuLmVudHJpZXMpKTt0LmV4dHJhY3Q9KG8sZSk9Pntjb25zdCBpPXt9O2Zvcihjb25zdCBhIG9mIG8paWYoci5oYXMoYSkpaVthXT1uLmVudHJpZXNbYV07ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEtleSAke2F9IG5vdCBmb3VuZCBpbiBlbnVtYCk7cmV0dXJuIG5ldyBEZSh7Li4ubixjaGVja3M6W10sLi4uaChlKSxlbnRyaWVzOml9KX0sdC5leGNsdWRlPShvLGUpPT57Y29uc3QgaT17Li4ubi5lbnRyaWVzfTtmb3IoY29uc3QgYSBvZiBvKWlmKHIuaGFzKGEpKWRlbGV0ZSBpW2FdO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHthfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgRGUoey4uLm4sY2hlY2tzOltdLC4uLmgoZSksZW50cmllczppfSl9fSk7ZnVuY3Rpb24gRyh0LG4pe2NvbnN0IHI9QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAobz0+W28sb10pKTp0O3JldHVybiBuZXcgRGUoe3R5cGU6ImVudW0iLGVudHJpZXM6ciwuLi5oKG4pfSl9ZnVuY3Rpb24gZGEodCxuKXtyZXR1cm4gbmV3IERlKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4uaChuKX0pfWNvbnN0IGhyPWQoIlpvZExpdGVyYWwiLCh0LG4pPT57SnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5kZCh0LHIsbyksdC52YWx1ZXM9bmV3IFNldChuLnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInZhbHVlIix7Z2V0KCl7aWYobi52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiBuLnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIG0odCxuKXtyZXR1cm4gbmV3IGhyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheSh0KT90Olt0XSwuLi5oKG4pfSl9Y29uc3QgJHI9ZCgiWm9kRmlsZSIsKHQsbik9PntIdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmZkKHQscixvKSx0Lm1pbj0ocixvKT0+dC5jaGVjayhiZShyLG8pKSx0Lm1heD0ocixvKT0+dC5jaGVjayhFZShyLG8pKSx0Lm1pbWU9KHIsbyk9PnQuY2hlY2soTnQoQXJyYXkuaXNBcnJheShyKT9yOltyXSxvKSl9KTtmdW5jdGlvbiBtYSh0KXtyZXR1cm4gRmwoJHIsdCl9Y29uc3QgX3I9ZCgiWm9kVHJhbnNmb3JtIiwodCxuKT0+e1Z1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+JGQodCxyKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IEVuKHQuY29uc3RydWN0b3IubmFtZSk7ci5hZGRJc3N1ZT1pPT57aWYodHlwZW9mIGk9PSJzdHJpbmciKXIuaXNzdWVzLnB1c2goTWUoaSxyLnZhbHVlLG4pKTtlbHNle2NvbnN0IGE9aTthLmZhdGFsJiYoYS5jb250aW51ZT0hMSksYS5jb2RlPz8oYS5jb2RlPSJjdXN0b20iKSxhLmlucHV0Pz8oYS5pbnB1dD1yLnZhbHVlKSxhLmluc3Q/PyhhLmluc3Q9dCksci5pc3N1ZXMucHVzaChNZShhKSl9fTtjb25zdCBlPW4udHJhbnNmb3JtKHIudmFsdWUscik7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLHIuZmFsbGJhY2s9ITAscikpOihyLnZhbHVlPWUsci5mYWxsYmFjaz0hMCxyKX19KTtmdW5jdGlvbiBsbih0KXtyZXR1cm4gbmV3IF9yKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9Y29uc3QgZG49ZCgiWm9kT3B0aW9uYWwiLCh0LG4pPT57eGkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT50byh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBBKHQpe3JldHVybiBuZXcgZG4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWNvbnN0IGJyPWQoIlpvZEV4YWN0T3B0aW9uYWwiLCh0LG4pPT57S3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT50byh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB5cih0KXtyZXR1cm4gbmV3IGJyKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnR9KX1jb25zdCBrcj1kKCJab2ROdWxsYWJsZSIsKHQsbik9PntXdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnpkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFdlKHQpe3JldHVybiBuZXcga3Ioe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHBhKHQpe3JldHVybiBBKFdlKHQpKX1jb25zdCBTcj1kKCJab2REZWZhdWx0IiwodCxuKT0+e0J1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+VGQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlLHQucmVtb3ZlRGVmYXVsdD10LnVud3JhcH0pO2Z1bmN0aW9uIHdyKHQsbil7cmV0dXJuIG5ldyBTcih7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOnQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKCk6Um4obil9fSl9Y29uc3QgSXI9ZCgiWm9kUHJlZmF1bHQiLCh0LG4pPT57R3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5qZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB6cih0LG4pe3JldHVybiBuZXcgSXIoe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpSbihuKX19KX1jb25zdCBtbj1kKCJab2ROb25PcHRpb25hbCIsKHQsbik9PntYdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnhkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHhyKHQsbil7cmV0dXJuIG5ldyBtbih7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTp0LC4uLmgobil9KX1jb25zdCBUcj1kKCJab2RTdWNjZXNzIiwodCxuKT0+e1l1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+Z2QodCxyLG8pLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGZhKHQpe3JldHVybiBuZXcgVHIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTp0fSl9Y29uc3QganI9ZCgiWm9kQ2F0Y2giLCh0LG4pPT57UXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5VZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGUsdC5yZW1vdmVDYXRjaD10LnVud3JhcH0pO2Z1bmN0aW9uIFVyKHQsbil7cmV0dXJuIG5ldyBqcih7dHlwZToiY2F0Y2giLGlubmVyVHlwZTp0LGNhdGNoVmFsdWU6dHlwZW9mIG49PSJmdW5jdGlvbiI/bjooKT0+bn0pfWNvbnN0IFByPWQoIlpvZE5hTiIsKHQsbik9PntlbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pm1kKHQscil9KTtmdW5jdGlvbiBnYSh0KXtyZXR1cm4gTWwoUHIsdCl9Y29uc3QgY3Q9ZCgiWm9kUGlwZSIsKHQsbik9PntUaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlBkKHQscixvLGUpLHQuaW49bi5pbix0Lm91dD1uLm91dH0pO2Z1bmN0aW9uIGh0KHQsbil7cmV0dXJuIG5ldyBjdCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bn0pfWNvbnN0IHV0PWQoIlpvZENvZGVjIiwodCxuKT0+e2N0LmluaXQodCxuKSxqaS5pbml0KHQsbil9KTtmdW5jdGlvbiB2YSh0LG4scil7cmV0dXJuIG5ldyB1dCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bix0cmFuc2Zvcm06ci5kZWNvZGUscmV2ZXJzZVRyYW5zZm9ybTpyLmVuY29kZX0pfWZ1bmN0aW9uIGhhKHQpe2NvbnN0IG49dC5fem9kLmRlZjtyZXR1cm4gbmV3IHV0KHt0eXBlOiJwaXBlIixpbjpuLm91dCxvdXQ6bi5pbix0cmFuc2Zvcm06bi5yZXZlcnNlVHJhbnNmb3JtLHJldmVyc2VUcmFuc2Zvcm06bi50cmFuc2Zvcm19KX1jb25zdCBPcj1kKCJab2RQcmVwcm9jZXNzIiwodCxuKT0+e2N0LmluaXQodCxuKSx0bC5pbml0KHQsbil9KSxEcj1kKCJab2RSZWFkb25seSIsKHQsbik9PntubC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk9kKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIE5yKHQpe3JldHVybiBuZXcgRHIoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWNvbnN0IEVyPWQoIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKHQsbik9PntybC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnBkKHQscixvKX0pO2Z1bmN0aW9uICRhKHQsbil7cmV0dXJuIG5ldyBFcih7dHlwZToidGVtcGxhdGVfbGl0ZXJhbCIscGFydHM6dCwuLi5oKG4pfSl9Y29uc3QgWnI9ZCgiWm9kTGF6eSIsKHQsbik9PnthbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk5kKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gUnIodCl7cmV0dXJuIG5ldyBacih7dHlwZToibGF6eSIsZ2V0dGVyOnR9KX1jb25zdCBDcj1kKCJab2RQcm9taXNlIiwodCxuKT0+e29sLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+RGQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gX2EodCl7cmV0dXJuIG5ldyBDcih7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOnR9KX1jb25zdCBBcj1kKCJab2RGdW5jdGlvbiIsKHQsbik9PntpbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmhkKHQscil9KTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gbmV3IEFyKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6QXJyYXkuaXNBcnJheSh0Py5pbnB1dCk/ZnIodD8uaW5wdXQpOnQ/LmlucHV0Pz93KE8oKSksb3V0cHV0OnQ/Lm91dHB1dD8/TygpfSl9Y29uc3QgbHQ9ZCgiWm9kQ3VzdG9tIiwodCxuKT0+e3NsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+dmQodCxyKX0pO2Z1bmN0aW9uIGJhKHQpe2NvbnN0IG49bmV3IE0oe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIG4uX3pvZC5jaGVjaz10LG59ZnVuY3Rpb24gTHIodCxuKXtyZXR1cm4gSmwobHQsdD8/KCgpPT4hMCksbil9ZnVuY3Rpb24gTXIodCxuPXt9KXtyZXR1cm4gSGwobHQsdCxuKX1mdW5jdGlvbiBxcih0LG4pe3JldHVybiBWbCh0LG4pfWNvbnN0IHlhPVdsLGthPUJsO2Z1bmN0aW9uIFNhKHQsbj17fSl7Y29uc3Qgcj1uZXcgbHQoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIHQsYWJvcnQ6ITAsLi4uaChuKX0pO3JldHVybiByLl96b2QuYmFnLkNsYXNzPXQsci5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgdHx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDp0Lm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0OnIscGF0aDpbLi4uci5fem9kLmRlZi5wYXRoPz9bXV19KX0scn1jb25zdCB3YT0oLi4udCk9PkdsKHtDb2RlYzp1dCxCb29sZWFuOnJ0LFN0cmluZzpldH0sLi4udCk7ZnVuY3Rpb24gSWEodCl7Y29uc3Qgbj1ScigoKT0+aihbcCh0KSx6KCksRCgpLHNuKCksdyhuKSxVKHAoKSxuKV0pKTtyZXR1cm4gbn1mdW5jdGlvbiBwbih0LG4pe3JldHVybiBuZXcgT3Ioe3R5cGU6InBpcGUiLGluOmxuKHQpLG91dDpufSl9Y29uc3QgQ2c9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpvcixab2RBcnJheTp1cixab2RCYXNlNjQ6dG4sWm9kQmFzZTY0VVJMOm5uLFpvZEJpZ0ludDppdCxab2RCaWdJbnRGb3JtYXQ6YW4sWm9kQm9vbGVhbjpydCxab2RDSURSdjQ6UXQsWm9kQ0lEUnY2OmVuLFpvZENVSUQ6VnQsWm9kQ1VJRDI6S3QsWm9kQ2F0Y2g6anIsWm9kQ29kZWM6dXQsWm9kQ3VzdG9tOmx0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpaZSxab2REYXRlOmNuLFpvZERlZmF1bHQ6U3IsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmRyLFpvZEUxNjQ6cm4sWm9kRW1haWw6RnQsWm9kRW1vamk6SnQsWm9kRW51bTpEZSxab2RFeGFjdE9wdGlvbmFsOmJyLFpvZEZpbGU6JHIsWm9kRnVuY3Rpb246QXIsWm9kR1VJRDpWZSxab2RJUHY0Olh0LFpvZElQdjY6WXQsWm9kSW50ZXJzZWN0aW9uOm1yLFpvZEpXVDpvbixab2RLU1VJRDpHdCxab2RMYXp5OlpyLFpvZExpdGVyYWw6aHIsWm9kTUFDOnRyLFpvZE1hcDpncixab2ROYU46UHIsWm9kTmFub0lEOkh0LFpvZE5ldmVyOnNyLFpvZE5vbk9wdGlvbmFsOm1uLFpvZE51bGw6aXIsWm9kTnVsbGFibGU6a3IsWm9kTnVtYmVyOm50LFpvZE51bWJlckZvcm1hdDp3ZSxab2RPYmplY3Q6b3QsWm9kT3B0aW9uYWw6ZG4sWm9kUGlwZTpjdCxab2RQcmVmYXVsdDpJcixab2RQcmVwcm9jZXNzOk9yLFpvZFByb21pc2U6Q3IsWm9kUmVhZG9ubHk6RHIsWm9kUmVjb3JkOk9lLFpvZFNldDp2cixab2RTdHJpbmc6ZXQsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2VzczpUcixab2RTeW1ib2w6bnIsWm9kVGVtcGxhdGVMaXRlcmFsOkVyLFpvZFRyYW5zZm9ybTpfcixab2RUdXBsZTpwcixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6dHQsWm9kVVVJRDptZSxab2RVbmRlZmluZWQ6cnIsWm9kVW5pb246YXQsWm9kVW5rbm93bjphcixab2RWb2lkOmNyLFpvZFhJRDpCdCxab2RYb3I6bHIsX1pvZFN0cmluZzpxdCxfZGVmYXVsdDp3cixfZnVuY3Rpb246QmUsYW55OnRhLGFycmF5OncsYmFzZTY0OkFvLGJhc2U2NHVybDpMbyxiaWdpbnQ6WG8sYm9vbGVhbjpELGNhdGNoOlVyLGNoZWNrOmJhLGNpZHJ2NDpSbyxjaWRydjY6Q28sY29kZWM6dmEsY3VpZDpqbyxjdWlkMjpVbyxjdXN0b206THIsZGF0ZTpyYSxkZXNjcmliZTp5YSxkaXNjcmltaW5hdGVkVW5pb246dW4sZTE2NDpNbyxlbWFpbDpfbyxlbW9qaTp4byxlbnVtOkcsZXhhY3RPcHRpb25hbDp5cixmaWxlOm1hLGZsb2F0MzI6S28sZmxvYXQ2NDpXbyxmdW5jdGlvbjpCZSxndWlkOmJvLGhhc2g6Vm8saGV4OkhvLGhvc3RuYW1lOkpvLGh0dHBVcmw6em8saW5zdGFuY2VvZjpTYSxpbnQ6dnQsaW50MzI6Qm8saW50NjQ6WW8saW50ZXJzZWN0aW9uOnN0LGludmVydENvZGVjOmhhLGlwdjQ6Tm8saXB2Njpabyxqc29uOklhLGp3dDpxbyxrZXlvZjppYSxrc3VpZDpEbyxsYXp5OlJyLGxpdGVyYWw6bSxsb29zZU9iamVjdDpCLGxvb3NlUmVjb3JkOmNhLG1hYzpFbyxtYXA6dWEsbWV0YTprYSxuYW46Z2EsbmFub2lkOlRvLG5hdGl2ZUVudW06ZGEsbmV2ZXI6UGUsbm9ub3B0aW9uYWw6eHIsbnVsbDpzbixudWxsYWJsZTpXZSxudWxsaXNoOnBhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEscGFydGlhbFJlY29yZDpzYSxwaXBlOmh0LHByZWZhdWx0OnpyLHByZXByb2Nlc3M6cG4scHJvbWlzZTpfYSxyZWFkb25seTpOcixyZWNvcmQ6VSxyZWZpbmU6TXIsc2V0OmxhLHN0cmljdE9iamVjdDpvYSxzdHJpbmc6cCxzdHJpbmdGb3JtYXQ6Rm8sc3RyaW5nYm9vbDp3YSxzdWNjZXNzOmZhLHN1cGVyUmVmaW5lOnFyLHN5bWJvbDplYSx0ZW1wbGF0ZUxpdGVyYWw6JGEsdHJhbnNmb3JtOmxuLHR1cGxlOmZyLHVpbnQzMjpHbyx1aW50NjQ6UW8sdWxpZDpQbyx1bmRlZmluZWQ6S2UsdW5pb246aix1bmtub3duOk8sdXJsOklvLHV1aWQ6eW8sdXVpZHY0OmtvLHV1aWR2NjpTbyx1dWlkdjc6d28sdm9pZDpuYSx4aWQ6T28seG9yOmFhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHFkPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiBGZCh0KXtIKHtjdXN0b21FcnJvcjp0fSl9ZnVuY3Rpb24gSmQoKXtyZXR1cm4gSCgpLmN1c3RvbUVycm9yfXZhciBPbjtPbnx8KE9uPXt9KTtjb25zdCBiPXsuLi5DZywuLi5SZyxpc286b299LEFnPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIExnKHQsbil7Y29uc3Qgcj10LiRzY2hlbWE7cmV0dXJuIHI9PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpyPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOnI9PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6bj8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIE1nKHQsbil7aWYoIXQuc3RhcnRzV2l0aCgiIyIpKXRocm93IG5ldyBFcnJvcigiRXh0ZXJuYWwgJHJlZiBpcyBub3Qgc3VwcG9ydGVkLCBvbmx5IGxvY2FsIHJlZnMgKCMvLi4uKSBhcmUgYWxsb3dlZCIpO2NvbnN0IHI9dC5zbGljZSgxKS5zcGxpdCgiLyIpLmZpbHRlcihCb29sZWFuKTtpZihyLmxlbmd0aD09PTApcmV0dXJuIG4ucm9vdFNjaGVtYTtjb25zdCBvPW4udmVyc2lvbj09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7aWYoclswXT09PW8pe2NvbnN0IGU9clsxXTtpZighZXx8IW4uZGVmc1tlXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7dH1gKTtyZXR1cm4gbi5kZWZzW2VdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHt0fWApfWZ1bmN0aW9uIEhkKHQsbil7aWYodC5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiB0Lm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKHQubm90KS5sZW5ndGg9PT0wKXJldHVybiBiLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYodC51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYodC51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHQuaWYhPT12b2lkIDB8fHQudGhlbiE9PXZvaWQgMHx8dC5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKHQuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8dC5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYodC4kcmVmKXtjb25zdCBlPXQuJHJlZjtpZihuLnJlZnMuaGFzKGUpKXJldHVybiBuLnJlZnMuZ2V0KGUpO2lmKG4ucHJvY2Vzc2luZy5oYXMoZSkpcmV0dXJuIGIubGF6eSgoKT0+e2lmKCFuLnJlZnMuaGFzKGUpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtlfWApO3JldHVybiBuLnJlZnMuZ2V0KGUpfSk7bi5wcm9jZXNzaW5nLmFkZChlKTtjb25zdCBpPU1nKGUsbiksYT1RKGksbik7cmV0dXJuIG4ucmVmcy5zZXQoZSxhKSxuLnByb2Nlc3NpbmcuZGVsZXRlKGUpLGF9aWYodC5lbnVtIT09dm9pZCAwKXtjb25zdCBlPXQuZW51bTtpZihuLnZlcnNpb249PT0ib3BlbmFwaS0zLjAiJiZ0Lm51bGxhYmxlPT09ITAmJmUubGVuZ3RoPT09MSYmZVswXT09PW51bGwpcmV0dXJuIGIubnVsbCgpO2lmKGUubGVuZ3RoPT09MClyZXR1cm4gYi5uZXZlcigpO2lmKGUubGVuZ3RoPT09MSlyZXR1cm4gYi5saXRlcmFsKGVbMF0pO2lmKGUuZXZlcnkoYT0+dHlwZW9mIGE9PSJzdHJpbmciKSlyZXR1cm4gYi5lbnVtKGUpO2NvbnN0IGk9ZS5tYXAoYT0+Yi5saXRlcmFsKGEpKTtyZXR1cm4gaS5sZW5ndGg8Mj9pWzBdOmIudW5pb24oW2lbMF0saVsxXSwuLi5pLnNsaWNlKDIpXSl9aWYodC5jb25zdCE9PXZvaWQgMClyZXR1cm4gYi5saXRlcmFsKHQuY29uc3QpO2NvbnN0IHI9dC50eXBlO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9ci5tYXAoaT0+e2NvbnN0IGE9ey4uLnQsdHlwZTppfTtyZXR1cm4gSGQoYSxuKX0pO3JldHVybiBlLmxlbmd0aD09PTA/Yi5uZXZlcigpOmUubGVuZ3RoPT09MT9lWzBdOmIudW5pb24oZSl9aWYoIXIpcmV0dXJuIGIuYW55KCk7bGV0IG87c3dpdGNoKHIpe2Nhc2Uic3RyaW5nIjp7bGV0IGU9Yi5zdHJpbmcoKTtpZih0LmZvcm1hdCl7Y29uc3QgaT10LmZvcm1hdDtpPT09ImVtYWlsIj9lPWUuY2hlY2soYi5lbWFpbCgpKTppPT09InVyaSJ8fGk9PT0idXJpLXJlZmVyZW5jZSI/ZT1lLmNoZWNrKGIudXJsKCkpOmk9PT0idXVpZCJ8fGk9PT0iZ3VpZCI/ZT1lLmNoZWNrKGIudXVpZCgpKTppPT09ImRhdGUtdGltZSI/ZT1lLmNoZWNrKGIuaXNvLmRhdGV0aW1lKCkpOmk9PT0iZGF0ZSI/ZT1lLmNoZWNrKGIuaXNvLmRhdGUoKSk6aT09PSJ0aW1lIj9lPWUuY2hlY2soYi5pc28udGltZSgpKTppPT09ImR1cmF0aW9uIj9lPWUuY2hlY2soYi5pc28uZHVyYXRpb24oKSk6aT09PSJpcHY0Ij9lPWUuY2hlY2soYi5pcHY0KCkpOmk9PT0iaXB2NiI/ZT1lLmNoZWNrKGIuaXB2NigpKTppPT09Im1hYyI/ZT1lLmNoZWNrKGIubWFjKCkpOmk9PT0iY2lkciI/ZT1lLmNoZWNrKGIuY2lkcnY0KCkpOmk9PT0iY2lkci12NiI/ZT1lLmNoZWNrKGIuY2lkcnY2KCkpOmk9PT0iYmFzZTY0Ij9lPWUuY2hlY2soYi5iYXNlNjQoKSk6aT09PSJiYXNlNjR1cmwiP2U9ZS5jaGVjayhiLmJhc2U2NHVybCgpKTppPT09ImUxNjQiP2U9ZS5jaGVjayhiLmUxNjQoKSk6aT09PSJqd3QiP2U9ZS5jaGVjayhiLmp3dCgpKTppPT09ImVtb2ppIj9lPWUuY2hlY2soYi5lbW9qaSgpKTppPT09Im5hbm9pZCI/ZT1lLmNoZWNrKGIubmFub2lkKCkpOmk9PT0iY3VpZCI/ZT1lLmNoZWNrKGIuY3VpZCgpKTppPT09ImN1aWQyIj9lPWUuY2hlY2soYi5jdWlkMigpKTppPT09InVsaWQiP2U9ZS5jaGVjayhiLnVsaWQoKSk6aT09PSJ4aWQiP2U9ZS5jaGVjayhiLnhpZCgpKTppPT09ImtzdWlkIiYmKGU9ZS5jaGVjayhiLmtzdWlkKCkpKX10eXBlb2YgdC5taW5MZW5ndGg9PSJudW1iZXIiJiYoZT1lLm1pbih0Lm1pbkxlbmd0aCkpLHR5cGVvZiB0Lm1heExlbmd0aD09Im51bWJlciImJihlPWUubWF4KHQubWF4TGVuZ3RoKSksdC5wYXR0ZXJuJiYoZT1lLnJlZ2V4KG5ldyBSZWdFeHAodC5wYXR0ZXJuKSkpLG89ZTticmVha31jYXNlIm51bWJlciI6Y2FzZSJpbnRlZ2VyIjp7bGV0IGU9cj09PSJpbnRlZ2VyIj9iLm51bWJlcigpLmludCgpOmIubnVtYmVyKCk7dHlwZW9mIHQubWluaW11bT09Im51bWJlciImJihlPWUubWluKHQubWluaW11bSkpLHR5cGVvZiB0Lm1heGltdW09PSJudW1iZXIiJiYoZT1lLm1heCh0Lm1heGltdW0pKSx0eXBlb2YgdC5leGNsdXNpdmVNaW5pbXVtPT0ibnVtYmVyIj9lPWUuZ3QodC5leGNsdXNpdmVNaW5pbXVtKTp0LmV4Y2x1c2l2ZU1pbmltdW09PT0hMCYmdHlwZW9mIHQubWluaW11bT09Im51bWJlciImJihlPWUuZ3QodC5taW5pbXVtKSksdHlwZW9mIHQuZXhjbHVzaXZlTWF4aW11bT09Im51bWJlciI/ZT1lLmx0KHQuZXhjbHVzaXZlTWF4aW11bSk6dC5leGNsdXNpdmVNYXhpbXVtPT09ITAmJnR5cGVvZiB0Lm1heGltdW09PSJudW1iZXIiJiYoZT1lLmx0KHQubWF4aW11bSkpLHR5cGVvZiB0Lm11bHRpcGxlT2Y9PSJudW1iZXIiJiYoZT1lLm11bHRpcGxlT2YodC5tdWx0aXBsZU9mKSksbz1lO2JyZWFrfWNhc2UiYm9vbGVhbiI6e289Yi5ib29sZWFuKCk7YnJlYWt9Y2FzZSJudWxsIjp7bz1iLm51bGwoKTticmVha31jYXNlIm9iamVjdCI6e2NvbnN0IGU9e30saT10LnByb3BlcnRpZXN8fHt9LGE9bmV3IFNldCh0LnJlcXVpcmVkfHxbXSk7Zm9yKGNvbnN0W2MsdV1vZiBPYmplY3QuZW50cmllcyhpKSl7Y29uc3QgbD1RKHUsbik7ZVtjXT1hLmhhcyhjKT9sOmwub3B0aW9uYWwoKX1pZih0LnByb3BlcnR5TmFtZXMpe2NvbnN0IGM9USh0LnByb3BlcnR5TmFtZXMsbiksdT10LmFkZGl0aW9uYWxQcm9wZXJ0aWVzJiZ0eXBlb2YgdC5hZGRpdGlvbmFsUHJvcGVydGllcz09Im9iamVjdCI/USh0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLG4pOmIuYW55KCk7aWYoT2JqZWN0LmtleXMoZSkubGVuZ3RoPT09MCl7bz1iLnJlY29yZChjLHUpO2JyZWFrfWNvbnN0IGw9Yi5vYmplY3QoZSkucGFzc3Rocm91Z2goKSxnPWIubG9vc2VSZWNvcmQoYyx1KTtvPWIuaW50ZXJzZWN0aW9uKGwsZyk7YnJlYWt9aWYodC5wYXR0ZXJuUHJvcGVydGllcyl7Y29uc3QgYz10LnBhdHRlcm5Qcm9wZXJ0aWVzLHU9T2JqZWN0LmtleXMoYyksbD1bXTtmb3IoY29uc3QgdiBvZiB1KXtjb25zdCAkPVEoY1t2XSxuKSx5PWIuc3RyaW5nKCkucmVnZXgobmV3IFJlZ0V4cCh2KSk7bC5wdXNoKGIubG9vc2VSZWNvcmQoeSwkKSl9Y29uc3QgZz1bXTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmZy5wdXNoKGIub2JqZWN0KGUpLnBhc3N0aHJvdWdoKCkpLGcucHVzaCguLi5sKSxnLmxlbmd0aD09PTApbz1iLm9iamVjdCh7fSkucGFzc3Rocm91Z2goKTtlbHNlIGlmKGcubGVuZ3RoPT09MSlvPWdbMF07ZWxzZXtsZXQgdj1iLmludGVyc2VjdGlvbihnWzBdLGdbMV0pO2ZvcihsZXQgJD0yOyQ8Zy5sZW5ndGg7JCsrKXY9Yi5pbnRlcnNlY3Rpb24odixnWyRdKTtvPXZ9YnJlYWt9Y29uc3Qgcz1iLm9iamVjdChlKTt0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITE/bz1zLnN0cmljdCgpOnR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT0ib2JqZWN0Ij9vPXMuY2F0Y2hhbGwoUSh0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLG4pKTpvPXMucGFzc3Rocm91Z2goKTticmVha31jYXNlImFycmF5Ijp7Y29uc3QgZT10LnByZWZpeEl0ZW1zLGk9dC5pdGVtcztpZihlJiZBcnJheS5pc0FycmF5KGUpKXtjb25zdCBhPWUubWFwKGM9PlEoYyxuKSkscz1pJiZ0eXBlb2YgaT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGkpP1EoaSxuKTp2b2lkIDA7cz9vPWIudHVwbGUoYSkucmVzdChzKTpvPWIudHVwbGUoYSksdHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWluTGVuZ3RoKHQubWluSXRlbXMpKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWF4TGVuZ3RoKHQubWF4SXRlbXMpKSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBhPWkubWFwKGM9PlEoYyxuKSkscz10LmFkZGl0aW9uYWxJdGVtcyYmdHlwZW9mIHQuYWRkaXRpb25hbEl0ZW1zPT0ib2JqZWN0Ij9RKHQuYWRkaXRpb25hbEl0ZW1zLG4pOnZvaWQgMDtzP289Yi50dXBsZShhKS5yZXN0KHMpOm89Yi50dXBsZShhKSx0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5taW5MZW5ndGgodC5taW5JdGVtcykpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5tYXhMZW5ndGgodC5tYXhJdGVtcykpKX1lbHNlIGlmKGkhPT12b2lkIDApe2NvbnN0IGE9UShpLG4pO2xldCBzPWIuYXJyYXkoYSk7dHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYocz1zLm1pbih0Lm1pbkl0ZW1zKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYocz1zLm1heCh0Lm1heEl0ZW1zKSksbz1zfWVsc2Ugbz1iLmFycmF5KGIuYW55KCkpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlOiAke3J9YCl9cmV0dXJuIG99ZnVuY3Rpb24gUSh0LG4pe2lmKHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIHQ/Yi5hbnkoKTpiLm5ldmVyKCk7bGV0IHI9SGQodCxuKTtjb25zdCBvPXQudHlwZXx8dC5lbnVtIT09dm9pZCAwfHx0LmNvbnN0IT09dm9pZCAwO2lmKHQuYW55T2YmJkFycmF5LmlzQXJyYXkodC5hbnlPZikpe2NvbnN0IHM9dC5hbnlPZi5tYXAodT0+USh1LG4pKSxjPWIudW5pb24ocyk7cj1vP2IuaW50ZXJzZWN0aW9uKHIsYyk6Y31pZih0Lm9uZU9mJiZBcnJheS5pc0FycmF5KHQub25lT2YpKXtjb25zdCBzPXQub25lT2YubWFwKHU9PlEodSxuKSksYz1iLnhvcihzKTtyPW8/Yi5pbnRlcnNlY3Rpb24ocixjKTpjfWlmKHQuYWxsT2YmJkFycmF5LmlzQXJyYXkodC5hbGxPZikpaWYodC5hbGxPZi5sZW5ndGg9PT0wKXI9bz9yOmIuYW55KCk7ZWxzZXtsZXQgcz1vP3I6USh0LmFsbE9mWzBdLG4pO2NvbnN0IGM9bz8wOjE7Zm9yKGxldCB1PWM7dTx0LmFsbE9mLmxlbmd0aDt1Kyspcz1iLmludGVyc2VjdGlvbihzLFEodC5hbGxPZlt1XSxuKSk7cj1zfXQubnVsbGFibGU9PT0hMCYmbi52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKHI9Yi5udWxsYWJsZShyKSksdC5yZWFkT25seT09PSEwJiYocj1iLnJlYWRvbmx5KHIpKSx0LmRlZmF1bHQhPT12b2lkIDAmJihyPXIuZGVmYXVsdCh0LmRlZmF1bHQpKTtjb25zdCBlPXt9LGk9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBzIG9mIGkpcyBpbiB0JiYoZVtzXT10W3NdKTtjb25zdCBhPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgcyBvZiBhKXMgaW4gdCYmKGVbc109dFtzXSk7Zm9yKGNvbnN0IHMgb2YgT2JqZWN0LmtleXModCkpQWcuaGFzKHMpfHwoZVtzXT10W3NdKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjAmJm4ucmVnaXN0cnkuYWRkKHIsZSksdC5kZXNjcmlwdGlvbiYmKHI9ci5kZXNjcmliZSh0LmRlc2NyaXB0aW9uKSkscn1mdW5jdGlvbiBWZCh0LG4pe2lmKHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIHQ/Yi5hbnkoKTpiLm5ldmVyKCk7bGV0IHI7dHJ5e3I9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJmcm9tSlNPTlNjaGVtYSBpbnB1dCBpcyBub3QgdmFsaWQgSlNPTiAocG9zc2libHkgY3ljbGljKTsgdXNlICRkZWZzLyRyZWYgZm9yIHJlY3Vyc2l2ZSBzY2hlbWFzIil9Y29uc3Qgbz1MZyhyLG4/LmRlZmF1bHRUYXJnZXQpLGU9ci4kZGVmc3x8ci5kZWZpbml0aW9uc3x8e30saT17dmVyc2lvbjpvLGRlZnM6ZSxyZWZzOm5ldyBNYXAscHJvY2Vzc2luZzpuZXcgU2V0LHJvb3RTY2hlbWE6cixyZWdpc3RyeTpuPy5yZWdpc3RyeT8/cmV9O3JldHVybiBRKHIsaSl9ZnVuY3Rpb24gcWcodCl7cmV0dXJuIHBsKGV0LHQpfWZ1bmN0aW9uIEZnKHQpe3JldHVybiBibChudCx0KX1mdW5jdGlvbiBKZyh0KXtyZXR1cm4geGwocnQsdCl9ZnVuY3Rpb24gSGcodCl7cmV0dXJuIGpsKGl0LHQpfWZ1bmN0aW9uIFZnKHQpe3JldHVybiBMbChjbix0KX1jb25zdCBLZD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OkhnLGJvb2xlYW46SmcsZGF0ZTpWZyxudW1iZXI6Rmcsc3RyaW5nOnFnfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO0goY2woKSk7Y29uc3QgYnM9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDp0aSwkaW5wdXQ6T2ksJG91dHB1dDpQaSxORVZFUjplaSxUaW1lUHJlY2lzaW9uOlFpLFpvZEFueTpvcixab2RBcnJheTp1cixab2RCYXNlNjQ6dG4sWm9kQmFzZTY0VVJMOm5uLFpvZEJpZ0ludDppdCxab2RCaWdJbnRGb3JtYXQ6YW4sWm9kQm9vbGVhbjpydCxab2RDSURSdjQ6UXQsWm9kQ0lEUnY2OmVuLFpvZENVSUQ6VnQsWm9kQ1VJRDI6S3QsWm9kQ2F0Y2g6anIsWm9kQ29kZWM6dXQsWm9kQ3VzdG9tOmx0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpaZSxab2REYXRlOmNuLFpvZERlZmF1bHQ6U3IsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmRyLFpvZEUxNjQ6cm4sWm9kRW1haWw6RnQsWm9kRW1vamk6SnQsWm9kRW51bTpEZSxab2RFcnJvcjpNZCxab2RFeGFjdE9wdGlvbmFsOmJyLFpvZEZpbGU6JHIsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBPbn0sWm9kRnVuY3Rpb246QXIsWm9kR1VJRDpWZSxab2RJUHY0Olh0LFpvZElQdjY6WXQsWm9kSVNPRGF0ZTpZbixab2RJU09EYXRlVGltZTpYbixab2RJU09EdXJhdGlvbjplcixab2RJU09UaW1lOlFuLFpvZEludGVyc2VjdGlvbjptcixab2RJc3N1ZUNvZGU6cWQsWm9kSldUOm9uLFpvZEtTVUlEOkd0LFpvZExhenk6WnIsWm9kTGl0ZXJhbDpocixab2RNQUM6dHIsWm9kTWFwOmdyLFpvZE5hTjpQcixab2ROYW5vSUQ6SHQsWm9kTmV2ZXI6c3IsWm9kTm9uT3B0aW9uYWw6bW4sWm9kTnVsbDppcixab2ROdWxsYWJsZTprcixab2ROdW1iZXI6bnQsWm9kTnVtYmVyRm9ybWF0OndlLFpvZE9iamVjdDpvdCxab2RPcHRpb25hbDpkbixab2RQaXBlOmN0LFpvZFByZWZhdWx0OklyLFpvZFByZXByb2Nlc3M6T3IsWm9kUHJvbWlzZTpDcixab2RSZWFkb25seTpEcixab2RSZWFsRXJyb3I6bmUsWm9kUmVjb3JkOk9lLFpvZFNldDp2cixab2RTdHJpbmc6ZXQsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2VzczpUcixab2RTeW1ib2w6bnIsWm9kVGVtcGxhdGVMaXRlcmFsOkVyLFpvZFRyYW5zZm9ybTpfcixab2RUdXBsZTpwcixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6dHQsWm9kVVVJRDptZSxab2RVbmRlZmluZWQ6cnIsWm9kVW5pb246YXQsWm9kVW5rbm93bjphcixab2RWb2lkOmNyLFpvZFhJRDpCdCxab2RYb3I6bHIsX1pvZFN0cmluZzpxdCxfZGVmYXVsdDp3cixfZnVuY3Rpb246QmUsYW55OnRhLGFycmF5OncsYmFzZTY0OkFvLGJhc2U2NHVybDpMbyxiaWdpbnQ6WG8sYm9vbGVhbjpELGNhdGNoOlVyLGNoZWNrOmJhLGNpZHJ2NDpSbyxjaWRydjY6Q28sY2xvbmU6YWUsY29kZWM6dmEsY29lcmNlOktkLGNvbmZpZzpILGNvcmU6RWQsY3VpZDpqbyxjdWlkMjpVbyxjdXN0b206THIsZGF0ZTpyYSxkZWNvZGU6bW8sZGVjb2RlQXN5bmM6Zm8sZGVzY3JpYmU6eWEsZGlzY3JpbWluYXRlZFVuaW9uOnVuLGUxNjQ6TW8sZW1haWw6X28sZW1vamk6eG8sZW5jb2RlOmxvLGVuY29kZUFzeW5jOnBvLGVuZHNXaXRoOkR0LGVudW06RyxleGFjdE9wdGlvbmFsOnlyLGZpbGU6bWEsZmxhdHRlbkVycm9yOkxuLGZsb2F0MzI6S28sZmxvYXQ2NDpXbyxmb3JtYXRFcnJvcjpNbixmcm9tSlNPTlNjaGVtYTpWZCxmdW5jdGlvbjpCZSxnZXRFcnJvck1hcDpKZCxnbG9iYWxSZWdpc3RyeTpyZSxndDpfZSxndGU6dGUsZ3VpZDpibyxoYXNoOlZvLGhleDpIbyxob3N0bmFtZTpKbyxodHRwVXJsOnpvLGluY2x1ZGVzOlB0LGluc3RhbmNlb2Y6U2EsaW50OnZ0LGludDMyOkJvLGludDY0OllvLGludGVyc2VjdGlvbjpzdCxpbnZlcnRDb2RlYzpoYSxpcHY0Ok5vLGlwdjY6Wm8saXNvOm9vLGpzb246SWEsand0OnFvLGtleW9mOmlhLGtzdWlkOkRvLGxhenk6UnIsbGVuZ3RoOlFlLGxpdGVyYWw6bSxsb2NhbGVzOlVpLGxvb3NlT2JqZWN0OkIsbG9vc2VSZWNvcmQ6Y2EsbG93ZXJjYXNlOmp0LGx0OiRlLGx0ZTppZSxtYWM6RW8sbWFwOnVhLG1heExlbmd0aDpZZSxtYXhTaXplOkVlLG1ldGE6a2EsbWltZTpOdCxtaW5MZW5ndGg6a2UsbWluU2l6ZTpiZSxtdWx0aXBsZU9mOlVlLG5hbjpnYSxuYW5vaWQ6VG8sbmF0aXZlRW51bTpkYSxuZWdhdGl2ZTpLbixuZXZlcjpQZSxub25uZWdhdGl2ZTpCbixub25vcHRpb25hbDp4cixub25wb3NpdGl2ZTpXbixub3JtYWxpemU6RXQsbnVsbDpzbixudWxsYWJsZTpXZSxudWxsaXNoOnBhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOnZlLHBhcnNlOmFvLHBhcnNlQXN5bmM6c28scGFydGlhbFJlY29yZDpzYSxwaXBlOmh0LHBvc2l0aXZlOlZuLHByZWZhdWx0OnpyLHByZXByb2Nlc3M6cG4scHJldHRpZnlFcnJvcjpzaSxwcm9taXNlOl9hLHByb3BlcnR5OkduLHJlYWRvbmx5Ok5yLHJlY29yZDpVLHJlZmluZTpNcixyZWdleDpUdCxyZWdleGVzOnFuLHJlZ2lzdHJ5OkpuLHNhZmVEZWNvZGU6dm8sc2FmZURlY29kZUFzeW5jOiRvLHNhZmVFbmNvZGU6Z28sc2FmZUVuY29kZUFzeW5jOmhvLHNhZmVQYXJzZTpjbyxzYWZlUGFyc2VBc3luYzp1byxzZXQ6bGEsc2V0RXJyb3JNYXA6RmQsc2l6ZTpYZSxzbHVnaWZ5OkF0LHN0YXJ0c1dpdGg6T3Qsc3RyaWN0T2JqZWN0Om9hLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpGbyxzdHJpbmdib29sOndhLHN1Y2Nlc3M6ZmEsc3VwZXJSZWZpbmU6cXIsc3ltYm9sOmVhLHRlbXBsYXRlTGl0ZXJhbDokYSx0b0pTT05TY2hlbWE6bm8sdG9Mb3dlckNhc2U6UnQsdG9VcHBlckNhc2U6Q3QsdHJhbnNmb3JtOmxuLHRyZWVpZnlFcnJvcjphaSx0cmltOlp0LHR1cGxlOmZyLHVpbnQzMjpHbyx1aW50NjQ6UW8sdWxpZDpQbyx1bmRlZmluZWQ6S2UsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOlV0LHVybDpJbyx1dGlsOmlpLHV1aWQ6eW8sdXVpZHY0OmtvLHV1aWR2NjpTbyx1dWlkdjc6d28sdm9pZDpuYSx4aWQ6T28seG9yOmFhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEtnPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6dGksJGlucHV0Ok9pLCRvdXRwdXQ6UGksTkVWRVI6ZWksVGltZVByZWNpc2lvbjpRaSxab2RBbnk6b3IsWm9kQXJyYXk6dXIsWm9kQmFzZTY0OnRuLFpvZEJhc2U2NFVSTDpubixab2RCaWdJbnQ6aXQsWm9kQmlnSW50Rm9ybWF0OmFuLFpvZEJvb2xlYW46cnQsWm9kQ0lEUnY0OlF0LFpvZENJRFJ2Njplbixab2RDVUlEOlZ0LFpvZENVSUQyOkt0LFpvZENhdGNoOmpyLFpvZENvZGVjOnV0LFpvZEN1c3RvbTpsdCxab2RDdXN0b21TdHJpbmdGb3JtYXQ6WmUsWm9kRGF0ZTpjbixab2REZWZhdWx0OlNyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpkcixab2RFMTY0OnJuLFpvZEVtYWlsOkZ0LFpvZEVtb2ppOkp0LFpvZEVudW06RGUsWm9kRXJyb3I6TWQsWm9kRXhhY3RPcHRpb25hbDpicixab2RGaWxlOiRyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gT259LFpvZEZ1bmN0aW9uOkFyLFpvZEdVSUQ6VmUsWm9kSVB2NDpYdCxab2RJUHY2Oll0LFpvZElTT0RhdGU6WW4sWm9kSVNPRGF0ZVRpbWU6WG4sWm9kSVNPRHVyYXRpb246ZXIsWm9kSVNPVGltZTpRbixab2RJbnRlcnNlY3Rpb246bXIsWm9kSXNzdWVDb2RlOnFkLFpvZEpXVDpvbixab2RLU1VJRDpHdCxab2RMYXp5OlpyLFpvZExpdGVyYWw6aHIsWm9kTUFDOnRyLFpvZE1hcDpncixab2ROYU46UHIsWm9kTmFub0lEOkh0LFpvZE5ldmVyOnNyLFpvZE5vbk9wdGlvbmFsOm1uLFpvZE51bGw6aXIsWm9kTnVsbGFibGU6a3IsWm9kTnVtYmVyOm50LFpvZE51bWJlckZvcm1hdDp3ZSxab2RPYmplY3Q6b3QsWm9kT3B0aW9uYWw6ZG4sWm9kUGlwZTpjdCxab2RQcmVmYXVsdDpJcixab2RQcmVwcm9jZXNzOk9yLFpvZFByb21pc2U6Q3IsWm9kUmVhZG9ubHk6RHIsWm9kUmVhbEVycm9yOm5lLFpvZFJlY29yZDpPZSxab2RTZXQ6dnIsWm9kU3RyaW5nOmV0LFpvZFN0cmluZ0Zvcm1hdDpaLFpvZFN1Y2Nlc3M6VHIsWm9kU3ltYm9sOm5yLFpvZFRlbXBsYXRlTGl0ZXJhbDpFcixab2RUcmFuc2Zvcm06X3IsWm9kVHVwbGU6cHIsWm9kVHlwZTp4LFpvZFVMSUQ6V3QsWm9kVVJMOnR0LFpvZFVVSUQ6bWUsWm9kVW5kZWZpbmVkOnJyLFpvZFVuaW9uOmF0LFpvZFVua25vd246YXIsWm9kVm9pZDpjcixab2RYSUQ6QnQsWm9kWG9yOmxyLF9ab2RTdHJpbmc6cXQsX2RlZmF1bHQ6d3IsX2Z1bmN0aW9uOkJlLGFueTp0YSxhcnJheTp3LGJhc2U2NDpBbyxiYXNlNjR1cmw6TG8sYmlnaW50OlhvLGJvb2xlYW46RCxjYXRjaDpVcixjaGVjazpiYSxjaWRydjQ6Um8sY2lkcnY2OkNvLGNsb25lOmFlLGNvZGVjOnZhLGNvZXJjZTpLZCxjb25maWc6SCxjb3JlOkVkLGN1aWQ6am8sY3VpZDI6VW8sY3VzdG9tOkxyLGRhdGU6cmEsZGVjb2RlOm1vLGRlY29kZUFzeW5jOmZvLGRlZmF1bHQ6YnMsZGVzY3JpYmU6eWEsZGlzY3JpbWluYXRlZFVuaW9uOnVuLGUxNjQ6TW8sZW1haWw6X28sZW1vamk6eG8sZW5jb2RlOmxvLGVuY29kZUFzeW5jOnBvLGVuZHNXaXRoOkR0LGVudW06RyxleGFjdE9wdGlvbmFsOnlyLGZpbGU6bWEsZmxhdHRlbkVycm9yOkxuLGZsb2F0MzI6S28sZmxvYXQ2NDpXbyxmb3JtYXRFcnJvcjpNbixmcm9tSlNPTlNjaGVtYTpWZCxmdW5jdGlvbjpCZSxnZXRFcnJvck1hcDpKZCxnbG9iYWxSZWdpc3RyeTpyZSxndDpfZSxndGU6dGUsZ3VpZDpibyxoYXNoOlZvLGhleDpIbyxob3N0bmFtZTpKbyxodHRwVXJsOnpvLGluY2x1ZGVzOlB0LGluc3RhbmNlb2Y6U2EsaW50OnZ0LGludDMyOkJvLGludDY0OllvLGludGVyc2VjdGlvbjpzdCxpbnZlcnRDb2RlYzpoYSxpcHY0Ok5vLGlwdjY6Wm8saXNvOm9vLGpzb246SWEsand0OnFvLGtleW9mOmlhLGtzdWlkOkRvLGxhenk6UnIsbGVuZ3RoOlFlLGxpdGVyYWw6bSxsb2NhbGVzOlVpLGxvb3NlT2JqZWN0OkIsbG9vc2VSZWNvcmQ6Y2EsbG93ZXJjYXNlOmp0LGx0OiRlLGx0ZTppZSxtYWM6RW8sbWFwOnVhLG1heExlbmd0aDpZZSxtYXhTaXplOkVlLG1ldGE6a2EsbWltZTpOdCxtaW5MZW5ndGg6a2UsbWluU2l6ZTpiZSxtdWx0aXBsZU9mOlVlLG5hbjpnYSxuYW5vaWQ6VG8sbmF0aXZlRW51bTpkYSxuZWdhdGl2ZTpLbixuZXZlcjpQZSxub25uZWdhdGl2ZTpCbixub25vcHRpb25hbDp4cixub25wb3NpdGl2ZTpXbixub3JtYWxpemU6RXQsbnVsbDpzbixudWxsYWJsZTpXZSxudWxsaXNoOnBhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOnZlLHBhcnNlOmFvLHBhcnNlQXN5bmM6c28scGFydGlhbFJlY29yZDpzYSxwaXBlOmh0LHBvc2l0aXZlOlZuLHByZWZhdWx0OnpyLHByZXByb2Nlc3M6cG4scHJldHRpZnlFcnJvcjpzaSxwcm9taXNlOl9hLHByb3BlcnR5OkduLHJlYWRvbmx5Ok5yLHJlY29yZDpVLHJlZmluZTpNcixyZWdleDpUdCxyZWdleGVzOnFuLHJlZ2lzdHJ5OkpuLHNhZmVEZWNvZGU6dm8sc2FmZURlY29kZUFzeW5jOiRvLHNhZmVFbmNvZGU6Z28sc2FmZUVuY29kZUFzeW5jOmhvLHNhZmVQYXJzZTpjbyxzYWZlUGFyc2VBc3luYzp1byxzZXQ6bGEsc2V0RXJyb3JNYXA6RmQsc2l6ZTpYZSxzbHVnaWZ5OkF0LHN0YXJ0c1dpdGg6T3Qsc3RyaWN0T2JqZWN0Om9hLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpGbyxzdHJpbmdib29sOndhLHN1Y2Nlc3M6ZmEsc3VwZXJSZWZpbmU6cXIsc3ltYm9sOmVhLHRlbXBsYXRlTGl0ZXJhbDokYSx0b0pTT05TY2hlbWE6bm8sdG9Mb3dlckNhc2U6UnQsdG9VcHBlckNhc2U6Q3QsdHJhbnNmb3JtOmxuLHRyZWVpZnlFcnJvcjphaSx0cmltOlp0LHR1cGxlOmZyLHVpbnQzMjpHbyx1aW50NjQ6UW8sdWxpZDpQbyx1bmRlZmluZWQ6S2UsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOlV0LHVybDpJbyx1dGlsOmlpLHV1aWQ6eW8sdXVpZHY0OmtvLHV1aWR2NjpTbyx1dWlkdjc6d28sdm9pZDpuYSx4aWQ6T28seG9yOmFhLHo6YnN9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksemU9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsRnI9IjIuMCIsSj1Mcih0PT50IT09bnVsbCYmKHR5cGVvZiB0PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKSxXZD1qKFtwKCkseigpLmludCgpXSksQmQ9cCgpO0Ioe3R0bDp6KCkub3B0aW9uYWwoKSxwb2xsSW50ZXJ2YWw6eigpLm9wdGlvbmFsKCl9KTtjb25zdCBXZz1mKHt0dGw6eigpLm9wdGlvbmFsKCl9KSxCZz1mKHt0YXNrSWQ6cCgpfSksemE9Qih7cHJvZ3Jlc3NUb2tlbjpXZC5vcHRpb25hbCgpLFt6ZV06Qmcub3B0aW9uYWwoKX0pLGNlPWYoe19tZXRhOnphLm9wdGlvbmFsKCl9KSxmbj1jZS5leHRlbmQoe3Rhc2s6V2cub3B0aW9uYWwoKX0pLEdnPXQ9PmZuLnNhZmVQYXJzZSh0KS5zdWNjZXNzLFg9Zih7bWV0aG9kOnAoKSxwYXJhbXM6Y2UubG9vc2UoKS5vcHRpb25hbCgpfSksbGU9Zih7X21ldGE6emEub3B0aW9uYWwoKX0pLGRlPWYoe21ldGhvZDpwKCkscGFyYW1zOmxlLmxvb3NlKCkub3B0aW9uYWwoKX0pLFk9Qih7X21ldGE6emEub3B0aW9uYWwoKX0pLGduPWooW3AoKSx6KCkuaW50KCldKSxHZD1mKHtqc29ucnBjOm0oRnIpLGlkOmduLC4uLlguc2hhcGV9KS5zdHJpY3QoKSx5cz10PT5HZC5zYWZlUGFyc2UodCkuc3VjY2VzcyxYZD1mKHtqc29ucnBjOm0oRnIpLC4uLmRlLnNoYXBlfSkuc3RyaWN0KCksWGc9dD0+WGQuc2FmZVBhcnNlKHQpLnN1Y2Nlc3MseGE9Zih7anNvbnJwYzptKEZyKSxpZDpnbixyZXN1bHQ6WX0pLnN0cmljdCgpLEluPXQ9PnhhLnNhZmVQYXJzZSh0KS5zdWNjZXNzO3ZhciBOOyhmdW5jdGlvbih0KXt0W3QuQ29ubmVjdGlvbkNsb3NlZD0tMzJlM109IkNvbm5lY3Rpb25DbG9zZWQiLHRbdC5SZXF1ZXN0VGltZW91dD0tMzIwMDFdPSJSZXF1ZXN0VGltZW91dCIsdFt0LlBhcnNlRXJyb3I9LTMyNzAwXT0iUGFyc2VFcnJvciIsdFt0LkludmFsaWRSZXF1ZXN0PS0zMjYwMF09IkludmFsaWRSZXF1ZXN0Iix0W3QuTWV0aG9kTm90Rm91bmQ9LTMyNjAxXT0iTWV0aG9kTm90Rm91bmQiLHRbdC5JbnZhbGlkUGFyYW1zPS0zMjYwMl09IkludmFsaWRQYXJhbXMiLHRbdC5JbnRlcm5hbEVycm9yPS0zMjYwM109IkludGVybmFsRXJyb3IiLHRbdC5VcmxFbGljaXRhdGlvblJlcXVpcmVkPS0zMjA0Ml09IlVybEVsaWNpdGF0aW9uUmVxdWlyZWQifSkoTnx8KE49e30pKTtjb25zdCBUYT1mKHtqc29ucnBjOm0oRnIpLGlkOmduLm9wdGlvbmFsKCksZXJyb3I6Zih7Y29kZTp6KCkuaW50KCksbWVzc2FnZTpwKCksZGF0YTpPKCkub3B0aW9uYWwoKX0pfSkuc3RyaWN0KCksWWc9dD0+VGEuc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsUWc9aihbR2QsWGQseGEsVGFdKTtqKFt4YSxUYV0pO2NvbnN0IGphPVkuc3RyaWN0KCksZXY9bGUuZXh0ZW5kKHtyZXF1ZXN0SWQ6Z24ub3B0aW9uYWwoKSxyZWFzb246cCgpLm9wdGlvbmFsKCl9KSxVYT1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpldn0pLHR2PWYoe3NyYzpwKCksbWltZVR5cGU6cCgpLm9wdGlvbmFsKCksc2l6ZXM6dyhwKCkpLm9wdGlvbmFsKCksdGhlbWU6RyhbImxpZ2h0IiwiZGFyayJdKS5vcHRpb25hbCgpfSksdm49Zih7aWNvbnM6dyh0dikub3B0aW9uYWwoKX0pLEdlPWYoe25hbWU6cCgpLHRpdGxlOnAoKS5vcHRpb25hbCgpfSksSnI9R2UuZXh0ZW5kKHsuLi5HZS5zaGFwZSwuLi52bi5zaGFwZSx2ZXJzaW9uOnAoKSx3ZWJzaXRlVXJsOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpfSksbnY9c3QoZih7YXBwbHlEZWZhdWx0czpEKCkub3B0aW9uYWwoKX0pLFUocCgpLE8oKSkpLHJ2PXBuKHQ9PnQmJnR5cGVvZiB0PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkodCkmJk9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTA/e2Zvcm06e319OnQsc3QoZih7Zm9ybTpudi5vcHRpb25hbCgpLHVybDpKLm9wdGlvbmFsKCl9KSxVKHAoKSxPKCkpLm9wdGlvbmFsKCkpKSxpdj1CKHtsaXN0Okoub3B0aW9uYWwoKSxjYW5jZWw6Si5vcHRpb25hbCgpLHJlcXVlc3RzOkIoe3NhbXBsaW5nOkIoe2NyZWF0ZU1lc3NhZ2U6Si5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpCKHtjcmVhdGU6Si5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxvdj1CKHtsaXN0Okoub3B0aW9uYWwoKSxjYW5jZWw6Si5vcHRpb25hbCgpLHJlcXVlc3RzOkIoe3Rvb2xzOkIoe2NhbGw6Si5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxhdj1mKHtleHBlcmltZW50YWw6VShwKCksSikub3B0aW9uYWwoKSxzYW1wbGluZzpmKHtjb250ZXh0Okoub3B0aW9uYWwoKSx0b29sczpKLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOnJ2Lm9wdGlvbmFsKCkscm9vdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOml2Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpVKHAoKSxKKS5vcHRpb25hbCgpfSksc3Y9Y2UuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczphdixjbGllbnRJbmZvOkpyfSksY3Y9WC5leHRlbmQoe21ldGhvZDptKCJpbml0aWFsaXplIikscGFyYW1zOnN2fSksdXY9Zih7ZXhwZXJpbWVudGFsOlUocCgpLEopLm9wdGlvbmFsKCksbG9nZ2luZzpKLm9wdGlvbmFsKCksY29tcGxldGlvbnM6Si5vcHRpb25hbCgpLHByb21wdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczpmKHtzdWJzY3JpYmU6RCgpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczpvdi5vcHRpb25hbCgpLGV4dGVuc2lvbnM6VShwKCksSikub3B0aW9uYWwoKX0pLGx2PVkuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczp1dixzZXJ2ZXJJbmZvOkpyLGluc3RydWN0aW9uczpwKCkub3B0aW9uYWwoKX0pLGR2PWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6bGUub3B0aW9uYWwoKX0pLEhyPVguZXh0ZW5kKHttZXRob2Q6bSgicGluZyIpLHBhcmFtczpjZS5vcHRpb25hbCgpfSksbXY9Zih7cHJvZ3Jlc3M6eigpLHRvdGFsOkEoeigpKSxtZXNzYWdlOkEocCgpKX0pLHB2PWYoey4uLmxlLnNoYXBlLC4uLm12LnNoYXBlLHByb2dyZXNzVG9rZW46V2R9KSxQYT1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Byb2dyZXNzIikscGFyYW1zOnB2fSksZnY9Y2UuZXh0ZW5kKHtjdXJzb3I6QmQub3B0aW9uYWwoKX0pLGhuPVguZXh0ZW5kKHtwYXJhbXM6ZnYub3B0aW9uYWwoKX0pLCRuPVkuZXh0ZW5kKHtuZXh0Q3Vyc29yOkJkLm9wdGlvbmFsKCl9KSxndj1HKFsid29ya2luZyIsImlucHV0X3JlcXVpcmVkIiwiY29tcGxldGVkIiwiZmFpbGVkIiwiY2FuY2VsbGVkIl0pLF9uPWYoe3Rhc2tJZDpwKCksc3RhdHVzOmd2LHR0bDpqKFt6KCksc24oKV0pLGNyZWF0ZWRBdDpwKCksbGFzdFVwZGF0ZWRBdDpwKCkscG9sbEludGVydmFsOkEoeigpKSxzdGF0dXNNZXNzYWdlOkEocCgpKX0pLE9hPVkuZXh0ZW5kKHt0YXNrOl9ufSksdnY9bGUubWVyZ2UoX24pLERuPWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIikscGFyYW1zOnZ2fSksRGE9WC5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9nZXQiKSxwYXJhbXM6Y2UuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSxOYT1ZLm1lcmdlKF9uKSxFYT1YLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL3Jlc3VsdCIpLHBhcmFtczpjZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pO1kubG9vc2UoKTtjb25zdCBaYT1obi5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9saXN0Iil9KSxSYT0kbi5leHRlbmQoe3Rhc2tzOncoX24pfSksQ2E9WC5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9jYW5jZWwiKSxwYXJhbXM6Y2UuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSxodj1ZLm1lcmdlKF9uKSxZZD1mKHt1cmk6cCgpLG1pbWVUeXBlOkEocCgpKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxRZD1ZZC5leHRlbmQoe3RleHQ6cCgpfSksQWE9cCgpLnJlZmluZSh0PT57dHJ5e3JldHVybiBhdG9iKHQpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxlbT1ZZC5leHRlbmQoe2Jsb2I6QWF9KSxibj1HKFsidXNlciIsImFzc2lzdGFudCJdKSxkdD1mKHthdWRpZW5jZTp3KGJuKS5vcHRpb25hbCgpLHByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksbGFzdE1vZGlmaWVkOmlvKHtvZmZzZXQ6ITB9KS5vcHRpb25hbCgpfSksdG09Zih7Li4uR2Uuc2hhcGUsLi4udm4uc2hhcGUsdXJpOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSksbWltZVR5cGU6QShwKCkpLHNpemU6QSh6KCkpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6QShCKHt9KSl9KSwkdj1mKHsuLi5HZS5zaGFwZSwuLi52bi5zaGFwZSx1cmlUZW1wbGF0ZTpwKCksZGVzY3JpcHRpb246QShwKCkpLG1pbWVUeXBlOkEocCgpKSxhbm5vdGF0aW9uczpkdC5vcHRpb25hbCgpLF9tZXRhOkEoQih7fSkpfSksX3Y9aG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL2xpc3QiKX0pLG5tPSRuLmV4dGVuZCh7cmVzb3VyY2VzOncodG0pfSksYnY9aG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0Iil9KSx5dj0kbi5leHRlbmQoe3Jlc291cmNlVGVtcGxhdGVzOncoJHYpfSksTGE9Y2UuZXh0ZW5kKHt1cmk6cCgpfSksa3Y9TGEsU3Y9WC5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvcmVhZCIpLHBhcmFtczprdn0pLHJtPVkuZXh0ZW5kKHtjb250ZW50czp3KGooW1FkLGVtXSkpfSksd3Y9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmxlLm9wdGlvbmFsKCl9KSxJdj1MYSx6dj1YLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9zdWJzY3JpYmUiKSxwYXJhbXM6SXZ9KSx4dj1MYSxUdj1YLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy91bnN1YnNjcmliZSIpLHBhcmFtczp4dn0pLGp2PWxlLmV4dGVuZCh7dXJpOnAoKX0pLFV2PWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3VwZGF0ZWQiKSxwYXJhbXM6anZ9KSxQdj1mKHtuYW1lOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSkscmVxdWlyZWQ6QShEKCkpfSksT3Y9Zih7Li4uR2Uuc2hhcGUsLi4udm4uc2hhcGUsZGVzY3JpcHRpb246QShwKCkpLGFyZ3VtZW50czpBKHcoUHYpKSxfbWV0YTpBKEIoe30pKX0pLER2PWhuLmV4dGVuZCh7bWV0aG9kOm0oInByb21wdHMvbGlzdCIpfSksTnY9JG4uZXh0ZW5kKHtwcm9tcHRzOncoT3YpfSksRXY9Y2UuZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCkscCgpKS5vcHRpb25hbCgpfSksWnY9WC5leHRlbmQoe21ldGhvZDptKCJwcm9tcHRzL2dldCIpLHBhcmFtczpFdn0pLE1hPWYoe3R5cGU6bSgidGV4dCIpLHRleHQ6cCgpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSkscWE9Zih7dHlwZTptKCJpbWFnZSIpLGRhdGE6QWEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksRmE9Zih7dHlwZTptKCJhdWRpbyIpLGRhdGE6QWEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksUnY9Zih7dHlwZTptKCJ0b29sX3VzZSIpLG5hbWU6cCgpLGlkOnAoKSxpbnB1dDpVKHAoKSxPKCkpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLGltPWYoe3R5cGU6bSgicmVzb3VyY2UiKSxyZXNvdXJjZTpqKFtRZCxlbV0pLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksb209dG0uZXh0ZW5kKHt0eXBlOm0oInJlc291cmNlX2xpbmsiKX0pLHluPWooW01hLHFhLEZhLG9tLGltXSksQ3Y9Zih7cm9sZTpibixjb250ZW50OnlufSksQXY9WS5leHRlbmQoe2Rlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1lc3NhZ2VzOncoQ3YpfSksTHY9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9wcm9tcHRzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpsZS5vcHRpb25hbCgpfSksTXY9Zih7dGl0bGU6cCgpLm9wdGlvbmFsKCkscmVhZE9ubHlIaW50OkQoKS5vcHRpb25hbCgpLGRlc3RydWN0aXZlSGludDpEKCkub3B0aW9uYWwoKSxpZGVtcG90ZW50SGludDpEKCkub3B0aW9uYWwoKSxvcGVuV29ybGRIaW50OkQoKS5vcHRpb25hbCgpfSkscXY9Zih7dGFza1N1cHBvcnQ6RyhbInJlcXVpcmVkIiwib3B0aW9uYWwiLCJmb3JiaWRkZW4iXSkub3B0aW9uYWwoKX0pLEphPWYoey4uLkdlLnNoYXBlLC4uLnZuLnNoYXBlLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGlucHV0U2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxKKS5vcHRpb25hbCgpLHJlcXVpcmVkOncocCgpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoTygpKSxvdXRwdXRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLEopLm9wdGlvbmFsKCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KS5jYXRjaGFsbChPKCkpLm9wdGlvbmFsKCksYW5ub3RhdGlvbnM6TXYub3B0aW9uYWwoKSxleGVjdXRpb246cXYub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxhbT1obi5leHRlbmQoe21ldGhvZDptKCJ0b29scy9saXN0Iil9KSxGdj0kbi5leHRlbmQoe3Rvb2xzOncoSmEpfSksVnI9WS5leHRlbmQoe2NvbnRlbnQ6dyh5bikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6VShwKCksTygpKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCl9KTtWci5vcihZLmV4dGVuZCh7dG9vbFJlc3VsdDpPKCl9KSk7Y29uc3QgSnY9Zm4uZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCksTygpKS5vcHRpb25hbCgpfSksc209WC5leHRlbmQoe21ldGhvZDptKCJ0b29scy9jYWxsIikscGFyYW1zOkp2fSksSHY9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6bGUub3B0aW9uYWwoKX0pO2Yoe2F1dG9SZWZyZXNoOkQoKS5kZWZhdWx0KCEwKSxkZWJvdW5jZU1zOnooKS5pbnQoKS5ub25uZWdhdGl2ZSgpLmRlZmF1bHQoMzAwKX0pO2NvbnN0IGNtPUcoWyJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJjcml0aWNhbCIsImFsZXJ0IiwiZW1lcmdlbmN5Il0pLFZ2PWNlLmV4dGVuZCh7bGV2ZWw6Y219KSxLdj1YLmV4dGVuZCh7bWV0aG9kOm0oImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6VnZ9KSxXdj1sZS5leHRlbmQoe2xldmVsOmNtLGxvZ2dlcjpwKCkub3B0aW9uYWwoKSxkYXRhOk8oKX0pLEJ2PWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpXdn0pLEd2PWYoe25hbWU6cCgpLm9wdGlvbmFsKCl9KSxYdj1mKHtoaW50czp3KEd2KS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6eigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksWXY9Zih7bW9kZTpHKFsiYXV0byIsInJlcXVpcmVkIiwibm9uZSJdKS5vcHRpb25hbCgpfSksUXY9Zih7dHlwZTptKCJ0b29sX3Jlc3VsdCIpLHRvb2xVc2VJZDpwKCkuZGVzY3JpYmUoIlRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdG9vbCBjYWxsLiIpLGNvbnRlbnQ6dyh5bikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkubG9vc2UoKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksZWg9dW4oInR5cGUiLFtNYSxxYSxGYV0pLE5uPXVuKCJ0eXBlIixbTWEscWEsRmEsUnYsUXZdKSx0aD1mKHtyb2xlOmJuLGNvbnRlbnQ6aihbTm4sdyhObildKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxuaD1mbi5leHRlbmQoe21lc3NhZ2VzOncodGgpLG1vZGVsUHJlZmVyZW5jZXM6WHYub3B0aW9uYWwoKSxzeXN0ZW1Qcm9tcHQ6cCgpLm9wdGlvbmFsKCksaW5jbHVkZUNvbnRleHQ6RyhbIm5vbmUiLCJ0aGlzU2VydmVyIiwiYWxsU2VydmVycyJdKS5vcHRpb25hbCgpLHRlbXBlcmF0dXJlOnooKS5vcHRpb25hbCgpLG1heFRva2Vuczp6KCkuaW50KCksc3RvcFNlcXVlbmNlczp3KHAoKSkub3B0aW9uYWwoKSxtZXRhZGF0YTpKLm9wdGlvbmFsKCksdG9vbHM6dyhKYSkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOll2Lm9wdGlvbmFsKCl9KSxyaD1YLmV4dGVuZCh7bWV0aG9kOm0oInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiKSxwYXJhbXM6bmh9KSx1bT1ZLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShHKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyJdKS5vcihwKCkpKSxyb2xlOmJuLGNvbnRlbnQ6ZWh9KSxsbT1ZLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShHKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyIsInRvb2xVc2UiXSkub3IocCgpKSkscm9sZTpibixjb250ZW50OmooW05uLHcoTm4pXSl9KSxpaD1mKHt0eXBlOm0oImJvb2xlYW4iKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxkZWZhdWx0OkQoKS5vcHRpb25hbCgpfSksb2g9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtaW5MZW5ndGg6eigpLm9wdGlvbmFsKCksbWF4TGVuZ3RoOnooKS5vcHRpb25hbCgpLGZvcm1hdDpHKFsiZW1haWwiLCJ1cmkiLCJkYXRlIiwiZGF0ZS10aW1lIl0pLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLGFoPWYoe3R5cGU6RyhbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluaW11bTp6KCkub3B0aW9uYWwoKSxtYXhpbXVtOnooKS5vcHRpb25hbCgpLGRlZmF1bHQ6eigpLm9wdGlvbmFsKCl9KSxzaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGVudW06dyhwKCkpLGRlZmF1bHQ6cCgpLm9wdGlvbmFsKCl9KSxjaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG9uZU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksdWg9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxlbnVtOncocCgpKSxlbnVtTmFtZXM6dyhwKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLGxoPWooW3NoLGNoXSksZGg9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe3R5cGU6bSgic3RyaW5nIiksZW51bTp3KHAoKSl9KSxkZWZhdWx0OncocCgpKS5vcHRpb25hbCgpfSksbWg9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe2FueU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKX0pLGRlZmF1bHQ6dyhwKCkpLm9wdGlvbmFsKCl9KSxwaD1qKFtkaCxtaF0pLGZoPWooW3VoLGxoLHBoXSksZ2g9aihbZmgsaWgsb2gsYWhdKSx2aD1mbi5leHRlbmQoe21vZGU6bSgiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpwKCkscmVxdWVzdGVkU2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxnaCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KX0pLGhoPWZuLmV4dGVuZCh7bW9kZTptKCJ1cmwiKSxtZXNzYWdlOnAoKSxlbGljaXRhdGlvbklkOnAoKSx1cmw6cCgpLnVybCgpfSksJGg9aihbdmgsaGhdKSxfaD1YLmV4dGVuZCh7bWV0aG9kOm0oImVsaWNpdGF0aW9uL2NyZWF0ZSIpLHBhcmFtczokaH0pLGJoPWxlLmV4dGVuZCh7ZWxpY2l0YXRpb25JZDpwKCl9KSx5aD1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2VsaWNpdGF0aW9uL2NvbXBsZXRlIikscGFyYW1zOmJofSksa2g9WS5leHRlbmQoe2FjdGlvbjpHKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OnBuKHQ9PnQ9PT1udWxsP3ZvaWQgMDp0LFUocCgpLGooW3AoKSx6KCksRCgpLHcocCgpKV0pKS5vcHRpb25hbCgpKX0pLFNoPWYoe3R5cGU6bSgicmVmL3Jlc291cmNlIiksdXJpOnAoKX0pLHdoPWYoe3R5cGU6bSgicmVmL3Byb21wdCIpLG5hbWU6cCgpfSksSWg9Y2UuZXh0ZW5kKHtyZWY6aihbd2gsU2hdKSxhcmd1bWVudDpmKHtuYW1lOnAoKSx2YWx1ZTpwKCl9KSxjb250ZXh0OmYoe2FyZ3VtZW50czpVKHAoKSxwKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksemg9WC5leHRlbmQoe21ldGhvZDptKCJjb21wbGV0aW9uL2NvbXBsZXRlIikscGFyYW1zOklofSkseGg9WS5leHRlbmQoe2NvbXBsZXRpb246Qih7dmFsdWVzOncocCgpKS5tYXgoMTAwKSx0b3RhbDpBKHooKS5pbnQoKSksaGFzTW9yZTpBKEQoKSl9KX0pLFRoPWYoe3VyaTpwKCkuc3RhcnRzV2l0aCgiZmlsZTovLyIpLG5hbWU6cCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksamg9WC5leHRlbmQoe21ldGhvZDptKCJyb290cy9saXN0IikscGFyYW1zOmNlLm9wdGlvbmFsKCl9KSxVaD1ZLmV4dGVuZCh7cm9vdHM6dyhUaCl9KSxQaD1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Jvb3RzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpsZS5vcHRpb25hbCgpfSk7aihbSHIsY3YsemgsS3YsWnYsRHYsX3YsYnYsU3YsenYsVHYsc20sYW0sRGEsRWEsWmEsQ2FdKTtqKFtVYSxQYSxkdixQaCxEbl0pO2ooW2phLHVtLGxtLGtoLFVoLE5hLFJhLE9hXSk7aihbSHIscmgsX2gsamgsRGEsRWEsWmEsQ2FdKTtqKFtVYSxQYSxCdixVdix3dixIdixMdixEbix5aF0pO2ooW2phLGx2LHhoLEF2LE52LG5tLHl2LHJtLFZyLEZ2LE5hLFJhLE9hXSk7Y2xhc3MgUCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4scixvKXtzdXBlcihgTUNQIGVycm9yICR7bn06ICR7cn1gKSx0aGlzLmNvZGU9bix0aGlzLmRhdGE9byx0aGlzLm5hbWU9Ik1jcEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKG4scixvKXtpZihuPT09Ti5VcmxFbGljaXRhdGlvblJlcXVpcmVkJiZvKXtjb25zdCBlPW87aWYoZS5lbGljaXRhdGlvbnMpcmV0dXJuIG5ldyBPaChlLmVsaWNpdGF0aW9ucyxyKX1yZXR1cm4gbmV3IFAobixyLG8pfX1jbGFzcyBPaCBleHRlbmRzIFB7Y29uc3RydWN0b3IobixyPWBVUkwgZWxpY2l0YXRpb24ke24ubGVuZ3RoPjE/InMiOiIifSByZXF1aXJlZGApe3N1cGVyKE4uVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxyLHtlbGljaXRhdGlvbnM6bn0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiBJZSh0KXtyZXR1cm4gdD09PSJjb21wbGV0ZWQifHx0PT09ImZhaWxlZCJ8fHQ9PT0iY2FuY2VsbGVkIn1uZXcgU2V0KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODkiKTtmdW5jdGlvbiBrcyh0KXtjb25zdCByPUVnKHQpPy5tZXRob2Q7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsIik7Y29uc3Qgbz1aZyhyKTtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBvfWZ1bmN0aW9uIFNzKHQsbil7Y29uc3Qgcj1aZCh0LG4pO2lmKCFyLnN1Y2Nlc3MpdGhyb3cgci5lcnJvcjtyZXR1cm4gci5kYXRhfWNvbnN0IERoPTZlNDtjbGFzcyBOaHtjb25zdHJ1Y3RvcihuKXt0aGlzLl9vcHRpb25zPW4sdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihVYSxyPT57dGhpcy5fb25jYW5jZWwocil9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoUGEscj0+e3RoaXMuX29ucHJvZ3Jlc3Mocil9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEhyLHI9Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT1uPy50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT1uPy50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSYmKHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoRGEsYXN5bmMocixvKT0+e2NvbnN0IGU9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighZSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybnsuLi5lfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoRWEsYXN5bmMocixvKT0+e2NvbnN0IGU9YXN5bmMoKT0+e2NvbnN0IGk9ci5wYXJhbXMudGFza0lkO2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2xldCBzO2Zvcig7cz1hd2FpdCB0aGlzLl90YXNrTWVzc2FnZVF1ZXVlLmRlcXVldWUoaSxvLnNlc3Npb25JZCk7KXtpZihzLnR5cGU9PT0icmVzcG9uc2UifHxzLnR5cGU9PT0iZXJyb3IiKXtjb25zdCBjPXMubWVzc2FnZSx1PWMuaWQsbD10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldCh1KTtpZihsKWlmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHUpLHMudHlwZT09PSJyZXNwb25zZSIpbChjKTtlbHNle2NvbnN0IGc9Yyx2PW5ldyBQKGcuZXJyb3IuY29kZSxnLmVycm9yLm1lc3NhZ2UsZy5lcnJvci5kYXRhKTtsKHYpfWVsc2V7Y29uc3QgZz1zLnR5cGU9PT0icmVzcG9uc2UiPyJSZXNwb25zZSI6IkVycm9yIjt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgJHtnfSBoYW5kbGVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHt1fWApKX1jb250aW51ZX1hd2FpdCB0aGlzLl90cmFuc3BvcnQ/LnNlbmQocy5tZXNzYWdlLHtyZWxhdGVkUmVxdWVzdElkOm8ucmVxdWVzdElkfSl9fWNvbnN0IGE9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soaSxvLnNlc3Npb25JZCk7aWYoIWEpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtpfWApO2lmKCFJZShhLnN0YXR1cykpcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRGb3JUYXNrVXBkYXRlKGksby5zaWduYWwpLGF3YWl0IGUoKTtpZihJZShhLnN0YXR1cykpe2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2tSZXN1bHQoaSxvLnNlc3Npb25JZCk7cmV0dXJuIHRoaXMuX2NsZWFyVGFza1F1ZXVlKGkpLHsuLi5zLF9tZXRhOnsuLi5zLl9tZXRhLFt6ZV06e3Rhc2tJZDppfX19fXJldHVybiBhd2FpdCBlKCl9O3JldHVybiBhd2FpdCBlKCl9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFphLGFzeW5jKHIsbyk9Pnt0cnl7Y29uc3R7dGFza3M6ZSxuZXh0Q3Vyc29yOml9PWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5saXN0VGFza3Moci5wYXJhbXM/LmN1cnNvcixvLnNlc3Npb25JZCk7cmV0dXJue3Rhc2tzOmUsbmV4dEN1cnNvcjppLF9tZXRhOnt9fX1jYXRjaChlKXt0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQ2EsYXN5bmMocixvKT0+e3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWUpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtyLnBhcmFtcy50YXNrSWR9YCk7aWYoSWUoZS5zdGF0dXMpKXRocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcyxgQ2Fubm90IGNhbmNlbCB0YXNrIGluIHRlcm1pbmFsIHN0YXR1czogJHtlLnN0YXR1c31gKTthd2FpdCB0aGlzLl90YXNrU3RvcmUudXBkYXRlVGFza1N0YXR1cyhyLnBhcmFtcy50YXNrSWQsImNhbmNlbGxlZCIsIkNsaWVudCBjYW5jZWxsZWQgdGFzayBleGVjdXRpb24uIixvLnNlc3Npb25JZCksdGhpcy5fY2xlYXJUYXNrUXVldWUoci5wYXJhbXMudGFza0lkKTtjb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7ci5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5pfX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgUD9lOm5ldyBQKE4uSW52YWxpZFJlcXVlc3QsYEZhaWxlZCB0byBjYW5jZWwgdGFzazogJHtlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1gKX19KSl9YXN5bmMgX29uY2FuY2VsKG4pe2lmKCFuLnBhcmFtcy5yZXF1ZXN0SWQpcmV0dXJuO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobi5wYXJhbXMucmVxdWVzdElkKT8uYWJvcnQobi5wYXJhbXMucmVhc29uKX1fc2V0dXBUaW1lb3V0KG4scixvLGUsaT0hMSl7dGhpcy5fdGltZW91dEluZm8uc2V0KG4se3RpbWVvdXRJZDpzZXRUaW1lb3V0KGUsciksc3RhcnRUaW1lOkRhdGUubm93KCksdGltZW91dDpyLG1heFRvdGFsVGltZW91dDpvLHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6aSxvblRpbWVvdXQ6ZX0pfV9yZXNldFRpbWVvdXQobil7Y29uc3Qgcj10aGlzLl90aW1lb3V0SW5mby5nZXQobik7aWYoIXIpcmV0dXJuITE7Y29uc3Qgbz1EYXRlLm5vdygpLXIuc3RhcnRUaW1lO2lmKHIubWF4VG90YWxUaW1lb3V0JiZvPj1yLm1heFRvdGFsVGltZW91dCl0aHJvdyB0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobiksUC5mcm9tRXJyb3IoTi5SZXF1ZXN0VGltZW91dCwiTWF4aW11bSB0b3RhbCB0aW1lb3V0IGV4Y2VlZGVkIix7bWF4VG90YWxUaW1lb3V0OnIubWF4VG90YWxUaW1lb3V0LHRvdGFsRWxhcHNlZDpvfSk7cmV0dXJuIGNsZWFyVGltZW91dChyLnRpbWVvdXRJZCksci50aW1lb3V0SWQ9c2V0VGltZW91dChyLm9uVGltZW91dCxyLnRpbWVvdXQpLCEwfV9jbGVhbnVwVGltZW91dChuKXtjb25zdCByPXRoaXMuX3RpbWVvdXRJbmZvLmdldChuKTtyJiYoY2xlYXJUaW1lb3V0KHIudGltZW91dElkKSx0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobikpfWFzeW5jIGNvbm5lY3Qobil7aWYodGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiQWxyZWFkeSBjb25uZWN0ZWQgdG8gYSB0cmFuc3BvcnQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyB0byBhIG5ldyB0cmFuc3BvcnQsIG9yIHVzZSBhIHNlcGFyYXRlIFByb3RvY29sIGluc3RhbmNlIHBlciBjb25uZWN0aW9uLiIpO3RoaXMuX3RyYW5zcG9ydD1uO2NvbnN0IHI9dGhpcy50cmFuc3BvcnQ/Lm9uY2xvc2U7dGhpcy5fdHJhbnNwb3J0Lm9uY2xvc2U9KCk9PntyPy4oKSx0aGlzLl9vbmNsb3NlKCl9O2NvbnN0IG89dGhpcy50cmFuc3BvcnQ/Lm9uZXJyb3I7dGhpcy5fdHJhbnNwb3J0Lm9uZXJyb3I9aT0+e28/LihpKSx0aGlzLl9vbmVycm9yKGkpfTtjb25zdCBlPXRoaXMuX3RyYW5zcG9ydD8ub25tZXNzYWdlO3RoaXMuX3RyYW5zcG9ydC5vbm1lc3NhZ2U9KGksYSk9PntlPy4oaSxhKSxJbihpKXx8WWcoaSk/dGhpcy5fb25yZXNwb25zZShpKTp5cyhpKT90aGlzLl9vbnJlcXVlc3QoaSxhKTpYZyhpKT90aGlzLl9vbm5vdGlmaWNhdGlvbihpKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5rbm93biBtZXNzYWdlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoaSl9YCkpfSxhd2FpdCB0aGlzLl90cmFuc3BvcnQuc3RhcnQoKX1fb25jbG9zZSgpe2NvbnN0IG49dGhpcy5fcmVzcG9uc2VIYW5kbGVyczt0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5jbGVhcigpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5jbGVhcigpLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fdGltZW91dEluZm8udmFsdWVzKCkpY2xlYXJUaW1lb3V0KG8udGltZW91dElkKTt0aGlzLl90aW1lb3V0SW5mby5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy52YWx1ZXMoKSlvLmFib3J0KCk7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmNsZWFyKCk7Y29uc3Qgcj1QLmZyb21FcnJvcihOLkNvbm5lY3Rpb25DbG9zZWQsIkNvbm5lY3Rpb24gY2xvc2VkIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2Zvcihjb25zdCBvIG9mIG4udmFsdWVzKCkpbyhyKX1fb25lcnJvcihuKXt0aGlzLm9uZXJyb3I/LihuKX1fb25ub3RpZmljYXRpb24obil7Y29uc3Qgcj10aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtyIT09dm9pZCAwJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5yKG4pKS5jYXRjaChvPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7b31gKSkpfV9vbnJlcXVlc3QobixyKXtjb25zdCBvPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIsZT10aGlzLl90cmFuc3BvcnQsaT1uLnBhcmFtcz8uX21ldGE/Llt6ZV0/LnRhc2tJZDtpZihvPT09dm9pZCAwKXtjb25zdCBsPXtqc29ucnBjOiIyLjAiLGlkOm4uaWQsZXJyb3I6e2NvZGU6Ti5NZXRob2ROb3RGb3VuZCxtZXNzYWdlOiJNZXRob2Qgbm90IGZvdW5kIn19O2kmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/dGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKGkse3R5cGU6ImVycm9yIixtZXNzYWdlOmwsdGltZXN0YW1wOkRhdGUubm93KCl9LGU/LnNlc3Npb25JZCkuY2F0Y2goZz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBlbnF1ZXVlIGVycm9yIHJlc3BvbnNlOiAke2d9YCkpKTplPy5zZW5kKGwpLmNhdGNoKGc9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBhbiBlcnJvciByZXNwb25zZTogJHtnfWApKSk7cmV0dXJufWNvbnN0IGE9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuc2V0KG4uaWQsYSk7Y29uc3Qgcz1HZyhuLnBhcmFtcyk/bi5wYXJhbXMudGFzazp2b2lkIDAsYz10aGlzLl90YXNrU3RvcmU/dGhpcy5yZXF1ZXN0VGFza1N0b3JlKG4sZT8uc2Vzc2lvbklkKTp2b2lkIDAsdT17c2lnbmFsOmEuc2lnbmFsLHNlc3Npb25JZDplPy5zZXNzaW9uSWQsX21ldGE6bi5wYXJhbXM/Ll9tZXRhLHNlbmROb3RpZmljYXRpb246YXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3JlbGF0ZWRSZXF1ZXN0SWQ6bi5pZH07aSYmKGcucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24obCxnKX0sc2VuZFJlcXVlc3Q6YXN5bmMobCxnLHYpPT57aWYoYS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgUChOLkNvbm5lY3Rpb25DbG9zZWQsIlJlcXVlc3Qgd2FzIGNhbmNlbGxlZCIpO2NvbnN0ICQ9ey4uLnYscmVsYXRlZFJlcXVlc3RJZDpuLmlkfTtpJiYhJC5yZWxhdGVkVGFzayYmKCQucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSk7Y29uc3QgeT0kLnJlbGF0ZWRUYXNrPy50YXNrSWQ/P2k7cmV0dXJuIHkmJmMmJmF3YWl0IGMudXBkYXRlVGFza1N0YXR1cyh5LCJpbnB1dF9yZXF1aXJlZCIpLGF3YWl0IHRoaXMucmVxdWVzdChsLGcsJCl9LGF1dGhJbmZvOnI/LmF1dGhJbmZvLHJlcXVlc3RJZDpuLmlkLHJlcXVlc3RJbmZvOnI/LnJlcXVlc3RJbmZvLHRhc2tJZDppLHRhc2tTdG9yZTpjLHRhc2tSZXF1ZXN0ZWRUdGw6cz8udHRsLGNsb3NlU1NFU3RyZWFtOnI/LmNsb3NlU1NFU3RyZWFtLGNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbTpyPy5jbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW19O1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntzJiZ0aGlzLmFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eShuLm1ldGhvZCl9KS50aGVuKCgpPT5vKG4sdSkpLnRoZW4oYXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3Jlc3VsdDpsLGpzb25ycGM6IjIuMCIsaWQ6bi5pZH07aSYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoaSx7dHlwZToicmVzcG9uc2UiLG1lc3NhZ2U6Zyx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sZT8uc2Vzc2lvbklkKTphd2FpdCBlPy5zZW5kKGcpfSxhc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17anNvbnJwYzoiMi4wIixpZDpuLmlkLGVycm9yOntjb2RlOk51bWJlci5pc1NhZmVJbnRlZ2VyKGwuY29kZSk/bC5jb2RlOk4uSW50ZXJuYWxFcnJvcixtZXNzYWdlOmwubWVzc2FnZT8/IkludGVybmFsIGVycm9yIiwuLi5sLmRhdGEhPT12b2lkIDAmJntkYXRhOmwuZGF0YX19fTtpJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShpLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpnLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxlPy5zZXNzaW9uSWQpOmF3YWl0IGU/LnNlbmQoZyl9KS5jYXRjaChsPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7bH1gKSkpLmZpbmFsbHkoKCk9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KG4uaWQpPT09YSYmdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmRlbGV0ZShuLmlkKX0pfV9vbnByb2dyZXNzKG4pe2NvbnN0e3Byb2dyZXNzVG9rZW46ciwuLi5vfT1uLnBhcmFtcyxlPU51bWJlcihyKSxpPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KGUpO2lmKCFpKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkobil9YCkpO3JldHVybn1jb25zdCBhPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KGUpLHM9dGhpcy5fdGltZW91dEluZm8uZ2V0KGUpO2lmKHMmJmEmJnMucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KGUpfWNhdGNoKGMpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX2NsZWFudXBUaW1lb3V0KGUpLGEoYyk7cmV0dXJufWkobyl9X29ucmVzcG9uc2Uobil7Y29uc3Qgcj1OdW1iZXIobi5pZCksbz10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChyKTtpZihvKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShyKSxJbihuKSlvKG4pO2Vsc2V7Y29uc3QgYT1uZXcgUChuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7byhhKX1yZXR1cm59Y29uc3QgZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChyKTtpZihlPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSByZXNwb25zZSBmb3IgYW4gdW5rbm93biBtZXNzYWdlIElEOiAke0pTT04uc3RyaW5naWZ5KG4pfWApKTtyZXR1cm59dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUociksdGhpcy5fY2xlYW51cFRpbWVvdXQocik7bGV0IGk9ITE7aWYoSW4obikmJm4ucmVzdWx0JiZ0eXBlb2Ygbi5yZXN1bHQ9PSJvYmplY3QiKXtjb25zdCBhPW4ucmVzdWx0O2lmKGEudGFzayYmdHlwZW9mIGEudGFzaz09Im9iamVjdCIpe2NvbnN0IHM9YS50YXNrO3R5cGVvZiBzLnRhc2tJZD09InN0cmluZyImJihpPSEwLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5zZXQocy50YXNrSWQscikpfX1pZihpfHx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShyKSxJbihuKSllKG4pO2Vsc2V7Y29uc3QgYT1QLmZyb21FcnJvcihuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7ZShhKX19Z2V0IHRyYW5zcG9ydCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnR9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLl90cmFuc3BvcnQ/LmNsb3NlKCl9YXN5bmMqcmVxdWVzdFN0cmVhbShuLHIsbyl7Y29uc3R7dGFzazplfT1vPz97fTtpZighZSl7dHJ5e3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMucmVxdWVzdChuLHIsbyl9fWNhdGNoKGEpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjphIGluc3RhbmNlb2YgUD9hOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixTdHJpbmcoYSkpfX1yZXR1cm59bGV0IGk7dHJ5e2NvbnN0IGE9YXdhaXQgdGhpcy5yZXF1ZXN0KG4sT2Esbyk7aWYoYS50YXNrKWk9YS50YXNrLnRhc2tJZCx5aWVsZHt0eXBlOiJ0YXNrQ3JlYXRlZCIsdGFzazphLnRhc2t9O2Vsc2UgdGhyb3cgbmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNyZWF0aW9uIGRpZCBub3QgcmV0dXJuIGEgdGFzayIpO2Zvcig7Oyl7Y29uc3Qgcz1hd2FpdCB0aGlzLmdldFRhc2soe3Rhc2tJZDppfSxvKTtpZih5aWVsZHt0eXBlOiJ0YXNrU3RhdHVzIix0YXNrOnN9LEllKHMuc3RhdHVzKSl7cy5zdGF0dXM9PT0iY29tcGxldGVkIj95aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTpzLnN0YXR1cz09PSJmYWlsZWQiP3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSBmYWlsZWRgKX06cy5zdGF0dXM9PT0iY2FuY2VsbGVkIiYmKHlpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSB3YXMgY2FuY2VsbGVkYCl9KTtyZXR1cm59aWYocy5zdGF0dXM9PT0iaW5wdXRfcmVxdWlyZWQiKXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTtyZXR1cm59Y29uc3QgYz1zLnBvbGxJbnRlcnZhbD8/dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzthd2FpdCBuZXcgUHJvbWlzZSh1PT5zZXRUaW1lb3V0KHUsYykpLG8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKX19Y2F0Y2goYSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmEgaW5zdGFuY2VvZiBQP2E6bmV3IFAoTi5JbnRlcm5hbEVycm9yLFN0cmluZyhhKSl9fX1yZXF1ZXN0KG4scixvKXtjb25zdHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YSx0YXNrOnMscmVsYXRlZFRhc2s6Y309bz8/e307cmV0dXJuIG5ldyBQcm9taXNlKCh1LGwpPT57Y29uc3QgZz1WPT57bChWKX07aWYoIXRoaXMuX3RyYW5zcG9ydCl7ZyhuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKSk7cmV0dXJufWlmKHRoaXMuX29wdGlvbnM/LmVuZm9yY2VTdHJpY3RDYXBhYmlsaXRpZXM9PT0hMCl0cnl7dGhpcy5hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKG4ubWV0aG9kKSxzJiZ0aGlzLmFzc2VydFRhc2tDYXBhYmlsaXR5KG4ubWV0aG9kKX1jYXRjaChWKXtnKFYpO3JldHVybn1vPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCk7Y29uc3Qgdj10aGlzLl9yZXF1ZXN0TWVzc2FnZUlkKyssJD17Li4ubixqc29ucnBjOiIyLjAiLGlkOnZ9O28/Lm9ucHJvZ3Jlc3MmJih0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLnNldCh2LG8ub25wcm9ncmVzcyksJC5wYXJhbXM9ey4uLm4ucGFyYW1zLF9tZXRhOnsuLi5uLnBhcmFtcz8uX21ldGF8fHt9LHByb2dyZXNzVG9rZW46dn19KSxzJiYoJC5wYXJhbXM9ey4uLiQucGFyYW1zLHRhc2s6c30pLGMmJigkLnBhcmFtcz17Li4uJC5wYXJhbXMsX21ldGE6ey4uLiQucGFyYW1zPy5fbWV0YXx8e30sW3plXTpjfX0pO2NvbnN0IHk9Vj0+e3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX2NsZWFudXBUaW1lb3V0KHYpLHRoaXMuX3RyYW5zcG9ydD8uc2VuZCh7anNvbnJwYzoiMi4wIixtZXRob2Q6Im5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIixwYXJhbXM6e3JlcXVlc3RJZDp2LHJlYXNvbjpTdHJpbmcoVil9fSx7cmVsYXRlZFJlcXVlc3RJZDplLHJlc3VtcHRpb25Ub2tlbjppLG9ucmVzdW1wdGlvbnRva2VuOmF9KS5jYXRjaChDPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke0N9YCkpKTtjb25zdCBGPVYgaW5zdGFuY2VvZiBQP1Y6bmV3IFAoTi5SZXF1ZXN0VGltZW91dCxTdHJpbmcoVikpO2woRil9O3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuc2V0KHYsVj0+e2lmKCFvPy5zaWduYWw/LmFib3J0ZWQpe2lmKFYgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbChWKTt0cnl7Y29uc3QgRj1aZChyLFYucmVzdWx0KTtGLnN1Y2Nlc3M/dShGLmRhdGEpOmwoRi5lcnJvcil9Y2F0Y2goRil7bChGKX19fSksbz8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9Pnt5KG8/LnNpZ25hbD8ucmVhc29uKX0pO2NvbnN0IHE9bz8udGltZW91dD8/RGgsUj0oKT0+eShQLmZyb21FcnJvcihOLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6cX0pKTt0aGlzLl9zZXR1cFRpbWVvdXQodixxLG8/Lm1heFRvdGFsVGltZW91dCxSLG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCBSZT1jPy50YXNrSWQ7aWYoUmUpe2NvbnN0IFY9Rj0+e2NvbnN0IEM9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQodik7Qz9DKEYpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNwb25zZSBoYW5kbGVyIG1pc3NpbmcgZm9yIHNpZGUtY2hhbm5lbGVkIHJlcXVlc3QgJHt2fWApKX07dGhpcy5fcmVxdWVzdFJlc29sdmVycy5zZXQodixWKSx0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoUmUse3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6JCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKEY9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKEYpfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCgkLHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKFY9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKFYpfSl9KX1hc3luYyBnZXRUYXNrKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczpufSxOYSxyKX1hc3luYyBnZXRUYXNrUmVzdWx0KG4scixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOm59LHIsbyl9YXN5bmMgbGlzdFRhc2tzKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6bn0sUmEscil9YXN5bmMgY2FuY2VsVGFzayhuLHIpe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6bn0saHYscil9YXN5bmMgbm90aWZpY2F0aW9uKG4scil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkobi5tZXRob2QpO2NvbnN0IG89cj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBzPXsuLi5uLGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi5uLnBhcmFtcyxfbWV0YTp7Li4ubi5wYXJhbXM/Ll9tZXRhfHx7fSxbemVdOnIucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTpzLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXMobi5tZXRob2QpJiYhbi5wYXJhbXMmJiFyPy5yZWxhdGVkUmVxdWVzdElkJiYhcj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyhuLm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZChuLm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZShuLm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IHM9ey4uLm4sanNvbnJwYzoiMi4wIn07cj8ucmVsYXRlZFRhc2smJihzPXsuLi5zLHBhcmFtczp7Li4ucy5wYXJhbXMsX21ldGE6ey4uLnMucGFyYW1zPy5fbWV0YXx8e30sW3plXTpyLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQocyxyKS5jYXRjaChjPT50aGlzLl9vbmVycm9yKGMpKX0pO3JldHVybn1sZXQgYT17Li4ubixqc29ucnBjOiIyLjAifTtyPy5yZWxhdGVkVGFzayYmKGE9ey4uLmEscGFyYW1zOnsuLi5hLnBhcmFtcyxfbWV0YTp7Li4uYS5wYXJhbXM/Ll9tZXRhfHx7fSxbemVdOnIucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGEscil9c2V0UmVxdWVzdEhhbmRsZXIobixyKXtjb25zdCBvPWtzKG4pO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywoZSxpKT0+e2NvbnN0IGE9U3MobixlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIoYSxpKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcihuKXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKG4pfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKG4pe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXMobikpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHtufSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKXtjb25zdCBvPWtzKG4pO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLGU9Pntjb25zdCBpPVNzKG4sZSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKGkpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIobil7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKG4pfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihuKXtjb25zdCByPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQobik7ciE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHIpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUobikpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UobixyLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3QgZT10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZShuLHIsbyxlKX1hc3luYyBfY2xlYXJUYXNrUXVldWUobixyKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbChuLHIpO2Zvcihjb25zdCBlIG9mIG8paWYoZS50eXBlPT09InJlcXVlc3QiJiZ5cyhlLm1lc3NhZ2UpKXtjb25zdCBpPWUubWVzc2FnZS5pZCxhPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KGkpO2E/KGEobmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWQiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUoaSkpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7aX0gZHVyaW5nIHRhc2sgJHtufSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKG4scil7bGV0IG89dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzt0cnl7Y29uc3QgZT1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2sobik7ZT8ucG9sbEludGVydmFsJiYobz1lLnBvbGxJbnRlcnZhbCl9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgoZSxpKT0+e2lmKHIuYWJvcnRlZCl7aShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKTtyZXR1cm59Y29uc3QgYT1zZXRUaW1lb3V0KGUsbyk7ci5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntjbGVhclRpbWVvdXQoYSksaShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUobixyKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIGU9PntpZighbil0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKGUsbi5pZCx7bWV0aG9kOm4ubWV0aG9kLHBhcmFtczpuLnBhcmFtc30scil9LGdldFRhc2s6YXN5bmMgZT0+e2NvbnN0IGk9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm4gaX0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKGUsaSxhKT0+e2F3YWl0IG8uc3RvcmVUYXNrUmVzdWx0KGUsaSxhLHIpO2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYocyl7Y29uc3QgYz1Ebi5wYXJzZSh7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1cyIscGFyYW1zOnN9KTthd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihjKSxJZShzLnN0YXR1cykmJnRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKGUpfX0sZ2V0VGFza1Jlc3VsdDplPT5vLmdldFRhc2tSZXN1bHQoZSxyKSx1cGRhdGVUYXNrU3RhdHVzOmFzeW5jKGUsaSxhKT0+e2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIXMpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrICIke2V9IiBub3QgZm91bmQgLSBpdCBtYXkgaGF2ZSBiZWVuIGNsZWFuZWQgdXBgKTtpZihJZShzLnN0YXR1cykpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7ZX0iIGZyb20gdGVybWluYWwgc3RhdHVzICIke3Muc3RhdHVzfSIgdG8gIiR7aX0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMoZSxpLGEscik7Y29uc3QgYz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZihjKXtjb25zdCB1PURuLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6Y30pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHUpLEllKGMuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoZSl9fSxsaXN0VGFza3M6ZT0+by5saXN0VGFza3MoZSxyKX19fWZ1bmN0aW9uIHdzKHQpe3JldHVybiB0IT09bnVsbCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheSh0KX1mdW5jdGlvbiBFaCh0LG4pe2NvbnN0IHI9ey4uLnR9O2Zvcihjb25zdCBvIGluIG4pe2NvbnN0IGU9byxpPW5bZV07aWYoaT09PXZvaWQgMCljb250aW51ZTtjb25zdCBhPXJbZV07d3MoYSkmJndzKGkpP3JbZV09ey4uLmEsLi4uaX06cltlXT1pfXJldHVybiByfSh0PT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eSh0LHtnZXQ6KG4scik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTpuKVtyXX0pOnQpKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJyt0KyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIFpoIGV4dGVuZHMgTmh7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2gobixyKXt9X2Vuc3VyZUV2ZW50U2xvdChuKXtsZXQgcj10aGlzLl9ldmVudFNsb3RzLmdldChuKTtpZighcil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbbl07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKG4pfWApO3I9e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQobixyKTtsZXQgZT1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQoZSk7bGV0IGk9cjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8sYT0+e2xldCBzPWEucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKG4scyksaS5vbkhhbmRsZXI/LihzKTtmb3IobGV0IGMgb2ZbLi4uaS5saXN0ZW5lcnNdKWMocyl9KX1yZXR1cm4gcn1zZXRFdmVudEhhbmRsZXIobixyKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3Qobik7by5vbkhhbmRsZXImJnImJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKG4pfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcobil9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPXJ9Z2V0RXZlbnRIYW5kbGVyKG4pe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldChuKT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIobixyKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QobikubGlzdGVuZXJzLnB1c2gocil9cmVtb3ZlRXZlbnRMaXN0ZW5lcihuLHIpe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pO2lmKCFvKXJldHVybjtsZXQgZT1vLmxpc3RlbmVycy5pbmRleE9mKHIpO2UhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKGUsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KG4scik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4sInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIobixyKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0obixyKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobiwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZChuLHIsbyl7ciYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7bn0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPShuLHIpPT57bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKG4scil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4scil7bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtyfSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIFJoPSIyMDI2LTAxLTI2IixDaD0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIEFoe2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3RvcihuPXdpbmRvdy5wYXJlbnQscil7dGhpcy5ldmVudFRhcmdldD1uLHRoaXMuZXZlbnRTb3VyY2U9cix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYociYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgZT1RZy5zYWZlUGFyc2Uoby5kYXRhKTtlLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixlLmRhdGEpLHRoaXMub25tZXNzYWdlPy4oZS5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK2UuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQobixyKXtuLm1ldGhvZCE9PUNoJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLG4pLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UobiwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgTGg9aihbbSgibGlnaHQiKSxtKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIiksJHQ9aihbbSgiaW5saW5lIiksbSgiZnVsbHNjcmVlbiIpLG0oInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLE1oPWooW20oIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxtKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksbSgiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLG0oIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksbSgiLS1jb2xvci10ZXh0LWdob3N0IiksbSgiLS1jb2xvci10ZXh0LWluZm8iKSxtKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksbSgiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxtKCItLWNvbG9yLXRleHQtd2FybmluZyIpLG0oIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxtKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxtKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxtKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLG0oIi0tY29sb3ItYm9yZGVyLWluZm8iKSxtKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxtKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksbSgiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLG0oIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksbSgiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxtKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksbSgiLS1jb2xvci1yaW5nLWludmVyc2UiKSxtKCItLWNvbG9yLXJpbmctaW5mbyIpLG0oIi0tY29sb3ItcmluZy1kYW5nZXIiKSxtKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLG0oIi0tY29sb3ItcmluZy13YXJuaW5nIiksbSgiLS1mb250LXNhbnMiKSxtKCItLWZvbnQtbW9ubyIpLG0oIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksbSgiLS1mb250LXdlaWdodC1tZWRpdW0iKSxtKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksbSgiLS1mb250LXdlaWdodC1ib2xkIiksbSgiLS1mb250LXRleHQteHMtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXNtLXNpemUiKSxtKCItLWZvbnQtdGV4dC1tZC1zaXplIiksbSgiLS1mb250LXRleHQtbGctc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksbSgiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksbSgiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLG0oIi0tYm9yZGVyLXJhZGl1cy14cyIpLG0oIi0tYm9yZGVyLXJhZGl1cy1zbSIpLG0oIi0tYm9yZGVyLXJhZGl1cy1tZCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1sZyIpLG0oIi0tYm9yZGVyLXJhZGl1cy14bCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksbSgiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLG0oIi0tc2hhZG93LWhhaXJsaW5lIiksbSgiLS1zaGFkb3ctc20iKSxtKCItLXNoYWRvdy1tZCIpLG0oIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLHFoPVUoTWguZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksaihbcCgpLEtlKCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7Zih7bWV0aG9kOm0oInVpL29wZW4tbGluayIpLHBhcmFtczpmKHt1cmw6cCgpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIEZoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLEpoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxIaD1mKHtpc0Vycm9yOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOmYoe30pfSk7dmFyIEhhPWYoe2Nvbm5lY3REb21haW5zOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLFZhPWYoe2NhbWVyYTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOmYoe3dpZHRoOnooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDp6KCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBWaD1mKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksS2g9Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLFdoPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOmYoe3JlYXNvbjpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxCaD1mKHtmb250czpwKCkub3B0aW9uYWwoKX0pLEdoPWYoe3ZhcmlhYmxlczpxaC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOkJoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxYaD1mKHttZXRob2Q6bSgidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6Zih7fSl9KTtVKHAoKSxPKCkpO3ZhciBJcz1mKHt0ZXh0OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczpmKHt9KS5vcHRpb25hbCgpfSk7dmFyIFloPWYoe2V4cGVyaW1lbnRhbDpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMgKHN0cnVjdHVyZSBUQkQpLiIpLG9wZW5MaW5rczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OmYoe3Blcm1pc3Npb25zOlZhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpIYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDpJcy5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6SXMub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzpmKHt0b29sczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxRaD1mKHtleHBlcmltZW50YWw6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIChzdHJ1Y3R1cmUgVEJEKS4iKSx0b29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOncoJHQpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOmYoe30pLm9wdGlvbmFsKCl9KTtmKHtjc3A6SGEub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOlZhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTtmKHttZXRob2Q6bSgidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6Zih7bW9kZTokdC5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBlJD1mKHttb2RlOiR0LmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSx0JD1qKFttKCJtb2RlbCIpLG0oImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO2Yoe3Jlc291cmNlVXJpOnAoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6dyh0JCkub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDpQZSgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6UGUoKS5vcHRpb25hbCgpfSk7Zih7bWltZVR5cGVzOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7Zih7bWV0aG9kOm0oInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6Zih7Y29udGVudHM6dyhqKFtpbSxvbV0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL21lc3NhZ2UiKSxwYXJhbXM6Zih7cm9sZTptKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50OncoeW4pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6Zih7aHRtbDpwKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpIYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOlZhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIG4kPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOlZyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksZG09Zih7dG9vbEluZm86Zih7aWQ6Z24ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOkphLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOkxoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6R2gub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOiR0Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6dygkdCkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOmooW2Yoe2hlaWdodDp6KCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksZih7bWF4SGVpZ2h0OmooW3ooKSxLZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKGooW2Yoe3dpZHRoOnooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLGYoe21heFdpZHRoOmooW3ooKSxLZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06aihbbSgid2ViIiksbSgiZGVza3RvcCIpLG0oIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczpmKHt0b3VjaDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czpmKHt0b3A6eigpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDp6KCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOnooKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDp6KCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLHIkPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOmRtLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO2Yoe21ldGhvZDptKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczpmKHtjb250ZW50OncoeW4pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpVKHAoKSxPKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOmYoe2FwcEluZm86SnIuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOlFoLmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpwKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciBpJD1mKHtwcm90b2NvbFZlcnNpb246cCgpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOkpyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6WWguZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6ZG0uZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCksbyQ9e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIHpzKHQsbil7bGV0IHI9dFsifnN0YW5kYXJkIl07aWYoci5qc29uU2NoZW1hKXJldHVybiByLmpzb25TY2hlbWFbbl0obyQpO2lmKHIudmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IF9tKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5LZyksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKHQse2lvOm59KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7ci52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiB4cyh0LG4scj0iIil7bGV0IG89YXdhaXQgdFsifnN0YW5kYXJkIl0udmFsaWRhdGUobik7aWYoby5pc3N1ZXMpe2xldCBlPW8uaXNzdWVzLm1hcChpPT57bGV0IGE9aS5wYXRoPy5tYXAocz0+dHlwZW9mIHM9PSJvYmplY3QiP3Mua2V5OnMpLmpvaW4oIi4iKTtyZXR1cm4gYT9gJHthfTogJHtpLm1lc3NhZ2V9YDppLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKHIrZSl9cmV0dXJuIG8udmFsdWV9Y2xhc3MgS2EgZXh0ZW5kcyBaaHtfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKG4pe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gQXBwLiR7bn0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKHIpO2NvbnNvbGUud2FybihgJHtyfS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6VmgsdG9vbGlucHV0cGFydGlhbDpLaCx0b29scmVzdWx0Om4kLHRvb2xjYW5jZWxsZWQ6V2gsaG9zdGNvbnRleHRjaGFuZ2VkOnIkfTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKG4pe2lmKCFLYS5PTkVfU0hPVF9FVkVOVFMuaGFzKG4pfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKG4pfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZChuKSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gIiR7U3RyaW5nKG4pfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihyKTtjb25zb2xlLndhcm4ocil9c2V0RXZlbnRIYW5kbGVyKG4scil7ciYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5zZXRFdmVudEhhbmRsZXIobixyKX1hZGRFdmVudExpc3RlbmVyKG4scil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5hZGRFdmVudExpc3RlbmVyKG4scil9b25FdmVudERpc3BhdGNoKG4scil7bj09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLnJ9KX1jb25zdHJ1Y3RvcihuLHI9e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89bix0aGlzLl9jYXBhYmlsaXRpZXM9cix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8SCh7aml0bGVzczohMH0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoSHIsZT0+KGNvbnNvbGUubG9nKCJSZWNlaXZlZCBwaW5nOiIsZS5wYXJhbXMpLHt9KSksdGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdm9pZCAwKX1yZWdpc3RlckNhcGFiaWxpdGllcyhuKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGNhcGFiaWxpdGllcyBhZnRlciB0cmFuc3BvcnQgaXMgZXN0YWJsaXNoZWQiKTt0aGlzLl9jYXBhYmlsaXRpZXM9RWgodGhpcy5fY2FwYWJpbGl0aWVzLG4pfXJlZ2lzdGVyVG9vbChuLHIsbyl7aWYodGhpcy5fcmVnaXN0ZXJlZFRvb2xzW25dKXRocm93IEVycm9yKGBUb29sICR7bn0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IGU9dGhpcyxpPSgpPT57ZS5faW5pdGlhbGl6ZWRTZW50JiZlLl9jYXBhYmlsaXRpZXMudG9vbHM/Lmxpc3RDaGFuZ2VkJiZlLnNlbmRUb29sTGlzdENoYW5nZWQoKX0sYT1yLmlucHV0U2NoZW1hIT09dm9pZCAwLHM9e3RpdGxlOnIudGl0bGUsZGVzY3JpcHRpb246ci5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTpyLmlucHV0U2NoZW1hLG91dHB1dFNjaGVtYTpyLm91dHB1dFNjaGVtYSxhbm5vdGF0aW9uczpyLmFubm90YXRpb25zLF9tZXRhOnIuX21ldGEsZW5hYmxlZDohMCxlbmFibGUoKXt0aGlzLmVuYWJsZWQ9ITAsaSgpfSxkaXNhYmxlKCl7dGhpcy5lbmFibGVkPSExLGkoKX0sdXBkYXRlKGMpe09iamVjdC5hc3NpZ24odGhpcyxjKSxpKCl9LHJlbW92ZSgpe2UuX3JlZ2lzdGVyZWRUb29sc1tuXT09PXMmJihkZWxldGUgZS5fcmVnaXN0ZXJlZFRvb2xzW25dLGkoKSl9LGhhbmRsZXI6YXN5bmMoYyx1KT0+e2lmKCFzLmVuYWJsZWQpdGhyb3cgRXJyb3IoYFRvb2wgJHtufSBpcyBkaXNhYmxlZGApO2xldCBsO2lmKGEpe2xldCBnPXMuaW5wdXRTY2hlbWEsdj1nP2F3YWl0IHhzKGcsYz8/e30sYEludmFsaWQgaW5wdXQgZm9yIHRvb2wgJHtufTogYCk6Yz8/e307bD1hd2FpdCBvKHYsdSl9ZWxzZSBsPWF3YWl0IG8odSk7cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYhbC5pc0Vycm9yJiYobC5zdHJ1Y3R1cmVkQ29udGVudD1hd2FpdCB4cyhzLm91dHB1dFNjaGVtYSxsLnN0cnVjdHVyZWRDb250ZW50LGBJbnZhbGlkIG91dHB1dCBmb3IgdG9vbCAke259OiBgKSksbH19O3JldHVybiB0aGlzLl9yZWdpc3RlcmVkVG9vbHNbbl09cywhdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzJiYhdGhpcy50cmFuc3BvcnQmJnRoaXMucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Rvb2xzOntsaXN0Q2hhbmdlZDohMH19KSx0aGlzLmVuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCksaSgpLHN9X3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSExO2Vuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCl7dGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWR8fCh0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMCx0aGlzLm9uY2FsbHRvb2w9YXN5bmMobixyKT0+e2xldCBvPXRoaXMuX3JlZ2lzdGVyZWRUb29sc1tuLm5hbWVdO2lmKCFvKXRocm93IEVycm9yKGBUb29sICR7bi5uYW1lfSBub3QgZm91bmRgKTtyZXR1cm4gby5oYW5kbGVyKG4uYXJndW1lbnRzLHIpfSx0aGlzLm9ubGlzdHRvb2xzPWFzeW5jKG4scik9Pih7dG9vbHM6YXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFRvb2xzKS5maWx0ZXIoKFtvLGVdKT0+ZS5lbmFibGVkKS5tYXAoYXN5bmMoW28sZV0pPT57bGV0IGk9e25hbWU6byx0aXRsZTplLnRpdGxlLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6ZS5pbnB1dFNjaGVtYT9hd2FpdCB6cyhlLmlucHV0U2NoZW1hLCJpbnB1dCIpOnt0eXBlOiJvYmplY3QiLHByb3BlcnRpZXM6e319fTtyZXR1cm4gZS5vdXRwdXRTY2hlbWEmJihpLm91dHB1dFNjaGVtYT1hd2FpdCB6cyhlLm91dHB1dFNjaGVtYSwib3V0cHV0IikpLGUuYW5ub3RhdGlvbnMmJihpLmFubm90YXRpb25zPWUuYW5ub3RhdGlvbnMpLGUuX21ldGEmJihpLl9tZXRhPWUuX21ldGEpLGl9KSl9KSl9YXN5bmMgc2VuZFRvb2xMaXN0Q2hhbmdlZChuPXt9KXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZFRvb2xMaXN0Q2hhbmdlZCIpLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIixwYXJhbXM6bn0pfWdldEhvc3RDYXBhYmlsaXRpZXMoKXtyZXR1cm4gdGhpcy5faG9zdENhcGFiaWxpdGllc31nZXRIb3N0VmVyc2lvbigpe3JldHVybiB0aGlzLl9ob3N0SW5mb31nZXRIb3N0Q29udGV4dCgpe3JldHVybiB0aGlzLl9ob3N0Q29udGV4dH1nZXQgb250b29saW5wdXQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIpfXNldCBvbnRvb2xpbnB1dChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0IixuKX1nZXQgb250b29saW5wdXRwYXJ0aWFsKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIil9c2V0IG9udG9vbGlucHV0cGFydGlhbChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIsbil9Z2V0IG9udG9vbHJlc3VsdCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIpfXNldCBvbnRvb2xyZXN1bHQobil7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiLG4pfWdldCBvbnRvb2xjYW5jZWxsZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiKX1zZXQgb250b29sY2FuY2VsbGVkKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIixuKX1nZXQgb25ob3N0Y29udGV4dGNoYW5nZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIpfXNldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIixuKX1fb250ZWFyZG93bjtnZXQgb250ZWFyZG93bigpe3JldHVybiB0aGlzLl9vbnRlYXJkb3dufXNldCBvbnRlYXJkb3duKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib250ZWFyZG93biIsdGhpcy5fb250ZWFyZG93bixuKSx0aGlzLl9vbnRlYXJkb3duPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoWGgsKHIsbyk9PntpZighdGhpcy5fb250ZWFyZG93bil0aHJvdyBFcnJvcigiTm8gb250ZWFyZG93biBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbnRlYXJkb3duKHIucGFyYW1zLG8pfSl9X29uY2FsbHRvb2w7Z2V0IG9uY2FsbHRvb2woKXtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbH1zZXQgb25jYWxsdG9vbChuKXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9uY2FsbHRvb2wiLHRoaXMuX29uY2FsbHRvb2wsbiksdGhpcy5fb25jYWxsdG9vbD1uLHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKHNtLChyLG8pPT57aWYoIXRoaXMuX29uY2FsbHRvb2wpdGhyb3cgRXJyb3IoIk5vIG9uY2FsbHRvb2wgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbChyLnBhcmFtcyxvKX0pfV9vbmxpc3R0b29scztnZXQgb25saXN0dG9vbHMoKXtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHN9c2V0IG9ubGlzdHRvb2xzKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25saXN0dG9vbHMiLHRoaXMuX29ubGlzdHRvb2xzLG4pLHRoaXMuX29ubGlzdHRvb2xzPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoYW0sKHIsbyk9PntpZighdGhpcy5fb25saXN0dG9vbHMpdGhyb3cgRXJyb3IoIk5vIG9ubGlzdHRvb2xzIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzKHIucGFyYW1zLG8pfSl9YXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZChuKXtzd2l0Y2gobil7Y2FzZSJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIjppZighdGhpcy5faG9zdENhcGFiaWxpdGllcz8uc2FtcGxpbmcpdGhyb3cgRXJyb3IoYEhvc3QgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyAocmVxdWlyZWQgZm9yICR7bn0pYCk7YnJlYWt9fWFzc2VydFJlcXVlc3RIYW5kbGVyQ2FwYWJpbGl0eShuKXtzd2l0Y2gobil7Y2FzZSJ0b29scy9jYWxsIjpjYXNlInRvb2xzL2xpc3QiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMpdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHRvb2wgY2FwYWJpbGl0eSAocmVxdWlyZWQgZm9yICR7bn0pYCk7cmV0dXJuO2Nhc2UicGluZyI6Y2FzZSJ1aS9yZXNvdXJjZS10ZWFyZG93biI6cmV0dXJuO2RlZmF1bHQ6dGhyb3cgRXJyb3IoYE5vIGhhbmRsZXIgZm9yIG1ldGhvZCAke259IHJlZ2lzdGVyZWRgKX19YXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eShuKXt9YXNzZXJ0VGFza0NhcGFiaWxpdHkobil7dGhyb3cgRXJyb3IoIlRhc2tzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KG4pe3Rocm93IEVycm9yKCJUYXNrIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXN5bmMgY2FsbFNlcnZlclRvb2wobixyKXtpZih0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY2FsbFNlcnZlclRvb2wiKSx0eXBlb2Ygbj09InN0cmluZyIpdGhyb3cgRXJyb3IoYGNhbGxTZXJ2ZXJUb29sKCkgZXhwZWN0cyBhbiBvYmplY3QgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBidXQgcmVjZWl2ZWQgYSBzdHJpbmcgKCIke259IikuIERpZCB5b3UgbWVhbjogY2FsbFNlcnZlclRvb2woeyBuYW1lOiAiJHtufSIsIGFyZ3VtZW50czogeyAuLi4gfSB9KT9gKTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRvb2xzL2NhbGwiLHBhcmFtczpufSxWcix7b25wcm9ncmVzczooKT0+e30scmVzZXRUaW1lb3V0T25Qcm9ncmVzczohMCwuLi5yfSl9YXN5bmMgcmVhZFNlcnZlclJlc291cmNlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZWFkU2VydmVyUmVzb3VyY2UiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL3JlYWQiLHBhcmFtczpufSxybSxyKX1hc3luYyBsaXN0U2VydmVyUmVzb3VyY2VzKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJsaXN0U2VydmVyUmVzb3VyY2VzIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9saXN0IixwYXJhbXM6bn0sbm0scil9YXN5bmMgY3JlYXRlU2FtcGxpbmdNZXNzYWdlKG4scil7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNyZWF0ZVNhbXBsaW5nTWVzc2FnZSIpO2xldCBvPW4udG9vbHM/bG06dW07cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIixwYXJhbXM6bn0sbyxyKX1zZW5kTWVzc2FnZShuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZE1lc3NhZ2UiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvbWVzc2FnZSIscGFyYW1zOm59LEhoLHIpfXNlbmRMb2cobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvbWVzc2FnZSIscGFyYW1zOm59KX11cGRhdGVNb2RlbENvbnRleHQobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInVwZGF0ZU1vZGVsQ29udGV4dCIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIscGFyYW1zOm59LGphLHIpfW9wZW5MaW5rKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJvcGVuTGluayIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9vcGVuLWxpbmsiLHBhcmFtczpufSxGaCxyKX1zZW5kT3Blbkxpbms9dGhpcy5vcGVuTGluaztkb3dubG9hZEZpbGUobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImRvd25sb2FkRmlsZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9kb3dubG9hZC1maWxlIixwYXJhbXM6bn0sSmgscil9cmVxdWVzdFRlYXJkb3duKG49e30pe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3JlcXVlc3QtdGVhcmRvd24iLHBhcmFtczpufSl9cmVxdWVzdERpc3BsYXlNb2RlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZXF1ZXN0RGlzcGxheU1vZGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiLHBhcmFtczpufSxlJCxyKX1zZW5kU2l6ZUNoYW5nZWQobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIixwYXJhbXM6bn0pfXNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl7bGV0IG49ITEscj0wLG89MCxlPSgpPT57bnx8KG49ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57bj0hMTtsZXQgYT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscz1hLnN0eWxlLmhlaWdodDthLnN0eWxlLmhlaWdodD0ibWF4LWNvbnRlbnQiO2xldCBjPU1hdGguY2VpbChhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7YS5zdHlsZS5oZWlnaHQ9cztsZXQgdT1NYXRoLmNlaWwod2luZG93LmlubmVyV2lkdGgpOyh1IT09cnx8YyE9PW8pJiYocj11LG89Yyx0aGlzLnNlbmRTaXplQ2hhbmdlZCh7d2lkdGg6dSxoZWlnaHQ6Y30pKX0pKX07ZSgpO2xldCBpPW5ldyBSZXNpemVPYnNlcnZlcihlKTtyZXR1cm4gaS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCksaS5vYnNlcnZlKGRvY3VtZW50LmJvZHkpLCgpPT5pLmRpc2Nvbm5lY3QoKX1hc3luYyBjb25uZWN0KG49bmV3IEFoKHdpbmRvdy5wYXJlbnQsd2luZG93LnBhcmVudCkscil7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkFwcCBpcyBhbHJlYWR5IGNvbm5lY3RlZC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIGFnYWluLiIpO3RoaXMuX2luaXRpYWxpemVkU2VudD0hMSxhd2FpdCBzdXBlci5jb25uZWN0KG4pO3RyeXtsZXQgbz1hd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvaW5pdGlhbGl6ZSIscGFyYW1zOnthcHBDYXBhYmlsaXRpZXM6dGhpcy5fY2FwYWJpbGl0aWVzLGFwcEluZm86dGhpcy5fYXBwSW5mbyxwcm90b2NvbFZlcnNpb246Umh9fSxpJCxyKTtpZihvPT09dm9pZCAwKXRocm93IEVycm9yKGBTZXJ2ZXIgc2VudCBpbnZhbGlkIGluaXRpYWxpemUgcmVzdWx0OiAke299YCk7dGhpcy5faG9zdENhcGFiaWxpdGllcz1vLmhvc3RDYXBhYmlsaXRpZXMsdGhpcy5faG9zdEluZm89by5ob3N0SW5mbyx0aGlzLl9ob3N0Q29udGV4dD1vLmhvc3RDb250ZXh0LGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQifSksdGhpcy5faW5pdGlhbGl6ZWRTZW50PSEwLHRoaXMub3B0aW9ucz8uYXV0b1Jlc2l6ZSYmdGhpcy5zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpfWNhdGNoKG8pe3Rocm93IHRoaXMuY2xvc2UoKSxvfX19Y29uc3QgZmU9dD0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCksYSQ9e1VTRDoyLEVVUjoyLEdCUDoyLEpQWTowLFVTREM6NixVU0RUOjYsRVVSQzo2fSx5ZT0odCxuKT0+e2NvbnN0IHI9YSRbKG58fCIiKS50b1VwcGVyQ2FzZSgpXT8/MixvPXQ8MCxlPVN0cmluZyhNYXRoLmFicyh0KSkucGFkU3RhcnQocisxLCIwIiksaT1lLnNsaWNlKDAsZS5sZW5ndGgtcikucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZywiLCIpLGE9cj4wP2AuJHtlLnNsaWNlKGUubGVuZ3RoLXIpfWA6IiI7cmV0dXJuYCR7bz8iLSI6IiJ9JHtpfSR7YX1gfSxLPXQ9PlN0cmluZyh0KS5yZXBsYWNlKC9bJjw+Il0vZyxuPT4oeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyJ9KVtuXSksbW09dD0+e2NvbnN0IG49bmV3IERhdGUodCk7cmV0dXJuIE51bWJlci5pc05hTihuLmdldFRpbWUoKSk/IiI6bi50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApfSxLcj0odCxuLHIpPT57ZmUoImtpbmQiKS50ZXh0Q29udGVudD10LGZlKCJtZXJjaGFudCIpLnRleHRDb250ZW50PW4/PyIiLGZlKCJtb2RlIikudGV4dENvbnRlbnQ9cj9gJHtyfSBtb2RlYDoiIn0scyQ9dD0+e0tyKCJCYWxhbmNlIix0Lm1lcmNoYW50SWQsdC5tb2RlKTtjb25zdCBuPXQuYmFsYW5jZXM/P1tdO2lmKCFuLmxlbmd0aCl7ZmUoImNvbnRlbnQiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImVtcHR5Ij5ObyBiYWxhbmNlIHlldC48L2Rpdj4nO3JldHVybn1mZSgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iYmFsIj4ke24ubWFwKHI9PmA8ZGl2IGNsYXNzPSJiYWwtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjY3kiPiR7SyhyLmN1cnJlbmN5KX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0bGVkIj4ke3llKHIuc2V0dGxlZCxyLmN1cnJlbmN5KX08c3BhbiBjbGFzcz0idW5pdCI+c2V0dGxlZDwvc3Bhbj48L2Rpdj4KICAgICAgICA8ZGl2PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN1YiI+cGVuZGluZyA8Yj4ke3llKHIucGVuZGluZyxyLmN1cnJlbmN5KX08L2I+IMK3IHBheWFibGUgPGI+JHt5ZShyLnBheWFibGUsci5jdXJyZW5jeSl9PC9iPjwvZGl2PgogICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gfSxjJD10PT57S3IoIkN1cmxlc3Mgd2FsbGV0Iix0Lm1lcmNoYW50SWQsdC5tb2RlKTtjb25zdCBuPXQuY3VybGVzc1dhbGxldD8/W107aWYoIW4ubGVuZ3RoKXtmZSgiY29udGVudCIpLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZW1wdHkiPk5vIHdhbGxldCBiYWxhbmNlIHlldC48L2Rpdj4nO3JldHVybn1mZSgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iYmFsIj4ke24ubWFwKHI9PmA8ZGl2IGNsYXNzPSJiYWwtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjY3kiPiR7SyhyLmN1cnJlbmN5KX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0bGVkIj4ke3llKHIuYXZhaWxhYmxlLHIuY3VycmVuY3kpfTxzcGFuIGNsYXNzPSJ1bml0Ij5hdmFpbGFibGU8L3NwYW4+PC9kaXY+CiAgICAgICAgPGRpdj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdWIiPmZyb3plbiA8Yj4ke3llKHIuZnJvemVuLHIuY3VycmVuY3kpfTwvYj48L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YH0sdSQ9dD0+e2NvbnN0IG49KHQubGluZUl0ZW1zPz9bXSkubWFwKG89PksoYCR7by5uYW1lfSR7by5xdWFudGl0eT4xP2Agw5cke28ucXVhbnRpdHl9YDoiIn1gKSkuam9pbigiLCAiKXx8Syh0LmlkKSxyPVN0cmluZyh0LnN0YXR1cz8/IiIpO3JldHVybmA8ZGl2IGNsYXNzPSJvcmRlciBjbGlja2FibGUiIGRhdGEtb2lkPSIke0soU3RyaW5nKHQuaWQpKX0iPgogICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtufTwvZGl2PgogICAgPGRpdiBjbGFzcz0iYW10Ij4ke3llKHQuYW1vdW50LHQuY3VycmVuY3kpfSAke0sodC5jdXJyZW5jeSl9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke21tKHQuY3JlYXRlZEF0KX0gwrcgJHtLKHQuaWQpfTwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3RhdHVzIGlzLSR7SyhyKX0iPiR7SyhyKX08L2Rpdj4KICA8L2Rpdj5gfSxXcj0xMDtsZXQgcGU9MCx6bj1udWxsO2NvbnN0IHBtPXQ9Pnt6bj10LEtyKCJPcmRlcnMiLHQubWVyY2hhbnRJZCx0Lm1vZGUpO2NvbnN0IG49dC5vcmRlcnM/P1tdO2lmKCFuLmxlbmd0aCl7ZmUoImNvbnRlbnQiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImVtcHR5Ij5ObyBvcmRlcnMgeWV0LjwvZGl2Pic7cmV0dXJufWNvbnN0IHI9TWF0aC5jZWlsKG4ubGVuZ3RoL1dyKTtwZT1NYXRoLm1heCgwLE1hdGgubWluKHBlLHItMSkpO2NvbnN0IG89KCk9PntwZT1NYXRoLm1heCgwLE1hdGgubWluKHBlLHItMSkpO2NvbnN0IGU9cGUqV3IsaT1uLnNsaWNlKGUsZStXcikubWFwKHUkKS5qb2luKCIiKSxhPXI+MT9gPGRpdiBjbGFzcz0icGFnZXIiPgogICAgICAgICAgICA8YnV0dG9uIGlkPSJvcC1wcmV2IiR7cGU9PT0wPyIgZGlzYWJsZWQiOiIifT7igLkgUHJldjwvYnV0dG9uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFnZWluZm8iPlBhZ2UgJHtwZSsxfSAvICR7cn0gwrcgJHtuLmxlbmd0aH0gb3JkZXJzPC9zcGFuPgogICAgICAgICAgICA8YnV0dG9uIGlkPSJvcC1uZXh0IiR7cGU+PXItMT8iIGRpc2FibGVkIjoiIn0+TmV4dCDigLo8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PmA6IiI7ZmUoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9Im9yZGVycyI+JHtpfTwvZGl2PiR7YX1gLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcC1wcmV2Iik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3BlLT0xLG8oKX0pLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcC1uZXh0Iik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3BlKz0xLG8oKX0pO2Zvcihjb25zdCBzIG9mIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLm9yZGVyLmNsaWNrYWJsZSIpKSlzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2NvbnN0IGM9bi5maW5kKHU9PlN0cmluZyh1LmlkKT09PXMuZGF0YXNldC5vaWQpO2MmJmwkKHQsYyl9KX07bygpfSxsJD0odCxuKT0+e2NvbnN0IHI9e21lcmNoYW50SWQ6dC5tZXJjaGFudElkLG1vZGU6dC5tb2RlLG9yZGVyOm59O3huKHsuLi5yLHBheW1lbnQ6dm9pZCAwfSksQWUuY2FsbFNlcnZlclRvb2woe25hbWU6ImdldF9vcmRlciIsYXJndW1lbnRzOntvcmRlcklkOm4uaWR9fSkudGhlbihvPT54bihvPy5zdHJ1Y3R1cmVkQ29udGVudD8/ey4uLnIscGF5bWVudDpudWxsfSkpLmNhdGNoKCgpPT54bih7Li4ucixwYXltZW50Om51bGx9KSl9LGQkPXQ9PntpZih0PT09dm9pZCAwKXJldHVybic8c3BhbiBjbGFzcz0ibXV0ZWQiPmxvYWRpbmfigKY8L3NwYW4+JztpZighdClyZXR1cm4nPHNwYW4gY2xhc3M9Im11dGVkIj7igJQ8L3NwYW4+Jztjb25zdCBuPXQud2FsbGV0P2AgwrcgJHtLKFN0cmluZyh0LndhbGxldCkpfWA6IiI7cmV0dXJuYDxzcGFuIGNsYXNzPSJicmFuZCI+JHtLKFN0cmluZyh0LmJyYW5kPz8iY2FyZCIpKX08L3NwYW4+IOKAouKAouKAouKAoiAke0soU3RyaW5nKHQubGFzdDQ/PyI/Pz8/IikpfSR7bn1gfSx4bj10PT57Y29uc3Qgbj10Lm9yZGVyO2lmKCFuKXJldHVybjtLcigiT3JkZXIiLHQubWVyY2hhbnRJZCx0Lm1vZGUpO2NvbnN0IHI9KG4ubGluZUl0ZW1zPz9bXSkubWFwKGk9PmA8ZGl2IGNsYXNzPSJsaSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGktbmFtZSI+JHtLKGkubmFtZSl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGktcXR5Ij7DlyR7aS5xdWFudGl0eX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJsaS1hbXQiPiR7eWUoKGkudW5pdFByaWNlPz8wKSooaS5xdWFudGl0eT8/MSksbi5jdXJyZW5jeSl9ICR7SyhuLmN1cnJlbmN5KX08L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIiksbz1TdHJpbmcobi5zdGF0dXM/PyIiKSxlPXpuPyc8YnV0dG9uIGlkPSJvZC1iYWNrIiBjbGFzcz0iYmFjayI+4oC5IE9yZGVyczwvYnV0dG9uPic6IiI7ZmUoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImRldGFpbCI+CiAgICAke2V9CiAgICA8ZGl2IGNsYXNzPSJvZC10b3AiPgogICAgICA8ZGl2IGNsYXNzPSJvZC10b3RhbCI+JHt5ZShuLmFtb3VudCxuLmN1cnJlbmN5KX0gPHNwYW4gY2xhc3M9InVuaXQiPiR7SyhuLmN1cnJlbmN5KX08L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InN0YXR1cyBpcy0ke0sobyl9Ij4ke0sobyl9PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9kLW1ldGEiPiR7bW0obi5jcmVhdGVkQXQpfSDCtyA8c3BhbiBjbGFzcz0ibW9ubyI+JHtLKG4uaWQpfTwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxpcyI+JHtyfHwnPGRpdiBjbGFzcz0iZW1wdHkiPk5vIGl0ZW1zLjwvZGl2Pid9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJvZC1wYXkiPjxzcGFuIGNsYXNzPSJsYmwiPlBhaWQgd2l0aDwvc3Bhbj4gJHtkJCh0LnBheW1lbnQpfTwvZGl2PgogIDwvZGl2PmAsZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9kLWJhY2siKT8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57em4mJnBtKHpuKX0pfSxmbT10PT57dCYmKHQub3JkZXI/eG4odCk6QXJyYXkuaXNBcnJheSh0LmN1cmxlc3NXYWxsZXQpP2MkKHQpOkFycmF5LmlzQXJyYXkodC5iYWxhbmNlcyk/cyQodCk6QXJyYXkuaXNBcnJheSh0Lm9yZGVycykmJnBtKHQpKX0sZ209dD0+e2NvbnN0IG49dD8uc3R5bGVzPy52YXJpYWJsZXM7aWYobilmb3IoY29uc3RbcixvXW9mIE9iamVjdC5lbnRyaWVzKG4pKW8hPW51bGwmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShyLFN0cmluZyhvKSk7dD8udGhlbWUmJihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGF0YXNldC50aGVtZT10LnRoZW1lKX0sQWU9bmV3IEthKHtuYW1lOiJhZ2VudGJhbmstbWVyY2hhbnQta2l0Iix2ZXJzaW9uOiIxLjAuMCJ9KTtBZS5vbnRvb2xyZXN1bHQ9dD0+Zm0odD8uc3RydWN0dXJlZENvbnRlbnQpO0FlLm9uaG9zdGNvbnRleHRjaGFuZ2VkPXQ9PmdtKHQpO0FlLmNvbm5lY3QoKS50aGVuKCgpPT57Z20oQWUuZ2V0SG9zdENvbnRleHQoKSk7Y29uc3QgdD1BZS5nZXRIb3N0Q29udGV4dCgpPy50b29sSW5mbz8ucmVzdWx0Py5zdHJ1Y3R1cmVkQ29udGVudDt0JiZmbSh0KX0pLmNhdGNoKCgpPT57fSk7PC9zY3JpcHQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgIDxkaXYgY2xhc3M9ImhlYWQiIGlkPSJoZWFkIj4KICAgICAgICA8aW1nIGNsYXNzPSJsb2dvIiBhbHQ9IkN1cmxlc3MiIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUI0Q0FZQUFBRFBBWEVQQUFBa1VFbEVRVlI0MnUyZGVaaGNWWm4vdis4NTkxWjFkN283WVVrUURiTEk0aVFRa0xDalV3a0pFSFlDVkpCVmNaejRqRDlRbEhHY2thVlNqZzZqd29EaU1JTDRJSWdHMHVLNGtJVUFka3BHUVVtRFJHaU5pSkFRRXBPUXBaUGVxdTQ1Ny9mM1IxVjFWMjlKZDZjNzZRNTFuaWRVVVYzcnZaLzdidWM5MzROcnZyYnFoQ3R2WDNVWUFDUVgwSUlVbEVkNTlCaEpXN3huYXNaVS9BbVdsMTM5OVZYWDFzMFJEeEVtRjlDV0QxSjVGSWJrZ2FuejFkVlQ5eDh6WnNyUkFnQno3MlBZc25YMWZHTXNOamF2K2NTUzlDbmJrZ3RvNjVKUWlMQjgzTjdOMXFYT0EwQmw5WlJMQlB3N2c5aDlLTGdqQVlDcnZ2SFcwbXZ2MnJqdW8vL3gycXppeXhLcCtxQjg4TjUxdzNTNG8vR1Rxc2ZVSHY5UVplMnhDekYrVW5YblUwaEJpZ1lBcnY3R1cwOTk4dDVXWG5INzYvZC85S3V2SHdBQXFSUk5xdkQzOHRqYlI2TERTRlR0TS9XOE1lTk9mTHVxOWtQMVJjTUN3T1JCRUNFd0R5RGxuZFYvT0wrMWFWMm1ldHo3L2xFRUwxenhsZGV1VGFkRjAyblJ2TlVwQjhwN2Q2Q2JjZVBHblhwdzlUNG5QbXdsL2dTaGphM2JYcHJlYVlHZ1hRQklwV2pTYWRIa0Y1ZVBEY2J0ODJTc292WmtsMnVGZDI2UjVySmZYSkNlOUVveHk2cWJJNzU4b1BjYVZ5U0YyTVhXN0h2cTlZQy8yVWhzdlBkdFM1cTM0a0tnd1JVc2phTEU1UFFFNTZ0L0hoK0tyUmRySjVNQWZkUkcxVHU4Vy92MXV2VDA1cUs3U3FkRnk4ZDl0R1pGQ1F0a0hBQ00zZS9VTTFUa2RnRk9BZ0ZxOVBUMk1mWkNySG0rcldoaFNsN1lpNkZLTHJCMWRYUDg1Zi8raDROTVVKVVJ5cUZSMUtieHluRW15amF2VkxyYjZtNmJ2S0RENnBTenJGR2JGWTA5NENPSGdreUIrQmlaNTRMcWY3VTliRHNYNjFlMGRBZW1UMmhLWGRBbFgzNzFpSGhRa1FGd29NdTFabTFRRVJkcjRhUHNZdStqMng1UFQxbGV6TEl5NldrZUtNTXp3bUZSQUJ3L1BsRWRDVDhMNFQ4THpEanZjem1JamFtNjUyUFVzemR2L3QyMjNvRFpJVFNkSUV4M2MyNTU4VmhiV2Z0TGd2dTZiSnNqYU1LS2F1T2pOay9pdThMMjIrdlNKNnd1d3pOU1I2cVErYVlWQVBaN3ovUnJGTHhGeEJ5cEdvSHEyMFZzaFZlMzNFU3RaelkxdmJ5MUwyQjJDazBwT01sYkcwNjE4ZHFuVkgyVmQxa0NKQUFiVmxURFpWdTNnUHJOdHR6MmJ5Mzh6NDlzNmJSVTBESThleHFXeG1LUWkzMG16cGdsaWx0RTVIU3FCOVY1a2lwaVF1Lzk3elZzUDdONVhjTTdwZTVyVU5DVWduUEp6Uy9PakZYV0xQUWFCZXB5K2NoYjFjR1lJSXhWSVpkdFdVM1ZPNktBMzNzaWZVSnJHWjZSQWN2NDk1OTV1aXIrRGNCNUlFR05QQWtodllvRWdYcjNxalArakpiMXoyM1lHVEQ5aGlZUERvTk1XdHlsdDc1NFVSQ3Yvb242SEwzTEdZRUkxWk9FRjJ1RElLeEFsRzFaU2ZWM2JvbTEvaUNUbnQ1ZWRsdTd1OWFTUCtudm1UanJSRy94QlpCSlFrQ2ZVNm9DZ0NIVkNXeWdkSCt5enMvWXRPazNhL3NEeklDZ0FZQ3BjNWVIRGZlZkVGMTIyMHRYQmZIcVI2SmNxNmQzQm9DQWhLb25TYlZCekJvYklzcTEvcEhRdStMdGJ6MVNkOWVjdGc1NDVrM3o1V3hycUdHWnhHTE1jc0NoNTUxRTVlY0JKaUhHcU0rUlZBVnBTUUtrQTB4QTlhOGpwOU8zYkhuMnJmNENNMkJvU3NHWmZWdkRwK0lWWTc4VHRUVTdxck1BaEZTUUJGV1ZVTm9nYm8wSjRIS3RLNVg0ZHB1MC9PRHByNTNaVkhSYmsxNEZ5M1dlWGFpekpCSVdtWHlkQlFBT1BQU2lqNmpvWjBGZUFqRkNud1B6YnFBQWk0SktKMklDMHIvaGxXYzByYys4T1JCZ0JnVk5LVGlYM1BiaVRmR0tzWGRrVzVzYzZLMlNBaElrQVJDcVhrSFNCcUUxTmdhWGJWMU4rZ2VpckQ2NDVKN3BhL0xGeEpScGJKd3NkWFhKY3R6VDMzZ2xzY3lVd0NJSEhIN1IrVUpjRDhGWmdJSDZMRUQxSUd6SGhVeUM5RjVncmFwZjQ2MU8zN1ltODVlQkFqTm9hRXFENDltM05zeUxWNHhMWlZ1M1JxQVBpMThRVkJENUpFdFZWVWdWYXdNYlZDREtObTlSNE5HQStPN1AvMnZhUzZYdk9RM0xOSjFPbDYxUDkvT1VUQnJVZGJxZ2d3KythSnlMeGVZb2RLNklUQ1VKMVJ4QlZaSVdlVGRVZ0VWQnFnZU1wZnExQXA2eGFXMzl5c0VBczB2UUFKQkVxdDVtMHRQZDdDOHR2ek0rWnR6bjIxczJSeUREN3RDUW1yOVZLdWdWWWdJYnEwTFUzcXdRZVpMZWYyK0wzYkxvK1VMYzAyRjlGaVRmNVpYbUhsWUZCLzNkUnljcmVhMVFyNFRZaVVvSDlaR0NTZ0lsc0dqSGJRY3c5QnMwY2pPMnJNKzhrcC9ON256ZjNRVU5BRW9pdFN3UHpzME45OFVxYStibXdVRUlhTUhpbFA2QVBFeEtKWlNlWUJDRWxTQUo3OXBlQXpHZjlJOHR1ZWZjeHRJcERRQjQ5N2l2bEVra2xwbE1DU2pqSnlXcksyMXNGcjErbk5TelJJS1FQb0xYeUJlNkRrelhZMXg2ekwwSGpGVnlrOWRveHRhMzYxL2VGV0NHQUpvOE9NbGtuYW1ybStNdnZubjVEMk1WTlZkbVd6WkhRTkhpOUFZTlM2NENlcEt3MWxwajQ0aXl6UkhKZWlIbnE0YUxudnJPMlJ0NkFMUjNXU0FCVXBKSXdHUXk2UzRuOHBBcDE1MnM2aTRuT051SU9ZUWsxT2RBVlFmU0VNekRncDdIdU9DV3ZNQllWZDFLdXJNMnJYbm1oVjBGWm9pZ3lUZHhwZVpCZ0hsNE9Uci9mOFA0bUF1enJWc2lBT0hPb0NueHU0cDhFU0V3UVFVQXdHZGJOeEd5Vk1ISGJkUmV2L1I3Y3phWFRNZWJCS2FaQ1kwYk9mcXNVTW9nMlNqWXNFRktYUThBSFBxaGY1aEM5UmNDbkUzaWVCRUwxUWowemhjU0RFUFZqb1NES0J4RGRNS0NMakdNYnZmZW5iWDU3YWVmSHdwZ2hnNmF3a25FdkhtYzlabkZzWXFhL1JjR3Nhb1p1WmF0RG9LZzk2dWdsNnNqLzhPcHBGSVZ4dVN0RDZud3ViYjFBT3FwK29RRE1wa0hMbDNUZldaK3c0YnhNbUhDaUlOSWdKUWtrNDJ5WWNNa3lXVFNIa0RIZDVzNmRXNjRHZkloSVdhQjdueVNKeGdUaXFxRDk3bThHeGMxSUUySDVkYVNpdzBGUzZNbE1hUjZGVEdHWkxPNjZMeDMxanoxcTZFQ1ptaWhLZW5GU1h5NnZucmMyS3FuZ3JEaWxGenJOZ2RCVUhvVmRMYzBIZmRSR3UwWEFZS0NoSWl4MXNaQUtseXVkYnNTTDRqbzA1NW1XVHpYdnVLcFI2NXQ2UkZ2SmVaWkFKZ3dZVExySnIxS3BOTXNQV0hEQWtncUpjbkd5YkpodzZ1U21kQkkxUFhNVGc0LzZZYUpFRDBacW1kUy9UUUFSNGtKb1Q0Q05RSlZYZDcxMFBScVJiVEV2YVB6b2l2QW80QVlndTFlbzNNM3JWcGFQNVRBRERrMHBlQ2M5YmtsKzFiRzk2bTNRV3hLMUw3ZEFReDJhbWtLOVoxT2FMb0VkZ1RwbFJRQnJOZ1lqQmk0cUEzcW83Y0FMS2ZpMXdMLzJ3RDQ0ek0vK05pbXZpeGk4YVFXSDVvd1lUSW5UWHFWNmVJRDZYbTlnRFZQa0FMUTJDaEpKTkgxOVkyc3E4dTNIUFRtaW83OFNQUEJKdExqRlA0MFVrOG5lWXd4dGpyL3N5T29qMGhsSWFpbElTbGRqczlPb0NrK2grb1ZFQUdSVStZdTJ2am1rMDhPTlREREFrMXBFOWZzR3pNSGFrVThZMHh3UkpSdDlnRHNZS0FwM2k4SjhLaFVGWklrclJncnhvVDVPTWkxUTExdUU4bVZKRmFRZkprR2pZRTNiMnpTNnZXTmRYTnl3MlZtampydEN6VkJJQk1CT1p4MFJ5dDVISlRIRUR6TW1DQU9BSG0zRXdIZWU2VlNPaXdLdWxuYi9rQlRFdFBrNDBFQjRlbmN4ZXRYTDFxSVJDTG9Iak9OV0doS3dibmdwc3loRW9hL01yQVRvMXlyRjlCcUgxblZUaXhORjRoSzZ4RDVJNmFFa3FCYU1WWkVMQ0FHcEVKZER1cHpiVlQ5RzhrMXBLNEd1SnJLdHdHLzNudHVncm9tTVdpaHNzMm95VVVhZVJ2RUdXVzNHMHNFYWhFejNsYXE4VFZVM1VjcCsxTjVvRURmQitINzZYa3doTytqNmdGaUFoRVJxR3JCa2poUXZjOWJTd2loQmdWcjB2a2IrZ3ROejVpbUFFeSs2UzdLWGJaaDFlS2ZZdXJVRUEwTjBUQUZhY000alZiby9wdDEwOU9UWXJacW1RRGpYZFRtQWRpK0ErRytvTm1CYSt0UkV5b0UwL2tCVVJvSWpZZ0JZQ0FpSmRWcUIvVytFRTg0SlRVQzZaVDB5TDllcUF3RURBQ05BUVlRVXpoMEhZRW5WQjNvQzdlcXZ2RHhFS2hoZmtKWFNrdjZYU0RvQlJxUTBINUI0d3R4bWdqcEwvL2JYMzVlTjV6QUREczBwZE1ONTl5NDlJUXdOdVlacU5aR0xxdlNveUMxTTB2VE96UTluNi9keXVkZFlxTDhYR3JoY09kTnZVcmg2cGVPZGV5Rlo1UlVWRXVDZUU5b2ZscTJ5L2RYTlFBbC83SkNTb3llY1BTRXBuamJpNldCQWxycWdrcCtvK1ovRTBFVk1kYTUzSlViL3ZxTCtjUGxrdEIxK2NMd2preDZ1a3VrNm9QRmQ1KzEzUG4yQ3lEU2JtMGdKSHYybmtxQmd3R1ZpRGlRQzhTSXdJb2dFQ0FRU0NBaUZvSU8wNUVmV3FnNWVoWU5WdkV2Z0FoRWpFQ0NMdjlFVFA0WERQUkM3T3ZwTEFtcnBjZWZnTHdaRXhOWVQzZmRoci8rWWo2bVRnMkhHNWpkQWswcE9JdnVuUEdyS05kK2laakFpN0VvRkJsS0FCaWtzZVJnVHhLN1B5NmQvMFJLSUJCSS9uWkFSSEJYWElEczVKMk5pb1NXM245eS9Xcy8rLzV3dTZUZERrMFJuS2x6N3dzWGYzUG00aWpYZXFVTlFpUEdzcnVwRU5tZFRsYjZmNFlKaUl5RXhhVWtJRjVNWU1uYy8xdjNsNTk4YjNjQ3MxdWhBWUNHK3o4VlRaMTdYN2prbTJmVnVXemJKMnhZWWNVWVh6QzFnenp0ZzdpY0IxbmlLMFJDL1RjaXU4QVkrMGJYR3hzRzN1Yyt1L2JQLzN2djdnWm10ME5UQ3M3aWI1MzFZSzZ0K2JOQmJFd2dJaDRjcERFZjhOWFBnZnNQR1NRRUhOSU1oUUNLd1B6THV0Y2UveFlTaVdCM0F3TUFlMFM4YUYzREV6cDE3bjNocy85eitYT0huWkNNd25qdG1kN25IRWl6b3lDRnZaMXc3Z2lFdnV3Q0MyZUYvYnkrODg4WDlPZXpkdVUrdXozQ1RodEhlR05qZ2Rmc2w5YitxZTVydXlOTEdsSFFGTUZKcE9xRHA3OStadWFRcWNtS1dFVk53cnVzeTM4bjlzTVZzZVNTSE5vVDFpdEk3T3M1SEJab3Vud282VzBRRDlSbjU3M2QrTmhYOWlRd2U4UTlkUXVPZlNKVkh6eDV6em4vRnJWdiszYXNvallrR08yT2VlZkJQYjhUVzlsVi85UC9zTmZaSUI1NDEvN1ZOWTJQcGd2QWVPeFptWWs5bXdwazB0Tjhjc0VDdStTZWMyK0lzdHUvSDZzWUc1S0loalI4N0xQKzBVK1N1Q2RLcHdTQXlBYngwUHZzTjlZMFBucExDVEI4TjBNRFFGZzNKNm5KNUFLNzVKNXpyNHZhdC84NFZsa2JncDBXaHp0SlFBZDJsbVJ3Tk1nZzZPRXVNUlBab0NKVW43MzdyVmQrOUM4akJaZzlHdE4wSFdrMHZyb0FLY0Q4cGVxSW41anRyU2NGOGVxanZHdVBTcjlqYjRHd0RDYW1FUTRnazJLSmdXSS9NN0ZkakduSXlJWVZvZnIyLzE3OWgwYytPNUtBR1NHV3BpTjFaaHBBSmozTk44VmFMb2x5cmMrRzhlb1FWTGZEakpkRDVjSmtwNWFtcDQyU1lZaGg4c0I0MS83ZFZTdCtjRDJTU1R1U2dCbFowT1JsdFRTVm1pZlAzelduamE3MUFoOWxHNEo0VFVEUzdia3AxMTZTdGVFS2hNbklCaFdoOTlrSFY2MTRlQzZTU1lzK203dkswSlJ3azlaVWl1YnArK2MwVVRlZnExSDdINE5ZVlFDcUc1aWg0UUNORFFkUlNKWWh0akNWb1hmWkg3MzUrKzkvQXFtVUdZbkFqRWhvaWpwK3llUUMrOVIzcnQyQTlwYXp2WS9ldEdGbFFORDMzOURzWUdKU0J1ZWVlazRqY21neXB3NlhsSHZzelpjZnZCcXBsTmtOL2N3anQ1OEdROUQ5TitPVDg0OFVXNVVSd1h0YzFPWkJzVjA2OThEKzlOTjB2VVgzSGhmdHBYK25lKytPZG1rLzdkY3FDK3k0bjRiMGtiVVZvWXZhZi9yR1MrKzdOUC9MNTNFa0w4a1owWUxTZFhWemZDS1JDcDU1NElvLysxemJMQ3EzV0J1M3BSWkhCbCtwUTcvN1dycDBUZ3pwaUd4UUdYcWYvY1VidGE4bDg3QjBTZTlHNUJqeEcyZXNXcFhSUktvK1dIYjNCZXNPUHVhaVo4VUdIeldRdU5KNzZZQitzS1g2Z2FYY1BaUHV3YWZaQkNNYnhFUDYzSlB4dGkyek55NWZWTkRxSGZuaUI2TkN1cjdZeEZYLy9TdCs0NkxXaXlFbWEyMW9DZlY5WC96c1IrNHNnL2JVdTlJYWtRZW1JdlF1OTB5MHNmM2l4c2E2Q0VpTkNtQkdEVFNsNEdRZXZPcHBuMnM1RDVCdE5xaXdxdW9HNVc0R2tUS3p4Qm5LNE1naWdTZ0lLa1B2YzVreHVlYUxWcTE2cUgwMEFUT3FvQ2tGWjlsRDF6empzaTNUUUw0ZXE2Z0psSFRvZDdQd2pxMkw3S1RoaTRPc0taTDBnQ0RJMTJIbVo4M0djMWFzZUtRbEw2bzR1dlI0UnVYbUdJbEVLc2hrMHU3VXF4K2VFQS9qRDlnZ2RvSExOa1BWRlJia2RjOVVkcjVjcHVleWtwN0xhWURPSmNYOXpwN29xYVEzSmd4VVhZN3F2L1RhYjc5OUp6cFVPRWVmZ05PbzNFRnUxYXFNSnBNTDdKT1BYdG44NXU5L1BQLzl4MXpVSkdKT0QyS1ZGZXB5U2xEemk1UDYzYk95ODJCWUJ2SmFGcHREdlJoamJSQTM2dDF6UUhiT2E4L2YrMk9rVWdhWkRJRE1xSlJMR2JYYkRqWTIxaEdrcEFEejBEYy84OXpFS1JjK0x1U0J4Z1NUalEyTnVxZ0FUM0YxQWJzQjBGOW91azVZN2p4N3lxOS9NV0t0RGVJRzNxOVQ3MjVaK2R5YWY5cTA1cUUxaVVRcVdQVlEybzl5UVozUlA0cnVDZ0FTMXp3MGs4Qy9BakpEaklYTHRVTFZPMUpGQ0VOU09ndHVwUzVsSis2cElPZlJleUZSdFNpNUtoSUlqSVdQMnRkVDlZR1k0bHNybnJ0encyaDJSM3NsTkVVMWlCVG1kV3dsZFBwVkQwNHo0S2U4NnZsQkVLOVc3NkN1SGQ1N24rKzVWU2tzdmdjTFMyWjdyd2gzaldsWVhQQmJXR0VwUkFDeE1HSUxLbFgrWmFVKzNCNzVSLzVhZ0tWWTJjYmVJOTIxZDQxa2NvRXRsVmM3OWNvSERoYkZoWUJlUk5XVGpRMnJwYURlb0w2NE9GOVY2Vm5zNE80REdnSFZGaFpZRmhKUHdrZnRJSFVsaVNlRitwTlhFckZuVVZBbnpjT3k5MmtGN3JWYkMzWUtQSFplNFNkZGRmL0VJT0xKVkhlNlVvOEg5WEFsRHpER0JoQURLVFphNWUxSXA4SVV0UUJaRHFxK0NjUXFVRjhCOFR3cHY5N1hZMFdwWGw3ZVhjN2JheVg5OS83OUtGTXBrMWdHazVrR1JUZDk0aWxYZjJOTVZiYnlRQmY1OTRIUmV3RHVSODlhQWVLZWF2SXRwOXBDbGMwUTNRQ3ZhMkhzMnQ4dnVYbGpyM0ZWWHZsS1IrcnNkQm1hUVFMVUlXM1dDMFFEdFdRbDc4TzlIWlIzTHpTOXlOa2lOVSs2eTZuMU5qcDErMFoyMndMSzB3amxVYlkwWmZkVWhtYjBCOElQajZuS2J0dEJJT3dqQUMxVTJTd0c2K25jdW5JZy9LNVB1WG00VWc4d3hnWlNtS3Jxa25JWDZqUktCVHRTYnQwS2NqV2dyMER6S1hlc2FkMGZHaHJ1ajhvcDkxNVUzRE0wRjVEdTRoMFY5d3I2ZFdTWFdleXV4VDJCV2lKZjNCTVlzS1M0SjhxbGhIMzhsV1htMmVKVXdkNEt6MTQ3alpDNDZzRnBLcGhMMWZPTmpkWDBPbzFRRUdqczd6UkNRWDYxUktpUkVES0FXSWdZVUNONDcxOUdlUm9CbzIvQ1V1U0xJR1lPK1lSbHIxS3V2VTFZR25pWFhRL0YvVm12My83clhqWmhhVWYxdHkrMlJqeVU5aCsrNXFFakR6bnVzdnVNQ1c0WFl3N3pVUnU5enlrSWtmenY3QlJNNnVJc2lIN0lEQlE2S3Zyc3A1RkNrN3VRWHIyTHZFQnFUUkFtTFAzVit4MThTclJwOVVITGdYczFrVWdGcTFabHRHeHA5dUNhS0FCSWZPeEhONHJneThhR05ibjI1cUw0cnUxTFgzaFFuWHU5Q21QdnFITlBxVW92UmdKalF2Z285eHhjN2pNclgvanY1U045TWR4ZUNVMFJtQjIzZS9abnNWeGZMWnJsZHMrOXlqMGxVdlhCb252UDkzOS96VU1maXNlcm5yUkI3SlJjZHJzREtTS2xMWjU5dXBKdXlVdy9PL2U2aVoyd1ArdWJwT08vaHVvOHdNQUc4YlBIdmZmNG82b08rdkNpYld2K004cURNN3JhUHUxb0F5YVRudTZtZi94SFo5aFk1UktJSEJobFc1d1JDVHF0NW1BWHkrMGNHcFlJcVBWTHRKRmRSRWtNUUhoMXp0cjRzY1puUHh6Yjc2aTZsdlgzNUVZYk9IYTBBWk80N29jemJWaTVFTkF4M21XOUVSTU1wVENpN0FBYUdhaWw2WGxmQUZpdlVXUnQvTEJRek1tMTRlUUZUVTNmZEtNSkhEdTZMTXo4MDJ5c2NpR29sZDVIWGlDV0hKQlNaaSthYSt4VGRIWkhmOTlGZVZpckdrVTJpQjJPU3B4NDRMakRGbXpjZUs4ZkxlRFlVVkdEZWVnNk4vMjZSNCsxc2NxbEF0WjZuL01Dc1lPVFQ5dGRTMWgyTEZjcm9GVjFrYlh4SXlNYkhEZmx5SnE2VmFzT0lUQk5Sam80WnFSblNabE0yczM0NVB3amJheHlpUmpaeDN2bkJjWU9ZaGVXUWVhTXBVdFloanhIRHIxcmk2eU5YN0I2MjVFTHVybXhzcVVaYkZwOTFzZm5IeVN4TWI4MHhrNTBVYnVYanUvY1AzY3plS3ZUdTF1VGdWaWFmcWlwQzhTcXowVTJpRThlTzJIelVWdi9kdGZqU0VIeWkrbkswR0FnbTZmZWUrL1JldWJWRDA5QVZlMHp4b1pIK0Z5YkUwRXcrQlI2RnhYTEI2c2syajlwazd5ckN1TEgxazQ0K3ZDdGo5MzllT2NxekRJMC9RQW1aZExwNlRwejdvS3hwckoycVExaVUxeTIyVUVrNlAxS0hZUk1Ld2NIVGM5ZFdBWWYwM1MvWDJKeGpoczc0WmozYjMzczdwOGhtYlJvYkN4RHM3T1o2a3g2SGsvNTNPVEtPS3NXQldIOEZOZmU3Q1JmaDlubEU5Ti8xOUZMRU16ZUJLcDIzVDMxbmxWVm5GQTdmdko3bStwLzlQT1JDSTRkVVpPUHk1WUpwc0ZXYmVmUHd0aVlHVkYyZXdSSU9ISjJZUms2SmF5K3ZxY0lyUG9vc2tIOHBOcnhrL1p2cXArZjN5cDUxU3FXb2VsNjhDWFpXR2Z1dmZkNi9lRFJjeDRMNDlVWFJ1MU5rWlFBTXp5N3NQUlg0SWk3ZXhjV3F6NktUQkEvdFhiOHBOcW0zLzFpeVVnQ3g0NElZQmJVbWJyMEhILzI5UXUvSDFiVVhKbHJiNG9BaFAxWHNScXN6SDAvWXhvcE5Xd2NpdUplZnlDMnFpNHlKdjdobXZHVHFyYTk4SXVsSXdXY1BRMk5KRkxUN0tMcnovZXpibGg4VDZ5aVptNnV2U21TWG9FWnFzSmRYLzAwTzdBazNNbEdaVU1kYjNYcytrMUw3NXdKWWgrcDNmK0RkdHNMQzU4cGdLUHZXbWlLMHdObjM3RDQ5bmhGemVkejdkc0t3UFFWT2ZRODBPU1FiOHFGdmlWaEJ4alRjRWgybGhPcTg4YkdwdGZzOTBGdVc3NndmaytEczhlZ21UcjN2dkM1LzdyTW5YUDk0aS9GS210VHVmYnRFY2hneDNzbUQrY3VMUDBUTmRvdHU3QjBmVndnRkhydmpZM05xTjczeVBidERZdWUzWlBnMkQwRlRNUDluNHBtM2JEa2hsaGw3UjFSKzNiWENReDJzQVBCMEY3TkE5SVJsZzZYMFlmMUd6Wm9pcHVQQzlWN2EyTm5qZG5ueU9idERZdC92YWZBc1hzS21ITStzL1M2c0tMNk96N1g0a2kxWGNYSCsyOXBJQmpDakduSGxxWjd6TEdiTEUzcGZKUlF2VGNtbkRWbTNPR2JtMTljOGp5bVRnMnhicDN1dGRCMFdKalBMazJHc2NwSG5NdDZxTGQ1SnpPQXE3NUxUTU4rcE1COUJjSUQrMHp1c0hWaTJLRXBzVGlxMXNUT3F4NTMrUHJ0cjliL2JuZURZM2RuMFB2Y2YxM21abjFtNmJsaHZPckg2aU5RdlVBS00rM1MxOGtjSVRHTjdLQlcxTnQ5MlZYWDJlZnpCZmwxV2lvbXZLQm1ueVBlMnY1cWZjUHVCTWZ1eml6cDNKdWUrZnN3clB3RjFZWHFIVHFBS2FtNkRwMmxHV2pLM2YwTXM4Zi9TbytXaFIxOEZvZkYwblJVendFVlFoVW11SGpNUGtlKzN2eHEvZTkzRnpoMmR3Rnp6bzMxSjRSaGZBbkpNZW9qZG0wQ0g3aXJ3TUNMYkVWTlBRV2dKTFFnMzhvU1hrUkVSQ0FDRkc5UitnK0U1bGZ2Z2o0dk9kdnhIdXpzZ3ltRmF4ZnFOSDFaWDdMRTRsREZtRXZIakQxaVpVdmpzaFc3SXpnZTFtYWY1QUxhdWpuaUw3enA2VWxpcTVZQkdPOXliUXFCNmJLUFVyZWxKZXgxL1ZIdnkwUTZsOHVXdm84V05UaEpFcUkwRUJvUkE0aUJGSjFNaDVhZVI5NWRPaVUxQXVsSStzTHJoY3BBd0FEUUdBdnJ1RHY4RHdtcUx3Z0VlS2c2VU5VWFBoNENOZXgwS1gyc3NkTENXM1ZLenJLUDVUYWdsb2dURUlUWFl1T0c4OW5MTnY1MTBVOHdkV3FJaG9abzFFRlRiS0s2NEtiTW9SS0V2ekppSjBhNVZpL29YTVMyc3dWcy9ZYUdxbHF3QUZDMVlxeUlXRUJNL2lHWGhYZTVOa0QvUm5JTlZWY0RYRTNsMjRCZjd6MDNRVjJUQ1d5ek90ZHUxT1FpamJ3TjRveXlOSmJOZ1ZyRWpMZVZhbndOVmZkUjVYaFMzaVBnK3dnZURPajdxVG9SNUFReGdRaWtvRFpSRkJud25sUWl2MzdjRkt6RUxrS2p4WXRNQ3daTzFVZVhibmh6NGMrSEV4d1pUbUJtMzVnNVVDdmlHV09DSTZKc2MyRWhXMStMeWtyWFRHdTNuZDJLQzlRNllLTlNWZktXd0lxeFlreCs1c0c3ZHFqTGJTSzVrc1FLa2kvVG9ESHc1bzFOV3IyK3NXNU9icmd1bEtOTyswSk5FTWhFZ2tkUWNUVGhqd041dEZJL1lFMFlBd0QxRGw0andIdXZWQmEwak0zZ0xVM25ldkw4c21BNDllN0NqYXNXTFFFU0FaQnhJeDZhVklvbW5SWTk2M08vMmJjeWJ1dHRFRTZKMnBvZGhFSHhSK3NPVmlpaVQvZWtaRUgyV1NCV2JBZ2pCaTVxZy9yb0xRRExxZmkxd1A4MkFQNzR6QTgrdG1sbmFsam9ycWRYSE9sNXZRUlY4d1FwQUkyTmtrUVNYVi9meUxxK3hJeFNLWFBFTTAySFdQSTQ5VGlOZEtlVFBNYVlZRXorWjBkUUg1RktEMmhoUFhqZUN2VU9UVUU1dlRzMElLaGVBUkVRT2ZyYytSdFdQL24wY0lBand3Rk04dFAxMWJteFZVOEZZZVVwdWRZbUIwSFE1VXJweTlMMGNFLzUyQVFFUkl5MU5nWlM0WEt0MjBHOFFOR25QYzJ5ZUs1OXhWT1BYTnZTZmZZOGtaaG51NG9zRHZ2NmFVRXExU0g4V0ZERzZpRXg4b0VUL3VrZ01mWVUwTStrNmpRQVI0b0pDbkZWQktvNmRsaWdma0JUcW1paHFvQVlRbHVWdVhQZmVmUHB6RkNESTBQWmRZZDU4empyTTR0amxUWDdMN1N4cWhtNWxxME9ncUIvYTU0N0RrcCs2VHdWeGxocmJCeWt3dWZhMWdPb3Arb1REc2hrSHJoMFRVOE52UEV5WWNKR2pqQ1ZjQUZTa2t3MnlvWU5reVNUU1hmWm1IM3ExTG5oTnVCNHB6d0gxUE1BVGpVbUZOVUkza2VFMGxQVWdIbEovZzRMcloweFRmZDlHNmlxQWpFa20wbDM5c2JWUzM4emxPRElrSFhkellNQTgvQnlkUDcvaHZIcUM3T3RtL005TWIzQW9iM3ZiS3VGWHg3WW9BSVV3R2RiTjVHeWxDSS9Ocm5XWlV1L04yZHpWeTI5YVdZRVF0S2ZLOHdnMlNoSkFIWGRMTkVoeDExM0xCUVhRamlid0ljRUJxb1I2SjB2dUc5RFZTbk5ORHZqb0M3Q0F4NHdscXBidmViTzNyem1sNzhiS25Ca1NKcW9rbldtcm02T3Yvam01VCtNVmRSY21XM1pIQUVNKzVMazBGN2lGR3NDYTRJWW9teHpCTEllNUh6VjdLS252blBwaGg0NmVubFhNK3JGZ1RyUFFkSWtFcE9rVkNvZkFBNCsrcHBUQ1Z4TzZHd2o5djBrQzV0MnFBUFZrcFFPUzlOTEdrK3FGeGlyMU0xd2J1WTdhNTk1YVNqQWtWMEZKcEZhWmpQcDZXNzJ6UTMzeFNwcjVtWmJOa2NrUXFCdkhSZk5TNUI1Z2tFUVZvSWt2R3Q3amNwSEFYMTB5VDNuTnZZVVhOejdOcWJveXdvbEVzdE1KdE41WXZjNzZoTTFWVUg3dVFBL1R1Vk1FUnZRUi9BYStVSWhzZSs2VjhIaUtIV2pWejl6Njl1L1hMR3I0TWl1ZGQzVkY0RzVJMTQxOXFiMmxzMFJ5TEQzZ2h0QlZZTHFLU1lJWWxXSTJwc1ZnaWZwOVh0YjdKWkZ6OTgxcDYwMHd5a1ZYSHgzanBSQllwbEJDVUFUajBvZVF6RWZnK29WTVBhOVZBZlZxSGl3YlcvaVRPeDBWWCtEUnRNM3JjdjhDVWhhb0dlUVBxelFGS2NIWnQvYU1DOWVPVGFWYldtS1NCLzJtZzBWMURPTkRhd05LaEJsbTdkQThTam9IbmppN3BrdmxyN25OQ3pUOU43amVvYk9oU1dUQm5XVFdCUkJtamdwdWE4NlhFNzR1UUp6SEtsUW55c1NZN3VMTXBIcUFXUGhkWTFJZHNZN2EvL3Z6NE1GUndiWDRyQThiTGovaE9pU1cxNjhLVlkxOW81Y2E1TUR2ZTJzTHhSVW8xUVZKRzBRV21OamNOblcxYVIvSURMNjRKS3ZUMTlUWEJ6WDJEaFozajN1WjZpdFQ5SWVlS1MvZ0tyWEE1Z0JBUFE1NWhPTDB1cDczdUlJcktXNlZWNzk5S2Ixejc0eEdIQmtzTURNdnUybFQ4VXJhcjRUdFRVNzBsa1FuWE1yQmN0aXc3ZzFKb1RMdGE0VTh0dWh0UHlnN210bk5oWG5wU2E5Q2hZbFhNdGpFTllua2JDbHJ1dUFEMXcwRGVTTmdGNEVtQUk4WGtuWWtqcU9GN0dXNmwrblJHZHNXZmZyMVFNRlJ3WUR6R1czdlhSVkVLOStKTXExZWZySUZHWmNvZXBKVW0wUXM4YUdjTG0yVjZtOE81YnpQNnk3NjdTMkRyYzJiNXAvZDhjcVE1OTlBWjBWNlFrSG4zOHFoUDhNOEpMODFFWEVvbVJ0d1cwNXdBU3FicVYxN294Tm0zNnpkaURnU1A5akdBYVp0TGhMYjMzeG9pQmUvWk84NW1CVTBKUHpKT25GQmtFUVZpREt0cTZrdWp2Ym16Yzl2T1NlYzdPZE1kQTBYM1pCd3ptU0Z1aU1leVljZlBhcEpMNEFZRFlob005cFlXN1RrT29FTmxEMWpSR3laN1JzK08zNi9vSWpBd2w2TDczMTVSbGh2R3FSMXloUWw4dnIyNmc2R0JPRXNTcmtzaTJyNmYyZDBUdHJIM2ppL2d0Yk85c2pVSTVYZG5mY0E2QUl6LzRUWnlZSWZBbVFzL0tKU2VSSkdGQTl4QVpVOTN0bjdabk42ekx2OUFjYzZTOHd5VnRYbkdvcnFwYlN1ekhPWllzYXFUWldVWU5jdG1VTFZlL09SdHZ2V2ZpZkg5bFMwa3VqNzZZdGJVWThQTytkY1Q2Qld5RnlFdFhuSlhSSkZUR2hxbXRBcm1WbVU5UExXM2NtVlN2OUFlYWpxUlZUSkY1VlQzSmZsMjF6QkUxWVVXMTgxT1pKZmxlWXZiMHVmY0xxc2hzYXlXNnJMcC9TQW1iZjkwNy9PSlUzaTVqRFZDTlFmYnVJclZCMXoxdWZtN1ZsUzBOVFFTVk5Cd1JOc2V2dWtpKy9la1E4cU1nQU9ORGxXck0ycUlpTHNmQXV1OWo3NkxiSDAxT1dsMkVaVmZCNEFOaG5uNWxqRVlzK1IvRHpBcW54UHBjVHNURlY5MzlWUWV1czlldFh0UFFGanV5b2llcnlmLy9EUVNhb3lnamwwQ2hxMDNqVk9CTzFONitFOHRiSFVoK3M2NEFyQ1MxblE2TVRucHI5Ly80SVkzMGFsQ3M2R2dEVi8zSjdsWnlQTmMrMzlRYU85TmtUODlVL2p3L0UxaHRySitjblRWMGIxZC9oM2RxdjE2V25ONmRTTkFCUXJyT001bFE5WVl0elVMWGpUejJiS3Y4aGd1TUJnYnJjNHVhdExSY0RqVkdCRSswVm1pSXdWNlgrWE1zS3V6U3NxRDNaNVZyaDFTM1M5dXdYRjZRbnZWTHF1c3JISFh2SjVyZEp5VnVlcVdITmZ1R05wUDZybGRpK1h0dWVhTjdTY0hFQkdPbnBxbElwQTFKbTNiQW9mdVh0cnkvN3gvOXA1eFgvOGZycUs3N3kycldsZ2ZGSWx5c3RqMTF4V2ZsUld6djFBelhqVG55MFp0L1RPR2JzMUNkSzVJT2xVMGVZQlJCRXVQOUJSeStzR250Z29ubkwyOThsY2VMOFc0NTRPSldpU2FWb011bnByaHpvN3EyanpoZGNWckJ0VzhQcjI3ZSs4Rkg2N0d5S09iRnk3UEZQRmF3TTg4emtnUkVBdU9ycmJ5MzkyTjN2ckwzOEszODVwNnQxS1k5M29jdXkrU3hyNnRpcXNjZlByNm81OXFjNGNHcFZSMHd6OXo2R0xWdFhQV3BNNkpzMnZQRVBQLy9HaDdlWHM2THlLTTJ5S21xUHVjSW9EZ3N0N3BWUGYzdDk5ZGJXdGsrTDZ2b2YvdXRoRDVVRDNmTG9ZMExVanhrelpRTEFBM0ROMTFhZGNPWHRxdzRyd3RJUjM1UkhlZlFSS1A5L2xNUVltQnpUZzk4QUFBQUFTVVZPUks1Q1lJST0iIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIiBpZD0ia2luZCI+QmFsYW5jZTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ibWVyY2hhbnQiIGlkPSJtZXJjaGFudCI+PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwaWxsIHNwYWNlciIgaWQ9Im1vZGUiPjwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5Ij5Mb2FkaW5n4oCmPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==', 'base64').toString('utf8');
5
5
  //# sourceMappingURL=card.generated.js.map