Главная ● Доставка
Доставляем товары по всем регионам России
Доставка по России
Стоимость доставки
По России – от 500 руб.
Точный срок и стоимость вы можете узнать напрямую у наших специалистов. Мы оперативно произведем расчет доставки. По вашей просьбе мы можем включить стоимость доставки в счет.
Стоимость доставки
По России – от 250 руб.
Точный срок и стоимость вы можете узнать напрямую у наших специалистов. Мы оперативно произведем расчет доставки. По вашей просьбе мы можем включить стоимость доставки в счет.
Стоимость доставки
По России – от 700 руб.
Точный срок и стоимость вы можете узнать напрямую у наших специалистов. Мы оперативно произведем расчет доставки. По вашей просьбе мы можем включить стоимость доставки в счет.
Доставка по Санкт-Петербургу
Самовывоз
TORDEN
г. Санкт-Петербург, ул. Потапова, д. 2, лит. О
Пн-Пт, с 9:00 до 18:00
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly90b3JkZW4ucnUvd3AtY29udGVudC9wbHVnaW5zL3RvcmRlbi9qcy9saWtlcy5qcz92ZXI9MC41IiBpZD0idG9yZGVuLWxpa2VzLXB1YmxpYy1qcy1qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL2FwcC5nZXRyZXZpZXcuaW8vdGFncy9TS21aVDI3TW9Ra0FDRlk1L3Nkay5qcyIgYXN5bmM+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiFmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt3aW5kb3cuY2Fycm90cXVlc3Rhc3luYy5wdXNoKHQsYXJndW1lbnRzKX19aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBjYXJyb3RxdWVzdCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ZS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGUuYXN5bmM9ITAsZS5zcmM9Imh0dHBzOi8vY2RuLmNhcnJvdHF1ZXN0LmFwcC9hcGkubWluLmpzIixkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKGUpLHdpbmRvdy5jYXJyb3RxdWVzdD17fSx3aW5kb3cuY2Fycm90cXVlc3Rhc3luYz1bXSxjYXJyb3RxdWVzdC5zZXR0aW5ncz17fTtmb3IodmFyIG49WyJjb25uZWN0IiwidHJhY2siLCJpZGVudGlmeSIsImF1dGgiLCJvblJlYWR5IiwiYWRkQ2FsbGJhY2siLCJyZW1vdmVDYWxsYmFjayIsInRyYWNrTWVzc2FnZUludGVyYWN0aW9uIl0sYT0wO2E8bi5sZW5ndGg7YSsrKWNhcnJvdHF1ZXN0W25bYV1dPXQoblthXSl9fSgpLGNhcnJvdHF1ZXN0LmNvbm5lY3QoIjU2MjI2LWFjMWVhZDQwYmVlNGNlYWRkNmY0NzE1YmE4Iik7DQo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KdmFyIF90bXIgPSB3aW5kb3cuX3RtciB8fCAod2luZG93Ll90bXIgPSBbXSk7DQpfdG1yLnB1c2goe2lkOiAiMzU4NTQzOCIsIHR5cGU6ICJwYWdlVmlldyIsIHN0YXJ0OiAobmV3IERhdGUoKSkuZ2V0VGltZSgpfSk7DQooZnVuY3Rpb24gKGQsIHcsIGlkKSB7DQogIGlmIChkLmdldEVsZW1lbnRCeUlkKGlkKSkgcmV0dXJuOw0KICB2YXIgdHMgPSBkLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOyB0cy50eXBlID0gInRleHQvamF2YXNjcmlwdCI7IHRzLmFzeW5jID0gdHJ1ZTsgdHMuaWQgPSBpZDsNCiAgdHMuc3JjID0gImh0dHBzOi8vdG9wLWZ3ejEubWFpbC5ydS9qcy9jb2RlLmpzIjsNCiAgdmFyIGYgPSBmdW5jdGlvbiAoKSB7dmFyIHMgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0cywgcyk7fTsNCiAgaWYgKHcub3BlcmEgPT0gIltvYmplY3QgT3BlcmFdIikgeyBkLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmLCBmYWxzZSk7IH0gZWxzZSB7IGYoKTsgfQ0KfSkoZG9jdW1lbnQsIHdpbmRvdywgInRtci1jb2RlIik7DQo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiFmdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3QudHlwZT0idGV4dC9qYXZhc2NyaXB0Iix0LmFzeW5jPSEwLHQuc3JjPSdodHRwczovL3ZrLmNvbS9qcy9hcGkvb3BlbmFwaS5qcz8xNzMnLHQub25sb2FkPWZ1bmN0aW9uKCl7VksuUmV0YXJnZXRpbmcuSW5pdCgiVkstUlRSRy0xOTE5ODYxLTlLbjNoIiksVksuUmV0YXJnZXRpbmcuSGl0KCl9LGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9KCk7PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiA+DQogICAoZnVuY3Rpb24obSxlLHQscixpLGssYSl7bVtpXT1tW2ldfHxmdW5jdGlvbigpeyhtW2ldLmE9bVtpXS5hfHxbXSkucHVzaChhcmd1bWVudHMpfTsNCiAgIG1baV0ubD0xKm5ldyBEYXRlKCk7DQogICBmb3IgKHZhciBqID0gMDsgaiA8IGRvY3VtZW50LnNjcmlwdHMubGVuZ3RoOyBqKyspIHtpZiAoZG9jdW1lbnQuc2NyaXB0c1tqXS5zcmMgPT09IHIpIHsgcmV0dXJuOyB9fQ0KICAgaz1lLmNyZWF0ZUVsZW1lbnQodCksYT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpWzBdLGsuYXN5bmM9MSxrLnNyYz1yLGEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoayxhKX0pDQogICAod2luZG93LCBkb2N1bWVudCwgInNjcmlwdCIsICJodHRwczovL21jLnlhbmRleC5ydS9tZXRyaWthL3RhZy5qcyIsICJ5bSIpOw0KDQp5bSg2NDg4MTY4MiwgJ2luaXQnLCB7d2Vidmlzb3I6dHJ1ZSwgY2xpY2ttYXA6dHJ1ZSwgZWNvbW1lcmNlOiJkYXRhTGF5ZXIiLCByZWZlcnJlcjogZG9jdW1lbnQucmVmZXJyZXIsIHVybDogbG9jYXRpb24uaHJlZiwgYWNjdXJhdGVUcmFja0JvdW5jZTp0cnVlLCB0cmFja0xpbmtzOnRydWV9KTsNCjwvc2NyaXB0Pgo8c2NyaXB0PgogICAgICAgIChmdW5jdGlvbiAodywgZCwgbiwgYykgewogICAgICAgICAgICB3LkNhbGx0b3VjaERhdGFPYmplY3QgPSBuOwogICAgICAgICAgICB3W25dID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgd1tuXVsiY2FsbGJhY2tzIl0ucHVzaChhcmd1bWVudHMpCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICghd1tuXVsiY2FsbGJhY2tzIl0pIHsKICAgICAgICAgICAgICAgIHdbbl1bImNhbGxiYWNrcyJdID0gW10KICAgICAgICAgICAgfQogICAgICAgICAgICB3W25dWyJsb2FkZWQiXSA9IGZhbHNlOwogICAgICAgICAgICBpZiAodHlwZW9mIGMgIT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgICBjID0gW2NdCiAgICAgICAgICAgIH0KICAgICAgICAgICAgd1tuXVsiY291bnRlcnMiXSA9IGM7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYy5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgICAgICAgcChjW2ldKQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBwKGNJZCkgewogICAgICAgICAgICAgICAgdmFyIGEgPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSwKICAgICAgICAgICAgICAgICAgICBzID0gZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSwKICAgICAgICAgICAgICAgICAgICBpID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHMsIGEpCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBtID0gdHlwZW9mIEFycmF5LnByb3RvdHlwZS5maW5kID09PSAnZnVuY3Rpb24nLAogICAgICAgICAgICAgICAgICAgIG4gPSBtID8gImluaXQtbWluLmpzIiA6ICJpbml0LmpzIjsKICAgICAgICAgICAgICAgIHMuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgICAgcy5zcmMgPSAiaHR0cHM6Ly9tb2QuY2FsbHRvdWNoLnJ1LyIgKyBuICsgIj9pZD0iICsgY0lkOwogICAgICAgICAgICAgICAgaWYgKHcub3BlcmEgPT0gIltvYmplY3QgT3BlcmFdIikgewogICAgICAgICAgICAgICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGksIGZhbHNlKQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpKCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pKHdpbmRvdywgZG9jdW1lbnQsICJjdCIsICJ6bWZieDFkeiIpOwogICAgPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCiAgICAgICAgICAgIChmdW5jdGlvbiAobSwgZSwgdCwgciwgaSwgaywgYSkgew0KICAgICAgICAgICAgICAgIG1baV0gPSBtW2ldIHx8IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgKG1baV0uYSA9IG1baV0uYSB8fCBbXSkucHVzaChhcmd1bWVudHMpDQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICBtW2ldLmwgPSAxICogbmV3IERhdGUoKTsNCiAgICAgICAgICAgICAgICBrID0gZS5jcmVhdGVFbGVtZW50KHQpLCBhID0gZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KVswXSwgay5hc3luYyA9IDEsIGsuc3JjID0gciwgYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLCBhKQ0KICAgICAgICAgICAgfSkNCg0KICAgICAgICAgICAgKHdpbmRvdywgZG9jdW1lbnQsICJzY3JpcHQiLCAiaHR0cHM6Ly9tYy55YW5kZXgucnUvbWV0cmlrYS90YWcuanMiLCAieW0iKTsNCg0KICAgICAgICAgICAgeW0oIjY0ODgxNjgyIiwgImluaXQiLCB7DQogICAgICAgICAgICAgICAgY2xpY2ttYXA6IHRydWUsDQogICAgICAgICAgICAgICAgdHJhY2tMaW5rczogdHJ1ZSwNCiAgICAgICAgICAgICAgICBhY2N1cmF0ZVRyYWNrQm91bmNlOiB0cnVlLA0KICAgICAgICAgICAgICAgIHdlYnZpc29yOiB0cnVlLA0KICAgICAgICAgICAgICAgIGVjb21tZXJjZTogImRhdGFMYXllciIsDQogICAgICAgICAgICAgICAgcGFyYW1zOiB7DQogICAgICAgICAgICAgICAgICAgIF9feW06IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJ5bUNtc1BsdWdpbiI6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY21zIjogIndvcmRwcmVzcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgImNtc1ZlcnNpb24iOiI2LjkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbHVnaW5WZXJzaW9uIjogIjEuMi4yIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAieW1DbXNSaXAiOiAiMjI3MzIxNDkyOCINCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICA8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9zbWFydGNhcHRjaGEueWFuZGV4Y2xvdWQubmV0L2NhcHRjaGEuanM/dmVyPTEuMCIgaWQ9InlhbmRleC1zbWFydGNhcHRjaGEtanMiIGRlZmVyPSJkZWZlciIgZGF0YS13cC1zdHJhdGVneT0iZGVmZXIiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBjdF9jcV9pbnRlZ3JhdGlvbigpIHsgDQoNCmNhcnJvdHF1ZXN0LmFkZENhbGxiYWNrKCd1c2VyX3JlcGxpZWQnLCBmdW5jdGlvbihkYXRhKSB7DQogICAgY29uc29sZS5sb2coJ2NhcnJvdHF1ZXN0OiB1c2VyX3JlcGxpZWQnKTsNCiAgICBpZiAoIXdpbmRvdy5jdF9zbmRfZmxhZ19nb2FsKXsgd2luZG93LmN0X3NuZF9mbGFnX2dvYWwgPSAxOyBjdCgnZ29hbCcsJ2NxX2NvbnZlcnNhdGlvbicpOyB9DQp9KTsNCg0KDQpFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzfHwoRWxlbWVudC5wcm90b3R5cGUubWF0Y2hlcz1FbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzU2VsZWN0b3J8fEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8RWxlbWVudC5wcm90b3R5cGUubW96TWF0Y2hlc1NlbGVjdG9yfHxFbGVtZW50LnByb3RvdHlwZS5tc01hdGNoZXNTZWxlY3RvciksRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdHx8KEVsZW1lbnQucHJvdG90eXBlLmNsb3Nlc3Q9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXM7dDspe2lmKHQubWF0Y2hlcyhlKSlyZXR1cm4gdDt0PXQucGFyZW50RWxlbWVudH1yZXR1cm4gbnVsbH0pO3ZhciBjdF9nZXRfdmFsPWZ1bmN0aW9uKGZvcm0sc2VsZWN0b3Ipe2lmKCEhZm9ybS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSl7cmV0dXJuIGZvcm0ucXVlcnlTZWxlY3RvcihzZWxlY3RvcikudmFsdWU7fWVsc2V7cmV0dXJuICcnO319DQogDQp2YXIgc2VuZF9jdF9jYXJyb3RxdWVzdCA9IGZ1bmN0aW9uKHN1YiwgZGF0YSkgew0KICAgIGlmICghd2luZG93LmN0X3NlbmRfZmxhZyl7IHdpbmRvdy5jdF9zZW5kX2ZsYWcgPSAxDQogICAgICAgIHZhciBmaW8gPSAnJzsgdmFyIHBob25lID0gJyc7IHZhciBlbWFpbCA9ICcnOw0KICAgICAgICBpZiAoISFkYXRhLmZpbyl7ZmlvID0gZGF0YS5maW87fSBpZiAoISFkYXRhLnBob25lKXtwaG9uZSA9IGRhdGEucGhvbmU7fSBpZiAoISFkYXRhLmVtYWlsKXtlbWFpbCA9IGRhdGEuZW1haWw7fQ0KICAgICAgICB2YXIgY3Rfc2l0ZV9pZCA9ICc2OTI5MSc7DQogICAgICAgIHZhciBjdF9kYXRhID0geyBmaW86IGZpbywgcGhvbmVOdW1iZXI6IHBob25lLCBlbWFpbDogZW1haWwsIHN1YmplY3Q6IHN1Yiwgc2Vzc2lvbklkOiB3aW5kb3cuY2FsbF92YWx1ZSB9Ow0KICAgICAgICB2YXIgcmVxdWVzdCA9IHdpbmRvdy5BY3RpdmVYT2JqZWN0P25ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpOm5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KICAgICAgICB2YXIgcG9zdF9kYXRhID0gT2JqZWN0LmtleXMoY3RfZGF0YSkucmVkdWNlKGZ1bmN0aW9uKGEsIGspIHtpZighIWN0X2RhdGFba10pe2EucHVzaChrICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGN0X2RhdGFba10pKTt9cmV0dXJuIGF9LCBbXSkuam9pbignJicpOw0KICAgICAgICB2YXIgdXJsID0gJ2h0dHBzOi8vYXBpLmNhbGx0b3VjaC5ydS9jYWxscy1zZXJ2aWNlL1Jlc3RBUEkvJytjdF9zaXRlX2lkKycvcmVxdWVzdHMvb3JkZXJzL3JlZ2lzdGVyLyc7DQogICAgICAgIGlmICghd2luZG93LmN0X3NuZF9mbGFnKXsNCiAgICAgICAgICAgIHdpbmRvdy5jdF9zbmRfZmxhZyA9IDE7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgd2luZG93LmN0X3NuZF9mbGFnID0gMDsgfSwgMjAwMDApOw0KICAgICAgICAgICAgcmVxdWVzdC5vcGVuKCJQT1NUIiwgdXJsLCB0cnVlKTsgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7IHJlcXVlc3Quc2VuZChwb3N0X2RhdGEpOw0KICAgICAgICB9DQogICAgfQ0KfTsNCiANCmNhcnJvdHF1ZXN0LmFkZENhbGxiYWNrKCdtZXNzZW5nZXJfb3BlbmVkJywgZnVuY3Rpb24oZSkgeyBjb25zb2xlLmxvZyhlKTsNCiAgICB2YXIgaWZyYW1lX2NoYXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2Fycm90LW1lc3Nlbmdlci1mcmFtZScpOyB2YXIgaWZyYW1lX2NoYXRfZG9jdW1lbnQ7DQogICAgaWYgKGlmcmFtZV9jaGF0KXsNCiAgICAgICAgY29uc29sZS5sb2coJyNjYXJyb3QtbWVzc2VuZ2VyLWZyYW1lIChjaGF0KSBkZXRlY3RlZCEnKTsNCiAgICAgICAgdmFyIGlmcmFtZV9jaGF0X3dpbmRvdyA9IGlmcmFtZV9jaGF0LmNvbnRlbnRXaW5kb3c7DQogICAgICAgIGlmcmFtZV9jaGF0X2RvY3VtZW50ID0gaWZyYW1lX2NoYXQuY29udGVudERvY3VtZW50IHx8IGlmcmFtZV9jaGF0X3dpbmRvdy5kb2N1bWVudDsNCiAgICB9DQogICAgdmFyIGlmcmFtZV9wb3B1cCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjYXJyb3QtcG9wdXAtZnJhbWUnKTsgdmFyIGlmcmFtZV9wb3B1cF9kb2N1bWVudDsNCiAgICBpZiAoaWZyYW1lX3BvcHVwKXsNCiAgICAgICAgdmFyIGlmcmFtZV9wb3B1cF93aW5kb3cgPSBpZnJhbWVfcG9wdXAuY29udGVudFdpbmRvdzsNCiAgICAgICAgaWZyYW1lX3BvcHVwX2RvY3VtZW50ID0gaWZyYW1lX3BvcHVwLmNvbnRlbnREb2N1bWVudCB8fCBpZnJhbWVfcG9wdXBfd2luZG93LmRvY3VtZW50Ow0KICAgIH0NCiAgICB2YXIgZXZlbnRzID0gWydtb3VzZWRvd24nLCd0b3VjaHN0YXJ0J107IGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGV2KXsNCiAgICAgICAgaWYgKCEhaWZyYW1lX2NoYXRfZG9jdW1lbnQpew0KICAgICAgICAgICAgaWZyYW1lX2NoYXRfZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldiwgZnVuY3Rpb24oZSkgew0KICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0KCcjY2Fycm90cXVlc3QtbWVzc2VuZ2VyLWlubmVycmVwbHktc3VibWl0JykgfHwgZS50YXJnZXQuY2xvc2VzdCgnI2NhcnJvdHF1ZXN0LW1lc3Nlbmdlci1hdXRvcmVwbHktcmVxdWVzdC1vaycpIHx8IGUudGFyZ2V0LmNsb3Nlc3QoJ1t0eXBlPSJzdWJtaXQiXScpKSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjbGljayBkZXRlY3RlZCEnKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGN0X2RhdGEgPSB7fTsgdmFyIGNxX2Zvcm0gPSBlLnRhcmdldC5jbG9zZXN0KCcjY2Fycm90cXVlc3QtbWVzc2VuZ2VyJyk7DQogICAgICAgICAgICAgICAgICAgIGN0X2RhdGEuZmlvID0gY3RfZ2V0X3ZhbChjcV9mb3JtLCdpbnB1dFtuYW1lPSJuYW1lIl0nKTsNCiAgICAgICAgICAgICAgICAgICAgY3RfZGF0YS5waG9uZSA9IGN0X2dldF92YWwoY3FfZm9ybSwnaW5wdXRbbmFtZT0icGhvbmUiXSxpbnB1dFtwbGFjZWhvbGRlcio9ItGC0LXQu9C10YTQvtC9Il0saW5wdXRbdHlwZT0idGVsIl0nKTsNCiAgICAgICAgICAgICAgICAgICAgY3RfZGF0YS5lbWFpbCA9IGN0X2dldF92YWwoY3FfZm9ybSwnaW5wdXRbbmFtZT0iZW1haWwiXSxpbnB1dFtwbGFjZWhvbGRlcio9Im1haWwiXSxpbnB1dFt0eXBlPSJlbWFpbCJdLGlucHV0W3BsYWNlaG9sZGVyKj0i0L/QvtGH0YIiXScpOw0KICAgICAgICAgICAgICAgICAgICBjdF9kYXRhLnJlcXVlc3RVcmwgPSBsb2NhdGlvbi5ocmVmOw0KICAgICAgICAgICAgICAgICAgICBpZiAoISFjdF9kYXRhLnBob25lIHx8ICEhY3RfZGF0YS5lbWFpbCl7c2VuZF9jdF9jYXJyb3RxdWVzdCgn0J/QvtGB0LXRgtC40YLQtdC70Ywg0L7RgdGC0LDQstC40Lsg0LrQvtC90YLQsNC60YLRiyDQsiBDYXJyb3RxdWVzdCcsY3RfZGF0YSk7fQ0KICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnY3QgY2xpY2s6ICcsZS50YXJnZXQsJ2N0X2RhdGE6ICcsY3RfZGF0YSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0KCdidXR0b25baWQqPSJibG9jay1wb3B1cC1idXR0b24iXScpKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBjdF9kYXRhID0ge307IHZhciBjcV9mb3JtID0gZS50YXJnZXQuY2xvc2VzdCgnI2NhcnJvdHF1ZXN0LW1lc3NlbmdlcicpOw0KICAgICAgICAgICAgICAgICAgICBjdF9kYXRhLmZpbyA9IGN0X2dldF92YWwoY3FfZm9ybSwnaW5wdXRbZGF0YS1wcm9wPSIkbmFtZSJdJyk7DQogICAgICAgICAgICAgICAgICAgIGN0X2RhdGEucGhvbmUgPSBjdF9nZXRfdmFsKGNxX2Zvcm0sJ2lucHV0W2RhdGEtcHJvcD0iJHBob25lIl0nKTsNCiAgICAgICAgICAgICAgICAgICAgY3RfZGF0YS5lbWFpbCA9IGN0X2dldF92YWwoY3FfZm9ybSwnaW5wdXRbZGF0YS1wcm9wPSIkZW1haWwiXSxpbnB1dFtwbGFjZWhvbGRlcio9ItC/0L7Rh9GCIl0nKTsNCiAgICAgICAgICAgICAgICAgICAgY3RfZGF0YS5yZXF1ZXN0VXJsID0gbG9jYXRpb24uaHJlZjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCEhY3RfZGF0YS5waG9uZSB8fCAhIWN0X2RhdGEuZW1haWwpe3NlbmRfY3RfY2Fycm90cXVlc3QoJ9CX0LDRj9Cy0LrQsCDQuNC3INGE0L7RgNC80YsgQ2Fycm90cXVlc3QnLGN0X2RhdGEpO30NCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2N0IGNsaWNrOiAnLGUudGFyZ2V0LCdjdF9kYXRhOiAnLGN0X2RhdGEpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIGlmIChpZnJhbWVfcG9wdXBfZG9jdW1lbnQpew0KICAgICAgICAgICAgaWZyYW1lX3BvcHVwX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXYsIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQuY2xvc2VzdCgnYnV0dG9uW2lkKj0iYmxvY2stcG9wdXAtYnV0dG9uIl0nKSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgY3RfZGF0YSA9IHt9OyB2YXIgY3FfZm9ybSA9IGUudGFyZ2V0LmNsb3Nlc3QoJyNjYXJyb3RxdWVzdC1tZXNzZW5nZXInKTsNCiAgICAgICAgICAgICAgICAgICAgY3RfZGF0YS5maW8gPSBjdF9nZXRfdmFsKGNxX2Zvcm0sJ2lucHV0W2RhdGEtcHJvcD0iJG5hbWUiXScpOw0KICAgICAgICAgICAgICAgICAgICBjdF9kYXRhLnBob25lID0gY3RfZ2V0X3ZhbChjcV9mb3JtLCdpbnB1dFtkYXRhLXByb3A9IiRwaG9uZSJdJyk7DQogICAgICAgICAgICAgICAgICAgIGN0X2RhdGEuZW1haWwgPSBjdF9nZXRfdmFsKGNxX2Zvcm0sJ2lucHV0W2RhdGEtcHJvcD0iJGVtYWlsIl0nKTsNCiAgICAgICAgICAgICAgICAgICAgY3RfZGF0YS5yZXF1ZXN0VXJsID0gbG9jYXRpb24uaHJlZjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCEhY3RfZGF0YS5waG9uZSB8fCAhIWN0X2RhdGEuZW1haWwpe3NlbmRfY3RfY2Fycm90cXVlc3QoJ9CX0LDRj9Cy0LrQsCDQuNC3IHBvcHVwLdGE0L7RgNC80YsgQ2Fycm90cXVlc3QnLGN0X2RhdGEpO30NCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2N0IGNsaWNrOiAnLGUudGFyZ2V0LCdjdF9kYXRhOiAnLGN0X2RhdGEpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgfSk7DQp9KTsNCn07DQoNCnNldFRpbWVvdXQoZnVuY3Rpb24oKXsgY3RfY3FfaW50ZWdyYXRpb24oKTsgfSwgNTAwMCk7DQo8L3NjcmlwdD4=