MODERN TOWNHOUSES

Experience Elegance and Convenience on the North Shore

Our townhouses are designed to maximize your intimacy and comfort, and allow you to become a homeowner with your own private space at a fraction of the cost of a single-family house.

OUR PROJECTS FOR SALE

Blainville

STATION 56 LE DUETTO MODEL

Le Duetto at Station 56, Blainville, offers innovative two-storey townhomes designed to maximize living space. Ideal for young families or professional couples, these homes feature large terraces and a private garage.

Blainville

PLACE NOTRE-DAME - TOWNHOUSES

The Place Notre-Dame project offers Scandinavian-style townhouses in Blainville, featuring functional spaces on two floors with basement, large terrace and private garage, ideal for families and couples.

Laval

VËE - TOWNHOUSES

Discover Vëe townhouses in Laval, offering high-end finishes and flexible two- or three-bedroom configurations. Located in the dynamic Auteuil sector, this project combines accessibility to walking trails and urban proximity, perfect for dream living.

Terrebonne

Noüvo DISTRICT - TOWNHOUSES

Discover Noüvo District, a project offering customizable townhomes in Terrebonne. Located in the heart of nature, these residences are designed to combine modern comfort and respect for the environment, with convenient access to Highway 640.

PROMO

RENT and SAVE

Start building your down payment today!

Your Ideal Townhouse

Groupe Mathieu’s townhouses on the North Shore offer a perfect blend of luxury and functionality. Each house is designed to maximize space and natural light while providing modern, high-quality finishes. Enjoy a hassle-free lifestyle, welcoming neighbors, and easy access to local amenities. Ideal for families and professionals looking for an elegant and practical residence.

AWARDS AND ACCREDITATIONS ​

Sylvain and Alain Mathieu have received several APCHQ Diamond Palm for excellence in their achievements since Groupe Mathieu’s founding. This is the highest possible distinction in the new home construction industry.

Groupe Mathieu is accredited by Garantie construction résidentielle (GCR) and the guarantees of this organization cover their homes.

ALWAYS LISTENING TO OUR CUSTOMERS

NEED TO KNOW MORE? OUR REPRESENTATIVES WILL BE HAPPY TO HELP YOU!

Laval

Townhouses Vëe
Pierre-Alexandre Normand
514 968-9013

TERREBONNE

Townhouses Noüvo District
Sylvye Lelièvre 
514 241-1667

BLAINVILLE

Townhouses Station 56
Barbara Di Meglio
450 275-4232

Townhouses Place Notre-Dame

Manuel Legault
514 476-4116

Marisa Joseph
438-722-2989

CONTACT FORM

PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnZhciBnZm9ybTtnZm9ybXx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdmb3JtX21haW5fc2NyaXB0c19sb2FkZWQiLGZ1bmN0aW9uKCl7Z2Zvcm0uc2NyaXB0c0xvYWRlZD0hMH0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdmb3JtL3RoZW1lL3NjcmlwdHNfbG9hZGVkIixmdW5jdGlvbigpe2dmb3JtLnRoZW1lU2NyaXB0c0xvYWRlZD0hMH0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2dmb3JtLmRvbUxvYWRlZD0hMH0pLGdmb3JtPXtkb21Mb2FkZWQ6ITEsc2NyaXB0c0xvYWRlZDohMSx0aGVtZVNjcmlwdHNMb2FkZWQ6ITEsaXNGb3JtRWRpdG9yOigpPT4iZnVuY3Rpb24iPT10eXBlb2YgSW5pdGlhbGl6ZUVkaXRvcixjYWxsSWZMb2FkZWQ6ZnVuY3Rpb24obyl7cmV0dXJuISghZ2Zvcm0uZG9tTG9hZGVkfHwhZ2Zvcm0uc2NyaXB0c0xvYWRlZHx8IWdmb3JtLnRoZW1lU2NyaXB0c0xvYWRlZCYmIWdmb3JtLmlzRm9ybUVkaXRvcigpfHwoZ2Zvcm0uaXNGb3JtRWRpdG9yKCkmJmNvbnNvbGUud2FybigiVGhlIHVzZSBvZiBnZm9ybS5pbml0aWFsaXplT25Mb2FkZWQoKSBpcyBkZXByZWNhdGVkIGluIHRoZSBmb3JtIGVkaXRvciBjb250ZXh0IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gR3Jhdml0eSBGb3JtcyAzLjEuIiksbygpLDApKX0saW5pdGlhbGl6ZU9uTG9hZGVkOmZ1bmN0aW9uKG8pe2dmb3JtLmNhbGxJZkxvYWRlZChvKXx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdmb3JtX21haW5fc2NyaXB0c19sb2FkZWQiLCgpPT57Z2Zvcm0uc2NyaXB0c0xvYWRlZD0hMCxnZm9ybS5jYWxsSWZMb2FkZWQobyl9KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJnZm9ybS90aGVtZS9zY3JpcHRzX2xvYWRlZCIsKCk9PntnZm9ybS50aGVtZVNjcmlwdHNMb2FkZWQ9ITAsZ2Zvcm0uY2FsbElmTG9hZGVkKG8pfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCgpPT57Z2Zvcm0uZG9tTG9hZGVkPSEwLGdmb3JtLmNhbGxJZkxvYWRlZChvKX0pKX0saG9va3M6e2FjdGlvbjp7fSxmaWx0ZXI6e319LGFkZEFjdGlvbjpmdW5jdGlvbihvLHIsZSx0KXtnZm9ybS5hZGRIb29rKCJhY3Rpb24iLG8scixlLHQpfSxhZGRGaWx0ZXI6ZnVuY3Rpb24obyxyLGUsdCl7Z2Zvcm0uYWRkSG9vaygiZmlsdGVyIixvLHIsZSx0KX0sZG9BY3Rpb246ZnVuY3Rpb24obyl7Z2Zvcm0uZG9Ib29rKCJhY3Rpb24iLG8sYXJndW1lbnRzKX0sYXBwbHlGaWx0ZXJzOmZ1bmN0aW9uKG8pe3JldHVybiBnZm9ybS5kb0hvb2soImZpbHRlciIsbyxhcmd1bWVudHMpfSxyZW1vdmVBY3Rpb246ZnVuY3Rpb24obyxyKXtnZm9ybS5yZW1vdmVIb29rKCJhY3Rpb24iLG8scil9LHJlbW92ZUZpbHRlcjpmdW5jdGlvbihvLHIsZSl7Z2Zvcm0ucmVtb3ZlSG9vaygiZmlsdGVyIixvLHIsZSl9LGFkZEhvb2s6ZnVuY3Rpb24obyxyLGUsdCxuKXtudWxsPT1nZm9ybS5ob29rc1tvXVtyXSYmKGdmb3JtLmhvb2tzW29dW3JdPVtdKTt2YXIgZD1nZm9ybS5ob29rc1tvXVtyXTtudWxsPT1uJiYobj1yKyJfIitkLmxlbmd0aCksZ2Zvcm0uaG9va3Nbb11bcl0ucHVzaCh7dGFnOm4sY2FsbGFibGU6ZSxwcmlvcml0eTp0PW51bGw9PXQ/MTA6dH0pfSxkb0hvb2s6ZnVuY3Rpb24ocixvLGUpe3ZhciB0O2lmKGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwxKSxudWxsIT1nZm9ybS5ob29rc1tyXVtvXSYmKChvPWdmb3JtLmhvb2tzW3JdW29dKS5zb3J0KGZ1bmN0aW9uKG8scil7cmV0dXJuIG8ucHJpb3JpdHktci5wcmlvcml0eX0pLG8uZm9yRWFjaChmdW5jdGlvbihvKXsiZnVuY3Rpb24iIT10eXBlb2YodD1vLmNhbGxhYmxlKSYmKHQ9d2luZG93W3RdKSwiYWN0aW9uIj09cj90LmFwcGx5KG51bGwsZSk6ZVswXT10LmFwcGx5KG51bGwsZSl9KSksImZpbHRlciI9PXIpcmV0dXJuIGVbMF19LHJlbW92ZUhvb2s6ZnVuY3Rpb24obyxyLHQsbil7dmFyIGU7bnVsbCE9Z2Zvcm0uaG9va3Nbb11bcl0mJihlPShlPWdmb3JtLmhvb2tzW29dW3JdKS5maWx0ZXIoZnVuY3Rpb24obyxyLGUpe3JldHVybiEhKG51bGwhPW4mJm4hPW8udGFnfHxudWxsIT10JiZ0IT1vLnByaW9yaXR5KX0pLGdmb3JtLmhvb2tzW29dW3JdPWUpfX0pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2ZfYnJvd3Nlcl9jaHJvbWUgZ2Zvcm1fd3JhcHBlciBnZm9ybV9sZWdhY3lfbWFya3VwX3dyYXBwZXIgZ2Zvcm0tdGhlbWUtLW5vLWZyYW1ld29yaycgZGF0YS1mb3JtLXRoZW1lPSdsZWdhY3knIGRhdGEtZm9ybS1pbmRleD0nMCcgaWQ9J2dmb3JtX3dyYXBwZXJfMjknIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxkaXYgaWQ9J2dmXzI5JyBjbGFzcz0nZ2Zvcm1fYW5jaG9yJyB0YWJpbmRleD0nLTEnPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZm9ybV9oZWFkaW5nJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iZ2Zvcm1fdGl0bGUiPkd1aWRlIGRlIGwnYWNoZXRldXI8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9J2dmb3JtX2Rlc2NyaXB0aW9uJz48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pjxmb3JtIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScgdGFyZ2V0PSdnZm9ybV9hamF4X2ZyYW1lXzI5JyBpZD0nZ2Zvcm1fMjknICBhY3Rpb249Jy90b3duaG91c2VzLz9sYW5nPWVuI2dmXzI5JyBkYXRhLWZvcm1pZD0nMjknIG5vdmFsaWRhdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2dmb3JtLWJvZHkgZ2Zvcm1fYm9keSc+PHVsIGlkPSdnZm9ybV9maWVsZHNfMjknIGNsYXNzPSdnZm9ybV9maWVsZHMgdG9wX2xhYmVsIGZvcm1fc3VibGFiZWxfYmVsb3cgZGVzY3JpcHRpb25fYmVsb3cgdmFsaWRhdGlvbl9iZWxvdyc+PGxpIGlkPSJmaWVsZF8yOV8xIiBjbGFzcz0iZ2ZpZWxkIGdmaWVsZC0tdHlwZS1lbWFpbCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZ2ZpZWxkLS1uby1kZXNjcmlwdGlvbiBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBmaWVsZF92YWxpZGF0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUiICBkYXRhLWpzLXJlbG9hZD0iZmllbGRfMjlfMSIgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsIGdmb3JtLWZpZWxkLWxhYmVsJyBmb3I9J2lucHV0XzI5XzEnPlZvdHJlIGNvdXJyaWVsPHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCI+PHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCBnZmllbGRfcmVxdWlyZWRfYXN0ZXJpc2siPio8L3NwYW4+PC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX2VtYWlsJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSdpbnB1dF8xJyBpZD0naW5wdXRfMjlfMScgdHlwZT0nZW1haWwnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICAgIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiICAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2xpPjxsaSBpZD0iZmllbGRfMjlfMiIgY2xhc3M9ImdmaWVsZCBnZmllbGQtLXR5cGUtY2hlY2tib3ggZ2ZpZWxkLS10eXBlLWNob2ljZSBnZl9saXN0XzJjb2wgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgZGF0YS1qcy1yZWxvYWQ9ImZpZWxkXzI5XzIiID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCBnZmllbGRfbGFiZWxfYmVmb3JlX2NvbXBsZXgnID5UeXBlIGRlIHZvdHJlIHByb2NoYWluZSBoYWJpdGF0aW9uPHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCI+PHNwYW4gY2xhc3M9ImdmaWVsZF9yZXF1aXJlZCBnZmllbGRfcmVxdWlyZWRfYXN0ZXJpc2siPio8L3NwYW4+PC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX2NoZWNrYm94Jz48dWwgY2xhc3M9J2dmaWVsZF9jaGVja2JveCcgaWQ9J2lucHV0XzI5XzInPjxsaSBjbGFzcz0nZ2Nob2ljZSBnY2hvaWNlXzI5XzJfMSc+CgkJCQkJCQkJPGlucHV0IGNsYXNzPSdnZmllbGQtY2hvaWNlLWlucHV0JyBuYW1lPSdpbnB1dF8yLjEnIHR5cGU9J2NoZWNrYm94JyAgdmFsdWU9J01haXNvbiBzZW1pLWTDqXRhY2jDqWUnICBpZD0nY2hvaWNlXzI5XzJfMScgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV8yXzEnIGlkPSdsYWJlbF8yOV8yXzEnIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPk1haXNvbiBzZW1pLWTDqXRhY2jDqWU8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV8yXzInPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfMi4yJyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdNYWlzb24gdW5pZmFtaWxpYWxlJyAgaWQ9J2Nob2ljZV8yOV8yXzInICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfMl8yJyBpZD0nbGFiZWxfMjlfMl8yJyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5NYWlzb24gdW5pZmFtaWxpYWxlPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfMl8zJz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzIuMycgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nTWFpc29uIGRlIHZpbGxlJyAgaWQ9J2Nob2ljZV8yOV8yXzMnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfMl8zJyBpZD0nbGFiZWxfMjlfMl8zJyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5NYWlzb24gZGUgdmlsbGU8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV8yXzQnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfMi40JyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdDb25kb3Mgw6AgdmVuZHJlJyAgaWQ9J2Nob2ljZV8yOV8yXzQnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfMl80JyBpZD0nbGFiZWxfMjlfMl80JyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5Db25kb3Mgw6AgdmVuZHJlPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfMl81Jz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzIuNScgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nQ29uZG8gbG9jYXRpZicgIGlkPSdjaG9pY2VfMjlfMl81JyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzJfNScgaWQ9J2xhYmVsXzI5XzJfNScgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+Q29uZG8gbG9jYXRpZjwvbGFiZWw+CgkJCQkJCQk8L2xpPjwvdWw+PC9kaXY+PC9saT48bGkgaWQ9ImZpZWxkXzI5XzQiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLWNoZWNrYm94IGdmaWVsZC0tdHlwZS1jaG9pY2UgZ2ZfbGlzdF8yY29sIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBnZmllbGQtLW5vLWRlc2NyaXB0aW9uIGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgIGRhdGEtanMtcmVsb2FkPSJmaWVsZF8yOV80IiA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwgZ2ZpZWxkX2xhYmVsX2JlZm9yZV9jb21wbGV4JyA+VmlsbGUgZW52aXNhZ8OpZXMgcG91ciBjZSBwcm9qZXQgZOKAmWhhYml0YXRpb248c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIj48c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIGdmaWVsZF9yZXF1aXJlZF9hc3RlcmlzayI+Kjwvc3Bhbj48L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfY2hlY2tib3gnPjx1bCBjbGFzcz0nZ2ZpZWxkX2NoZWNrYm94JyBpZD0naW5wdXRfMjlfNCc+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfNF8xJz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzQuMScgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nTWlyYWJlbCcgIGlkPSdjaG9pY2VfMjlfNF8xJyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzRfMScgaWQ9J2xhYmVsXzI5XzRfMScgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+TWlyYWJlbDwvbGFiZWw+CgkJCQkJCQk8L2xpPjxsaSBjbGFzcz0nZ2Nob2ljZSBnY2hvaWNlXzI5XzRfMic+CgkJCQkJCQkJPGlucHV0IGNsYXNzPSdnZmllbGQtY2hvaWNlLWlucHV0JyBuYW1lPSdpbnB1dF80LjInIHR5cGU9J2NoZWNrYm94JyAgdmFsdWU9J1N0ZS1UaMOpcsOoc2UnICBpZD0nY2hvaWNlXzI5XzRfMicgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV80XzInIGlkPSdsYWJlbF8yOV80XzInIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPlN0ZS1UaMOpcsOoc2U8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV80XzMnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfNC4zJyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdCb2lzYnJpYW5kJyAgaWQ9J2Nob2ljZV8yOV80XzMnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfNF8zJyBpZD0nbGFiZWxfMjlfNF8zJyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5Cb2lzYnJpYW5kPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfNF80Jz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzQuNCcgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nQmxhaW52aWxsZScgIGlkPSdjaG9pY2VfMjlfNF80JyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzRfNCcgaWQ9J2xhYmVsXzI5XzRfNCcgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+QmxhaW52aWxsZTwvbGFiZWw+CgkJCQkJCQk8L2xpPjxsaSBjbGFzcz0nZ2Nob2ljZSBnY2hvaWNlXzI5XzRfNSc+CgkJCQkJCQkJPGlucHV0IGNsYXNzPSdnZmllbGQtY2hvaWNlLWlucHV0JyBuYW1lPSdpbnB1dF80LjUnIHR5cGU9J2NoZWNrYm94JyAgdmFsdWU9J01hc2NvdWNoZScgIGlkPSdjaG9pY2VfMjlfNF81JyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzRfNScgaWQ9J2xhYmVsXzI5XzRfNScgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+TWFzY291Y2hlPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfNF82Jz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzQuNicgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nTGF2YWwnICBpZD0nY2hvaWNlXzI5XzRfNicgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV80XzYnIGlkPSdsYWJlbF8yOV80XzYnIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPkxhdmFsPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfNF83Jz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzQuNycgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nTW9udHLDqWFsJyAgaWQ9J2Nob2ljZV8yOV80XzcnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfNF83JyBpZD0nbGFiZWxfMjlfNF83JyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5Nb250csOpYWw8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV80XzgnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfNC44JyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdUZXJyZWJvbm5lJyAgaWQ9J2Nob2ljZV8yOV80XzgnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfNF84JyBpZD0nbGFiZWxfMjlfNF84JyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5UZXJyZWJvbm5lPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfNF85Jz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzQuOScgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nQXV0cmUocyknICBpZD0nY2hvaWNlXzI5XzRfOScgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV80XzknIGlkPSdsYWJlbF8yOV80XzknIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPkF1dHJlKHMpPC9sYWJlbD4KCQkJCQkJCTwvbGk+PC91bD48L2Rpdj48L2xpPjxsaSBpZD0iZmllbGRfMjlfMyIgY2xhc3M9ImdmaWVsZCBnZmllbGQtLXR5cGUtdGV4dCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBnZmllbGQtLW5vLWRlc2NyaXB0aW9uIGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgIGRhdGEtanMtcmVsb2FkPSJmaWVsZF8yOV8zIiA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwnIGZvcj0naW5wdXRfMjlfMyc+QXV0cmVzPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfdGV4dCc+PGlucHV0IG5hbWU9J2lucHV0XzMnIGlkPSdpbnB1dF8yOV8zJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyAgICAgIGFyaWEtaW52YWxpZD0iZmFsc2UiICAgLz48L2Rpdj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm0tZm9vdGVyIGdmb3JtX2Zvb3RlciB0b3BfbGFiZWwnPiA8aW5wdXQgdHlwZT0nc3VibWl0JyBpZD0nZ2Zvcm1fc3VibWl0X2J1dHRvbl8yOScgY2xhc3M9J2dmb3JtX2J1dHRvbiBidXR0b24nIG9uY2xpY2s9J2dmb3JtLnN1Ym1pc3Npb24uaGFuZGxlQnV0dG9uQ2xpY2sodGhpcyk7JyB2YWx1ZT0nRW52b3llei1tb2kgbW9uIGd1aWRlIGdyYXR1aXRlbWVudCcgIC8+IDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2dmb3JtX2FqYXgnIHZhbHVlPSdmb3JtX2lkPTI5JmFtcDt0aXRsZT0xJmFtcDtkZXNjcmlwdGlvbj0xJmFtcDt0YWJpbmRleD0wJmFtcDt0aGVtZT1sZWdhY3knIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3N1Ym1pc3Npb25fbWV0aG9kJyBkYXRhLWpzPSdnZm9ybV9zdWJtaXNzaW9uX21ldGhvZF8yOScgdmFsdWU9J2lmcmFtZScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fdGhlbWUnIGRhdGEtanM9J2dmb3JtX3RoZW1lXzI5JyBpZD0nZ2Zvcm1fdGhlbWVfMjknIHZhbHVlPSdsZWdhY3knIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3N0eWxlX3NldHRpbmdzJyBkYXRhLWpzPSdnZm9ybV9zdHlsZV9zZXR0aW5nc18yOScgaWQ9J2dmb3JtX3N0eWxlX3NldHRpbmdzXzI5JyB2YWx1ZT0nJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdpc19zdWJtaXRfMjknIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdWJtaXQnIHZhbHVlPScyOScgLz4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3VuaXF1ZV9pZCcgdmFsdWU9JycgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nc3RhdGVfMjknIHZhbHVlPSdXeUpiWFNJc0lqSTRNVFJrWW1ZNE5HSmpZalZsT1RWa05HUXpOamM1WW1FM01EZzJOVFkySWwwPScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgYXV0b2NvbXBsZXRlPSdvZmYnIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl8yOScgaWQ9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl8yOScgdmFsdWU9JzAnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGF1dG9jb21wbGV0ZT0nb2ZmJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjknIGlkPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjknIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9maWVsZF92YWx1ZXMnIHZhbHVlPScnIC8+CiAgICAgICAgICAgIAogICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoJCSAgICAgICAgICAgICAgICA8aWZyYW1lIHN0eWxlPSdkaXNwbGF5Om5vbmU7d2lkdGg6MHB4O2hlaWdodDowcHg7JyBzcmM9J2Fib3V0OmJsYW5rJyBuYW1lPSdnZm9ybV9hamF4X2ZyYW1lXzI5JyBpZD0nZ2Zvcm1fYWpheF9mcmFtZV8yOScgdGl0bGU9J1RoaXMgaWZyYW1lIGNvbnRhaW5zIHRoZSBsb2dpYyByZXF1aXJlZCB0byBoYW5kbGUgQWpheCBwb3dlcmVkIEdyYXZpdHkgRm9ybXMuJz48L2lmcmFtZT4KCQkgICAgICAgICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovKiA8IVtDREFUQVsgKi8KIGdmb3JtLmluaXRpYWxpemVPbkxvYWRlZCggZnVuY3Rpb24oKSB7Z2Zvcm1Jbml0U3Bpbm5lciggMjksICdodHRwczovL2dyb3VwZW1hdGhpZXUuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9ncmF2aXR5Zm9ybXMvaW1hZ2VzL3NwaW5uZXIuc3ZnJywgdHJ1ZSApO2pRdWVyeSgnI2dmb3JtX2FqYXhfZnJhbWVfMjknKS5vbignbG9hZCcsZnVuY3Rpb24oKXt2YXIgY29udGVudHMgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcqJykuaHRtbCgpO3ZhciBpc19wb3N0YmFjayA9IGNvbnRlbnRzLmluZGV4T2YoJ0dGX0FKQVhfUE9TVEJBQ0snKSA+PSAwO2lmKCFpc19wb3N0YmFjayl7cmV0dXJuO312YXIgZm9ybV9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX3dyYXBwZXJfMjknKTt2YXIgaXNfY29uZmlybWF0aW9uID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3JtX2NvbmZpcm1hdGlvbl93cmFwcGVyXzI5JykubGVuZ3RoID4gMDt2YXIgaXNfcmVkaXJlY3QgPSBjb250ZW50cy5pbmRleE9mKCdnZm9ybVJlZGlyZWN0KCl7JykgPj0gMDt2YXIgaXNfZm9ybSA9IGZvcm1fY29udGVudC5sZW5ndGggPiAwICYmICEgaXNfcmVkaXJlY3QgJiYgISBpc19jb25maXJtYXRpb247dmFyIG10ID0gcGFyc2VJbnQoalF1ZXJ5KCdodG1sJykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIHBhcnNlSW50KGpRdWVyeSgnYm9keScpLmNzcygnbWFyZ2luLXRvcCcpLCAxMCkgKyAxMDA7aWYoaXNfZm9ybSl7Zm9ybV9jb250ZW50LmZpbmQoJ2Zvcm0nKS5jc3MoJ29wYWNpdHknLCAwKTtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzI5JykuaHRtbChmb3JtX2NvbnRlbnQuaHRtbCgpKTtpZihmb3JtX2NvbnRlbnQuaGFzQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yOScpLmFkZENsYXNzKCdnZm9ybV92YWxpZGF0aW9uX2Vycm9yJyk7fSBlbHNlIHtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzI5JykucmVtb3ZlQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yOScpLm9mZnNldCgpLnRvcCAtIG10KTsgfSwgNTAgKTtpZih3aW5kb3dbJ2dmb3JtSW5pdERhdGVwaWNrZXInXSkge2dmb3JtSW5pdERhdGVwaWNrZXIoKTt9aWYod2luZG93WydnZm9ybUluaXRQcmljZUZpZWxkcyddKSB7Z2Zvcm1Jbml0UHJpY2VGaWVsZHMoKTt9dmFyIGN1cnJlbnRfcGFnZSA9IGpRdWVyeSgnI2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl8yOScpLnZhbCgpO2dmb3JtSW5pdFNwaW5uZXIoIDI5LCAnaHR0cHM6Ly9ncm91cGVtYXRoaWV1LmNvbS93cC1jb250ZW50L3BsdWdpbnMvZ3Jhdml0eWZvcm1zL2ltYWdlcy9zcGlubmVyLnN2ZycsIHRydWUgKTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX3BhZ2VfbG9hZGVkJywgWzI5LCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMjknXSA9IGZhbHNlO31lbHNlIGlmKCFpc19yZWRpcmVjdCl7dmFyIGNvbmZpcm1hdGlvbl9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnLkdGX0FKQVhfUE9TVEJBQ0snKS5odG1sKCk7aWYoIWNvbmZpcm1hdGlvbl9jb250ZW50KXtjb25maXJtYXRpb25fY29udGVudCA9IGNvbnRlbnRzO31qUXVlcnkoJyNnZm9ybV93cmFwcGVyXzI5JykucmVwbGFjZVdpdGgoY29uZmlybWF0aW9uX2NvbnRlbnQpO2pRdWVyeShkb2N1bWVudCkuc2Nyb2xsVG9wKGpRdWVyeSgnI2dmXzI5Jykub2Zmc2V0KCkudG9wIC0gbXQpO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFsyOV0pO3dpbmRvd1snZ2Zfc3VibWl0dGluZ18yOSddID0gZmFsc2U7d3AuYTExeS5zcGVhayhqUXVlcnkoJyNnZm9ybV9jb25maXJtYXRpb25fbWVzc2FnZV8yOScpLnRleHQoKSk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fMjknKS5hcHBlbmQoY29udGVudHMpO2lmKHdpbmRvd1snZ2Zvcm1SZWRpcmVjdCddKSB7Z2Zvcm1SZWRpcmVjdCgpO319alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCJnZm9ybV9wcmVfcG9zdF9yZW5kZXIiLCBbeyBmb3JtSWQ6ICIyOSIsIGN1cnJlbnRQYWdlOiAiY3VycmVudF9wYWdlIiwgYWJvcnQ6IGZ1bmN0aW9uKCkgeyB0aGlzLnByZXZlbnREZWZhdWx0KCk7IH0gfV0pOyAgICAgICAgICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgfSAgICAgICAgY29uc3QgZ2Zvcm1XcmFwcGVyRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICJnZm9ybV93cmFwcGVyXzI5IiApOyAgICAgICAgaWYgKCBnZm9ybVdyYXBwZXJEaXYgKSB7ICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eVNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAic3BhbiIgKTsgICAgICAgICAgICB2aXNpYmlsaXR5U3Bhbi5pZCA9ICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMjkiOyAgICAgICAgICAgIGdmb3JtV3JhcHBlckRpdi5pbnNlcnRBZGphY2VudEVsZW1lbnQoICJhZnRlcmVuZCIsIHZpc2liaWxpdHlTcGFuICk7ICAgICAgICB9ICAgICAgICBjb25zdCB2aXNpYmlsaXR5VGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAiZ2Zvcm1fdmlzaWJpbGl0eV90ZXN0XzI5IiApOyAgICAgICAgbGV0IHBvc3RSZW5kZXJGaXJlZCA9IGZhbHNlOyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0cmlnZ2VyUG9zdFJlbmRlcigpIHsgICAgICAgICAgICBpZiAoIHBvc3RSZW5kZXJGaXJlZCApIHsgICAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgIH0gICAgICAgICAgICBwb3N0UmVuZGVyRmlyZWQgPSB0cnVlOyAgICAgICAgICAgIGpRdWVyeSggZG9jdW1lbnQgKS50cmlnZ2VyKCAnZ2Zvcm1fcG9zdF9yZW5kZXInLCBbMjksIGN1cnJlbnRfcGFnZV0gKTsgICAgICAgICAgICBnZm9ybS51dGlscy50cmlnZ2VyKCB7IGV2ZW50OiAnZ2Zvcm0vcG9zdFJlbmRlcicsIG5hdGl2ZTogZmFsc2UsIGRhdGE6IHsgZm9ybUlkOiAyOSwgY3VycmVudFBhZ2U6IGN1cnJlbnRfcGFnZSB9IH0gKTsgICAgICAgICAgICBnZm9ybS51dGlscy50cmlnZ2VyKCB7IGV2ZW50OiAnZ2Zvcm0vcG9zdF9yZW5kZXInLCBuYXRpdmU6IGZhbHNlLCBkYXRhOiB7IGZvcm1JZDogMjksIGN1cnJlbnRQYWdlOiBjdXJyZW50X3BhZ2UgfSB9ICk7ICAgICAgICAgICAgaWYgKCB2aXNpYmlsaXR5VGVzdERpdiApIHsgICAgICAgICAgICAgICAgdmlzaWJpbGl0eVRlc3REaXYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdmlzaWJpbGl0eVRlc3REaXYgKTsgICAgICAgICAgICB9ICAgICAgICB9ICAgICAgICBmdW5jdGlvbiBkZWJvdW5jZSggZnVuYywgd2FpdCwgaW1tZWRpYXRlICkgeyAgICAgICAgICAgIHZhciB0aW1lb3V0OyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsgICAgICAgICAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzOyAgICAgICAgICAgICAgICB2YXIgbGF0ZXIgPSBmdW5jdGlvbigpIHsgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBudWxsOyAgICAgICAgICAgICAgICAgICAgaWYgKCAhaW1tZWRpYXRlICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICB2YXIgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDsgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KCB0aW1lb3V0ICk7ICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCBsYXRlciwgd2FpdCApOyAgICAgICAgICAgICAgICBpZiAoIGNhbGxOb3cgKSBmdW5jLmFwcGx5KCBjb250ZXh0LCBhcmdzICk7ICAgICAgICAgICAgfTsgICAgICAgIH0gICAgICAgIGNvbnN0IGRlYm91bmNlZFRyaWdnZXJQb3N0UmVuZGVyID0gZGVib3VuY2UoIGZ1bmN0aW9uKCkgeyAgICAgICAgICAgIHRyaWdnZXJQb3N0UmVuZGVyKCk7ICAgICAgICB9LCAyMDAgKTsgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgJiYgdmlzaWJpbGl0eVRlc3REaXYub2Zmc2V0UGFyZW50ID09PSBudWxsICkgeyAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoICggbXV0YXRpb25zICkgPT4geyAgICAgICAgICAgICAgICBtdXRhdGlvbnMuZm9yRWFjaCggKCBtdXRhdGlvbiApID0+IHsgICAgICAgICAgICAgICAgICAgIGlmICggbXV0YXRpb24udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCAhPT0gbnVsbCApIHsgICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgfSk7ICAgICAgICAgICAgfSk7ICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSggZG9jdW1lbnQuYm9keSwgeyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLCAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IGZhbHNlLCAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLCAgICAgICAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsgJ3N0eWxlJywgJ2NsYXNzJyBdLCAgICAgICAgICAgIH0pOyAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSAgICB9ICk7fSApOyAKLyogXV0+ICovCjwvc2NyaXB0Pgo=
Téléchargez votre guide de l'acheteur gratuitement!