Калькулятор площади прямоугольной грядки
Быстрый расчёт площади, периметра, объёма грунта и количества растений для прямоугольной грядки — введите размеры и получите готовые цифры за секунду.
—
Общая площадь всех грядок
м²
—
Площадь одной грядки
м²
—
Периметр одной грядки
м
—
Объём плодородного грунта
м³
—
Максимальное количество растений
шт
—
Общее количество удобрения
кг
Как пользоваться калькулятором
1
Введите длину и ширину грядки в метрах. Например, стандартная грядка часто имеет размеры 6 м в длину и 1,0–1,2 м в ширину.
2
Укажите количество одинаковых грядок (по умолчанию 1). Если у вас несколько грядок разного размера — рассчитайте каждую отдельно и сложите результаты.
3
При необходимости заполните необязательные поля: глубина плодородного слоя для расчёта объёма грунта, схема посадки для подсчёта растений и норма удобрения.
4
Нажмите «Рассчитать». Результаты появятся справа (на мобильном — под формой). Основной показатель — общая площадь всех грядок, выделен крупно.
Примеры расчёта
Стандартная одиночная грядка 6 × 1,2 м
Площадь: 7,2 м². Периметр: 14,4 м. При глубине 25 см объём грунта: 1,8 м³. При посадке томатов 40×60 см — до 30 растений. Удобрения при норме 40 г/м²: 0,29 кг.
Четыре грядки 3 × 1 м для зелени
Площадь одной: 3 м². Общая площадь: 12 м². Периметр каждой: 8 м. При глубине 20 см общий объём грунта: 2,4 м³. При схеме 15×20 см (укроп, петрушка) — до 400 растений на все грядки.
Тепличная грядка 8 × 0,8 м
Площадь: 6,4 м². Периметр: 17,6 м — полезно для покупки бордюрной ленты. При глубине 30 см объём грунта: 1,92 м³. Огурцы при схеме 35×70 см: около 26 растений.
Формулы расчёта
Все вычисления выполняются автоматически. Ниже — формулы, которые использует калькулятор:
Основные формулы
Площадь одной грядки = длина × ширина
Общая площадь = площадь одной грядки × количество грядок
Периметр = 2 × (длина + ширина)
Объём грунта = общая площадь × (глубина / 100)
Растений в ряду = ⌊(длина × 100) / расстояние в ряду⌋
Рядов на грядке = ⌊(ширина × 100) / расстояние между рядами⌋
Растений на грядке = растений в ряду × рядов
Общее количество удобрения = (общая площадь × норма) / 1000
Скобки ⌊ ⌋ означают округление вниз — растения считаются целыми. Глубина переводится из сантиметров в метры делением на 100. Удобрение переводится из граммов в килограммы делением на 1000.
Нормы и ориентиры
Приведённые значения — ориентировочные, основаны на агрономической практике. Для точного расчёта учитывайте конкретную культуру и условия.
- Глубина плодородного слоя: для зеленных культур и редиса — 15–20 см; для томатов, перцев, баклажанов — 25–30 см; для корнеплодов (морковь, свёкла) — 30–35 см; для картофеля — 35–40 см. В приподнятых грядках глубина соответствует высоте бортов.
- Схема посадки (расстояние в ряду × между рядами): томаты — 40–50 × 60–70 см; огурцы — 30–40 × 70–100 см; перец — 30–35 × 50–60 см; морковь — 5–7 × 15–20 см; свёкла — 8–10 × 20–25 см; лук на репку — 8–10 × 20–25 см; чеснок — 8–12 × 20–25 см; капуста — 50–60 × 60–70 см; клубника — 25–30 × 40–50 см.
- Нормы удобрений: комплексные минеральные (нитроаммофоска) — 30–60 г/м² за сезон; суперфосфат — 20–40 г/м²; калийные — 15–30 г/м²; перепревший навоз или компост — 3–5 кг/м²; древесная зола — 100–200 г/м². Дозировка зависит от плодородия почвы и фазы роста растений.
- Запас грунта: рекомендуется добавлять 5–10% к рассчитанному объёму на усадку и неровности. Для приподнятых грядок с рыхлым субстратом усадка может достигать 15% за первый сезон.
- Плотность посадки: при загущённой схеме урожайность может снизиться из-за конкуренции за свет и питание. Соблюдайте рекомендованные расстояния для конкретного сорта.
Что влияет на результат
- Тип почвы. На тяжёлых глинистых почвах корневая система развивается медленнее — возможно, потребуется увеличить расстояния между растениями на 10–15%. На лёгких супесях, наоборот, можно немного уплотнить посадку.
- Сорт и гибрид. Индетерминантные томаты требуют больше места, чем детерминантные. Кустовые сорта огурцов можно сажать гуще, чем плетистые. Всегда сверяйтесь с рекомендациями на упаковке семян.
- Освещённость. Грядки, ориентированные с севера на юг, получают более равномерное освещение в течение дня. При ориентации восток-запад северная сторона грядки может недополучать свет — учитывайте это при планировании посадок.
- Климат и регион. В южных регионах с жарким летом допустима более плотная посадка при условии хорошего полива. В северных — растениям нужно больше пространства для получения света.
- Способ полива. При капельном поливе можно сажать немного плотнее, так как вода и питание подаются адресно. При дождевании загущение повышает риск грибковых заболеваний.
- Севооборот. Не сажайте одну культуру на одном месте несколько лет подряд. Планируйте грядки с учётом чередования — это влияет на выбор количества грядок и их размер.
Важные нюансы
- Ширина грядки. Оптимальная ширина — 1,0–1,2 м. Это позволяет дотянуться до середины грядки с обеих сторон, не наступая на почву. Грядки шире 1,5 м неудобны в обработке без специальных проходов.
- Дорожки между грядками. Калькулятор считает только площадь самих грядок. Ширина дорожек обычно 40–60 см — закладывайте их в общий план участка отдельно.
- Приподнятые грядки. Если вы делаете грядку с бортами, глубина плодородного слоя равна высоте бортов. Объём грунта для такой грядки рассчитывается как площадь, умноженная на высоту бортов (в метрах).
- Удобрения и средства защиты. Нормы расхода удобрений, указанные в калькуляторе, являются ориентировочными. Окончательную дозировку всегда сверяйте с инструкцией на упаковке конкретного препарата. Превышение доз может навредить растениям и почве.
- Количество растений — теоретический максимум. Реальное количество может быть меньше из-за необходимости оставлять технологические проходы, краевые отступы (5–10 см от бортов) и учёта совместимости культур при смешанных посадках.
- Усадка грунта. Свеженасыпанный рыхлый грунт за первый месяц даёт усадку до 10–15% от первоначального объёма. При покупке грунта в мешках или навалом берите с запасом 10% минимум.
Частые ошибки
- Считать без запаса. Грунт, мульча и удобрения всегда расходуются неравномерно. Округляйте объём грунта и количество удобрений в большую сторону — лучше останется немного, чем не хватит в разгар сезона.
- Игнорировать тип почвы. На песчаной почве удобрения вымываются быстрее, норму внесения часто делят на 2–3 подкормки. На глинистой — можно вносить полную дозу сразу. Калькулятор даёт общую цифру, а как её разбить — решайте по ситуации.
- Сажать слишком густо. В попытке получить больше урожая с метра квадратного дачники часто загущают посадки. Это приводит к вспышкам фитофторы, мучнистой росы, нехватке света и снижению общего урожая. Соблюдайте рекомендованные расстояния.
- Забывать про краевые отступы. Растения не сажают вплотную к бортам грядки. От края до первого ряда оставляют 5–10 см. При расчёте количества растений вычитайте эти отступы из длины и ширины грядки для более точного результата.
- Превышать дозировку удобрений. «Кашу маслом не испортишь» — опасный миф. Избыток азота вызывает жирование растений в ущерб плодоношению, избыток фосфора блокирует усвоение микроэлементов. Всегда следуйте инструкции.
- Не учитывать ориентацию грядки. Высокие растения (кукуруза, подсолнечник, шпалерные огурцы) лучше размещать с северной стороны, чтобы они не затеняли низкорослые культуры.
Ответы на частые вопросы
Можно ли рассчитать круглую или треугольную грядку?
Этот калькулятор предназначен только для прямоугольных грядок. Для круглой грядки площадь = π × r², для треугольной — по формуле Герона или как половина произведения основания на высоту. Вы можете рассчитать эти значения отдельно и использовать результаты вручную.
Как учесть дорожки между грядками?
Дорожки считаются отдельно от площади грядок. Калькулятор показывает только площадь посадочной зоны. Чтобы узнать общую площадь огорода, сложите площадь всех грядок и площадь всех дорожек.
Нужно ли округлять количество растений вверх?
Калькулятор округляет вниз — это максимальное целое количество, которое помещается при заданной схеме. Сажать больше не рекомендуется: растениям будет тесно. Если вы хотите запас на случай неприживаемости, добавьте 5–10% к итоговой цифре.
Откуда брать нормы расхода удобрений?
Ориентировочные нормы приведены в разделе «Нормы и ориентиры». Точные дозировки всегда указаны на упаковке конкретного удобрения или средства защиты растений — используйте их как основной источник.
Что делать, если грядки разного размера?
Рассчитайте каждую грядку отдельно, меняя длину и ширину, и сложите результаты вручную. Либо разбейте грядки на группы с одинаковыми размерами и используйте поле «Количество грядок» для каждой группы.
Подходит ли калькулятор для приподнятых грядок?
Да. Укажите высоту бортов как глубину плодородного слоя. Площадь и периметр рассчитываются по длине и ширине основания. Объём грунта будет равен площади, умноженной на высоту бортов.
Источники и справочные данные
Расчёты основаны на следующих источниках и нормативных материалах:
- Агрономические справочные нормы по выращиванию овощных, плодовых и декоративных культур в открытом и защищённом грунте.
- Инструкции производителей удобрений и средств защиты растений — для ориентировочных норм расхода на квадратный метр.
- Рекомендации по выращиванию овощных культур (томаты, огурцы, перец, морковь, свёкла, капуста, зеленные) для личных подсобных хозяйств.
- Практические нормы расхода воды, грунта, мульчи и посадочного материала, применяемые в садоводстве и огородничестве.
Важно: Все результаты носят ориентировочный характер. Для точного планирования учитывайте особенности вашего участка, климатической зоны, сорта растений и рекомендации производителей семян и удобрений.
Калькулятор площади прямоугольной грядки помогает дачникам и садоводам быстро рассчитать площадь, периметр, объём плодородного грунта и количество растений для огорода. Достаточно ввести длину и ширину грядки в метрах — и вы получите точные цифры для планирования посадок, закупки удобрений и расчёта материалов. Инструмент учитывает количество одинаковых грядок, глубину плодородного слоя, схему посадки и норму расхода удобрений, что делает его универсальным помощником при обустройстве участка. Используйте калькулятор перед каждым сезоном, чтобы грамотно распределить площадь сада и огорода и избежать ошибок в расчётах.
CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGxlbmd0aElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1iZWQtbGVuZ3RoJyk7CiAgICAgICAgdmFyIHdpZHRoSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWJlZC13aWR0aCcpOwogICAgICAgIHZhciBjb3VudElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1iZWQtY291bnQnKTsKICAgICAgICB2YXIgZGVwdGhJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tYmVkLWRlcHRoJyk7CiAgICAgICAgdmFyIHNwYWNpbmdSb3dJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tYmVkLXNwYWNpbmctcm93Jyk7CiAgICAgICAgdmFyIHNwYWNpbmdCZXR3ZWVuSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWJlZC1zcGFjaW5nLWJldHdlZW4nKTsKICAgICAgICB2YXIgZmVydGlsaXplclJhdGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tYmVkLWZlcnRpbGl6ZXItcmF0ZScpOwogICAgICAgIHZhciBlcnJvclNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWJlZC1lcnJvcicpOwogICAgICAgIHZhciBjYWxjQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1iZWQtY2FsYy1idG4nKTsKICAgICAgICB2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLWJlZC1yZXNldC1idG4nKTsKCiAgICAgICAgdmFyIHJlc3VsdFRvdGFsQXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tcmVzdWx0LXRvdGFsLWFyZWEnKTsKICAgICAgICB2YXIgcmVzdWx0U2luZ2xlQXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tcmVzdWx0LXNpbmdsZS1hcmVhJyk7CiAgICAgICAgdmFyIHJlc3VsdFBlcmltZXRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tcmVzdWx0LXBlcmltZXRlcicpOwogICAgICAgIHZhciByZXN1bHRWb2x1bWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLXJlc3VsdC12b2x1bWUnKTsKICAgICAgICB2YXIgcmVzdWx0UGxhbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1yZXN1bHQtcGxhbnRzJyk7CiAgICAgICAgdmFyIHJlc3VsdEZlcnRpbGl6ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm4tZ2VuLXJlc3VsdC1mZXJ0aWxpemVyJyk7CgogICAgICAgIHZhciB2b2x1bWVJdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1yZXN1bHQtdm9sdW1lLWl0ZW0nKTsKICAgICAgICB2YXIgcGxhbnRzSXRlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdubi1nZW4tcmVzdWx0LXBsYW50cy1pdGVtJyk7CiAgICAgICAgdmFyIGZlcnRpbGl6ZXJJdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25uLWdlbi1yZXN1bHQtZmVydGlsaXplci1pdGVtJyk7CgogICAgICAgIGZ1bmN0aW9uIHNob3dFcnJvcihtc2cpIHsKICAgICAgICAgICAgZXJyb3JTcGFuLnRleHRDb250ZW50ID0gbXNnOwogICAgICAgICAgICBlcnJvclNwYW4uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBoaWRlRXJyb3IoKSB7CiAgICAgICAgICAgIGVycm9yU3Bhbi50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICBlcnJvclNwYW4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc2V0UmVzdWx0cygpIHsKICAgICAgICAgICAgcmVzdWx0VG90YWxBcmVhLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdFNpbmdsZUFyZWEudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgcmVzdWx0UGVyaW1ldGVyLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdFZvbHVtZS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXN1bHRQbGFudHMudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgcmVzdWx0RmVydGlsaXplci50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICB2b2x1bWVJdGVtLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtcmVzdWx0LWhpZGRlbicpOwogICAgICAgICAgICBwbGFudHNJdGVtLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtcmVzdWx0LWhpZGRlbicpOwogICAgICAgICAgICBmZXJ0aWxpemVySXRlbS5jbGFzc0xpc3QuYWRkKCdubi1nZW4tY2FsLXJlc3VsdC1oaWRkZW4nKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHBhcnNlUG9zaXRpdmVGbG9hdCh2YWx1ZSwgZmllbGROYW1lLCBhbGxvd1plcm8pIHsKICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAn0J/QvtC70LUgwqsnICsgZmllbGROYW1lICsgJ8K7INC90LUg0LfQsNC/0L7Qu9C90LXQvdC+LicgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbnVtID0gcGFyc2VGbG9hdCh2YWx1ZSk7CiAgICAgICAgICAgIGlmIChpc05hTihudW0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAn0J/QvtC70LUgwqsnICsgZmllbGROYW1lICsgJ8K7INGB0L7QtNC10YDQttC40YIg0L3QtdC60L7RgNGA0LXQutGC0L3QvtC1INC30L3QsNGH0LXQvdC40LUuJyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghYWxsb3daZXJvICYmIG51bSA8PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAn0J/QvtC70LUgwqsnICsgZmllbGROYW1lICsgJ8K7INC00L7Qu9C20L3QviDQsdGL0YLRjCDQsdC+0LvRjNGI0LUg0L3Rg9C70Y8uJyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhbGxvd1plcm8gJiYgbnVtIDwgMCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ9Cf0L7Qu9C1IMKrJyArIGZpZWxkTmFtZSArICfCuyDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L7RgtGA0LjRhtCw0YLQtdC70YzQvdGL0LwuJyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaXNGaW5pdGUobnVtKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ9Cf0L7Qu9C1IMKrJyArIGZpZWxkTmFtZSArICfCuyDRgdC+0LTQtdGA0LbQuNGCINGB0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LUuJyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCB2YWx1ZTogbnVtIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBwYXJzZVBvc2l0aXZlSW50KHZhbHVlLCBmaWVsZE5hbWUpIHsKICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAn0J/QvtC70LUgwqsnICsgZmllbGROYW1lICsgJ8K7INC90LUg0LfQsNC/0L7Qu9C90LXQvdC+LicgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbnVtID0gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgICAgICAgICAgaWYgKGlzTmFOKG51bSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICfQn9C+0LvQtSDCqycgKyBmaWVsZE5hbWUgKyAnwrsg0YHQvtC00LXRgNC20LjRgiDQvdC10LrQvtGA0YDQtdC60YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtS4nIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG51bSA8IDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICfQn9C+0LvQtSDCqycgKyBmaWVsZE5hbWUgKyAnwrsg0LTQvtC70LbQvdC+INCx0YvRgtGMINGG0LXQu9GL0Lwg0YfQuNGB0LvQvtC8INC90LUg0LzQtdC90YzRiNC1IDEuJyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaXNGaW5pdGUobnVtKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ9Cf0L7Qu9C1IMKrJyArIGZpZWxkTmFtZSArICfCuyDRgdC+0LTQtdGA0LbQuNGCINGB0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LUuJyB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCB2YWx1ZTogbnVtIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CiAgICAgICAgICAgIGhpZGVFcnJvcigpOwoKICAgICAgICAgICAgdmFyIGxlbmd0aFJlc3VsdCA9IHBhcnNlUG9zaXRpdmVGbG9hdChsZW5ndGhJbnB1dC52YWx1ZSwgJ9CU0LvQuNC90LAg0LPRgNGP0LTQutC4ICjQvCknLCBmYWxzZSk7CiAgICAgICAgICAgIGlmICghbGVuZ3RoUmVzdWx0LnZhbGlkKSB7IHNob3dFcnJvcihsZW5ndGhSZXN1bHQuZXJyb3IpOyByZXNldFJlc3VsdHMoKTsgcmV0dXJuOyB9CgogICAgICAgICAgICB2YXIgd2lkdGhSZXN1bHQgPSBwYXJzZVBvc2l0aXZlRmxvYXQod2lkdGhJbnB1dC52YWx1ZSwgJ9Co0LjRgNC40L3QsCDQs9GA0Y/QtNC60LggKNC8KScsIGZhbHNlKTsKICAgICAgICAgICAgaWYgKCF3aWR0aFJlc3VsdC52YWxpZCkgeyBzaG93RXJyb3Iod2lkdGhSZXN1bHQuZXJyb3IpOyByZXNldFJlc3VsdHMoKTsgcmV0dXJuOyB9CgogICAgICAgICAgICB2YXIgY291bnRSZXN1bHQgPSBwYXJzZVBvc2l0aXZlSW50KGNvdW50SW5wdXQudmFsdWUsICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQs9GA0Y/QtNC+0LogKNGI0YIpJyk7CiAgICAgICAgICAgIGlmICghY291bnRSZXN1bHQudmFsaWQpIHsgc2hvd0Vycm9yKGNvdW50UmVzdWx0LmVycm9yKTsgcmVzZXRSZXN1bHRzKCk7IHJldHVybjsgfQoKICAgICAgICAgICAgdmFyIGxlbmd0aCA9IGxlbmd0aFJlc3VsdC52YWx1ZTsKICAgICAgICAgICAgdmFyIHdpZHRoID0gd2lkdGhSZXN1bHQudmFsdWU7CiAgICAgICAgICAgIHZhciBjb3VudCA9IGNvdW50UmVzdWx0LnZhbHVlOwoKICAgICAgICAgICAgdmFyIHNpbmdsZUFyZWEgPSBsZW5ndGggKiB3aWR0aDsKICAgICAgICAgICAgdmFyIHRvdGFsQXJlYSA9IHNpbmdsZUFyZWEgKiBjb3VudDsKICAgICAgICAgICAgdmFyIHBlcmltZXRlciA9IDIgKiAobGVuZ3RoICsgd2lkdGgpOwoKICAgICAgICAgICAgcmVzdWx0U2luZ2xlQXJlYS50ZXh0Q29udGVudCA9IHNpbmdsZUFyZWEudG9GaXhlZCgyKTsKICAgICAgICAgICAgcmVzdWx0VG90YWxBcmVhLnRleHRDb250ZW50ID0gdG90YWxBcmVhLnRvRml4ZWQoMik7CiAgICAgICAgICAgIHJlc3VsdFBlcmltZXRlci50ZXh0Q29udGVudCA9IHBlcmltZXRlci50b0ZpeGVkKDIpOwoKICAgICAgICAgICAgdmFyIGRlcHRoVmFsdWUgPSBkZXB0aElucHV0LnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgdmFyIGhhc0RlcHRoID0gZGVwdGhWYWx1ZSAhPT0gJyc7CiAgICAgICAgICAgIGlmIChoYXNEZXB0aCkgewogICAgICAgICAgICAgICAgdmFyIGRlcHRoUmVzdWx0ID0gcGFyc2VQb3NpdGl2ZUZsb2F0KGRlcHRoVmFsdWUsICfQk9C70YPQsdC40L3QsCDQv9C70L7QtNC+0YDQvtC00L3QvtCz0L4g0YHQu9C+0Y8gKNGB0LwpJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICBpZiAoIWRlcHRoUmVzdWx0LnZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGRlcHRoUmVzdWx0LmVycm9yKTsKICAgICAgICAgICAgICAgICAgICB2b2x1bWVJdGVtLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtcmVzdWx0LWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdFZvbHVtZS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVwdGhDbSA9IGRlcHRoUmVzdWx0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgIHZhciB2b2x1bWUgPSB0b3RhbEFyZWEgKiAoZGVwdGhDbSAvIDEwMCk7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Vm9sdW1lLnRleHRDb250ZW50ID0gdm9sdW1lLnRvRml4ZWQoMik7CiAgICAgICAgICAgICAgICAgICAgdm9sdW1lSXRlbS5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4tY2FsLXJlc3VsdC1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZvbHVtZUl0ZW0uY2xhc3NMaXN0LmFkZCgnbm4tZ2VuLWNhbC1yZXN1bHQtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICByZXN1bHRWb2x1bWUudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHNwYWNpbmdSb3dWYWx1ZSA9IHNwYWNpbmdSb3dJbnB1dC52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIHZhciBzcGFjaW5nQmV0d2VlblZhbHVlID0gc3BhY2luZ0JldHdlZW5JbnB1dC52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIHZhciBoYXNTcGFjaW5nID0gc3BhY2luZ1Jvd1ZhbHVlICE9PSAnJyAmJiBzcGFjaW5nQmV0d2VlblZhbHVlICE9PSAnJzsKICAgICAgICAgICAgaWYgKGhhc1NwYWNpbmcpIHsKICAgICAgICAgICAgICAgIHZhciBzcGFjaW5nUm93UmVzdWx0ID0gcGFyc2VQb3NpdGl2ZUZsb2F0KHNwYWNpbmdSb3dWYWx1ZSwgJ9Cg0LDRgdGB0YLQvtGP0L3QuNC1INC80LXQttC00YMg0YDQsNGB0YLQtdC90LjRj9C80Lgg0LIg0YDRj9C00YMgKNGB0LwpJywgZmFsc2UpOwogICAgICAgICAgICAgICAgdmFyIHNwYWNpbmdCZXR3ZWVuUmVzdWx0ID0gcGFyc2VQb3NpdGl2ZUZsb2F0KHNwYWNpbmdCZXR3ZWVuVmFsdWUsICfQoNCw0YHRgdGC0L7Rj9C90LjQtSDQvNC10LbQtNGDINGA0Y/QtNCw0LzQuCAo0YHQvCknLCBmYWxzZSk7CiAgICAgICAgICAgICAgICBpZiAoIXNwYWNpbmdSb3dSZXN1bHQudmFsaWQpIHsKICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3Ioc3BhY2luZ1Jvd1Jlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgcGxhbnRzSXRlbS5jbGFzc0xpc3QuYWRkKCdubi1nZW4tY2FsLXJlc3VsdC1oaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICByZXN1bHRQbGFudHMudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNwYWNpbmdCZXR3ZWVuUmVzdWx0LnZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKHNwYWNpbmdCZXR3ZWVuUmVzdWx0LmVycm9yKTsKICAgICAgICAgICAgICAgICAgICBwbGFudHNJdGVtLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtcmVzdWx0LWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdFBsYW50cy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcGxhbnRzSW5Sb3cgPSBNYXRoLmZsb29yKChsZW5ndGggKiAxMDApIC8gc3BhY2luZ1Jvd1Jlc3VsdC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3NDb3VudCA9IE1hdGguZmxvb3IoKHdpZHRoICogMTAwKSAvIHNwYWNpbmdCZXR3ZWVuUmVzdWx0LnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAocGxhbnRzSW5Sb3cgPCAxIHx8IHJvd3NDb3VudCA8IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGxhbnRzLnRleHRDb250ZW50ID0gJzAnOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGFudHNQZXJCZWQgPSBwbGFudHNJblJvdyAqIHJvd3NDb3VudDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsUGxhbnRzID0gcGxhbnRzUGVyQmVkICogY291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFBsYW50cy50ZXh0Q29udGVudCA9IHRvdGFsUGxhbnRzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwbGFudHNJdGVtLmNsYXNzTGlzdC5yZW1vdmUoJ25uLWdlbi1jYWwtcmVzdWx0LWhpZGRlbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcGxhbnRzSXRlbS5jbGFzc0xpc3QuYWRkKCdubi1nZW4tY2FsLXJlc3VsdC1oaWRkZW4nKTsKICAgICAgICAgICAgICAgIHJlc3VsdFBsYW50cy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgZmVydFZhbHVlID0gZmVydGlsaXplclJhdGVJbnB1dC52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIHZhciBoYXNGZXJ0ID0gZmVydFZhbHVlICE9PSAnJzsKICAgICAgICAgICAgaWYgKGhhc0ZlcnQpIHsKICAgICAgICAgICAgICAgIHZhciBmZXJ0UmVzdWx0ID0gcGFyc2VQb3NpdGl2ZUZsb2F0KGZlcnRWYWx1ZSwgJ9Cd0L7RgNC80LAg0YDQsNGB0YXQvtC00LAg0YPQtNC+0LHRgNC10L3QuNGPICjQsy/QvMKyKScsIHRydWUpOwogICAgICAgICAgICAgICAgaWYgKCFmZXJ0UmVzdWx0LnZhbGlkKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yKGZlcnRSZXN1bHQuZXJyb3IpOwogICAgICAgICAgICAgICAgICAgIGZlcnRpbGl6ZXJJdGVtLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1jYWwtcmVzdWx0LWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdEZlcnRpbGl6ZXIudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRvdGFsRmVydEcgPSB0b3RhbEFyZWEgKiBmZXJ0UmVzdWx0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgIHZhciB0b3RhbEZlcnRLZyA9IHRvdGFsRmVydEcgLyAxMDAwOwogICAgICAgICAgICAgICAgICAgIHJlc3VsdEZlcnRpbGl6ZXIudGV4dENvbnRlbnQgPSB0b3RhbEZlcnRLZy50b0ZpeGVkKDIpOwogICAgICAgICAgICAgICAgICAgIGZlcnRpbGl6ZXJJdGVtLmNsYXNzTGlzdC5yZW1vdmUoJ25uLWdlbi1jYWwtcmVzdWx0LWhpZGRlbicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmVydGlsaXplckl0ZW0uY2xhc3NMaXN0LmFkZCgnbm4tZ2VuLWNhbC1yZXN1bHQtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICByZXN1bHRGZXJ0aWxpemVyLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc2V0Rm9ybSgpIHsKICAgICAgICAgICAgbGVuZ3RoSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgd2lkdGhJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICBjb3VudElucHV0LnZhbHVlID0gJzEnOwogICAgICAgICAgICBkZXB0aElucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIHNwYWNpbmdSb3dJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICBzcGFjaW5nQmV0d2VlbklucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGZlcnRpbGl6ZXJSYXRlSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgaGlkZUVycm9yKCk7CiAgICAgICAgICAgIHJlc2V0UmVzdWx0cygpOwogICAgICAgIH0KCiAgICAgICAgY2FsY0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNhbGN1bGF0ZSk7CiAgICAgICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEZvcm0pOwoKICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgIH0pKCk7Cg==