Калькулятор чистоты вещества
Определите массовую долю основного компонента и примесей в образце — онлайн, с формулами и справочной базой.
—
Чистота вещества
% масс.
—
Масса чистого вещества
г
—
Количество чистого вещества
моль
Как пользоваться
1
Выберите режим: «Известна масса примесей» или «Известна масса чистого вещества» — в зависимости от того, какие данные у вас есть после анализа образца.
2
Введите общую массу исследуемого образца в граммах (например, 10 г навески соли).
3
Укажите известное значение — массу примесей или массу чистого компонента (например, 0,3 г примесей).
4
При необходимости добавьте молярную массу вещества (г/моль), чтобы также вычислить химическое количество в молях. Нажмите «Рассчитать» — результат появится в правой панели.
Примеры использования
Контроль качества технической соли (NaCl)
Масса образца: 12,00 г. Масса примесей (песок, влага): 0,48 г. → Чистота: 96,00%. Масса чистого NaCl: 11,52 г. Доля примесей: 4,00%.
Анализ лабораторного реактива
Масса навески: 2,500 г. Масса чистого KMnO₄: 2,475 г. → Чистота: 99,00%. Примеси: 0,025 г. При молярной массе 158,03 г/моль — количество вещества 0,01566 моль.
Оценка минерального сырья
Масса образца руды: 500,0 г. Масса пустой породы (примесей): 135,0 г. → Чистота целевого минерала: 73,00%. Масса ценного компонента: 365,0 г.
Важные нюансы
- Чистота всегда выражается в массовых процентах (% масс.) и не может превышать 100% — проверяйте корректность вводимых значений.
- Масса примесей не может быть больше общей массы образца. Если вы получили такое значение, перепроверьте исходные данные взвешивания.
- Молярная масса указывается в г/моль и используется только для расчёта количества вещества (моль). Это опциональный параметр, не влияющий на расчёт чистоты.
- Техника безопасности: при лабораторном определении чистоты всегда работайте в перчатках и защитных очках. Не вдыхайте пыль измельчённых образцов, используйте вытяжной шкаф при работе с летучими веществами.
- Результат расчёта округляется до двух знаков после запятой, что соответствует общепринятой лабораторной точности для учебных и аналитических задач с навесками до 1 кг.
Источники данных
IUPAC Gold Book — международный свод химической терминологии, включая определения чистоты, массовой доли и состава вещества (DOI: 10.1351/goldbook).
NIST Chemistry WebBook — база данных Национального института стандартов и технологий США, содержит справочные значения молярных масс и термодинамических констант.
ГОСТ 8.563-2009 — государственный стандарт РФ «Государственная система обеспечения единства измерений. Методики измерений», регламентирующий подходы к оценке чистоты веществ.
Общая и неорганическая химия (под ред. Ю.Д. Третьякова) — учебные справочные данные по расчёту массовой доли компонентов в смесях и химических соединениях, используемые в вузовском курсе.
Калькулятор чистоты вещества — это удобный онлайн-инструмент для быстрого расчёта массовой доли основного компонента и примесей в твёрдых, жидких или газообразных образцах. Он подходит студентам химических специальностей, лаборантам, инженерам-технологам и специалистам по контролю качества. Расчёт основан на фундаментальных химических формулах и общепринятых справочных данных IUPAC и NIST. Используйте калькулятор для проверки качества реактивов, анализа состава минерального сырья или учебных лабораторных работ.
CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG1vZGVTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FsYy1tb2RlJyk7CiAgICAgICAgdmFyIGltcHVyaXRpZXNHcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXB1cml0aWVzLWdyb3VwJyk7CiAgICAgICAgdmFyIHB1cmVHcm91cCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwdXJlLWdyb3VwJyk7CgogICAgICAgIHZhciBzYW1wbGVNYXNzSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FtcGxlLW1hc3MnKTsKICAgICAgICB2YXIgaW1wdXJpdGllc01hc3NJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbXB1cml0aWVzLW1hc3MnKTsKICAgICAgICB2YXIgcHVyZU1hc3NJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwdXJlLW1hc3MnKTsKICAgICAgICB2YXIgbW9sYXJNYXNzSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9sYXItbWFzcycpOwoKICAgICAgICB2YXIgZXJyb3JTYW1wbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3Itc2FtcGxlLW1hc3MnKTsKICAgICAgICB2YXIgZXJyb3JJbXB1cml0aWVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yLWltcHVyaXRpZXMtbWFzcycpOwogICAgICAgIHZhciBlcnJvclB1cmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3ItcHVyZS1tYXNzJyk7CiAgICAgICAgdmFyIGVycm9yTW9sYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3ItbW9sYXItbWFzcycpOwoKICAgICAgICB2YXIgcmVzdWx0UHVyaXR5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1wdXJpdHknKTsKICAgICAgICB2YXIgcmVzdWx0UHVyZU1hc3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LXB1cmUtbWFzcycpOwogICAgICAgIHZhciByZXN1bHRJbXB1cml0aWVzTWFzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtaW1wdXJpdGllcy1tYXNzJyk7CiAgICAgICAgdmFyIHJlc3VsdEltcHVyaXRpZXNQZXJjZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC1pbXB1cml0aWVzLXBlcmNlbnQnKTsKICAgICAgICB2YXIgcmVzdWx0TW9sZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LW1vbGVzJyk7CiAgICAgICAgdmFyIG1vbGVzUmVzdWx0SXRlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2xlcy1yZXN1bHQtaXRlbScpOwoKICAgICAgICB2YXIgY2FsY3VsYXRlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbGN1bGF0ZS1idG4nKTsKICAgICAgICB2YXIgcmVzZXRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzZXQtYnRuJyk7CgogICAgICAgIGZ1bmN0aW9uIGNsZWFyRXJyb3JzKCkgewogICAgICAgICAgICBlcnJvclNhbXBsZS50ZXh0Q29udGVudCA9ICcnOwogICAgICAgICAgICBlcnJvckltcHVyaXRpZXMudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgZXJyb3JQdXJlLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgIGVycm9yTW9sYXIudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc2V0UmVzdWx0cygpIHsKICAgICAgICAgICAgcmVzdWx0UHVyaXR5LnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdFB1cmVNYXNzLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdEltcHVyaXRpZXNNYXNzLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdEltcHVyaXRpZXNQZXJjZW50LnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIHJlc3VsdE1vbGVzLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICAgICAgICAgIG1vbGVzUmVzdWx0SXRlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gdG9nZ2xlTW9kZUdyb3VwcygpIHsKICAgICAgICAgICAgdmFyIG1vZGUgPSBtb2RlU2VsZWN0LnZhbHVlOwogICAgICAgICAgICBpZiAobW9kZSA9PT0gJ2ltcHVyaXRpZXMnKSB7CiAgICAgICAgICAgICAgICBpbXB1cml0aWVzR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdmbGV4JzsKICAgICAgICAgICAgICAgIHB1cmVHcm91cC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgcHVyZU1hc3NJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgZXJyb3JQdXJlLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpbXB1cml0aWVzR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgIHB1cmVHcm91cC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgICAgICAgICAgaW1wdXJpdGllc01hc3NJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICAgICAgZXJyb3JJbXB1cml0aWVzLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgICAgICAgIGNsZWFyRXJyb3JzKCk7CiAgICAgICAgfQoKICAgICAgICBtb2RlU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRvZ2dsZU1vZGVHcm91cHMpOwoKICAgICAgICBmdW5jdGlvbiBwYXJzZVBvc2l0aXZlTnVtYmVyKHZhbHVlLCBmaWVsZE5hbWUpIHsKICAgICAgICAgICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UsIGVycm9yOiAn0J/QvtC70LUgwqsnICsgZmllbGROYW1lICsgJ8K7INC+0LHRj9C30LDRgtC10LvRjNC90L4g0LTQu9GPINC30LDQv9C+0LvQvdC10L3QuNGPLicsIG51bTogTmFOIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIG51bSA9IHBhcnNlRmxvYXQodmFsdWUpOwogICAgICAgICAgICBpZiAoaXNOYU4obnVtKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBlcnJvcjogJ9CS0LLQtdC00LjRgtC1INC60L7RgNGA0LXQutGC0L3QvtC1INGH0LjRgdC70L4g0LIg0L/QvtC70LUgwqsnICsgZmllbGROYW1lICsgJ8K7LicsIG51bTogTmFOIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG51bSA8IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICfQl9C90LDRh9C10L3QuNC1INCyINC/0L7Qu9C1IMKrJyArIGZpZWxkTmFtZSArICfCuyDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L7RgtGA0LjRhtCw0YLQtdC70YzQvdGL0LwuJywgbnVtOiBOYU4gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzRmluaXRlKG51bSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3I6ICfQl9C90LDRh9C10L3QuNC1INCyINC/0L7Qu9C1IMKrJyArIGZpZWxkTmFtZSArICfCuyDRgdC70LjRiNC60L7QvCDQstC10LvQuNC60L4uJywgbnVtOiBOYU4gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZXJyb3I6ICcnLCBudW06IG51bSB9OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZm9ybWF0TnVtYmVyKG51bSkgewogICAgICAgICAgICBpZiAoaXNOYU4obnVtKSB8fCAhaXNGaW5pdGUobnVtKSkgcmV0dXJuICfigJQnOwogICAgICAgICAgICB2YXIgcm91bmRlZCA9IE1hdGgucm91bmQobnVtICogMTAwKSAvIDEwMDsKICAgICAgICAgICAgdmFyIHN0ciA9IHJvdW5kZWQudG9GaXhlZCgyKTsKICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1wuPzArJC8sICcnKTsKICAgICAgICAgICAgaWYgKHN0ciA9PT0gJycpIHN0ciA9ICcwJzsKICAgICAgICAgICAgaWYgKHN0ci5pbmRleE9mKCcuJykgPT09IC0xICYmIHJvdW5kZWQgPT09IE1hdGguZmxvb3Iocm91bmRlZCkpIHsKICAgICAgICAgICAgICAgIHN0ciA9IHJvdW5kZWQudG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3RyOwogICAgICAgIH0KCiAgICAgICAgY2FsY3VsYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNsZWFyRXJyb3JzKCk7CiAgICAgICAgICAgIHJlc2V0UmVzdWx0cygpOwoKICAgICAgICAgICAgdmFyIHNhbXBsZVJlc3VsdCA9IHBhcnNlUG9zaXRpdmVOdW1iZXIoc2FtcGxlTWFzc0lucHV0LnZhbHVlLCAn0JzQsNGB0YHQsCDQvtCx0YDQsNC30YbQsCcpOwogICAgICAgICAgICBpZiAoIXNhbXBsZVJlc3VsdC52YWxpZCkgewogICAgICAgICAgICAgICAgZXJyb3JTYW1wbGUudGV4dENvbnRlbnQgPSBzYW1wbGVSZXN1bHQuZXJyb3I7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHNhbXBsZU1hc3MgPSBzYW1wbGVSZXN1bHQubnVtOwogICAgICAgICAgICBpZiAoc2FtcGxlTWFzcyA9PT0gMCkgewogICAgICAgICAgICAgICAgZXJyb3JTYW1wbGUudGV4dENvbnRlbnQgPSAn0JzQsNGB0YHQsCDQvtCx0YDQsNC30YbQsCDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0LHQvtC70YzRiNC1INC90YPQu9GPLic7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBtb2RlID0gbW9kZVNlbGVjdC52YWx1ZTsKICAgICAgICAgICAgdmFyIGtub3duTWFzczsKICAgICAgICAgICAgdmFyIHB1cmVNYXNzOwogICAgICAgICAgICB2YXIgaW1wdXJpdGllc01hc3M7CgogICAgICAgICAgICBpZiAobW9kZSA9PT0gJ2ltcHVyaXRpZXMnKSB7CiAgICAgICAgICAgICAgICB2YXIgaW1wUmVzdWx0ID0gcGFyc2VQb3NpdGl2ZU51bWJlcihpbXB1cml0aWVzTWFzc0lucHV0LnZhbHVlLCAn0JzQsNGB0YHQsCDQv9GA0LjQvNC10YHQtdC5Jyk7CiAgICAgICAgICAgICAgICBpZiAoIWltcFJlc3VsdC52YWxpZCkgewogICAgICAgICAgICAgICAgICAgIGVycm9ySW1wdXJpdGllcy50ZXh0Q29udGVudCA9IGltcFJlc3VsdC5lcnJvcjsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbXB1cml0aWVzTWFzcyA9IGltcFJlc3VsdC5udW07CiAgICAgICAgICAgICAgICBpZiAoaW1wdXJpdGllc01hc3MgPiBzYW1wbGVNYXNzICsgMC4wMDAwMDEpIHsKICAgICAgICAgICAgICAgICAgICBlcnJvckltcHVyaXRpZXMudGV4dENvbnRlbnQgPSAn0JzQsNGB0YHQsCDQv9GA0LjQvNC10YHQtdC5INC90LUg0LzQvtC20LXRgiDQv9GA0LXQstGL0YjQsNGC0Ywg0LzQsNGB0YHRgyDQvtCx0YDQsNC30YbQsC4nOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1cmVNYXNzID0gc2FtcGxlTWFzcyAtIGltcHVyaXRpZXNNYXNzOwogICAgICAgICAgICAgICAgaWYgKHB1cmVNYXNzIDwgMCkgcHVyZU1hc3MgPSAwOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIHB1cmVSZXN1bHQgPSBwYXJzZVBvc2l0aXZlTnVtYmVyKHB1cmVNYXNzSW5wdXQudmFsdWUsICfQnNCw0YHRgdCwINGH0LjRgdGC0L7Qs9C+INCy0LXRidC10YHRgtCy0LAnKTsKICAgICAgICAgICAgICAgIGlmICghcHVyZVJlc3VsdC52YWxpZCkgewogICAgICAgICAgICAgICAgICAgIGVycm9yUHVyZS50ZXh0Q29udGVudCA9IHB1cmVSZXN1bHQuZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVyZU1hc3MgPSBwdXJlUmVzdWx0Lm51bTsKICAgICAgICAgICAgICAgIGlmIChwdXJlTWFzcyA+IHNhbXBsZU1hc3MgKyAwLjAwMDAwMSkgewogICAgICAgICAgICAgICAgICAgIGVycm9yUHVyZS50ZXh0Q29udGVudCA9ICfQnNCw0YHRgdCwINGH0LjRgdGC0L7Qs9C+INCy0LXRidC10YHRgtCy0LAg0L3QtSDQvNC+0LbQtdGCINC/0YDQtdCy0YvRiNCw0YLRjCDQvNCw0YHRgdGDINC+0LHRgNCw0LfRhtCwLic7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaW1wdXJpdGllc01hc3MgPSBzYW1wbGVNYXNzIC0gcHVyZU1hc3M7CiAgICAgICAgICAgICAgICBpZiAoaW1wdXJpdGllc01hc3MgPCAwKSBpbXB1cml0aWVzTWFzcyA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBwdXJpdHkgPSAocHVyZU1hc3MgLyBzYW1wbGVNYXNzKSAqIDEwMDsKICAgICAgICAgICAgdmFyIGltcHVyaXRpZXNQZXJjZW50ID0gMTAwIC0gcHVyaXR5OwoKICAgICAgICAgICAgaWYgKGlzTmFOKHB1cml0eSkgfHwgIWlzRmluaXRlKHB1cml0eSkpIHsKICAgICAgICAgICAgICAgIHJlc3VsdFB1cml0eS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmVzdWx0UHVyaXR5LnRleHRDb250ZW50ID0gZm9ybWF0TnVtYmVyKHB1cml0eSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJlc3VsdFB1cmVNYXNzLnRleHRDb250ZW50ID0gZm9ybWF0TnVtYmVyKHB1cmVNYXNzKTsKICAgICAgICAgICAgcmVzdWx0SW1wdXJpdGllc01hc3MudGV4dENvbnRlbnQgPSBmb3JtYXROdW1iZXIoaW1wdXJpdGllc01hc3MpOwogICAgICAgICAgICByZXN1bHRJbXB1cml0aWVzUGVyY2VudC50ZXh0Q29udGVudCA9IGZvcm1hdE51bWJlcihpbXB1cml0aWVzUGVyY2VudCk7CgogICAgICAgICAgICB2YXIgbW9sYXJSZXN1bHQgPSBwYXJzZVBvc2l0aXZlTnVtYmVyKG1vbGFyTWFzc0lucHV0LnZhbHVlLCAn0JzQvtC70Y/RgNC90LDRjyDQvNCw0YHRgdCwJyk7CiAgICAgICAgICAgIGlmIChtb2xhclJlc3VsdC52YWxpZCAmJiBtb2xhclJlc3VsdC5udW0gPiAwKSB7CiAgICAgICAgICAgICAgICB2YXIgbW9sZXMgPSBwdXJlTWFzcyAvIG1vbGFyUmVzdWx0Lm51bTsKICAgICAgICAgICAgICAgIGlmIChpc0Zpbml0ZShtb2xlcykgJiYgIWlzTmFOKG1vbGVzKSkgewogICAgICAgICAgICAgICAgICAgIHJlc3VsdE1vbGVzLnRleHRDb250ZW50ID0gZm9ybWF0TnVtYmVyKG1vbGVzKTsKICAgICAgICAgICAgICAgICAgICBtb2xlc1Jlc3VsdEl0ZW0uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXN1bHRNb2xlcy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICAgICAgICAgICAgICAgIG1vbGVzUmVzdWx0SXRlbS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9sYXJNYXNzSW5wdXQudmFsdWUudHJpbSgpICE9PSAnJyAmJiAhbW9sYXJSZXN1bHQudmFsaWQpIHsKICAgICAgICAgICAgICAgIGVycm9yTW9sYXIudGV4dENvbnRlbnQgPSBtb2xhclJlc3VsdC5lcnJvcjsKICAgICAgICAgICAgICAgIG1vbGVzUmVzdWx0SXRlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbW9sZXNSZXN1bHRJdGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgc2FtcGxlTWFzc0lucHV0LnZhbHVlID0gJyc7CiAgICAgICAgICAgIGltcHVyaXRpZXNNYXNzSW5wdXQudmFsdWUgPSAnJzsKICAgICAgICAgICAgcHVyZU1hc3NJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICBtb2xhck1hc3NJbnB1dC52YWx1ZSA9ICcnOwogICAgICAgICAgICBjbGVhckVycm9ycygpOwogICAgICAgICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgICAgICAgdG9nZ2xlTW9kZUdyb3VwcygpOwogICAgICAgIH0pOwoKICAgICAgICB0b2dnbGVNb2RlR3JvdXBzKCk7CiAgICB9KSgpOwo=