Калькулятор количества семян
Рассчитайте, сколько семян нужно купить для вашего участка, с учётом площади, нормы высева, всхожести и запаса на непредвиденные потери.
—
Семян нужно купить
шт. (с запасом)
—
Упаковок потребуется
шт.
—
Ожидаемое количество растений
шт. (при данной всхожести)
Как пользоваться калькулятором
1
Выберите культуру из списка. Норма высева и примерное количество семян в упаковке подставятся автоматически. Если у вас особый сорт или нетипичная схема посадки — скорректируйте значения вручную.
2
Укажите площадь посева в квадратных метрах. Для грядки размером 1,2 × 5 м площадь составит 6 м². Для теплицы 3 × 6 м — 18 м². Можно суммировать несколько грядок.
3
Проверьте всхожесть (указана на упаковке семян) и процент запаса. Запас 15% — стандартная рекомендация для большинства культур. Для мелкосемянных культур (укроп, петрушка) запас можно увеличить до 20%.
4
Нажмите «Рассчитать». Вы получите: общее количество семян с запасом, необходимое число упаковок (округление в большую сторону), ожидаемое количество растений и величину запаса в штуках.
Примеры расчёта
Грядка моркови — 10 м²
Площадь: 10 м². Норма высева: 90 семян/м². Всхожесть: 80%. Запас: 15%. Базовое количество: 900 семян. С учётом всхожести: 1125 семян. С запасом: 1294 семени. В упаковке 500 семян — нужно 3 упаковки. Ожидаемое количество растений: около 720 шт.
Теплица огурцов — 18 м²
Площадь: 18 м². Норма высева: 10 семян/м². Всхожесть: 90%. Запас: 10%. Базовое количество: 180 семян. С учётом всхожести: 200 семян. С запасом: 220 семян. В упаковке 20 семян — нужно 11 упаковок. Ожидаемое количество растений: около 162 шт.
Рассада томатов — 2 м² рассадника
Площадь: 2 м². Норма высева: 250 семян/м². Всхожесть: 85%. Запас: 15%. Базовое количество: 500 семян. С учётом всхожести: 588 семян. С запасом: 676 семян. В упаковке 50 семян — нужно 14 упаковок. Ожидаемое количество растений: около 425 шт.
Формулы расчёта
Все расчёты выполняются последовательно по следующим формулам:
Базовое количество = Площадь × Норма высева
Сколько семян теоретически нужно на заданную площадь без поправок.
С учётом всхожести = Базовое количество / (Всхожесть / 100)
Компенсация потерь из-за неполной всхожести. Чем ниже всхожесть — тем больше семян потребуется.
С запасом = С учётом всхожести × (1 + Запас / 100)
Дополнительный резерв на прореживание, пересадку, птиц, неравномерный посев.
Количество упаковок = округление вверх (С запасом / Семян в упаковке)
Дробное значение всегда округляется в большую сторону — нельзя купить пол-упаковки.
Ожидаемое количество растений = Базовое количество × (Всхожесть / 100)
Сколько растений реально взойдёт при указанной всхожести, без учёта запаса.
Нормы высева и ориентиры
Нормы высева — ориентировочные значения для рядового посева в открытый грунт. Фактическая норма зависит от сорта, схемы посадки, качества семян и способа посева.
| Культура | Норма высева (семян/м²) | Семян в упаковке (примерно) |
| Морковь | 80–100 | 500 |
| Свекла столовая | 40–60 | 300 |
| Редис | 100–150 | 500 |
| Укроп | 200–300 | 1000 |
| Петрушка | 150–200 | 500 |
| Салат листовой | 80–120 | 300 |
| Томаты (рассада) | 200–300 | 50 |
| Огурцы | 8–12 | 20 |
| Кабачки | 5–8 | 10 |
| Горох | 50–80 | 100 |
| Лук репчатый (семена) | 200–300 | 500 |
| Цветы однолетние | 100–200 | 200 |
⚠️ Данные усреднённые. Точную норму высева и количество семян в упаковке всегда уточняйте на упаковке конкретного сорта и у производителя.
Что влияет на результат
- Всхожесть семян. Главный фактор. Лабораторная всхожесть, указанная на упаковке, может отличаться от полевой. В реальных условиях всходит на 10–20% меньше заявленного.
- Качество семян. Срок годности, условия хранения, калибровка и обработка семян напрямую влияют на процент всходов. Просроченные семена теряют всхожесть на 30–50% и более.
- Тип почвы. На тяжёлых глинистых почвах семена всходят хуже, чем на рыхлых супесчаных. Плотная корка на поверхности может заблокировать нежные ростки.
- Погодные условия. Температура почвы, влажность, возвратные заморозки и пересыхание верхнего слоя критичны для прорастания. Оптимальная температура для большинства культур: +15…+25 °C.
- Глубина заделки. Слишком глубокая заделка снижает всхожесть на 40–60%. Мелкие семена (укроп, петрушка, салат) заделывают на 0,5–1 см, крупные (горох, кабачки) — на 3–5 см.
- Способ посева. Ручной разбросной посев требует на 20–30% больше семян, чем строчный или точечный. Использование сеялки точного высева снижает расход в 1,5–2 раза.
Важные нюансы
- Всегда закладывайте запас. Даже при идеальных условиях часть семян не взойдёт, часть ростков погибнет при прореживании или будет повреждена вредителями. Запас 10–15% — минимальная разумная страховка.
- Не храните семена вскрытых упаковок годами. После вскрытия пакета всхожесть падает быстрее. Покупайте семена с запасом на один сезон, а не впрок на несколько лет.
- Проверяйте дату фасовки, а не срок годности. Семена в красивых пакетиках могут быть расфасованы 2–3 года назад. Чем свежее семена — тем выше реальная всхожесть.
- Дражжированные и инкрустированные семена имеют повышенную всхожесть (до 90–95%), но их норма высева может отличаться от обычных. Ориентируйтесь на рекомендации производителя на упаковке.
- Для мелкосемянных культур (укроп, петрушка, салат, морковь) запас лучше увеличить до 20% — их сложнее равномерно распределить при посеве, и потери при прореживании выше.
- Результат калькулятора — ориентировочный. Он помогает спланировать покупку, но не гарантирует 100% точность. Реальные условия вашего участка всегда вносят коррективы.
Частые ошибки
- Покупка семян «впритык». Садоводы часто берут ровно столько, сколько теоретически нужно на площадь. При неравномерных всходах или необходимости подсева семян не хватает, а нужный сорт уже раскуплен.
- Игнорирование процента всхожести. Если на упаковке указано «всхожесть 70%», а вы считаете по 100% — реальное количество растений будет на треть меньше ожидаемого.
- Слишком густой посев. Попытка «посеять побольше, чтобы наверняка» приводит к загущению, слабым растениям и большому объёму работы по прореживанию. Лучше точный расчёт с умеренным запасом.
- Использование норм высева без учёта сорта. Крупноплодные сорта томатов требуют меньшей плотности посадки, чем черри. Штамбовые сорта — иной схемы, чем индетерминантные. Корректируйте норму под конкретный сорт.
- Посев без учёта способа выращивания. Норма для рассадного способа и для прямого посева в грунт различаются. Калькулятор учитывает это частично — для томатов подставлена норма для рассадника.
- Округление количества упаковок вниз. Если расчёт показал 2,3 упаковки — брать нужно 3, а не 2. Экономия на одной упаковке может обернуться пустыми рядами в разгар сезона.
Ответы на частые вопросы
Почему калькулятор показывает больше семян, чем я ожидал?
Потому что он учитывает реальную всхожесть и запас. Без этих поправок расчёт был бы идеализированным и на практике семян бы не хватило. Это честный подход, который экономит ваше время и нервы в сезон.
Можно ли использовать калькулятор для цветов?
Да, для однолетних цветов предусмотрена отдельная строка с усреднённой нормой 150 семян/м². Для многолетников и крупных цветочных культур (подсолнечник, цинния, бархатцы) скорректируйте норму вручную.
Что делать, если я не знаю точную всхожесть?
Если на упаковке нет данных, ориентируйтесь на 75–85% для свежих семян. Для семян старше 2 лет снижайте до 50–60%. Для дражированных семян можно ставить 85–90%.
Норма высева в калькуляторе совпадает с инструкцией на упаковке?
Не всегда. На упаковке часто указывают норму в граммах, а калькулятор считает в штуках. Это разные подходы. Если знаете точную штучную норму для своего сорта — введите её вручную.
Нужно ли добавлять запас для рассады?
Да, обязательно. При пикировке и пересадке часть сеянцев неизбежно теряется. Запас 10–15% для рассады — разумный минимум. Лучше иметь несколько запасных растений, чем пустые лунки.
Как быть, если я сажаю несколько культур на одной грядке?
Рассчитайте каждую культуру отдельно, указав её долю площади. Например, на грядке 10 м² вы отводите 6 м² под морковь и 4 м² под свеклу — сделайте два отдельных расчёта и суммируйте результаты.
Источники и справочные данные
Расчёт основан на следующих источниках и методиках:
- Агрономические справочные нормы высева овощных и цветочных культур для личных подсобных хозяйств.
- Рекомендации по выращиванию овощных, плодовых и декоративных культур, опубликованные профильными научно-исследовательскими институтами.
- Практические нормы расхода посадочного материала, обобщённые на основе опыта садоводов и огородников.
- Усреднённые данные о количестве семян в стандартных упаковках различных культур.
Все нормы являются ориентировочными. Для точного расчёта всегда используйте данные с упаковки семян конкретного сорта и рекомендации производителя.
Калькулятор количества семян помогает дачникам и огородникам быстро рассчитать, сколько семян нужно купить для участка. Достаточно указать площадь грядки или теплицы, выбрать культуру, и вы получите точное количество семян с учётом всхожести и рекомендуемого запаса. Инструмент учитывает нормы высева для популярных овощных и цветочных культур, автоматически подставляет справочные значения и рассчитывает необходимое количество упаковок. Это экономит бюджет, избавляет от лишних покупок и гарантирует, что в разгар посадочного сезона у вас будет ровно столько семян, сколько действительно нужно.
Правильный расчёт семян — это основа хорошего урожая. Слишком мало семян — пустые ряды и недобор урожая. Слишком много — лишние траты и трудоёмкое прореживание загущенных посадок. Используйте калькулятор, чтобы найти золотую середину и спланировать покупки с умом.
CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGN1bHR1cmVTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VlZC1jdWx0dXJlJyk7CiAgICAgICAgdmFyIGFyZWFJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWVkLWFyZWEnKTsKICAgICAgICB2YXIgcmF0ZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlZWQtcmF0ZScpOwogICAgICAgIHZhciBnZXJtaW5hdGlvbklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlZWQtZ2VybWluYXRpb24nKTsKICAgICAgICB2YXIgcmVzZXJ2ZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlZWQtcmVzZXJ2ZScpOwogICAgICAgIHZhciBwYWNrSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VlZC1wZXItcGFjaycpOwogICAgICAgIHZhciBidG5DYWxjdWxhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuLWNhbGN1bGF0ZScpOwogICAgICAgIHZhciBidG5SZXNldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tcmVzZXQnKTsKICAgICAgICB2YXIgaGludFJhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGludC1yYXRlJyk7CgogICAgICAgIHZhciByZXN1bHRUb3RhbFNlZWRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC10b3RhbC1zZWVkcycpOwogICAgICAgIHZhciByZXN1bHRQYWNrcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtcGFja3MnKTsKICAgICAgICB2YXIgcmVzdWx0UGxhbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1wbGFudHMnKTsKICAgICAgICB2YXIgcmVzdWx0UmVzZXJ2ZUNvdW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1yZXNlcnZlLWNvdW50Jyk7CiAgICAgICAgdmFyIHJlc3VsdE5vdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LW5vdGUnKTsKCiAgICAgICAgdmFyIGVycm9yQ3VsdHVyZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlcnJvci1jdWx0dXJlJyk7CiAgICAgICAgdmFyIGVycm9yQXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlcnJvci1hcmVhJyk7CiAgICAgICAgdmFyIGVycm9yUmF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlcnJvci1yYXRlJyk7CiAgICAgICAgdmFyIGVycm9yR2VybWluYXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3ItZ2VybWluYXRpb24nKTsKICAgICAgICB2YXIgZXJyb3JSZXNlcnZlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yLXJlc2VydmUnKTsKICAgICAgICB2YXIgZXJyb3JQYWNrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yLXBhY2snKTsKICAgICAgICB2YXIgZXJyb3JHZW5lcmFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yLWdlbmVyYWwnKTsKCiAgICAgICAgdmFyIGN1bHR1cmVEYXRhID0gewogICAgICAgICAgICBjYXJyb3Q6IHsgcmF0ZTogOTAsIHBhY2s6IDUwMCwgbmFtZTogJ9Cc0L7RgNC60L7QstGMJyB9LAogICAgICAgICAgICBiZWV0OiB7IHJhdGU6IDUwLCBwYWNrOiAzMDAsIG5hbWU6ICfQodCy0LXQutC70LAg0YHRgtC+0LvQvtCy0LDRjycgfSwKICAgICAgICAgICAgcmFkaXNoOiB7IHJhdGU6IDEyMCwgcGFjazogNTAwLCBuYW1lOiAn0KDQtdC00LjRgScgfSwKICAgICAgICAgICAgZGlsbDogeyByYXRlOiAyNTAsIHBhY2s6IDEwMDAsIG5hbWU6ICfQo9C60YDQvtC/JyB9LAogICAgICAgICAgICBwYXJzbGV5OiB7IHJhdGU6IDE4MCwgcGFjazogNTAwLCBuYW1lOiAn0J/QtdGC0YDRg9GI0LrQsCcgfSwKICAgICAgICAgICAgbGV0dHVjZTogeyByYXRlOiAxMDAsIHBhY2s6IDMwMCwgbmFtZTogJ9Ch0LDQu9Cw0YIg0LvQuNGB0YLQvtCy0L7QuScgfSwKICAgICAgICAgICAgdG9tYXRvOiB7IHJhdGU6IDI1MCwgcGFjazogNTAsIG5hbWU6ICfQotC+0LzQsNGC0YsgKNC90LAg0YDQsNGB0YHQsNC00YMpJyB9LAogICAgICAgICAgICBjdWN1bWJlcjogeyByYXRlOiAxMCwgcGFjazogMjAsIG5hbWU6ICfQntCz0YPRgNGG0YsnIH0sCiAgICAgICAgICAgIHp1Y2NoaW5pOiB7IHJhdGU6IDYsIHBhY2s6IDEwLCBuYW1lOiAn0JrQsNCx0LDRh9C60LgnIH0sCiAgICAgICAgICAgIHBlYTogeyByYXRlOiA2MCwgcGFjazogMTAwLCBuYW1lOiAn0JPQvtGA0L7RhScgfSwKICAgICAgICAgICAgb25pb246IHsgcmF0ZTogMjUwLCBwYWNrOiA1MDAsIG5hbWU6ICfQm9GD0Log0YDQtdC/0YfQsNGC0YvQuSAo0YHQtdC80LXQvdCwKScgfSwKICAgICAgICAgICAgZmxvd2VyczogeyByYXRlOiAxNTAsIHBhY2s6IDIwMCwgbmFtZTogJ9Cm0LLQtdGC0Ysg0L7QtNC90L7Qu9C10YLQvdC40LUnIH0sCiAgICAgICAgICAgIGN1c3RvbTogeyByYXRlOiBudWxsLCBwYWNrOiBudWxsLCBuYW1lOiAn0KHQstC+0Y8g0LrRg9C70YzRgtGD0YDQsCcgfQogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUZpZWxkc0ZvckN1bHR1cmUoKSB7CiAgICAgICAgICAgIHZhciBjdWx0dXJlS2V5ID0gY3VsdHVyZVNlbGVjdC52YWx1ZTsKICAgICAgICAgICAgdmFyIGRhdGEgPSBjdWx0dXJlRGF0YVtjdWx0dXJlS2V5XTsKICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm47CgogICAgICAgICAgICBpZiAoZGF0YS5yYXRlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICByYXRlSW5wdXQudmFsdWUgPSBkYXRhLnJhdGU7CiAgICAgICAgICAgICAgICByYXRlSW5wdXQucGxhY2Vob2xkZXIgPSBkYXRhLnJhdGU7CiAgICAgICAgICAgICAgICBoaW50UmF0ZS50ZXh0Q29udGVudCA9ICfQntGA0LjQtdC90YLQuNGA0L7QstC+0YfQvdCw0Y8g0L3QvtGA0LzQsCDQtNC70Y8gwqsnICsgZGF0YS5uYW1lICsgJ8K7LiDQnNC+0LbQvdC+INC40LfQvNC10L3QuNGC0Ywg0LLRgNGD0YfQvdGD0Y4uJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJhdGVJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgcmF0ZUlucHV0LnBsYWNlaG9sZGVyID0gJ9CS0LLQtdC00LjRgtC1INC90L7RgNC80YMg0LLRgNGD0YfQvdGD0Y4nOwogICAgICAgICAgICAgICAgaGludFJhdGUudGV4dENvbnRlbnQgPSAn0JTQu9GPINGB0LLQvtC10Lkg0LrRg9C70YzRgtGD0YDRiyDRg9C60LDQttC40YLQtSDQvdC+0YDQvNGDINCy0YvRgdC10LLQsCDRgdCw0LzQvtGB0YLQvtGP0YLQtdC70YzQvdC+ICjRgdC10LzRj9C9INC90LAgMSDQvMKyKS4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZGF0YS5wYWNrICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBwYWNrSW5wdXQudmFsdWUgPSBkYXRhLnBhY2s7CiAgICAgICAgICAgICAgICBwYWNrSW5wdXQucGxhY2Vob2xkZXIgPSBkYXRhLnBhY2s7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwYWNrSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgIHBhY2tJbnB1dC5wbGFjZWhvbGRlciA9ICfQktCy0LXQtNC40YLQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQsiDRg9C/0LDQutC+0LLQutC1JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaGlkZUFsbEVycm9ycygpIHsKICAgICAgICAgICAgdmFyIGVycm9ycyA9IFtlcnJvckN1bHR1cmUsIGVycm9yQXJlYSwgZXJyb3JSYXRlLCBlcnJvckdlcm1pbmF0aW9uLCBlcnJvclJlc2VydmUsIGVycm9yUGFjaywgZXJyb3JHZW5lcmFsXTsKICAgICAgICAgICAgZXJyb3JzLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgICAgIGlmIChlbCkgZWwuY2xhc3NMaXN0LnJlbW92ZSgndmlzaWJsZScpOwogICAgICAgICAgICAgICAgaWYgKGVsKSBlbC50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHNob3dFcnJvcihlbCwgbWVzc2FnZSkgewogICAgICAgICAgICBpZiAoIWVsKSByZXR1cm47CiAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gbWVzc2FnZTsKICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdmFsaWRhdGVJbnB1dHMoKSB7CiAgICAgICAgICAgIHZhciB2YWxpZCA9IHRydWU7CiAgICAgICAgICAgIGhpZGVBbGxFcnJvcnMoKTsKCiAgICAgICAgICAgIHZhciBhcmVhID0gcGFyc2VGbG9hdChhcmVhSW5wdXQudmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4oYXJlYSkgfHwgYXJlYSA8PSAwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JBcmVhLCAn0JLQstC10LTQuNGC0LUg0L/QvtC70L7QttC40YLQtdC70YzQvdGD0Y4g0L/Qu9C+0YnQsNC00Ywg0LIg0LzCsiAo0L3QsNC/0YDQuNC80LXRgDogMjUpLicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIGlmIChhcmVhID4gMTAwMDAwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JBcmVhLCAn0J/Qu9C+0YnQsNC00Ywg0L3QtSDQtNC+0LvQttC90LAg0L/RgNC10LLRi9GI0LDRgtGMIDEwMCAwMDAg0LzCsi4g0JTQu9GPINCx0L7Qu9GM0YjQuNGFINC/0L7Qu9C10Lkg0L7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0LDQs9GA0L7QvdC+0LzRgy4nKTsKICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByYXRlID0gcGFyc2VGbG9hdChyYXRlSW5wdXQudmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4ocmF0ZSkgfHwgcmF0ZSA8PSAwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JSYXRlLCAn0KPQutCw0LbQuNGC0LUg0L3QvtGA0LzRgyDQstGL0YHQtdCy0LAgKNGB0LXQvNGP0L0g0L3QsCAxINC8wrIpLiDQktGL0LHQtdGA0LjRgtC1INC60YPQu9GM0YLRg9GA0YMg0LjQu9C4INCy0LLQtdC00LjRgtC1INC30L3QsNGH0LXQvdC40LUg0LLRgNGD0YfQvdGD0Y4uJyk7CiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGUgPiAxMDAwMCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVycm9yUmF0ZSwgJ9Cd0L7RgNC80LAg0LLRi9GB0LXQstCwINC90LUg0LTQvtC70LbQvdCwINC/0YDQtdCy0YvRiNCw0YLRjCAxMCAwMDAg0YHQtdC80Y/QvS/QvMKyLiDQn9GA0L7QstC10YDRjNGC0LUg0LfQvdCw0YfQtdC90LjQtS4nKTsKICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBnZXJtaW5hdGlvbiA9IHBhcnNlRmxvYXQoZ2VybWluYXRpb25JbnB1dC52YWx1ZSk7CiAgICAgICAgICAgIGlmIChpc05hTihnZXJtaW5hdGlvbikgfHwgZ2VybWluYXRpb24gPCAxMCB8fCBnZXJtaW5hdGlvbiA+IDEwMCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVycm9yR2VybWluYXRpb24sICfQktGB0YXQvtC20LXRgdGC0Ywg0LTQvtC70LbQvdCwINCx0YvRgtGMINC+0YIgMTAlINC00L4gMTAwJS4nKTsKICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByZXNlcnZlID0gcGFyc2VGbG9hdChyZXNlcnZlSW5wdXQudmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4ocmVzZXJ2ZSkgfHwgcmVzZXJ2ZSA8IDAgfHwgcmVzZXJ2ZSA+IDUwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JSZXNlcnZlLCAn0JfQsNC/0LDRgSDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0L7RgiAwJSDQtNC+IDUwJS4nKTsKICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBwYWNrID0gcGFyc2VGbG9hdChwYWNrSW5wdXQudmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4ocGFjaykgfHwgcGFjayA8PSAwKSB7CiAgICAgICAgICAgICAgICBzaG93RXJyb3IoZXJyb3JQYWNrLCAn0KPQutCw0LbQuNGC0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHQtdC80Y/QvSDQsiDRg9C/0LDQutC+0LLQutC1ICjRhtC10LvQvtC1INC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3QvtC1INGH0LjRgdC70L4pLicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIGlmIChwYWNrID4gMTAwMDAwMCkgewogICAgICAgICAgICAgICAgc2hvd0Vycm9yKGVycm9yUGFjaywgJ9Ch0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INGH0LjRgdC70L4uINCf0YDQvtCy0LXRgNGM0YLQtSDQt9C90LDRh9C10L3QuNC1LicpOwogICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHZhbGlkOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gY2FsY3VsYXRlKCkgewogICAgICAgICAgICBpZiAoIXZhbGlkYXRlSW5wdXRzKCkpIHsKICAgICAgICAgICAgICAgIHJlc3VsdFRvdGFsU2VlZHMudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgIHJlc3VsdFBhY2tzLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgICAgICByZXN1bHRQbGFudHMudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgICAgIHJlc3VsdFJlc2VydmVDb3VudC50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgcmVzdWx0Tm90ZS50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgYXJlYSA9IHBhcnNlRmxvYXQoYXJlYUlucHV0LnZhbHVlKTsKICAgICAgICAgICAgdmFyIHJhdGUgPSBwYXJzZUZsb2F0KHJhdGVJbnB1dC52YWx1ZSk7CiAgICAgICAgICAgIHZhciBnZXJtaW5hdGlvbiA9IHBhcnNlRmxvYXQoZ2VybWluYXRpb25JbnB1dC52YWx1ZSk7CiAgICAgICAgICAgIHZhciByZXNlcnZlID0gcGFyc2VGbG9hdChyZXNlcnZlSW5wdXQudmFsdWUpOwogICAgICAgICAgICB2YXIgcGFjayA9IHBhcnNlRmxvYXQocGFja0lucHV0LnZhbHVlKTsKCiAgICAgICAgICAgIHZhciBiYXNlU2VlZHMgPSBhcmVhICogcmF0ZTsKICAgICAgICAgICAgdmFyIHNlZWRzV2l0aEdlcm1pbmF0aW9uID0gYmFzZVNlZWRzIC8gKGdlcm1pbmF0aW9uIC8gMTAwKTsKICAgICAgICAgICAgdmFyIHNlZWRzV2l0aFJlc2VydmUgPSBzZWVkc1dpdGhHZXJtaW5hdGlvbiAqICgxICsgcmVzZXJ2ZSAvIDEwMCk7CiAgICAgICAgICAgIHZhciBwYWNrc05lZWRlZCA9IE1hdGguY2VpbChzZWVkc1dpdGhSZXNlcnZlIC8gcGFjayk7CiAgICAgICAgICAgIHZhciBleHBlY3RlZFBsYW50cyA9IGJhc2VTZWVkcyAqIChnZXJtaW5hdGlvbiAvIDEwMCk7CiAgICAgICAgICAgIHZhciByZXNlcnZlQ291bnQgPSBzZWVkc1dpdGhSZXNlcnZlIC0gc2VlZHNXaXRoR2VybWluYXRpb247CgogICAgICAgICAgICByZXN1bHRUb3RhbFNlZWRzLnRleHRDb250ZW50ID0gTWF0aC5yb3VuZChzZWVkc1dpdGhSZXNlcnZlKTsKICAgICAgICAgICAgcmVzdWx0UGFja3MudGV4dENvbnRlbnQgPSBwYWNrc05lZWRlZDsKICAgICAgICAgICAgcmVzdWx0UGxhbnRzLnRleHRDb250ZW50ID0gTWF0aC5yb3VuZChleHBlY3RlZFBsYW50cyk7CiAgICAgICAgICAgIHJlc3VsdFJlc2VydmVDb3VudC50ZXh0Q29udGVudCA9IE1hdGgucm91bmQocmVzZXJ2ZUNvdW50KTsKCiAgICAgICAgICAgIHZhciBjdWx0dXJlTmFtZSA9IChjdWx0dXJlRGF0YVtjdWx0dXJlU2VsZWN0LnZhbHVlXSAmJiBjdWx0dXJlRGF0YVtjdWx0dXJlU2VsZWN0LnZhbHVlXS5uYW1lKSB8fCAn0LLRi9Cx0YDQsNC90L3QvtC5INC60YPQu9GM0YLRg9GA0YsnOwogICAgICAgICAgICByZXN1bHROb3RlLnRleHRDb250ZW50ID0gJ9CU0LvRjyDCqycgKyBjdWx0dXJlTmFtZSArICfCuyDQvdCwINC/0LvQvtGJ0LDQtNC4ICcgKyBhcmVhICsgJyDQvMKyINGC0YDQtdCx0YPQtdGC0YHRjyAnICsgTWF0aC5yb3VuZChzZWVkc1dpdGhSZXNlcnZlKSArICcg0YHQtdC80Y/QvSAo0YEg0LfQsNC/0LDRgdC+0LwgJyArIHJlc2VydmUgKyAnJSkuINCt0YLQviAnICsgcGFja3NOZWVkZWQgKyAnINGD0L/QsNC60L7QstC+0Loo0LrQuCkg0L/QviAnICsgcGFjayArICcg0YjRgi4g0J7QttC40LTQsNC10YLRgdGPINC+0LrQvtC70L4gJyArIE1hdGgucm91bmQoZXhwZWN0ZWRQbGFudHMpICsgJyDRgNCw0YHRgtC10L3QuNC5INC/0YDQuCDQstGB0YXQvtC20LXRgdGC0LggJyArIGdlcm1pbmF0aW9uICsgJyUuJzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc2V0Rm9ybSgpIHsKICAgICAgICAgICAgaGlkZUFsbEVycm9ycygpOwogICAgICAgICAgICBjdWx0dXJlU2VsZWN0LnZhbHVlID0gJ2NhcnJvdCc7CiAgICAgICAgICAgIGFyZWFJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICByYXRlSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgZ2VybWluYXRpb25JbnB1dC52YWx1ZSA9ICc4MCc7CiAgICAgICAgICAgIHJlc2VydmVJbnB1dC52YWx1ZSA9ICcxNSc7CiAgICAgICAgICAgIHBhY2tJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICByZXN1bHRUb3RhbFNlZWRzLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdFBhY2tzLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdFBsYW50cy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXN1bHRSZXNlcnZlQ291bnQudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgcmVzdWx0Tm90ZS50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICB1cGRhdGVGaWVsZHNGb3JDdWx0dXJlKCk7CiAgICAgICAgfQoKICAgICAgICBjdWx0dXJlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBoaWRlQWxsRXJyb3JzKCk7CiAgICAgICAgICAgIHVwZGF0ZUZpZWxkc0ZvckN1bHR1cmUoKTsKICAgICAgICAgICAgcmVzdWx0VG90YWxTZWVkcy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXN1bHRQYWNrcy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICByZXN1bHRQbGFudHMudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICAgICAgcmVzdWx0UmVzZXJ2ZUNvdW50LnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdE5vdGUudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICB9KTsKCiAgICAgICAgYnRuQ2FsY3VsYXRlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsY3VsYXRlKTsKCiAgICAgICAgYnRuUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldEZvcm0pOwoKICAgICAgICB1cGRhdGVGaWVsZHNGb3JDdWx0dXJlKCk7CiAgICB9KSgpOwo=