        <!DOCTYPE html>
        <html lang="ru-RU">
        <head>
            <title>Проверка безопасности</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <meta name="robots" content="noindex,nofollow">
            <link rel="icon" href="https://about-guitar.ru/wp-content/uploads/2017/12/favicon.png" sizes="32x32" />
            <link rel="icon" href="https://about-guitar.ru/wp-content/uploads/2017/12/favicon.png" sizes="192x192" />
            <link rel="apple-touch-icon" href="https://about-guitar.ru/wp-content/uploads/2017/12/favicon.png" />
            <meta name="msapplication-TileImage" content="https://about-guitar.ru/wp-content/uploads/2017/12/favicon.png" />
            <meta name="theme-color" content="#ffffff">
            <script src="data:text/javascript;base64,LyoqLwooZnVuY3Rpb24oKSB7CiAgICAvLyDQk9C10L3QtdGA0LDRgtC+0YAg0YHQu9GD0YfQsNC50L3Ri9GFINGB0YLRgNC+0LoKICAgIGZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tU3RyaW5nKGxlbmd0aCA9IDE2KSB7CiAgICAgICAgY29uc3QgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknOwogICAgICAgIGxldCByZXN1bHQgPSAnJzsKICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHJlc3VsdCArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgogICAgLy8g0JPQtdC90LXRgNCw0YbQuNGPINGD0L3QuNC60LDQu9GM0L3QvtCz0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDQsCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8KICAgIGZ1bmN0aW9uIGdlbmVyYXRlVXNlckZpbmdlcnByaW50KCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlID0gbmF2aWdhdG9yLmxhbmd1YWdlOwogICAgICAgICAgICBjb25zdCB0aW1lem9uZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgICAgICAgICAgY29uc3Qgc2NyZWVuUHJvcHMgPSBgJHt3aW5kb3cuc2NyZWVuLndpZHRofXgke3dpbmRvdy5zY3JlZW4uaGVpZ2h0fWA7CiAgICAgICAgICAgIGNvbnN0IGhhcmR3YXJlQ29uY3VycmVuY3kgPSBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSB8fCAndW5rbm93bic7CiAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gYCR7dXNlckFnZW50LnN1YnN0cmluZygwLCA1MCl9fCR7bGFuZ3VhZ2V9fCR7dGltZXpvbmV9fCR7c2NyZWVuUHJvcHN9fCR7aGFyZHdhcmVDb25jdXJyZW5jeX1gOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmluZ2VycHJpbnQgZ2VuZXJhdGlvbiBlcnJvcjonLCBlKTsKICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlUmFuZG9tU3RyaW5nKDEyKTsKICAgICAgICB9CiAgICB9CgogICAgLy8g0KPRgdGC0LDQvdC+0LLQutCwINC60YPQutC4INGBINGF0LXRiNC40YDQvtCy0LDQvdC40LXQvAogICAgYXN5bmMgZnVuY3Rpb24gc2V0U2VjdXJlQ29va2llKG5hbWUsIHZhbHVlLCBob3Vycywgc2FtZVNpdGUgPSAnU3RyaWN0JykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpOwogICAgICAgICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyAoaG91cnMgKiA2MCAqIDYwICogMTAwMCkpOwogICAgICAgICAgICAKICAgICAgICAgICAgY29uc3QgdXNlckZpbmdlcnByaW50ID0gZ2VuZXJhdGVVc2VyRmluZ2VycHJpbnQoKTsKICAgICAgICAgICAgY29uc3Qgc2FsdCA9IGdlbmVyYXRlUmFuZG9tU3RyaW5nKDgpOwogICAgICAgICAgICBjb25zdCB2YWx1ZVRvSGFzaCA9IGAke3ZhbHVlfToke3VzZXJGaW5nZXJwcmludH06JHtzYWx0fWA7CiAgICAgICAgICAgIGNvbnN0IGhhc2ggPSBhd2FpdCBzaGEyNTYodmFsdWVUb0hhc2gpOwogICAgICAgICAgICAKICAgICAgICAgICAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9fCR7aGFzaH18JHtzYWx0fXwke2J0b2EoZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJGaW5nZXJwcmludCkpfTsgZXhwaXJlcz0ke2RhdGUudG9VVENTdHJpbmcoKX07IHBhdGg9L2A7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnaHR0cHM6JykgewogICAgICAgICAgICAgICAgY29va2llICs9ICc7IFNlY3VyZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGNvb2tpZSArPSBgOyBTYW1lU2l0ZT0ke3NhbWVTaXRlfWA7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiB7IGhhc2gsIHVzZXJGaW5nZXJwcmludCB9OwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ29va2llIHNldCBlcnJvcjonLCBlKTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFNIQS0yNTYg0YXQtdGI0LjRgNC+0LLQsNC90LjQtQogICAgYXN5bmMgZnVuY3Rpb24gc2hhMjU2KG1lc3NhZ2UpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyDQn9C+0LvQuNGE0LjQu9C7INC00LvRjyBUZXh0RW5jb2RlcgogICAgICAgICAgICBpZiAodHlwZW9mIFRleHRFbmNvZGVyID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgd2luZG93LlRleHRFbmNvZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmNvZGUgPSBmdW5jdGlvbihzdHJpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9jdGV0cyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGV0cy5wdXNoKGNvZGVQb2ludCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGV0cy5wdXNoKDB4YzAgfCAoY29kZVBvaW50ID4+IDYpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RldHMucHVzaCgweDgwIHwgKGNvZGVQb2ludCAmIDB4M2YpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ZDgwMCB8fCBjb2RlUG9pbnQgPj0gMHhlMDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0ZXRzLnB1c2goMHhlMCB8IChjb2RlUG9pbnQgPj4gMTIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RldHMucHVzaCgweDgwIHwgKChjb2RlUG9pbnQgPj4gNikgJiAweDNmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0ZXRzLnB1c2goMHg4MCB8IChjb2RlUG9pbnQgJiAweDNmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlUG9pbnQgPSAweDEwMDAwICsgKCgoY29kZVBvaW50ICYgMHgzZmYpIDw8IDEwKSB8IChzdHJpbmcuY2hhckNvZGVBdChpICsgMSkgJiAweDNmZikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGV0cy5wdXNoKDB4ZjAgfCAoY29kZVBvaW50ID4+IDE4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0ZXRzLnB1c2goMHg4MCB8ICgoY29kZVBvaW50ID4+IDEyKSAmIDB4M2YpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RldHMucHVzaCgweDgwIHwgKChjb2RlUG9pbnQgPj4gNikgJiAweDNmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0ZXRzLnB1c2goMHg4MCB8IChjb2RlUG9pbnQgJiAweDNmKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShvY3RldHMpOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1zZ0J1ZmZlciA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShtZXNzYWdlKTsKICAgICAgICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgbXNnQnVmZmVyKTsKICAgICAgICAgICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7CiAgICAgICAgICAgIHJldHVybiBoYXNoQXJyYXkubWFwKGIgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdIYXNoaW5nIGVycm9yOicsIGUpOwogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9CgogICAgLy8g0J/RgNC+0LLQtdGA0LrQsCDQutGD0LrQuAogICAgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29va2llKG5hbWUsIGV4cGVjdGVkVmFsdWUpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBjb29raWUgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maW5kKGMgPT4gYy50cmltKCkuc3RhcnRzV2l0aChgJHtuYW1lfT1gKSk7CiAgICAgICAgICAgIGlmICghY29va2llKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvb2tpZS5zcGxpdCgnPScpWzFdOwogICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KCd8Jyk7CiAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDQpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IFtzdG9yZWRWYWx1ZSwgc3RvcmVkSGFzaCwgc2FsdCwgZW5jb2RlZEZpbmdlcnByaW50XSA9IHBhcnRzOwogICAgICAgICAgICBpZiAoc3RvcmVkVmFsdWUgIT09IGV4cGVjdGVkVmFsdWUpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vINCU0LXQutC+0LTQuNGA0YPQtdC8INC+0YLQv9C10YfQsNGC0L7QuiDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8KICAgICAgICAgICAgY29uc3QgdXNlckZpbmdlcnByaW50ID0gZGVjb2RlVVJJQ29tcG9uZW50KGF0b2IoZW5jb2RlZEZpbmdlcnByaW50KSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyDQk9C10L3QtdGA0LjRgNGD0LXQvCDRgtC10LrRg9GJ0LjQuSDQvtGC0L/QtdGH0LDRgtC+0Log0LTQu9GPINGB0YDQsNCy0L3QtdC90LjRjwogICAgICAgICAgICBjb25zdCBjdXJyZW50RmluZ2VycHJpbnQgPSBnZW5lcmF0ZVVzZXJGaW5nZXJwcmludCgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8g0J/RgNC+0LLQtdGA0Y/QtdC8INGB0L7QstC/0LDQtNC10L3QuNC1INC60LvRjtGH0LXQstGL0YUg0L/QsNGA0LDQvNC10YLRgNC+0LIKICAgICAgICAgICAgY29uc3QgY2hlY2tGaW5nZXJwcmludCA9IChzdG9yZWQsIGN1cnJlbnQpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlZFBhcnRzID0gc3RvcmVkLnNwbGl0KCd8Jyk7CiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UGFydHMgPSBjdXJyZW50LnNwbGl0KCd8Jyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vINCf0YDQvtCy0LXRgNGP0LXQvCDRgtC+0LvRjNC60L4g0L7RgdC90L7QstC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0YsgKNGP0LfRi9C6LCDRgtCw0LnQvNC30L7QvdCwLCDRgNCw0LfRgNC10YjQtdC90LjQtSDRjdC60YDQsNC90LApCiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmVkUGFydHNbMV0gPT09IGN1cnJlbnRQYXJ0c1sxXSAmJiAKICAgICAgICAgICAgICAgICAgICAgICBzdG9yZWRQYXJ0c1syXSA9PT0gY3VycmVudFBhcnRzWzJdICYmIAogICAgICAgICAgICAgICAgICAgICAgIHN0b3JlZFBhcnRzWzNdID09PSBjdXJyZW50UGFydHNbM107CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoIWNoZWNrRmluZ2VycHJpbnQodXNlckZpbmdlcnByaW50LCBjdXJyZW50RmluZ2VycHJpbnQpKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRmluZ2VycHJpbnQgbWlzbWF0Y2gnLCB7IHVzZXJGaW5nZXJwcmludCwgY3VycmVudEZpbmdlcnByaW50IH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBjb25zdCB2YWx1ZVRvSGFzaCA9IGAke3N0b3JlZFZhbHVlfToke3VzZXJGaW5nZXJwcmludH06JHtzYWx0fWA7CiAgICAgICAgICAgIGNvbnN0IGNvbXB1dGVkSGFzaCA9IGF3YWl0IHNoYTI1Nih2YWx1ZVRvSGFzaCk7CiAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gY29tcHV0ZWRIYXNoID09PSBzdG9yZWRIYXNoOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ29va2llIHZlcmlmeSBlcnJvcjonLCBlKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDQkdC+0LvQtdC1INGC0LXRgNC/0LjQvNCw0Y8g0L/RgNC+0LLQtdGA0LrQsCDRgtCw0LnQvNC10YDQvtCyCiAgICBhc3luYyBmdW5jdGlvbiBjaGVja1RpbWVyQW5vbWFsaWVzKCkgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICAgICAgICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpOwogICAgICAgICAgICBsZXQgc2V0VGltZW91dERyaWZ0ID0gMDsKICAgICAgICAgICAgbGV0IHNldEludGVydmFsQ291bnQgPSAwOwogICAgICAgICAgICAKICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0RHJpZnQgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0IC0gMTAwOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjb25zdCBpbnRlcnZhbFN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgICAgICAgICAgICAgICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHNldEludGVydmFsQ291bnQrKzsKICAgICAgICAgICAgICAgICAgICBpZiAoc2V0SW50ZXJ2YWxDb3VudCA+PSA1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludGVydmFsRHJpZnQgPSBwZXJmb3JtYW5jZS5ub3coKSAtIGludGVydmFsU3RhcnQgLSA1MDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXREcmlmdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnRlcnZhbENvdW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVydmFsRHJpZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQkdC+0LvQtdC1INC80Y/Qs9C60LjQtSDQutGA0LjRgtC10YDQuNC4INC/0YDQvtCy0LXRgNC60LgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IE1hdGguYWJzKHNldFRpbWVvdXREcmlmdCkgPCA1MCAmJiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbnRlcnZhbENvdW50ID09PSA1ICYmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKGludGVydmFsRHJpZnQpIDwgMTAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8g0KPQu9GD0YfRiNC10L3QvdCw0Y8g0L/RgNC+0LLQtdGA0LrQsCBET00gQVBJCiAgICBmdW5jdGlvbiBjaGVja0RPTUFQSSgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyDQkdCw0LfQvtCy0YvQtSDQv9GA0L7QstC10YDQutC4CiAgICAgICAgICAgIGlmICghd2luZG93LnBlcmZvcm1hbmNlKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8g0JzQtdC90LXQtSDRgdGC0YDQvtCz0LDRjyDQv9GA0L7QstC10YDQutCwINC/0LXRgNC10L7Qv9GA0LXQtNC10LvQtdC90LjRjyBBUEkKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsUXVlcnlTZWxlY3RvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yID0gZnVuY3Rpb24oKSB7fTsKICAgICAgICAgICAgICAgIGNvbnN0IGlzT3ZlcnJpZGRlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IgIT09IG9yaWdpbmFsUXVlcnlTZWxlY3RvcjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IgPSBvcmlnaW5hbFF1ZXJ5U2VsZWN0b3I7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChpc092ZXJyaWRkZW4pIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdET00gQVBJIGNoZWNrIHdhcm5pbmc6JywgZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcignRE9NIEFQSSBjaGVjayBlcnJvcjonLCBlKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDQo9C70YPRh9GI0LXQvdC90YvQuSDRgtGA0LXQutC10YAg0LTQstC40LbQtdC90LjRjwogICAgZnVuY3Rpb24gc2V0dXBNb3ZlbWVudFRyYWNrZXIoKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IGlzVG91Y2hEZXZpY2UgPSAnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3c7CiAgICAgICAgICAgIGNvbnN0IG1pbkRpc3RhbmNlID0gaXNUb3VjaERldmljZSA/IDMwIDogMjA7IC8vINCj0LzQtdC90YzRiNC10L3QvdGL0LUg0YLRgNC10LHQvtCy0LDQvdC40Y8KICAgICAgICAgICAgY29uc3QgbWluRXZlbnRzID0gaXNUb3VjaERldmljZSA/IDIgOiAzOyAvLyDQnNC10L3RjNGI0LUg0L3QtdC+0LHRhdC+0LTQuNC80YvRhSDRgdC+0LHRi9GC0LjQuQogICAgICAgICAgICAKICAgICAgICAgICAgbGV0IHN0YXJ0WCA9IG51bGw7CiAgICAgICAgICAgIGxldCBzdGFydFkgPSBudWxsOwogICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSAwOwogICAgICAgICAgICBsZXQgZXZlbnRDb3VudCA9IDA7CiAgICAgICAgICAgIGxldCB0aW1lb3V0ID0gbnVsbDsKCiAgICAgICAgICAgIGNvbnN0IGhhbmRsZU1vdmUgPSAoZSkgPT4gewogICAgICAgICAgICAgICAgY29uc3QgY2xpZW50WCA9IGUuY2xpZW50WCB8fCAoZS50b3VjaGVzICYmIGUudG91Y2hlc1swXS5jbGllbnRYKTsKICAgICAgICAgICAgICAgIGNvbnN0IGNsaWVudFkgPSBlLmNsaWVudFkgfHwgKGUudG91Y2hlcyAmJiBlLnRvdWNoZXNbMF0uY2xpZW50WSk7CgogICAgICAgICAgICAgICAgaWYgKHN0YXJ0WCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IGNsaWVudFg7CiAgICAgICAgICAgICAgICAgICAgc3RhcnRZID0gY2xpZW50WTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkaXN0YW5jZSArPSBNYXRoLnNxcnQoCiAgICAgICAgICAgICAgICAgICAgTWF0aC5wb3coY2xpZW50WCAtIChzdGFydFggfHwgY2xpZW50WCksIDIpICsgCiAgICAgICAgICAgICAgICAgICAgTWF0aC5wb3coY2xpZW50WSAtIChzdGFydFkgfHwgY2xpZW50WSksIDIpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBzdGFydFggPSBjbGllbnRYOwogICAgICAgICAgICAgICAgc3RhcnRZID0gY2xpZW50WTsKICAgICAgICAgICAgICAgIGV2ZW50Q291bnQrKzsKCiAgICAgICAgICAgICAgICBpZiAoZXZlbnRDb3VudCA+PSBtaW5FdmVudHMgJiYgZGlzdGFuY2UgPj0gbWluRGlzdGFuY2UpIHsKICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBldmVudENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICBpc1RvdWNoRGV2aWNlCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQpIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7CiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGV2ZW50Q291bnQgPiAwLCAvLyDQo9GB0L/QtdGFLCDQtdGB0LvQuCDQsdGL0LvQuCDRhdC+0YLRjCDQutCw0LrQuNC1LdGC0L4g0LTQstC40LbQtdC90LjRjwogICAgICAgICAgICAgICAgICAgICAgICByZWFzb246ICd0aW1lb3V0JywKICAgICAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG91Y2hEZXZpY2UKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sIDUwMDApOyAvLyDQo9Cy0LXQu9C40YfQtdC90L3Ri9C5INGC0LDQudC80LDRg9GCCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4gewogICAgICAgICAgICAgICAgaWYgKGlzVG91Y2hEZXZpY2UpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGNsZWFudXApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vINCU0L7QsdCw0LLQu9GP0LXQvCDQvtCx0YDQsNCx0L7RgtGH0LjQuiDQutC70LjQutC+0LIg0LTQu9GPINGC0LDRhy3Rg9GB0YLRgNC+0LnRgdGC0LIKICAgICAgICAgICAgaWYgKGlzVG91Y2hEZXZpY2UpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBoYW5kbGVNb3ZlKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZU1vdmUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgY2xlYW51cCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZU1vdmUpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8g0JzQtdC90LXQtSDRgdGC0YDQvtCz0LDRjyDQv9GA0L7QstC10YDQutCwIFdlYkdMCiAgICBmdW5jdGlvbiBjaGVja1dlYkdMKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwogICAgICAgICAgICBjb25zdCBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCd3ZWJnbCcpIHx8IGNhbnZhcy5nZXRDb250ZXh0KCdleHBlcmltZW50YWwtd2ViZ2wnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghZ2wpIHJldHVybiB0cnVlOyAvLyDQoNCw0LfRgNC10YjQsNC10Lwg0YDQsNCx0L7RgtGDINCx0LXQtyBXZWJHTAogICAgICAgICAgICAKICAgICAgICAgICAgY29uc3QgZGVidWdJbmZvID0gZ2wuZ2V0RXh0ZW5zaW9uKCdXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvJyk7CiAgICAgICAgICAgIGlmIChkZWJ1Z0luZm8pIHsKICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVyID0gZ2wuZ2V0UGFyYW1ldGVyKGRlYnVnSW5mby5VTk1BU0tFRF9SRU5ERVJFUl9XRUJHTCk7CiAgICAgICAgICAgICAgICAvLyDQotC+0LvRjNC60L4g0Y/QstC90YvQtSDQstC40YDRgtGD0LDQu9GM0L3Ri9C1INC80LDRiNC40L3RiwogICAgICAgICAgICAgICAgaWYgKC9WaXJ0dWFsQm94fFZNd2FyZS9pLnRlc3QocmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYkdMIGNoZWNrIGVycm9yOicsIGUpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8g0KDQsNC30YDQtdGI0LDQtdC8INC/0YDQuCDQvtGI0LjQsdC60LDRhQogICAgICAgIH0KICAgIH0KCiAgICAvLyDCq9Cc0Y/Qs9C60LDRj8K7INC/0LXRgNC10LfQsNCz0YDRg9C30LrQsCDRgdGC0YDQsNC90LjRhtGLINGBINGB0L7RhdGA0LDQvdC10L3QuNC10Lwg0YDQtdGE0LXRgNC10YDQsAogICAgYXN5bmMgZnVuY3Rpb24gc29mdFJlbG9hZCgpIHsKICAgICAgLy8g0JXRgdC70Lgg0LHRgNCw0YPQt9C10YAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIgZmV0Y2gg0LjQu9C4INC90YPQttC90L4g0L/RgNC40L3Rg9C00LjRgtC10LvRjNC90L4g0L/QtdGA0LXQt9Cw0LPRgNGD0LfQuNGC0YwKICAgICAgaWYgKCF3aW5kb3cuZmV0Y2gpIHsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRyeSB7CiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHsKICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLAogICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICdYLVNvZnQtUmVsb2FkJzogJ3RydWUnCiAgICAgICAgICB9LAogICAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJwogICAgICAgIH0pOwogICAgICAgIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKTsKICAgICAgICBjb25zdCBodG1sID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpOwogICAgICAgIC8vINCX0LDQvNC10L3Rj9C10Lwg0LTQvtC60YPQvNC10L3RggogICAgICAgIGRvY3VtZW50Lm9wZW4oKTsKICAgICAgICBkb2N1bWVudC53cml0ZShodG1sKTsKICAgICAgICBkb2N1bWVudC5jbG9zZSgpOwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgfQogICAgfQoKICAgIC8vINCe0YHQvdC+0LLQvdCw0Y8g0LvQvtCz0LjQutCwINGBINGD0LvRg9GH0YjQtdC90L3QvtC5INC+0LHRgNCw0LHQvtGC0LrQvtC5INC+0YjQuNCx0L7QugogICAgYXN5bmMgZnVuY3Rpb24gaW5pdENoYWxsZW5nZSgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBDT09LSUVfTkFNRSA9ICdjaGFsbGVuZ2VfcGFzc2VkXycgKyBnZW5lcmF0ZVJhbmRvbVN0cmluZyg0KTsgLy8g0KPQvdC40LrQsNC70YzQvdC+0LUg0LjQvNGPINC60YPQutC4CiAgICAgICAgICAgIGNvbnN0IENPT0tJRV9WQUxVRSA9IGdlbmVyYXRlUmFuZG9tU3RyaW5nKDEyKTsKICAgICAgICAgICAgY29uc3QgVkVSSUZJQ0FUSU9OX0ZMQUcgPSAnY2hhbGxlbmdlX3ZlcmlmaWVkJzsKICAgICAgICAgICAgY29uc3QgUkVGRVJSRVIgPSBkb2N1bWVudC5yZWZlcnJlcjsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vINCf0YDQvtCy0LXRgNGP0LXQvCwg0L3QtSDQvdCw0YXQvtC00LjQvNGB0Y8g0LvQuCDQvNGLINCyIGlmcmFtZSDQvdCwINGH0YPQttC+0Lwg0LTQvtC80LXQvdC1CiAgICAgICAgICAgIGlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCAmJiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgIT09IHdpbmRvdy50b3AubG9jYXRpb24uaG9zdG5hbWUpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcignUGxlYXNlIG9wZW4gdGhpcyBwYWdlIGRpcmVjdGx5Jyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vINCV0YHQu9C4INC60YPQutCwINGD0LbQtSDQstCw0LvQuNC00L3QsCAtINCy0YvRhdC+0LTQuNC8CiAgICAgICAgICAgIGlmIChhd2FpdCB2ZXJpZnlDb29raWUoQ09PS0lFX05BTUUsIENPT0tJRV9WQUxVRSkpIHsKICAgICAgICAgICAgICAgIGlmICghd2luZG93LmxvY2F0aW9uLmhhc2guaW5jbHVkZXMoVkVSSUZJQ0FUSU9OX0ZMQUcpKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSBWRVJJRklDQVRJT05fRkxBRzsKICAgICAgICAgICAgICAgICAgICAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKFJFRkVSUkVSLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHNvZnRSZWxvYWQoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vINCf0YDQvtCy0LXRgNGP0LXQvCDQsNC90L7QvNCw0LvQuNC4INGC0LDQudC80LXRgNC+0LIKICAgICAgICAgICAgLypjb25zdCB0aW1lclJlc3VsdHMgPSBhd2FpdCBjaGVja1RpbWVyQW5vbWFsaWVzKCk7CiAgICAgICAgICAgIGlmICghdGltZXJSZXN1bHRzLmlzVmFsaWQpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcignUGxlYXNlIGRpc2FibGUgYW55IHBlcmZvcm1hbmNlIHRocm90dGxpbmcnKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfSovCgogICAgICAgICAgICAvLyDQn9GA0L7QstC10YDRj9C10LwgRE9NIEFQSQogICAgICAgICAgICAvKmlmICghY2hlY2tET01BUEkoKSkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKCdCcm93c2VyIGNvbXBhdGliaWxpdHkgaXNzdWUgZGV0ZWN0ZWQnKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfSovCgogICAgICAgICAgICAvLyDQn9GA0L7QstC10YDRj9C10LwgV2ViR0wgKNC/0YDQvtC/0YPRgdC60LDQtdC8INC10YHQu9C4INC/0YDQvtCy0LXRgNC60LAg0L3QtSDQv9GA0L7RiNC70LApCiAgICAgICAgICAgIGlmICghY2hlY2tXZWJHTCgpKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dlYkdMIGNoZWNrIHdhcm5pbmcgLSBjb250aW51aW5nIGFueXdheScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDQl9Cw0L/Rg9GB0LrQsNC10Lwg0YLRgNC10LrQtdGAINC00LLQuNC20LXQvdC40Y8KICAgICAgICAgICAgY29uc3QgbW92ZW1lbnRSZXN1bHQgPSBhd2FpdCBzZXR1cE1vdmVtZW50VHJhY2tlcigpOwogICAgICAgICAgICBpZiAoIW1vdmVtZW50UmVzdWx0LnN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgIHNob3dFcnJvcignUGxlYXNlIGludGVyYWN0IHdpdGggdGhlIHBhZ2UgKG1vdmUgbW91c2Ugb3IgdG91Y2ggc2NyZWVuKScpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQutGD0LrRgwogICAgICAgICAgICBjb25zdCBoYXNoUmVzdWx0ID0gYXdhaXQgc2V0U2VjdXJlQ29va2llKENPT0tJRV9OQU1FLCBDT09LSUVfVkFMVUUsIDEsICdTdHJpY3QnKTsKICAgICAgICAgICAgaWYgKCFoYXNoUmVzdWx0KSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoJ1NlY3VyaXR5IGluaXRpYWxpemF0aW9uIGZhaWxlZCcpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDQn9GA0L7QstC10YDRj9C10Lwg0LrRg9C60YMg0Lgg0L/QtdGA0LXQt9Cw0LPRgNGD0LbQsNC10LwKICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBpc1ZlcmlmaWVkID0gYXdhaXQgdmVyaWZ5Q29va2llKENPT0tJRV9OQU1FLCBDT09LSUVfVkFMVUUpOwogICAgICAgICAgICAgICAgaWYgKGlzVmVyaWZpZWQpIHsKICAgICAgICAgICAgICAgICAgICAvLyDQlNC+0LHQsNCy0LvRj9C10Lwg0YHQutGA0YvRgtGL0LUg0L/QvtC70Y8g0LIg0YTQvtGA0LzRiwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvcm0nKS5mb3JFYWNoKGZvcm0gPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnR5cGUgPSAnaGlkZGVuJzsKICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQubmFtZSA9ICdqc192ZXJpZmllZCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gJzEnOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmFwcGVuZENoaWxkKGlucHV0KTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5oYXNoLmluY2x1ZGVzKFZFUklGSUNBVElPTl9GTEFHKSkgewogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IFZFUklGSUNBVElPTl9GTEFHOwogICAgICAgICAgICAgICAgICAgICAgICAvL3dpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChSRUZFUlJFUi5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc29mdFJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3IoJ1ZlcmlmaWNhdGlvbiBmYWlsZWQgLSBwbGVhc2UgdHJ5IGFnYWluJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdDaGFsbGVuZ2UgaW5pdCBlcnJvcjonLCBlKTsKICAgICAgICAgICAgc2hvd0Vycm9yKCdJbml0aWFsaXphdGlvbiBlcnJvciAtIHBsZWFzZSByZWZyZXNoJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8vINCj0LvRg9GH0YjQtdC90L3QvtC1INC+0YLQvtCx0YDQsNC20LXQvdC40LUg0L7RiNC40LHQvtC6CiAgICBmdW5jdGlvbiBzaG93RXJyb3IobWVzc2FnZSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdFcnJvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWN1cml0eS1lcnJvci1tZXNzYWdlJyk7CiAgICAgICAgICAgIGlmIChleGlzdGluZ0Vycm9yKSBleGlzdGluZ0Vycm9yLnJlbW92ZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgY29uc3QgZXJyb3JEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgZXJyb3JEaXYuY2xhc3NOYW1lID0gJ3NlY3VyaXR5LWVycm9yLW1lc3NhZ2UnOwogICAgICAgICAgICBlcnJvckRpdi5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7CiAgICAgICAgICAgIGVycm9yRGl2LnN0eWxlLnRvcCA9ICcwJzsKICAgICAgICAgICAgZXJyb3JEaXYuc3R5bGUubGVmdCA9ICcwJzsKICAgICAgICAgICAgZXJyb3JEaXYuc3R5bGUucmlnaHQgPSAnMCc7CiAgICAgICAgICAgIGVycm9yRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmY0NDQ0JzsKICAgICAgICAgICAgZXJyb3JEaXYuc3R5bGUuY29sb3IgPSAnd2hpdGUnOwogICAgICAgICAgICBlcnJvckRpdi5zdHlsZS5wYWRkaW5nID0gJzEwcHgnOwogICAgICAgICAgICBlcnJvckRpdi5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJzsKICAgICAgICAgICAgZXJyb3JEaXYuc3R5bGUuekluZGV4ID0gJzk5OTknOwogICAgICAgICAgICBlcnJvckRpdi50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyDQmtC90L7Qv9C60LAg0LfQsNC60YDRi9GC0LjRjwogICAgICAgICAgICBjb25zdCBjbG9zZUJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgICAgICBjbG9zZUJ0bi50ZXh0Q29udGVudCA9ICfDlyc7CiAgICAgICAgICAgIGNsb3NlQnRuLnN0eWxlLmJhY2tncm91bmQgPSAndHJhbnNwYXJlbnQnOwogICAgICAgICAgICBjbG9zZUJ0bi5zdHlsZS5ib3JkZXIgPSAnbm9uZSc7CiAgICAgICAgICAgIGNsb3NlQnRuLnN0eWxlLmNvbG9yID0gJ3doaXRlJzsKICAgICAgICAgICAgY2xvc2VCdG4uc3R5bGUubWFyZ2luTGVmdCA9ICcxMHB4JzsKICAgICAgICAgICAgY2xvc2VCdG4uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInOwogICAgICAgICAgICBjbG9zZUJ0bi5vbmNsaWNrID0gKCkgPT4gZXJyb3JEaXYucmVtb3ZlKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBlcnJvckRpdi5hcHBlbmRDaGlsZChjbG9zZUJ0bik7CiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZXJyb3JEaXYpOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGlzcGxheSBmYWlsZWQ6JywgZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8vINCX0LDQv9GD0YHQuiDRgSDQt9Cw0LTQtdGA0LbQutC+0LkKICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaW5pdENoYWxsZW5nZSgpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTdGFydCBlcnJvcjonLCBlKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIDIwMDApOyAvLyDQo9Cy0LXQu9C40YfQtdC90L3QsNGPINC30LDQtNC10YDQttC60LAg0LTQu9GPINC/0L7Qu9C90L7QuSDQt9Cw0LPRgNGD0LfQutC4INGB0YLRgNCw0L3QuNGG0YsKICAgIH0KCiAgICAvLyDQmNC90LjRhtC40LDQu9C40LfQsNGG0LjRjyDQv9GA0Lgg0L/QvtC70L3QvtC5INC30LDQs9GA0YPQt9C60LUKICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7CiAgICAgICAgc3RhcnQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydCk7CiAgICB9Cn0pKCk7"></script>
                        <link rel="stylesheet" href="data:text/css;base64,CiAgICAgICAgICAgICAgICBib2R5IHsKICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogQXJpYWwsc2Fucy1zZXJpZjsKICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNTBweDsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLmxvZ28gewogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDU1cHg7CiAgICAgICAgICAgICAgICAgICAgLypib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwwLDAsMC4xKTsqLwogICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDEwcHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBoMSB7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtOwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC52ZXJpZmljYXRpb24tYm94IHsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsMCwwLDAuMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuc3Bpbm5lciB7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiA0cHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgICAgICAgICBib3JkZXItdG9wOiA0cHggc29saWQgI2U1MzkzNTsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzBweDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7CiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDIwcHggYXV0bzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEBtZWRpYShtYXgtd2lkdGg6NzY3cHgpewogICAgICAgICAgICAgICAgICAgIC5sb2dvIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2NHB4OwogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ1cHg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGgxIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAuc21hbGwgewogICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDgwJTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAuYnRuIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTUzOTM1OwogICAgICAgICAgICAgICAgICAgIGJvcmRlcjogI2U1MzkzNTsKICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG8gMDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTAwJTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5yYW5nZSB7CiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgICAgICAgIG1hcmdpbjogMjBweCBhdXRvIDA7CiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnJhbmdlIHNwYW4gc3ZnIHsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMS41cmVtOwogICAgICAgICAgICAgICAgICAgIGZpbGw6ICMxNDE5MUY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAucmFuZ2UgaW5wdXRbdHlwZT0icmFuZ2UiXSB7CiAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCA1cHggMCAxMHB4OwogICAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNjVweCk7CiAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMjUwcHg7CiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgICAgICAgICAgICBhY2NlbnQtY29sb3I6ICNlNTM5MzU7CiAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnJhbmdlIGlucHV0W3R5cGU9InJhbmdlIl06Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsKICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgI2U1MzkzNSwgI2Q0MjgyNCA5MCUpOwogICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAucmFuZ2UgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAgICAgICAgICAgICAgIGJvcmRlcjogNXB4IHNvbGlkICNlNTM5MzU7CiAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC03cHg7CiAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDJweCAwIDAgI2ZmZiwgLTJweCAwIDAgI2ZmZiwgMCAycHggMCAjZmZmLCAwIC0ycHggMCAjZmZmOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnJhbmdlIGlucHV0W3R5cGU9InJhbmdlIl06Oi1vLXJhbmdlLXRyYWNrIHsKICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgI2U1MzkzNSwgI2Q0MjgyNCA5MCUpOwogICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAucmFuZ2UgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LW8tcmFuZ2UtdGh1bWIgewogICAgICAgICAgICAgICAgICB3aWR0aDogMTBweDsKICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgICAgICAgICAgICBib3JkZXI6IDVweCBzb2xpZCAjZTUzOTM1OwogICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtN3B4OwogICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAycHggMCAwICNmZmYsIC0ycHggMCAwICNmZmYsIDAgMnB4IDAgI2ZmZiwgMCAtMnB4IDAgI2ZmZjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5yYW5nZSBpbnB1dFt0eXBlPSJyYW5nZSJdOjotbW96LXJhbmdlLXRyYWNrIHsKICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgI2U1MzkzNSwgI2Q0MjgyNCA5MCUpOwogICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAucmFuZ2UgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LW1vei1yYW5nZS10aHVtYiB7CiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAgICAgICAgICAgICAgIGJvcmRlcjogNXB4IHNvbGlkICNlNTM5MzU7CiAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC03cHg7CiAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDJweCAwIDAgI2ZmZiwgLTJweCAwIDAgI2ZmZiwgMCAycHggMCAjZmZmLCAwIC0ycHggMCAjZmZmOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnJhbmdlIGlucHV0W3R5cGU9InJhbmdlIl06Oi1tcy10cmFjayB7CiAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICNlNTM5MzUsICNkNDI4MjQgOTAlKTsKICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgICAgICAgcGFkZGluZzogMnB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLnJhbmdlIGlucHV0W3R5cGU9InJhbmdlIl06Oi1tcy1maWxsLWxvd2VyLAogICAgICAgICAgICAgICAgLnJhbmdlIGlucHV0W3R5cGU9InJhbmdlIl06Oi1tcy1maWxsLXVwcGVyIHsKICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC5yYW5nZSBpbnB1dFt0eXBlPSJyYW5nZSJdOjotbXMtdGh1bWIgewogICAgICAgICAgICAgICAgICB3aWR0aDogMTBweDsKICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgICAgICAgICAgICBib3JkZXI6IDVweCBzb2xpZCAjZTUzOTM1OwogICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAycHggMCAwICNmZmYsIC0ycHggMCAwICNmZmYsIDAgMnB4IDAgI2ZmZiwgMCAtMnB4IDAgI2ZmZjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEBtZWRpYShtYXgtd2lkdGg6NzY3cHgpewogICAgICAgICAgICAgICAgICAgIC5yYW5nZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvIDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYm9keS5uaWdodCB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNlZWU7CiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE0MTQxNDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJvZHkubmlnaHQgLnZlcmlmaWNhdGlvbi1ib3ggewogICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTIxMjE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBib2R5Lm5pZ2h0IC5zcGlubmVyIHsKICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDRweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICNjY2MgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYm9keS5uaWdodCAucmFuZ2Ugc3BhbiBzdmcgewogICAgICAgICAgICAgICAgICAgIGZpbGw6ICNlZWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAa2V5ZnJhbWVzIHNwaW4gewogICAgICAgICAgICAgICAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAgICAgICAgICAgICAgICAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgICAgICAgICAgICAgfQ==">
        </head>
        <body>
            <div class="verification-box">
                <img src="https://about-guitar.ru/wp-content/uploads/2017/12/logo_new.png" alt="О гитаре: теория и практика" class="logo">
                <h1>Подождите, идёт проверка веб-браузера...</h1>
                <div class="spinner"></div>
                <p class="small">Это автоматический процесс, но вы можете его ускорить.</p>
                                <div class="range">
                    <span title="Бот">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M352 64C352 46.3 337.7 32 320 32C302.3 32 288 46.3 288 64L288 128L192 128C139 128 96 171 96 224L96 448C96 501 139 544 192 544L448 544C501 544 544 501 544 448L544 224C544 171 501 128 448 128L352 128L352 64zM160 432C160 418.7 170.7 408 184 408L216 408C229.3 408 240 418.7 240 432C240 445.3 229.3 456 216 456L184 456C170.7 456 160 445.3 160 432zM280 432C280 418.7 290.7 408 304 408L336 408C349.3 408 360 418.7 360 432C360 445.3 349.3 456 336 456L304 456C290.7 456 280 445.3 280 432zM400 432C400 418.7 410.7 408 424 408L456 408C469.3 408 480 418.7 480 432C480 445.3 469.3 456 456 456L424 456C410.7 456 400 445.3 400 432zM224 240C250.5 240 272 261.5 272 288C272 314.5 250.5 336 224 336C197.5 336 176 314.5 176 288C176 261.5 197.5 240 224 240zM368 288C368 261.5 389.5 240 416 240C442.5 240 464 261.5 464 288C464 314.5 442.5 336 416 336C389.5 336 368 314.5 368 288zM64 288C64 270.3 49.7 256 32 256C14.3 256 0 270.3 0 288L0 384C0 401.7 14.3 416 32 416C49.7 416 64 401.7 64 384L64 288zM608 256C590.3 256 576 270.3 576 288L576 384C576 401.7 590.3 416 608 416C625.7 416 640 401.7 640 384L640 288C640 270.3 625.7 256 608 256z"/></svg>
                    </span>
                        <input type="range" min="0" max="10" step="0.05" value="3">
                    <span title="Человек">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 312C253.7 312 200 258.3 200 192C200 125.7 253.7 72 320 72C386.3 72 440 125.7 440 192C440 258.3 386.3 312 320 312zM289.5 368L350.5 368C360.2 368 368 375.8 368 385.5C368 389.7 366.5 393.7 363.8 396.9L336.4 428.9L367.4 544L368 544L402.6 405.5C404.8 396.8 413.7 391.5 422.1 394.7C484 418.3 528 478.3 528 548.5C528 563.6 515.7 575.9 500.6 575.9L139.4 576C124.3 576 112 563.7 112 548.6C112 478.4 156 418.4 217.9 394.8C226.3 391.6 235.2 396.9 237.4 405.6L272 544.1L272.6 544.1L303.6 429L276.2 397C273.5 393.8 272 389.8 272 385.6C272 375.9 279.8 368.1 289.5 368.1z"/></svg>
                    </span>
                </div>            </div>
        </body>
        </html>
        