Калькулятор бетона для фундамента
Рассчитайте объём бетона и количество материалов для заливки фундамента любого типа — онлайн, бесплатно и без регистрации.
Как пользоваться калькулятором
1
Выберите тип фундамента — ленточный, плитный или столбчатый. От этого зависит формула расчёта.
2
Укажите размеры в метрах. Например, для ленточного фундамента длиной 30 м, шириной 0.4 м и глубиной 0.8 м объём составит 9.6 м³.
3
Выберите марку бетона (M200–M350) и задайте запас (обычно 10%). Запас компенсирует потери при заливке и неровности грунта.
4
Нажмите «Рассчитать» — калькулятор покажет объём бетона и количество цемента, песка, щебня и воды.
Примеры расчёта
Ленточный фундамент 10×8 м
Периметр ленты: (10+8)×2 = 36 м. Ширина 0.4 м, глубина 0.7 м. Объём: 36 × 0.4 × 0.7 = 10.08 м³. С запасом 10% — 11.09 м³. Цемента M300 потребуется ≈ 3 960 кг (80 мешков по 50 кг).
Плитный фундамент 5×3 м
Плита 5 на 3 метра, толщина 0.3 м. Объём: 5 × 3 × 0.3 = 4.5 м³. С запасом 10% — 4.95 м³. Цемента M300 ≈ 1 770 кг (36 мешков).
Столбчатый фундамент — 15 столбов
15 круглых столбов диаметром 0.3 м, высотой 1.5 м. Объём одного: π × (0.15)² × 1.5 ≈ 0.106 м³. Общий объём: 15 × 0.106 ≈ 1.59 м³. С запасом 10% — 1.75 м³.
Формулы расчёта
Объём бетона рассчитывается по геометрическим формулам, затем определяется масса смеси и количество компонентов:
Ленточный фундамент:
V = L × W × D, где L — длина ленты (периметр), W — ширина, D — глубина.
Плитный фундамент:
V = L × W × T, где L — длина, W — ширина, T — толщина плиты.
Столбчатый фундамент (круглый):
V = n × π × (d/2)² × h, где n — количество столбов, d — диаметр, h — высота.
Столбчатый фундамент (прямоугольный):
V = n × a × b × h, где a и b — стороны сечения, h — высота.
Масса компонентов:
Масса смеси = Vс запасом × 2400 кг/м³. Цемент, песок и щебень распределяются по пропорциям выбранной марки бетона. Вода = масса цемента × В/Ц.
Пошаговое объяснение
Калькулятор работает в четыре этапа:
Шаг 1. Определяется геометрический объём бетона по формуле, соответствующей типу фундамента. Все размеры переводятся в метры.
Шаг 2. К объёму добавляется запас (обычно 10%), чтобы компенсировать потери при транспортировке, укладке и возможные неровности основания.
Шаг 3. Объём с запасом умножается на плотность бетонной смеси (2400 кг/м³) — получается общая масса бетона.
Шаг 4. Масса распределяется на цемент, песок, щебень и воду согласно пропорциям выбранной марки. Результат округляется до 2 знаков после запятой.
Где применяется
- Частное домостроение — расчёт бетона для фундамента дома, гаража, бани или хозяйственной постройки.
- Заборы и ограждения — ленточный или столбчатый фундамент под забор из профлиста, кирпича или сетки.
- Террасы и беседки — столбчатый фундамент для лёгких конструкций, где не нужна сплошная плита.
- Подпорные стены — ленточный фундамент для стен, удерживающих грунт на участках с перепадом высот.
- Промышленные полы — плитный фундамент под склады, цеха и ангары с высокой нагрузкой.
- Дорожки и площадки — бетонная плита для парковки, садовой дорожки или зоны отдыха.
Важные нюансы
- Запас обязателен. При заливке часть бетона остаётся в миксере, часть уходит на неровности опалубки. Рекомендуем закладывать не менее 10% сверх расчётного объёма.
- Марка бетона имеет значение. M200 подходит для лёгких построек, M300 — для жилого дома, M350 — для конструкций с высокой нагрузкой. Не экономьте на марке — переделка фундамента стоит дороже.
- Погодные условия. В жару вода испаряется быстрее — бетон может недобрать прочность. В мороз заливка без противоморозных добавок недопустима. Оптимальная температура: +5…+25 °C.
- Уплотнение обязательно. После заливки бетон нужно вибрировать или штыковать, чтобы удалить пузырьки воздуха. Без уплотнения прочность снижается на 20–30%.
- Армирование. Данный калькулятор считает только бетон. Для расчёта арматуры используйте наш калькулятор арматуры — он доступен в каталоге строительных инструментов.
- Грунт и подготовка. На слабых грунтах (торф, насыпные почвы) фундамент должен быть глубже. Перед заливкой обязательно сделайте песчано-гравийную подушку.
Частые ошибки
- Забывают про запас. Ошибка новичков — заказать ровно расчётный объём. Бетон всегда уходит чуть больше, и недостающие полкуба придётся заказывать отдельно с доплатой за доставку.
- Путаница с единицами измерения. Все размеры должны быть в метрах. Если измерили в сантиметрах — разделите на 100. 40 см = 0.4 м, иначе объём получится в 100 раз больше реального.
- Неправильный тип фундамента. Для пучинистых грунтов плитный фундамент предпочтительнее ленточного. Ошибка в выборе типа ведёт к трещинам и деформациям.
- Игнорирование марки бетона. Использование M200 там, где нужен M300, сокращает срок службы фундамента вдвое. Всегда уточняйте проектную марку.
- Заливка без проекта. Калькулятор — помощник, а не замена инженерного расчёта. Для ответственных конструкций обратитесь к специалисту.
- Неправильные пропорции при ручном замесе. При самостоятельном приготовлении бетона используйте весы, а не вёдра «на глаз». Отклонение в пропорциях бетона на 10% снижает прочность на треть.
Ответы на частые вопросы
Какой запас бетона закладывать?
Стандартный запас — 10%. Если участок неровный, а опалубка самодельная — закладывайте 15%. Для точной лазерной опалубки на ровном участке достаточно 5–7%.
Можно ли использовать калькулятор для раствора кладки?
Нет, этот строительный калькулятор предназначен именно для бетона. Для кладочного раствора пропорции другие — воспользуйтесь специализированным инструментом в каталоге.
Сколько мешков цемента нужно на 1 куб бетона?
Для марки M300 нужно около 360 кг цемента на 1 м³ — это примерно 7–8 мешков по 50 кг. Точное число зависит от пропорций и влажности заполнителей.
Что такое В/Ц и почему это важно?
В/Ц — водоцементное отношение. Для M300 оно равно 0.5. Если добавить больше воды, бетон будет легче укладываться, но потеряет прочность. Меньше воды — смесь жёсткая, плохо заполняет опалубку.
Зачем нужен строительный калькулятор онлайн, если есть формула?
Строительный онлайн калькулятор экономит время: вы вводите размеры и сразу получаете не только объём, но и полную раскладку по материалам с учётом марки бетона и запаса. Это исключает арифметические ошибки.
Источники и справочные данные
Расчёт основан на ГОСТ 7473-2010 «Смеси бетонные. Технические условия», СП 63.13330.2018 «Бетонные и железобетонные конструкции», а также типовых пропорциях бетона для марок M200–M350. Плотность бетонной смеси принята равной 2400 кг/м³ в соответствии со средними значениями для тяжёлого бетона на гранитном щебне. Пропорции компонентов являются усреднёнными и могут незначительно отличаться в зависимости от влажности песка и фракции щебня.
Всё о расчёте бетона для фундамента: полное руководство
Почему важно точно рассчитать бетон
Фундамент — основа любого строения. Ошибка в расчёте объёма бетона ведёт к двум неприятным последствиям: либо материала не хватает и заливка прерывается, либо остаются лишние кубы, за которые вы заплатили, но не использовали. Прерванная заливка особенно опасна: на стыке свежего и схватившегося бетона образуется «холодный шов» — слабое место, где фундамент может треснуть.
Строительный калькулятор онлайн решает эту проблему за секунды. Вместо ручных вычислений с риском арифметической ошибки вы получаете точный объём и полную раскладку по материалам. Это экономит не только деньги, но и нервы.
Типы фундаментов: какой выбрать и как считать
Выбор типа фундамента зависит от грунта, веса строения и бюджета. Ленточный фундамент — самый популярный в частном строительстве. Бетонная лента проходит под всеми несущими стенами, равномерно распределяя нагрузку. Для дома 10×8 м периметр составит 36 м, и при ширине 0.4 м и глубине 0.7 м потребуется около 10 м³ бетона.
Плитный фундамент — сплошная плита под всей площадью здания. Идеален для слабых и пучинистых грунтов, но требует больше бетона. Для плиты 5 на 3 метра толщиной 0.3 м объём составит 4.5 м³. На первый взгляд кажется, что 5 3 умножить на 5 3 — это просто, но когда размеры нецелые, легко ошибиться.
Столбчатый фундамент — экономичное решение для лёгких построек: бань, беседок, террас. Бетон заливается в отдельные столбы-опоры. Расход бетона минимален, но требуется точный расчёт количества столбов и их сечения.
Пропорции бетона: что скрывается за маркой
Марка бетона определяет его прочность на сжатие. M200 выдерживает 200 кг/см², M300 — 300 кг/см². Для фундамента жилого дома стандарт — M300. Пропорции бетона для M300: на 1 часть цемента — 1.9 части песка и 3.7 части щебня. Водоцементное отношение (В/Ц) = 0.5, то есть на каждый килограмм цемента — пол-литра воды.
Почему вода так важна? Если В/Ц выше 0.5, бетон удобнее укладывать, но прочность падает. Если ниже — смесь жёсткая, её сложно распределить в опалубке. Опытные строители добавляют пластификаторы, чтобы сохранить удобоукладываемость при низком В/Ц.
Для M200 пропорции экономичнее (1:2.8:4.8, В/Ц=0.6), но такая смесь подходит только для лёгких построек. M350 (1:1.6:3.2, В/Ц=0.45) используется для ответственных конструкций с высокой нагрузкой — цокольных этажей, подпорных стен.
Практические советы по заливке фундамента
Перед заливкой подготовьте основание: снимите плодородный слой, уложите геотекстиль, сделайте песчаную подушку 15–20 см и утрамбуйте её. Арматурный каркас должен быть на 5 см выше подушки — для этого используйте пластиковые фиксаторы.
Заказывайте бетон с доставкой, если объём больше 2–3 м³. Мешать вручную 10 кубов — нереально. Убедитесь, что миксер сможет подъехать к опалубке. Если нет — арендуйте бетононасос.
После заливки накройте бетон плёнкой, чтобы вода не испарялась слишком быстро. В жару поливайте поверхность 2–3 раза в день в течение недели. Полную прочность бетон набирает за 28 суток — не нагружайте фундамент раньше.
Когда калькулятора недостаточно
Калькулятор бетона для фундамента — отличный помощник для частного строительства, но у него есть границы. Если вы строите дом на склоне, на слабых грунтах или в сейсмической зоне — обязателен профессиональный геологический и конструкторский расчёт. Экономия на проекте может обернуться трещинами в стенах и дорогостоящим ремонтом.
Также помните: данный инструмент считает только бетон. Для полной картины используйте калькулятор арматуры и калькулятор опалубки. Комплексный подход — залог надёжного фундамента, который простоит десятилетия.
CiAgICAgICAgKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHZhciBmb3VuZGF0aW9uVHlwZVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3VuZGF0aW9uLXR5cGUnKTsKICAgICAgICAgICAgdmFyIGNvbHVtbkZvcm1TZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sdW1uLWZvcm0nKTsKICAgICAgICAgICAgdmFyIGNhbGNCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FsYy1idG4nKTsKICAgICAgICAgICAgdmFyIHJlc2V0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2V0LWJ0bicpOwogICAgICAgICAgICB2YXIgZXJyb3JNc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FsYy1lcnJvcicpOwoKICAgICAgICAgICAgdmFyIHN0cmlwR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RyaXAtZ3JvdXAnKTsKICAgICAgICAgICAgdmFyIHNsYWJHcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzbGFiLWdyb3VwJyk7CiAgICAgICAgICAgIHZhciBjb2x1bW5Hcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2x1bW4tZ3JvdXAnKTsKICAgICAgICAgICAgdmFyIGNvbHVtblJvdW5kRmllbGRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbHVtbi1yb3VuZC1maWVsZHMnKTsKICAgICAgICAgICAgdmFyIGNvbHVtblJlY3RGaWVsZHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sdW1uLXJlY3QtZmllbGRzJyk7CgogICAgICAgICAgICB2YXIgY29uY3JldGVHcmFkZVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25jcmV0ZS1ncmFkZScpOwogICAgICAgICAgICB2YXIgcmVzZXJ2ZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc2VydmUtcGVyY2VudCcpOwoKICAgICAgICAgICAgdmFyIHJlc1ZvbHVtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMtdm9sdW1lJyk7CiAgICAgICAgICAgIHZhciByZXNWb2x1bWVSZXNlcnZlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlcy12b2x1bWUtcmVzZXJ2ZScpOwogICAgICAgICAgICB2YXIgcmVzQ2VtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlcy1jZW1lbnQnKTsKICAgICAgICAgICAgdmFyIHJlc1NhbmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzLXNhbmQnKTsKICAgICAgICAgICAgdmFyIHJlc0dyYXZlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMtZ3JhdmVsJyk7CiAgICAgICAgICAgIHZhciByZXNXYXRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXMtd2F0ZXInKTsKCiAgICAgICAgICAgIHZhciBwcm9wb3J0aW9ucyA9IHsKICAgICAgICAgICAgICAgICdNMjAwJzogeyBjZW1lbnQ6IDEsIHNhbmQ6IDIuOCwgZ3JhdmVsOiA0LjgsIHdjOiAwLjYwIH0sCiAgICAgICAgICAgICAgICAnTTI1MCc6IHsgY2VtZW50OiAxLCBzYW5kOiAyLjEsIGdyYXZlbDogMy45LCB3YzogMC41NiB9LAogICAgICAgICAgICAgICAgJ00zMDAnOiB7IGNlbWVudDogMSwgc2FuZDogMS45LCBncmF2ZWw6IDMuNywgd2M6IDAuNTAgfSwKICAgICAgICAgICAgICAgICdNMzUwJzogeyBjZW1lbnQ6IDEsIHNhbmQ6IDEuNiwgZ3JhdmVsOiAzLjIsIHdjOiAwLjQ1IH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIHZhciBkZW5zaXR5ID0gMjQwMDsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGhpZGVFcnJvcigpIHsKICAgICAgICAgICAgICAgIGVycm9yTXNnLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBlcnJvck1zZy50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBzaG93RXJyb3IobXNnKSB7CiAgICAgICAgICAgICAgICBlcnJvck1zZy50ZXh0Q29udGVudCA9IG1zZzsKICAgICAgICAgICAgICAgIGVycm9yTXNnLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiByZXNldFJlc3VsdHMoKSB7CiAgICAgICAgICAgICAgICByZXNWb2x1bWUudGV4dENvbnRlbnQgPSAnMCc7CiAgICAgICAgICAgICAgICByZXNWb2x1bWVSZXNlcnZlLnRleHRDb250ZW50ID0gJzAnOwogICAgICAgICAgICAgICAgcmVzQ2VtZW50LnRleHRDb250ZW50ID0gJzAnOwogICAgICAgICAgICAgICAgcmVzU2FuZC50ZXh0Q29udGVudCA9ICcwJzsKICAgICAgICAgICAgICAgIHJlc0dyYXZlbC50ZXh0Q29udGVudCA9ICcwJzsKICAgICAgICAgICAgICAgIHJlc1dhdGVyLnRleHRDb250ZW50ID0gJzAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBnZXRWYWwoaWQpIHsKICAgICAgICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICAgICAgICAgICAgIGlmICghZWwpIHJldHVybiBOYU47CiAgICAgICAgICAgICAgICB2YXIgdiA9IHBhcnNlRmxvYXQoZWwudmFsdWUpOwogICAgICAgICAgICAgICAgaWYgKGlzTmFOKHYpKSByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgcmV0dXJuIHY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUZpZWxkR3JvdXBzKCkgewogICAgICAgICAgICAgICAgaGlkZUVycm9yKCk7CiAgICAgICAgICAgICAgICB2YXIgZlR5cGUgPSBmb3VuZGF0aW9uVHlwZVNlbGVjdC52YWx1ZTsKICAgICAgICAgICAgICAgIHN0cmlwR3JvdXAuY2xhc3NMaXN0LnJlbW92ZSgnbm4tZ2VuLWZpZWxkLWdyb3VwLS12aXNpYmxlJyk7CiAgICAgICAgICAgICAgICBzbGFiR3JvdXAuY2xhc3NMaXN0LnJlbW92ZSgnbm4tZ2VuLWZpZWxkLWdyb3VwLS12aXNpYmxlJyk7CiAgICAgICAgICAgICAgICBjb2x1bW5Hcm91cC5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4tZmllbGQtZ3JvdXAtLXZpc2libGUnKTsKCiAgICAgICAgICAgICAgICBpZiAoZlR5cGUgPT09ICdzdHJpcCcpIHsKICAgICAgICAgICAgICAgICAgICBzdHJpcEdyb3VwLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1maWVsZC1ncm91cC0tdmlzaWJsZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmVHlwZSA9PT0gJ3NsYWInKSB7CiAgICAgICAgICAgICAgICAgICAgc2xhYkdyb3VwLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1maWVsZC1ncm91cC0tdmlzaWJsZScpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmVHlwZSA9PT0gJ2NvbHVtbicpIHsKICAgICAgICAgICAgICAgICAgICBjb2x1bW5Hcm91cC5jbGFzc0xpc3QuYWRkKCdubi1nZW4tZmllbGQtZ3JvdXAtLXZpc2libGUnKTsKICAgICAgICAgICAgICAgICAgICB1cGRhdGVDb2x1bW5Gb3JtRmllbGRzKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvbHVtbkZvcm1GaWVsZHMoKSB7CiAgICAgICAgICAgICAgICB2YXIgY0Zvcm0gPSBjb2x1bW5Gb3JtU2VsZWN0LnZhbHVlOwogICAgICAgICAgICAgICAgY29sdW1uUm91bmRGaWVsZHMuY2xhc3NMaXN0LnJlbW92ZSgnbm4tZ2VuLXN1Yi1ncm91cC0tdmlzaWJsZScpOwogICAgICAgICAgICAgICAgY29sdW1uUmVjdEZpZWxkcy5jbGFzc0xpc3QucmVtb3ZlKCdubi1nZW4tc3ViLWdyb3VwLS12aXNpYmxlJyk7CiAgICAgICAgICAgICAgICBpZiAoY0Zvcm0gPT09ICdyb3VuZCcpIHsKICAgICAgICAgICAgICAgICAgICBjb2x1bW5Sb3VuZEZpZWxkcy5jbGFzc0xpc3QuYWRkKCdubi1nZW4tc3ViLWdyb3VwLS12aXNpYmxlJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNGb3JtID09PSAncmVjdCcpIHsKICAgICAgICAgICAgICAgICAgICBjb2x1bW5SZWN0RmllbGRzLmNsYXNzTGlzdC5hZGQoJ25uLWdlbi1zdWItZ3JvdXAtLXZpc2libGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm91bmRhdGlvblR5cGVTZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB1cGRhdGVGaWVsZEdyb3VwcygpOwogICAgICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgICAgICAgICAgICBoaWRlRXJyb3IoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBjb2x1bW5Gb3JtU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdXBkYXRlQ29sdW1uRm9ybUZpZWxkcygpOwogICAgICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgICAgICAgICAgICBoaWRlRXJyb3IoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBmdW5jdGlvbiB2YWxpZGF0ZVBvc2l0aXZlKHZhbCwgbmFtZSkgewogICAgICAgICAgICAgICAgaWYgKGlzTmFOKHZhbCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ9Cf0L7Qu9C1IMKrJyArIG5hbWUgKyAnwrsg0LTQvtC70LbQvdC+INCx0YvRgtGMINGH0LjRgdC70L7QvC4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHZhbCA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfQn9C+0LvQtSDCqycgKyBuYW1lICsgJ8K7INC00L7Qu9C20L3QviDQsdGL0YLRjCDQsdC+0LvRjNGI0LUg0L3Rg9C70Y8uJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiB2YWxpZGF0ZUludCh2YWwsIG5hbWUpIHsKICAgICAgICAgICAgICAgIGlmIChpc05hTih2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfQn9C+0LvQtSDCqycgKyBuYW1lICsgJ8K7INC00L7Qu9C20L3QviDQsdGL0YLRjCDRhtC10LvRi9C8INGH0LjRgdC70L7QvC4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHZhbCA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICfQn9C+0LvQtSDCqycgKyBuYW1lICsgJ8K7INC00L7Qu9C20L3QviDQsdGL0YLRjCDQsdC+0LvRjNGI0LUg0L3Rg9C70Y8uJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IE1hdGguZmxvb3IodmFsKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAn0J/QvtC70LUgwqsnICsgbmFtZSArICfCuyDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0YbQtdC70YvQvCDRh9C40YHQu9C+0LwuJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjYWxjQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBoaWRlRXJyb3IoKTsKICAgICAgICAgICAgICAgIHZhciBmVHlwZSA9IGZvdW5kYXRpb25UeXBlU2VsZWN0LnZhbHVlOwogICAgICAgICAgICAgICAgdmFyIGdyYWRlID0gY29uY3JldGVHcmFkZVNlbGVjdC52YWx1ZTsKICAgICAgICAgICAgICAgIHZhciByZXNlcnZlID0gZ2V0VmFsKCdyZXNlcnZlLXBlcmNlbnQnKTsKCiAgICAgICAgICAgICAgICBpZiAoaXNOYU4ocmVzZXJ2ZSkgfHwgcmVzZXJ2ZSA8IDAgfHwgcmVzZXJ2ZSA+IDEwMCkgewogICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcign0JfQsNC/0LDRgSDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0YfQuNGB0LvQvtC8INC+0YIgMCDQtNC+IDEwMCUuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciB2b2x1bWUgPSAwOwogICAgICAgICAgICAgICAgdmFyIGVyciA9IG51bGw7CgogICAgICAgICAgICAgICAgaWYgKGZUeXBlID09PSAnc3RyaXAnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IGdldFZhbCgnc3RyaXAtbGVuZ3RoJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZCA9IGdldFZhbCgnc3RyaXAtd2lkdGgnKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVwID0gZ2V0VmFsKCdzdHJpcC1kZXB0aCcpOwogICAgICAgICAgICAgICAgICAgIGVyciA9IHZhbGlkYXRlUG9zaXRpdmUobGVuLCAn0JTQu9C40L3QsCDQu9C10L3RgtGLJykgfHwgdmFsaWRhdGVQb3NpdGl2ZSh3aWQsICfQqNC40YDQuNC90LAg0LvQtdC90YLRiycpIHx8IHZhbGlkYXRlUG9zaXRpdmUoZGVwLCAn0JPQu9GD0LHQuNC90LAg0LvQtdC90YLRiycpOwogICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsgc2hvd0Vycm9yKGVycik7IHJldHVybjsgfQogICAgICAgICAgICAgICAgICAgIHZvbHVtZSA9IGxlbiAqIHdpZCAqIGRlcDsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZlR5cGUgPT09ICdzbGFiJykgewogICAgICAgICAgICAgICAgICAgIHZhciBzbGVuID0gZ2V0VmFsKCdzbGFiLWxlbmd0aCcpOwogICAgICAgICAgICAgICAgICAgIHZhciBzd2lkID0gZ2V0VmFsKCdzbGFiLXdpZHRoJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIHN0aGkgPSBnZXRWYWwoJ3NsYWItdGhpY2tuZXNzJyk7CiAgICAgICAgICAgICAgICAgICAgZXJyID0gdmFsaWRhdGVQb3NpdGl2ZShzbGVuLCAn0JTQu9C40L3QsCDQv9C70LjRgtGLJykgfHwgdmFsaWRhdGVQb3NpdGl2ZShzd2lkLCAn0KjQuNGA0LjQvdCwINC/0LvQuNGC0YsnKSB8fCB2YWxpZGF0ZVBvc2l0aXZlKHN0aGksICfQotC+0LvRidC40L3QsCDQv9C70LjRgtGLJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgeyBzaG93RXJyb3IoZXJyKTsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICAgICAgdm9sdW1lID0gc2xlbiAqIHN3aWQgKiBzdGhpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmVHlwZSA9PT0gJ2NvbHVtbicpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBnZXRWYWwoJ2NvbHVtbi1jb3VudCcpOwogICAgICAgICAgICAgICAgICAgIGVyciA9IHZhbGlkYXRlSW50KGNvdW50LCAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtC+0LvQsdC+0LInKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7IHNob3dFcnJvcihlcnIpOyByZXR1cm47IH0KICAgICAgICAgICAgICAgICAgICB2YXIgY0Zvcm0gPSBjb2x1bW5Gb3JtU2VsZWN0LnZhbHVlOwogICAgICAgICAgICAgICAgICAgIHZhciBjaGVpZ2h0ID0gZ2V0VmFsKCdjb2x1bW4taGVpZ2h0Jyk7CiAgICAgICAgICAgICAgICAgICAgZXJyID0gdmFsaWRhdGVQb3NpdGl2ZShjaGVpZ2h0LCAn0JLRi9GB0L7RgtCwINGB0YLQvtC70LHQsCcpOwogICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsgc2hvd0Vycm9yKGVycik7IHJldHVybjsgfQogICAgICAgICAgICAgICAgICAgIHZhciBjb2xWb2wgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmIChjRm9ybSA9PT0gJ3JvdW5kJykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlhbSA9IGdldFZhbCgnY29sdW1uLWRpYW1ldGVyJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHZhbGlkYXRlUG9zaXRpdmUoZGlhbSwgJ9CU0LjQsNC80LXRgtGAINGB0YLQvtC70LHQsCcpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7IHNob3dFcnJvcihlcnIpOyByZXR1cm47IH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJhZGl1cyA9IGRpYW0gLyAyOwogICAgICAgICAgICAgICAgICAgICAgICBjb2xWb2wgPSBNYXRoLlBJICogcmFkaXVzICogcmFkaXVzICogY2hlaWdodDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2lkZUEgPSBnZXRWYWwoJ2NvbHVtbi1zaWRlLWEnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZGVCID0gZ2V0VmFsKCdjb2x1bW4tc2lkZS1iJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHZhbGlkYXRlUG9zaXRpdmUoc2lkZUEsICfQodGC0L7RgNC+0L3QsCBBJykgfHwgdmFsaWRhdGVQb3NpdGl2ZShzaWRlQiwgJ9Ch0YLQvtGA0L7QvdCwIEInKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgeyBzaG93RXJyb3IoZXJyKTsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbFZvbCA9IHNpZGVBICogc2lkZUIgKiBjaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2b2x1bWUgPSBjb3VudCAqIGNvbFZvbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAodm9sdW1lIDw9IDAgfHwgaXNOYU4odm9sdW1lKSB8fCAhaXNGaW5pdGUodm9sdW1lKSkgewogICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcign0J3QtSDRg9C00LDQu9C+0YHRjCDQstGL0YfQuNGB0LvQuNGC0Ywg0L7QsdGK0ZHQvC4g0J/RgNC+0LLQtdGA0YzRgtC1INCy0LLQtdC00ZHQvdC90YvQtSDQtNCw0L3QvdGL0LUuJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciB2b2x1bWVXaXRoUmVzZXJ2ZSA9IHZvbHVtZSAqICgxICsgcmVzZXJ2ZSAvIDEwMCk7CiAgICAgICAgICAgICAgICB2YXIgdG90YWxNYXNzID0gdm9sdW1lV2l0aFJlc2VydmUgKiBkZW5zaXR5OwogICAgICAgICAgICAgICAgdmFyIHByb3AgPSBwcm9wb3J0aW9uc1tncmFkZV07CiAgICAgICAgICAgICAgICB2YXIgc3VtUGFydHMgPSBwcm9wLmNlbWVudCArIHByb3Auc2FuZCArIHByb3AuZ3JhdmVsOwogICAgICAgICAgICAgICAgdmFyIGNlbWVudE1hc3MgPSB0b3RhbE1hc3MgLyBzdW1QYXJ0czsKICAgICAgICAgICAgICAgIHZhciBzYW5kTWFzcyA9IGNlbWVudE1hc3MgKiBwcm9wLnNhbmQ7CiAgICAgICAgICAgICAgICB2YXIgZ3JhdmVsTWFzcyA9IGNlbWVudE1hc3MgKiBwcm9wLmdyYXZlbDsKICAgICAgICAgICAgICAgIHZhciB3YXRlckxpdHJlcyA9IGNlbWVudE1hc3MgKiBwcm9wLndjOwoKICAgICAgICAgICAgICAgIHJlc1ZvbHVtZS50ZXh0Q29udGVudCA9IHZvbHVtZS50b0ZpeGVkKDIpOwogICAgICAgICAgICAgICAgcmVzVm9sdW1lUmVzZXJ2ZS50ZXh0Q29udGVudCA9IHZvbHVtZVdpdGhSZXNlcnZlLnRvRml4ZWQoMik7CiAgICAgICAgICAgICAgICByZXNDZW1lbnQudGV4dENvbnRlbnQgPSBjZW1lbnRNYXNzLnRvRml4ZWQoMSk7CiAgICAgICAgICAgICAgICByZXNTYW5kLnRleHRDb250ZW50ID0gc2FuZE1hc3MudG9GaXhlZCgxKTsKICAgICAgICAgICAgICAgIHJlc0dyYXZlbC50ZXh0Q29udGVudCA9IGdyYXZlbE1hc3MudG9GaXhlZCgxKTsKICAgICAgICAgICAgICAgIHJlc1dhdGVyLnRleHRDb250ZW50ID0gd2F0ZXJMaXRyZXMudG9GaXhlZCgxKTsKCiAgICAgICAgICAgICAgICBoaWRlRXJyb3IoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICByZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGFsbElucHV0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ubi1nZW4tY2FsLWZpZWxkJyk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbElucHV0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBpbnAgPSBhbGxJbnB1dHNbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKGlucC50YWdOYW1lID09PSAnU0VMRUNUJykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wLmlkID09PSAnZm91bmRhdGlvbi10eXBlJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLnZhbHVlID0gJ3N0cmlwJzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnAuaWQgPT09ICdjb25jcmV0ZS1ncmFkZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC52YWx1ZSA9ICdNMzAwJzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnAuaWQgPT09ICdjb2x1bW4tZm9ybScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC52YWx1ZSA9ICdyb3VuZCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wLmlkID09PSAncmVzZXJ2ZS1wZXJjZW50JykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLnZhbHVlID0gJzEwJzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC52YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdXBkYXRlRmllbGRHcm91cHMoKTsKICAgICAgICAgICAgICAgIHJlc2V0UmVzdWx0cygpOwogICAgICAgICAgICAgICAgaGlkZUVycm9yKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgdXBkYXRlRmllbGRHcm91cHMoKTsKICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgICAgfSkoKTsKICAgIA==