Калькулятор NPK удобрения
Точный расчёт количества удобрения по содержанию азота, фосфора и калия для любой площади сада или огорода.
—
Удобрения на участок
грамм
—
Упаковок потребуется
штук
Как пользоваться калькулятором
1
Укажите площадь участка в квадратных метрах — грядки, теплицы или всего огорода. Например: грядка 6 м², теплица 18 м², участок 150 м².
2
Выберите элемент питания (азот N, фосфор P₂O₅ или калий K₂O) и укажите нужную вам норму внесения действующего вещества в граммах на квадратный метр. Для большинства овощных культур норма составляет от 5 до 20 г/м² действующего вещества за одну подкормку.
3
Введите процент содержания элемента в вашем удобрении. Его смотрят на упаковке: первая цифра в маркировке NPK — азот, вторая — фосфор, третья — калий. Например, аммиачная селитра NH₄NO₃ содержит 34% азота (N), двойной суперфосфат — 46% P₂O₅, калийная соль — 40% K₂O.
4
Нажмите «Рассчитать». Результат покажет точное количество удобрения в граммах на ваш участок, с запасом 10%, на весь сезон и количество упаковок.
Примеры расчёта
Подкормка томатов азотом на грядке 12 м²
Норма внесения азота — 10 г/м². Используем аммиачную селитру с содержанием азота 34%. Расчёт: (12 × 10) / (34 / 100) = 120 / 0,34 = 353 г удобрения на грядку. С запасом 10% — 388 г. При трёх подкормках за сезон — около 1,16 кг.
Фосфор для картофеля на участке 50 м²
Норма P₂O₅ — 8 г/м². Берём двойной суперфосфат с содержанием P₂O₅ 46%. Расчёт: (50 × 8) / 0,46 = 400 / 0,46 = 870 г удобрения. Мешок 1 кг почти полностью уходит на одну подкормку.
Калий для клубники на 20 м²
Норма K₂O — 12 г/м². Калийная соль содержит 40% K₂O. Расчёт: (20 × 12) / 0,40 = 240 / 0,40 = 600 г удобрения. При фасовке по 500 г понадобится 2 упаковки.
Формулы расчёта
Основная формула пересчёта действующего вещества в физическое количество удобрения:
Количество удобрения (г) = (Площадь (м²) × Норма внесения д.в. (г/м²)) / (Содержание элемента (%) / 100)
Упрощённо: делим нужное количество действующего вещества на его долю в удобрении.
Доля элемента = Содержание (%) / 100
Расчёт с запасом 10%:
Масса с запасом = Масса × 1,10
Расход за сезон:
Сезонный расход = Масса на одну подкормку × Количество подкормок
Количество упаковок (округляется вверх):
Упаковок = ⌈ Сезонный расход (г) / Вес упаковки (г) ⌉
Нормы и ориентиры
Ориентировочные нормы внесения действующего вещества для основных культур (г/м² за одну подкормку):
- Томаты: N — 8–12, P₂O₅ — 6–10, K₂O — 10–15
- Огурцы: N — 10–15, P₂O₅ — 5–8, K₂O — 12–18
- Картофель: N — 8–12, P₂O₅ — 8–12, K₂O — 12–16
- Капуста: N — 12–18, P₂O₅ — 8–12, K₂O — 10–14
- Лук и чеснок: N — 6–10, P₂O₅ — 8–10, K₂O — 8–12
- Клубника: N — 5–8, P₂O₅ — 6–10, K₂O — 10–14
- Плодовые деревья: N — 15–25, P₂O₅ — 10–15, K₂O — 15–20 (на м² приствольного круга)
- Газон: N — 15–25, P₂O₅ — 5–10, K₂O — 8–12
- Розы: N — 8–12, P₂O₅ — 10–14, K₂O — 10–14
⚠️ Это ориентировочные значения. Точную дозировку всегда сверяйте с инструкцией на упаковке удобрения, рекомендациями для конкретного сорта и типом почвы.
Что влияет на результат
- Тип почвы. Песчаные почвы быстрее теряют азот, глинистые — удерживают элементы, но требуют более аккуратного внесения фосфора.
- Кислотность почвы. На кислых почвах фосфор усваивается хуже, может потребоваться корректировка дозы или предварительное известкование.
- Влажность и полив. При недостатке влаги корни не усваивают питательные вещества, и норма внесения может оказаться неэффективной.
- Фаза роста. В фазе активного роста и цветения потребность в элементах меняется: азот нужен для роста зелёной массы, фосфор — для корней и цветения, калий — для плодоношения.
- Сорт и гибрид. Интенсивные сорта и гибриды требуют больше питания, чем старые районированные сорта.
- Погода. В холодную погоду усвоение элементов замедляется, в жару — усиливается испарение и расход воды, что влияет на концентрацию почвенного раствора.
Важные нюансы
- Никогда не превышайте рекомендованную производителем дозировку удобрения — это может привести к ожогу корней и гибели растений.
- Всегда сверяйте процентное содержание NPK на упаковке: разные производители указывают разную концентрацию для одного и того же типа удобрения.
- Комплексные удобрения (нитроаммофоска, азофоска) содержат сразу несколько элементов — калькулятор считает по одному выбранному элементу, остальные вносятся автоматически.
- При внесении удобрений в жидком виде (фертигация) дозировку пересчитывают на объём воды — наш калькулятор считает сухое вещество, для жидких форм следуйте инструкции на упаковке.
- Сезонный расход считайте с учётом реального числа подкормок: для однолетних культур обычно 2–4 подкормки, для многолетних — 3–6 в зависимости от культуры.
- Храните удобрения в сухом месте, в закрытой упаковке, отдельно от пищевых продуктов и в недоступном для детей месте.
Частые ошибки
- Путаница между действующим веществом и физическим удобрением. 100 г аммиачной селитры — это не 100 г азота, а только 34 г. Ошибка в 3 раза может погубить посадки.
- Внесение «на глазок». Без весов или мерной ёмкости легко ошибиться в 2–3 раза. Используйте кухонные весы или мерные ложки с известным объёмом.
- Игнорирование типа почвы. На чернозёме нормы могут быть ниже справочных, на бедной супеси — выше. Слепое следование средним цифрам без учёта почвы снижает эффективность.
- Внесение удобрений по сухой почве. Гранулы должны растворяться. Без полива корни не получают питание, а концентрированный раствор может обжечь их.
- Одновременное смешивание несовместимых удобрений. Например, суперфосфат и мочевину нельзя смешивать заранее без потери азота. Изучайте таблицы совместимости.
- Расчёт без запаса на неравномерность. При ручном разбрасывании часть удобрения неизбежно распределяется неравномерно. Запас 5–10% помогает компенсировать это.
Ответы на частые вопросы
- Что означают цифры NPK на упаковке? Это процентное содержание азота (N), фосфора (P₂O₅) и калия (K₂O). Например, маркировка 10-20-20 означает 10% N, 20% P₂O₅ и 20% K₂O.
- Как перевести проценты в граммы? Умножьте массу удобрения на процент и разделите на 100. В 500 г удобрения с маркировкой 10-20-20 содержится 50 г N, 100 г P₂O₅ и 100 г K₂O.
- Можно ли смешивать разные удобрения? Да, но не все. Изучите таблицу совместимости. Мочевину и суперфосфат лучше вносить раздельно. Калийные удобрения обычно совместимы с большинством других.
- Нужно ли учитывать NPK из органики? Да, если вы вносите навоз, компост или перегной, дозу минеральных удобрений снижают. В 1 кг перепревшего навоза примерно 5 г N, 3 г P₂O₅ и 6 г K₂O.
- Как часто нужно подкармливать? Обычно 2–4 раза за сезон для овощей, 3–5 для цветов, 1–2 для газона. Первая подкормка — через 2–3 недели после всходов или высадки рассады.
- Что делать при признаках передозировки? Обильно пролейте почву водой для снижения концентрации солей. При сильном ожоге листьев удалите повреждённые части и временно прекратите подкормки.
Источники и справочные данные
- Агрономические справочные нормы внесения минеральных удобрений для овощных, плодовых и декоративных культур.
- Инструкции производителей удобрений и средств защиты растений — основной источник точных дозировок.
- Рекомендации по выращиванию овощных, плодовых и декоративных культур в открытом и защищённом грунте.
- Практические нормы расхода удобрений, проверенные на садовых и огородных участках в условиях средней полосы России.
- Точные нормы применения всегда берите из официальной инструкции конкретного препарата или удобрения — данные калькулятора являются ориентировочными.
Калькулятор NPK удобрения помогает быстро и точно рассчитать количество минерального удобрения в граммах на любую площадь — грядку, теплицу или целый участок. Вы выбираете нужный элемент питания (азот, фосфор или калий), указываете норму внесения действующего вещества в граммах на квадратный метр и процентное содержание элемента в удобрении. Расчёт подходит для сада и огорода, для томатов, огурцов, картофеля, клубники, газона и других культур. Все формулы основаны на агрономических справочных нормах и инструкциях производителей.
CiAgKGZ1bmN0aW9uKCkgewogICAgdmFyIGFyZWFJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCducGstYXJlYScpOwogICAgdmFyIGVsZW1lbnRTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnBrLWVsZW1lbnQnKTsKICAgIHZhciBkb3NlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnBrLWRvc2UnKTsKICAgIHZhciBjb250ZW50SW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnBrLWNvbnRlbnQnKTsKICAgIHZhciBjcm9wU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25way1jcm9wJyk7CiAgICB2YXIgZmVlZGluZ3NJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCducGstZmVlZGluZ3MnKTsKICAgIHZhciBwYWNrYWdlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnBrLXBhY2thZ2UnKTsKICAgIHZhciBjYWxjdWxhdGVCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnBrLWNhbGN1bGF0ZScpOwogICAgdmFyIHJlc2V0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25way1yZXNldCcpOwogICAgdmFyIGNyb3BIaW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25way1jcm9wLWhpbnQnKTsKICAgIHZhciByZXN1bHRNYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25way1yZXN1bHQtbWFpbicpOwogICAgdmFyIHJlc3VsdFJlc2VydmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnBrLXJlc3VsdC1yZXNlcnZlJyk7CiAgICB2YXIgcmVzdWx0U2Vhc29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25way1yZXN1bHQtc2Vhc29uJyk7CiAgICB2YXIgcmVzdWx0UGFja2FnZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnBrLXJlc3VsdC1wYWNrYWdlcycpOwogICAgdmFyIHJlc3VsdERldGFpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCducGstcmVzdWx0LWRldGFpbCcpOwoKICAgIHZhciBjcm9wRGVmYXVsdHMgPSB7CiAgICAgIHRvbWF0bzogeyBlbGVtZW50OiAnTicsIGRvc2U6IDEwLCBsYWJlbDogJ9Ci0L7QvNCw0YLRizog0YDQtdC60L7QvNC10L3QtNGD0LXQvNCw0Y8g0L3QvtGA0LzQsCBOIOKAlCAxMCDQsy/QvMKyJyB9LAogICAgICBjdWN1bWJlcjogeyBlbGVtZW50OiAnTicsIGRvc2U6IDEyLCBsYWJlbDogJ9Ce0LPRg9GA0YbRizog0YDQtdC60L7QvNC10L3QtNGD0LXQvNCw0Y8g0L3QvtGA0LzQsCBOIOKAlCAxMiDQsy/QvMKyJyB9LAogICAgICBwb3RhdG86IHsgZWxlbWVudDogJ1AnLCBkb3NlOiAxMCwgbGFiZWw6ICfQmtCw0YDRgtC+0YTQtdC70Yw6INGA0LXQutC+0LzQtdC90LTRg9C10LzQsNGPINC90L7RgNC80LAgUOKCgk/igoUg4oCUIDEwINCzL9C8wrInIH0sCiAgICAgIGNhYmJhZ2U6IHsgZWxlbWVudDogJ04nLCBkb3NlOiAxNSwgbGFiZWw6ICfQmtCw0L/Rg9GB0YLQsDog0YDQtdC60L7QvNC10L3QtNGD0LXQvNCw0Y8g0L3QvtGA0LzQsCBOIOKAlCAxNSDQsy/QvMKyJyB9LAogICAgICBvbmlvbjogeyBlbGVtZW50OiAnUCcsIGRvc2U6IDksIGxhYmVsOiAn0JvRg9C6OiDRgNC10LrQvtC80LXQvdC00YPQtdC80LDRjyDQvdC+0YDQvNCwIFDigoJP4oKFIOKAlCA5INCzL9C8wrInIH0sCiAgICAgIHN0cmF3YmVycnk6IHsgZWxlbWVudDogJ0snLCBkb3NlOiAxMiwgbGFiZWw6ICfQmtC70YPQsdC90LjQutCwOiDRgNC10LrQvtC80LXQvdC00YPQtdC80LDRjyDQvdC+0YDQvNCwIEvigoJPIOKAlCAxMiDQsy/QvMKyJyB9LAogICAgICByb3NlOiB7IGVsZW1lbnQ6ICdQJywgZG9zZTogMTIsIGxhYmVsOiAn0KDQvtC30Ys6INGA0LXQutC+0LzQtdC90LTRg9C10LzQsNGPINC90L7RgNC80LAgUOKCgk/igoUg4oCUIDEyINCzL9C8wrInIH0sCiAgICAgIGxhd246IHsgZWxlbWVudDogJ04nLCBkb3NlOiAyMCwgbGFiZWw6ICfQk9Cw0LfQvtC9OiDRgNC10LrQvtC80LXQvdC00YPQtdC80LDRjyDQvdC+0YDQvNCwIE4g4oCUIDIwINCzL9C8wrInIH0sCiAgICAgIG90aGVyOiB7IGVsZW1lbnQ6IG51bGwsIGRvc2U6IG51bGwsIGxhYmVsOiAn0JLQstC10LTQuNGC0LUg0L3QvtGA0LzRgyDQstGA0YPRh9C90YPRjiwg0L7RgNC40LXQvdGC0LjRgNGD0Y/RgdGMINC90LAg0YDQtdC60L7QvNC10L3QtNCw0YbQuNC4INC00LvRjyDQstCw0YjQtdC5INC60YPQu9GM0YLRg9GA0YsuJyB9CiAgICB9OwoKICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3JzKCkgewogICAgICB2YXIgZXJyb3JzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm5uLWdlbi1jYWwtZXJyb3ItbXNnJyk7CiAgICAgIGVycm9ycy5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7IGVsLmNsYXNzTGlzdC5yZW1vdmUoJ3Zpc2libGUnKTsgZWwudGV4dENvbnRlbnQgPSAnJzsgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gc2hvd0Vycm9yKGlkLCBtZXNzYWdlKSB7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgaWYgKGVsKSB7CiAgICAgICAgZWwudGV4dENvbnRlbnQgPSBtZXNzYWdlOwogICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHZhbGlkYXRlKCkgewogICAgICBjbGVhckVycm9ycygpOwogICAgICB2YXIgdmFsaWQgPSB0cnVlOwogICAgICB2YXIgYXJlYSA9IHBhcnNlRmxvYXQoYXJlYUlucHV0LnZhbHVlKTsKICAgICAgdmFyIGRvc2UgPSBwYXJzZUZsb2F0KGRvc2VJbnB1dC52YWx1ZSk7CiAgICAgIHZhciBjb250ZW50ID0gcGFyc2VGbG9hdChjb250ZW50SW5wdXQudmFsdWUpOwogICAgICB2YXIgZmVlZGluZ3MgPSBwYXJzZUludChmZWVkaW5nc0lucHV0LnZhbHVlLCAxMCk7CiAgICAgIHZhciBwYWNrYWdlV2VpZ2h0ID0gcGFyc2VGbG9hdChwYWNrYWdlSW5wdXQudmFsdWUpOwoKICAgICAgaWYgKCFhcmVhSW5wdXQudmFsdWUudHJpbSgpIHx8IGlzTmFOKGFyZWEpIHx8IGFyZWEgPD0gMCkgewogICAgICAgIHNob3dFcnJvcignbnBrLWFyZWEtZXJyb3InLCAn0JLQstC10LTQuNGC0LUg0L/QvtC70L7QttC40YLQtdC70YzQvdC+0LUg0YfQuNGB0LvQvi4nKTsKICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICB9CiAgICAgIGlmICghZG9zZUlucHV0LnZhbHVlLnRyaW0oKSB8fCBpc05hTihkb3NlKSB8fCBkb3NlIDw9IDApIHsKICAgICAgICBzaG93RXJyb3IoJ25way1kb3NlLWVycm9yJywgJ9CS0LLQtdC00LjRgtC1INC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3QvtC1INGH0LjRgdC70L4uJyk7CiAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgfQogICAgICBpZiAoIWNvbnRlbnRJbnB1dC52YWx1ZS50cmltKCkgfHwgaXNOYU4oY29udGVudCkgfHwgY29udGVudCA8PSAwIHx8IGNvbnRlbnQgPiAxMDApIHsKICAgICAgICBzaG93RXJyb3IoJ25way1jb250ZW50LWVycm9yJywgJ9CS0LLQtdC00LjRgtC1INGH0LjRgdC70L4g0L7RgiAwLDEg0LTQviAxMDAuJyk7CiAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgfQogICAgICBpZiAoZmVlZGluZ3NJbnB1dC52YWx1ZS50cmltKCkgPT09ICcnIHx8IGlzTmFOKGZlZWRpbmdzKSB8fCBmZWVkaW5ncyA8IDApIHsKICAgICAgICBzaG93RXJyb3IoJ25way1mZWVkaW5ncy1lcnJvcicsICfQktCy0LXQtNC40YLQtSDRhtC10LvQvtC1INGH0LjRgdC70L4g0L7RgiAwLicpOwogICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgIH0KICAgICAgaWYgKHBhY2thZ2VJbnB1dC52YWx1ZS50cmltKCkgIT09ICcnICYmIChpc05hTihwYWNrYWdlV2VpZ2h0KSB8fCBwYWNrYWdlV2VpZ2h0IDw9IDApKSB7CiAgICAgICAgc2hvd0Vycm9yKCducGstcGFja2FnZS1lcnJvcicsICfQktCy0LXQtNC40YLQtSDQv9C+0LvQvtC20LjRgtC10LvRjNC90L7QtSDRh9C40YHQu9C+INC40LvQuCDQvtGB0YLQsNCy0YzRgtC1INC/0YPRgdGC0YvQvC4nKTsKICAgICAgICB2YWxpZCA9IGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB2YWxpZDsKICAgIH0KCiAgICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CiAgICAgIGlmICghdmFsaWRhdGUoKSkgewogICAgICAgIHJlc3VsdE1haW4udGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICByZXN1bHRSZXNlcnZlLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgcmVzdWx0U2Vhc29uLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgcmVzdWx0UGFja2FnZXMudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgICByZXN1bHREZXRhaWwudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBhcmVhID0gcGFyc2VGbG9hdChhcmVhSW5wdXQudmFsdWUpOwogICAgICB2YXIgZG9zZSA9IHBhcnNlRmxvYXQoZG9zZUlucHV0LnZhbHVlKTsKICAgICAgdmFyIGNvbnRlbnQgPSBwYXJzZUZsb2F0KGNvbnRlbnRJbnB1dC52YWx1ZSk7CiAgICAgIHZhciBmZWVkaW5ncyA9IHBhcnNlSW50KGZlZWRpbmdzSW5wdXQudmFsdWUsIDEwKSB8fCAxOwogICAgICB2YXIgcGFja2FnZVdlaWdodCA9IHBhcnNlRmxvYXQocGFja2FnZUlucHV0LnZhbHVlKTsKICAgICAgdmFyIGhhc1BhY2thZ2UgPSAhaXNOYU4ocGFja2FnZVdlaWdodCkgJiYgcGFja2FnZVdlaWdodCA+IDA7CgogICAgICB2YXIgdG90YWxBY3QgPSBhcmVhICogZG9zZTsKICAgICAgdmFyIGZyYWN0aW9uID0gY29udGVudCAvIDEwMDsKICAgICAgdmFyIGZlcnRpbGl6ZXJNYXNzID0gdG90YWxBY3QgLyBmcmFjdGlvbjsKCiAgICAgIHJlc3VsdE1haW4udGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKGZlcnRpbGl6ZXJNYXNzICogMTAwKSAvIDEwMDsKCiAgICAgIHZhciB3aXRoUmVzZXJ2ZSA9IGZlcnRpbGl6ZXJNYXNzICogMS4xMDsKICAgICAgcmVzdWx0UmVzZXJ2ZS50ZXh0Q29udGVudCA9IE1hdGgucm91bmQod2l0aFJlc2VydmUgKiAxMDApIC8gMTAwOwoKICAgICAgdmFyIHNlYXNvbmFsID0gZmVydGlsaXplck1hc3MgKiBmZWVkaW5nczsKICAgICAgcmVzdWx0U2Vhc29uLnRleHRDb250ZW50ID0gTWF0aC5yb3VuZChzZWFzb25hbCAqIDEwMCkgLyAxMDA7CgogICAgICBpZiAoaGFzUGFja2FnZSkgewogICAgICAgIHZhciBwYWNrYWdlc05lZWRlZCA9IE1hdGguY2VpbChzZWFzb25hbCAvIHBhY2thZ2VXZWlnaHQpOwogICAgICAgIHJlc3VsdFBhY2thZ2VzLnRleHRDb250ZW50ID0gcGFja2FnZXNOZWVkZWQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzdWx0UGFja2FnZXMudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgfQoKICAgICAgdmFyIGVsZW1lbnROYW1lID0gZWxlbWVudFNlbGVjdC5vcHRpb25zW2VsZW1lbnRTZWxlY3Quc2VsZWN0ZWRJbmRleF0udGV4dDsKICAgICAgdmFyIGRldGFpbFBhcnRzID0gW107CiAgICAgIGRldGFpbFBhcnRzLnB1c2goJ9Cf0LvQvtGJ0LDQtNGMOiAnICsgYXJlYSArICcg0LzCsiwg0L3QvtGA0LzQsCAnICsgZWxlbWVudE5hbWUgKyAnOiAnICsgZG9zZSArICcg0LMv0LzCsi4nKTsKICAgICAgZGV0YWlsUGFydHMucHVzaCgn0KHQvtC00LXRgNC20LDQvdC40LUg0LIg0YPQtNC+0LHRgNC10L3QuNC4OiAnICsgY29udGVudCArICclLicpOwogICAgICBkZXRhaWxQYXJ0cy5wdXNoKCfQlNC+0LvRjyDQtNC10LnRgdGC0LLRg9GO0YnQtdCz0L4g0LLQtdGJ0LXRgdGC0LLQsDogJyArIChNYXRoLnJvdW5kKGZyYWN0aW9uICogMTAwMDApIC8gMTAwKSArICclLicpOwogICAgICBkZXRhaWxQYXJ0cy5wdXNoKCfQktGB0LXQs9C+INC00LXQudGB0YLQstGD0Y7RidC10LPQviDQstC10YnQtdGB0YLQstCwINC90YPQttC90L46ICcgKyAoTWF0aC5yb3VuZCh0b3RhbEFjdCAqIDEwMCkgLyAxMDApICsgJyDQsy4nKTsKICAgICAgZGV0YWlsUGFydHMucHVzaCgn0KTQuNC30LjRh9C10YHQutC+0LPQviDRg9C00L7QsdGA0LXQvdC40Y86ICcgKyAoTWF0aC5yb3VuZChmZXJ0aWxpemVyTWFzcyAqIDEwMCkgLyAxMDApICsgJyDQsy4nKTsKICAgICAgaWYgKGZlZWRpbmdzID4gMSkgewogICAgICAgIGRldGFpbFBhcnRzLnB1c2goJ9Cf0L7QtNC60L7RgNC80L7QuiDQt9CwINGB0LXQt9C+0L06ICcgKyBmZWVkaW5ncyArICcsINC+0LHRidC40Lkg0YDQsNGB0YXQvtC0OiAnICsgKE1hdGgucm91bmQoc2Vhc29uYWwgKiAxMDApIC8gMTAwKSArICcg0LMuJyk7CiAgICAgIH0KICAgICAgaWYgKGhhc1BhY2thZ2UpIHsKICAgICAgICBkZXRhaWxQYXJ0cy5wdXNoKCfQo9C/0LDQutC+0LLQvtC6INC/0L4gJyArIHBhY2thZ2VXZWlnaHQgKyAnINCzOiAnICsgTWF0aC5jZWlsKHNlYXNvbmFsIC8gcGFja2FnZVdlaWdodCkgKyAnINGI0YIuJyk7CiAgICAgIH0KICAgICAgcmVzdWx0RGV0YWlsLnRleHRDb250ZW50ID0gZGV0YWlsUGFydHMuam9pbignICcpOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlc2V0KCkgewogICAgICBhcmVhSW5wdXQudmFsdWUgPSAnJzsKICAgICAgZG9zZUlucHV0LnZhbHVlID0gJyc7CiAgICAgIGNvbnRlbnRJbnB1dC52YWx1ZSA9ICcnOwogICAgICBmZWVkaW5nc0lucHV0LnZhbHVlID0gJzEnOwogICAgICBwYWNrYWdlSW5wdXQudmFsdWUgPSAnJzsKICAgICAgY3JvcFNlbGVjdC52YWx1ZSA9ICcnOwogICAgICBlbGVtZW50U2VsZWN0LnZhbHVlID0gJ04nOwogICAgICBjcm9wSGludC50ZXh0Q29udGVudCA9ICcnOwogICAgICByZXN1bHRNYWluLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgIHJlc3VsdFJlc2VydmUudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgICAgcmVzdWx0U2Vhc29uLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgIHJlc3VsdFBhY2thZ2VzLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgIHJlc3VsdERldGFpbC50ZXh0Q29udGVudCA9ICcnOwogICAgICBjbGVhckVycm9ycygpOwogICAgfQoKICAgIGNyb3BTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjcm9wID0gY3JvcFNlbGVjdC52YWx1ZTsKICAgICAgaWYgKGNyb3AgJiYgY3JvcERlZmF1bHRzW2Nyb3BdKSB7CiAgICAgICAgdmFyIGRlZiA9IGNyb3BEZWZhdWx0c1tjcm9wXTsKICAgICAgICBjcm9wSGludC50ZXh0Q29udGVudCA9IGRlZi5sYWJlbDsKICAgICAgICBpZiAoZGVmLmVsZW1lbnQpIHsKICAgICAgICAgIGVsZW1lbnRTZWxlY3QudmFsdWUgPSBkZWYuZWxlbWVudDsKICAgICAgICB9CiAgICAgICAgaWYgKGRlZi5kb3NlKSB7CiAgICAgICAgICBkb3NlSW5wdXQudmFsdWUgPSBkZWYuZG9zZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3JvcEhpbnQudGV4dENvbnRlbnQgPSAnJzsKICAgICAgfQogICAgfSk7CgogICAgY2FsY3VsYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsY3VsYXRlKTsKICAgIHJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVzZXQpOwoKICAgIHZhciBpbnB1dEZpZWxkcyA9IFthcmVhSW5wdXQsIGRvc2VJbnB1dCwgY29udGVudElucHV0LCBmZWVkaW5nc0lucHV0LCBwYWNrYWdlSW5wdXRdOwogICAgaW5wdXRGaWVsZHMuZm9yRWFjaChmdW5jdGlvbihmaWVsZCkgewogICAgICBmaWVsZC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBlcnJvckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmllbGQuaWQgKyAnLWVycm9yJyk7CiAgICAgICAgaWYgKGVycm9yRWwgJiYgZXJyb3JFbC5jbGFzc0xpc3QuY29udGFpbnMoJ3Zpc2libGUnKSkgewogICAgICAgICAgdmFyIHZhbCA9IHBhcnNlRmxvYXQoZmllbGQudmFsdWUpOwogICAgICAgICAgaWYgKCFpc05hTih2YWwpICYmIHZhbCA+IDApIHsKICAgICAgICAgICAgZXJyb3JFbC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7CiAgICAgICAgICAgIGVycm9yRWwudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfSkoKTsK