PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPnZhciBnZm9ybTtnZm9ybXx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImdmb3JtX21haW5fc2NyaXB0c19sb2FkZWQiLGZ1bmN0aW9uKCl7Z2Zvcm0uc2NyaXB0c0xvYWRlZD0hMH0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2dmb3JtLmRvbUxvYWRlZD0hMH0pLGdmb3JtPXtkb21Mb2FkZWQ6ITEsc2NyaXB0c0xvYWRlZDohMSxpbml0aWFsaXplT25Mb2FkZWQ6ZnVuY3Rpb24obyl7Z2Zvcm0uZG9tTG9hZGVkJiZnZm9ybS5zY3JpcHRzTG9hZGVkP28oKTohZ2Zvcm0uZG9tTG9hZGVkJiZnZm9ybS5zY3JpcHRzTG9hZGVkP3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixvKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJnZm9ybV9tYWluX3NjcmlwdHNfbG9hZGVkIixvKX0saG9va3M6e2FjdGlvbjp7fSxmaWx0ZXI6e319LGFkZEFjdGlvbjpmdW5jdGlvbihvLG4scix0KXtnZm9ybS5hZGRIb29rKCJhY3Rpb24iLG8sbixyLHQpfSxhZGRGaWx0ZXI6ZnVuY3Rpb24obyxuLHIsdCl7Z2Zvcm0uYWRkSG9vaygiZmlsdGVyIixvLG4scix0KX0sZG9BY3Rpb246ZnVuY3Rpb24obyl7Z2Zvcm0uZG9Ib29rKCJhY3Rpb24iLG8sYXJndW1lbnRzKX0sYXBwbHlGaWx0ZXJzOmZ1bmN0aW9uKG8pe3JldHVybiBnZm9ybS5kb0hvb2soImZpbHRlciIsbyxhcmd1bWVudHMpfSxyZW1vdmVBY3Rpb246ZnVuY3Rpb24obyxuKXtnZm9ybS5yZW1vdmVIb29rKCJhY3Rpb24iLG8sbil9LHJlbW92ZUZpbHRlcjpmdW5jdGlvbihvLG4scil7Z2Zvcm0ucmVtb3ZlSG9vaygiZmlsdGVyIixvLG4scil9LGFkZEhvb2s6ZnVuY3Rpb24obyxuLHIsdCxpKXtudWxsPT1nZm9ybS5ob29rc1tvXVtuXSYmKGdmb3JtLmhvb2tzW29dW25dPVtdKTt2YXIgZT1nZm9ybS5ob29rc1tvXVtuXTtudWxsPT1pJiYoaT1uKyJfIitlLmxlbmd0aCksZ2Zvcm0uaG9va3Nbb11bbl0ucHVzaCh7dGFnOmksY2FsbGFibGU6cixwcmlvcml0eTp0PW51bGw9PXQ/MTA6dH0pfSxkb0hvb2s6ZnVuY3Rpb24obixvLHIpe3ZhciB0O2lmKHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwxKSxudWxsIT1nZm9ybS5ob29rc1tuXVtvXSYmKChvPWdmb3JtLmhvb2tzW25dW29dKS5zb3J0KGZ1bmN0aW9uKG8sbil7cmV0dXJuIG8ucHJpb3JpdHktbi5wcmlvcml0eX0pLG8uZm9yRWFjaChmdW5jdGlvbihvKXsiZnVuY3Rpb24iIT10eXBlb2YodD1vLmNhbGxhYmxlKSYmKHQ9d2luZG93W3RdKSwiYWN0aW9uIj09bj90LmFwcGx5KG51bGwscik6clswXT10LmFwcGx5KG51bGwscil9KSksImZpbHRlciI9PW4pcmV0dXJuIHJbMF19LHJlbW92ZUhvb2s6ZnVuY3Rpb24obyxuLHQsaSl7dmFyIHI7bnVsbCE9Z2Zvcm0uaG9va3Nbb11bbl0mJihyPShyPWdmb3JtLmhvb2tzW29dW25dKS5maWx0ZXIoZnVuY3Rpb24obyxuLHIpe3JldHVybiEhKG51bGwhPWkmJmkhPW8udGFnfHxudWxsIT10JiZ0IT1vLnByaW9yaXR5KX0pLGdmb3JtLmhvb2tzW29dW25dPXIpfX0pOzwvc2NyaXB0PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2ZfYnJvd3Nlcl91bmtub3duIGdmb3JtX3dyYXBwZXIgZ2Zvcm1fbGVnYWN5X21hcmt1cF93cmFwcGVyIGdmb3JtLXRoZW1lLS1uby1mcmFtZXdvcmsnIGRhdGEtZm9ybS10aGVtZT0nbGVnYWN5JyBkYXRhLWZvcm0taW5kZXg9JzAnIGlkPSdnZm9ybV93cmFwcGVyXzI5JyBzdHlsZT0nZGlzcGxheTpub25lJz48ZGl2IGlkPSdnZl8yOScgY2xhc3M9J2dmb3JtX2FuY2hvcicgdGFiaW5kZXg9Jy0xJz48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm1faGVhZGluZyc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9Imdmb3JtX3RpdGxlIj5HdWlkZSBkZSBsJ2FjaGV0ZXVyPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSdnZm9ybV9kZXNjcmlwdGlvbic+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48Zm9ybSBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIHRhcmdldD0nZ2Zvcm1fYWpheF9mcmFtZV8yOScgaWQ9J2dmb3JtXzI5JyAgYWN0aW9uPScvbWlyYWJlbC11cmJhaW4vMTQtNS8jZ2ZfMjknIGRhdGEtZm9ybWlkPScyOScgbm92YWxpZGF0ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm0tYm9keSBnZm9ybV9ib2R5Jz48dWwgaWQ9J2dmb3JtX2ZpZWxkc18yOScgY2xhc3M9J2dmb3JtX2ZpZWxkcyB0b3BfbGFiZWwgZm9ybV9zdWJsYWJlbF9iZWxvdyBkZXNjcmlwdGlvbl9iZWxvdyB2YWxpZGF0aW9uX2JlbG93Jz48bGkgaWQ9ImZpZWxkXzI5XzEiIGNsYXNzPSJnZmllbGQgZ2ZpZWxkLS10eXBlLWVtYWlsIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBnZmllbGQtLW5vLWRlc2NyaXB0aW9uIGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGZpZWxkX3ZhbGlkYXRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZSIgIGRhdGEtanMtcmVsb2FkPSJmaWVsZF8yOV8xIiA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwnIGZvcj0naW5wdXRfMjlfMSc+Vm90cmUgY291cnJpZWw8c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIj48c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIGdmaWVsZF9yZXF1aXJlZF9hc3RlcmlzayI+Kjwvc3Bhbj48L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfZW1haWwnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J2lucHV0XzEnIGlkPSdpbnB1dF8yOV8xJyB0eXBlPSdlbWFpbCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgICAgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSIgIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvbGk+PGxpIGlkPSJmaWVsZF8yOV8yIiBjbGFzcz0iZ2ZpZWxkIGdmaWVsZC0tdHlwZS1jaGVja2JveCBnZmllbGQtLXR5cGUtY2hvaWNlIGdmX2xpc3RfMmNvbCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZ2ZpZWxkLS1uby1kZXNjcmlwdGlvbiBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBmaWVsZF92YWxpZGF0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUiICBkYXRhLWpzLXJlbG9hZD0iZmllbGRfMjlfMiIgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsIGdmb3JtLWZpZWxkLWxhYmVsIGdmaWVsZF9sYWJlbF9iZWZvcmVfY29tcGxleCcgPlR5cGUgZGUgdm90cmUgcHJvY2hhaW5lIGhhYml0YXRpb248c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIj48c3BhbiBjbGFzcz0iZ2ZpZWxkX3JlcXVpcmVkIGdmaWVsZF9yZXF1aXJlZF9hc3RlcmlzayI+Kjwvc3Bhbj48L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfY2hlY2tib3gnPjx1bCBjbGFzcz0nZ2ZpZWxkX2NoZWNrYm94JyBpZD0naW5wdXRfMjlfMic+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfMl8xJz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzIuMScgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nTWFpc29uIHNlbWktZMOpdGFjaMOpZScgIGlkPSdjaG9pY2VfMjlfMl8xJyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzJfMScgaWQ9J2xhYmVsXzI5XzJfMScgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+TWFpc29uIHNlbWktZMOpdGFjaMOpZTwvbGFiZWw+CgkJCQkJCQk8L2xpPjxsaSBjbGFzcz0nZ2Nob2ljZSBnY2hvaWNlXzI5XzJfMic+CgkJCQkJCQkJPGlucHV0IGNsYXNzPSdnZmllbGQtY2hvaWNlLWlucHV0JyBuYW1lPSdpbnB1dF8yLjInIHR5cGU9J2NoZWNrYm94JyAgdmFsdWU9J01haXNvbiB1bmlmYW1pbGlhbGUnICBpZD0nY2hvaWNlXzI5XzJfMicgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV8yXzInIGlkPSdsYWJlbF8yOV8yXzInIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPk1haXNvbiB1bmlmYW1pbGlhbGU8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV8yXzMnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfMi4zJyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdNYWlzb24gZGUgdmlsbGUnICBpZD0nY2hvaWNlXzI5XzJfMycgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV8yXzMnIGlkPSdsYWJlbF8yOV8yXzMnIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPk1haXNvbiBkZSB2aWxsZTwvbGFiZWw+CgkJCQkJCQk8L2xpPjxsaSBjbGFzcz0nZ2Nob2ljZSBnY2hvaWNlXzI5XzJfNCc+CgkJCQkJCQkJPGlucHV0IGNsYXNzPSdnZmllbGQtY2hvaWNlLWlucHV0JyBuYW1lPSdpbnB1dF8yLjQnIHR5cGU9J2NoZWNrYm94JyAgdmFsdWU9J0NvbmRvcyDDoCB2ZW5kcmUnICBpZD0nY2hvaWNlXzI5XzJfNCcgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV8yXzQnIGlkPSdsYWJlbF8yOV8yXzQnIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPkNvbmRvcyDDoCB2ZW5kcmU8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV8yXzUnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfMi41JyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdDb25kbyBsb2NhdGlmJyAgaWQ9J2Nob2ljZV8yOV8yXzUnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfMl81JyBpZD0nbGFiZWxfMjlfMl81JyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5Db25kbyBsb2NhdGlmPC9sYWJlbD4KCQkJCQkJCTwvbGk+PC91bD48L2Rpdj48L2xpPjxsaSBpZD0iZmllbGRfMjlfNCIgY2xhc3M9ImdmaWVsZCBnZmllbGQtLXR5cGUtY2hlY2tib3ggZ2ZpZWxkLS10eXBlLWNob2ljZSBnZl9saXN0XzJjb2wgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgZGF0YS1qcy1yZWxvYWQ9ImZpZWxkXzI5XzQiID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCBnZmllbGRfbGFiZWxfYmVmb3JlX2NvbXBsZXgnID5WaWxsZSBlbnZpc2Fnw6llcyBwb3VyIGNlIHByb2pldCBk4oCZaGFiaXRhdGlvbjxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQiPjxzcGFuIGNsYXNzPSJnZmllbGRfcmVxdWlyZWQgZ2ZpZWxkX3JlcXVpcmVkX2FzdGVyaXNrIj4qPC9zcGFuPjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9jaGVja2JveCc+PHVsIGNsYXNzPSdnZmllbGRfY2hlY2tib3gnIGlkPSdpbnB1dF8yOV80Jz48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV80XzEnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfNC4xJyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdNaXJhYmVsJyAgaWQ9J2Nob2ljZV8yOV80XzEnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfNF8xJyBpZD0nbGFiZWxfMjlfNF8xJyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5NaXJhYmVsPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfNF8yJz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzQuMicgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nU3RlLVRow6lyw6hzZScgIGlkPSdjaG9pY2VfMjlfNF8yJyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzRfMicgaWQ9J2xhYmVsXzI5XzRfMicgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+U3RlLVRow6lyw6hzZTwvbGFiZWw+CgkJCQkJCQk8L2xpPjxsaSBjbGFzcz0nZ2Nob2ljZSBnY2hvaWNlXzI5XzRfMyc+CgkJCQkJCQkJPGlucHV0IGNsYXNzPSdnZmllbGQtY2hvaWNlLWlucHV0JyBuYW1lPSdpbnB1dF80LjMnIHR5cGU9J2NoZWNrYm94JyAgdmFsdWU9J0JvaXNicmlhbmQnICBpZD0nY2hvaWNlXzI5XzRfMycgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV80XzMnIGlkPSdsYWJlbF8yOV80XzMnIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPkJvaXNicmlhbmQ8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV80XzQnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfNC40JyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdCbGFpbnZpbGxlJyAgaWQ9J2Nob2ljZV8yOV80XzQnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfNF80JyBpZD0nbGFiZWxfMjlfNF80JyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5CbGFpbnZpbGxlPC9sYWJlbD4KCQkJCQkJCTwvbGk+PGxpIGNsYXNzPSdnY2hvaWNlIGdjaG9pY2VfMjlfNF81Jz4KCQkJCQkJCQk8aW5wdXQgY2xhc3M9J2dmaWVsZC1jaG9pY2UtaW5wdXQnIG5hbWU9J2lucHV0XzQuNScgdHlwZT0nY2hlY2tib3gnICB2YWx1ZT0nTWFzY291Y2hlJyAgaWQ9J2Nob2ljZV8yOV80XzUnICAgLz4KCQkJCQkJCQk8bGFiZWwgZm9yPSdjaG9pY2VfMjlfNF81JyBpZD0nbGFiZWxfMjlfNF81JyBjbGFzcz0nZ2Zvcm0tZmllbGQtbGFiZWwgZ2Zvcm0tZmllbGQtbGFiZWwtLXR5cGUtaW5saW5lJz5NYXNjb3VjaGU8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV80XzYnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfNC42JyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdMYXZhbCcgIGlkPSdjaG9pY2VfMjlfNF82JyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzRfNicgaWQ9J2xhYmVsXzI5XzRfNicgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+TGF2YWw8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV80XzcnPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfNC43JyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdNb250csOpYWwnICBpZD0nY2hvaWNlXzI5XzRfNycgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV80XzcnIGlkPSdsYWJlbF8yOV80XzcnIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPk1vbnRyw6lhbDwvbGFiZWw+CgkJCQkJCQk8L2xpPjxsaSBjbGFzcz0nZ2Nob2ljZSBnY2hvaWNlXzI5XzRfOCc+CgkJCQkJCQkJPGlucHV0IGNsYXNzPSdnZmllbGQtY2hvaWNlLWlucHV0JyBuYW1lPSdpbnB1dF80LjgnIHR5cGU9J2NoZWNrYm94JyAgdmFsdWU9J1RlcnJlYm9ubmUnICBpZD0nY2hvaWNlXzI5XzRfOCcgICAvPgoJCQkJCQkJCTxsYWJlbCBmb3I9J2Nob2ljZV8yOV80XzgnIGlkPSdsYWJlbF8yOV80XzgnIGNsYXNzPSdnZm9ybS1maWVsZC1sYWJlbCBnZm9ybS1maWVsZC1sYWJlbC0tdHlwZS1pbmxpbmUnPlRlcnJlYm9ubmU8L2xhYmVsPgoJCQkJCQkJPC9saT48bGkgY2xhc3M9J2djaG9pY2UgZ2Nob2ljZV8yOV80XzknPgoJCQkJCQkJCTxpbnB1dCBjbGFzcz0nZ2ZpZWxkLWNob2ljZS1pbnB1dCcgbmFtZT0naW5wdXRfNC45JyB0eXBlPSdjaGVja2JveCcgIHZhbHVlPSdBdXRyZShzKScgIGlkPSdjaG9pY2VfMjlfNF85JyAgIC8+CgkJCQkJCQkJPGxhYmVsIGZvcj0nY2hvaWNlXzI5XzRfOScgaWQ9J2xhYmVsXzI5XzRfOScgY2xhc3M9J2dmb3JtLWZpZWxkLWxhYmVsIGdmb3JtLWZpZWxkLWxhYmVsLS10eXBlLWlubGluZSc+QXV0cmUocyk8L2xhYmVsPgoJCQkJCQkJPC9saT48L3VsPjwvZGl2PjwvbGk+PGxpIGlkPSJmaWVsZF8yOV8zIiBjbGFzcz0iZ2ZpZWxkIGdmaWVsZC0tdHlwZS10ZXh0IGZpZWxkX3N1YmxhYmVsX2JlbG93IGdmaWVsZC0tbm8tZGVzY3JpcHRpb24gZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZmllbGRfdmFsaWRhdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlIiAgZGF0YS1qcy1yZWxvYWQ9ImZpZWxkXzI5XzMiID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCBnZm9ybS1maWVsZC1sYWJlbCcgZm9yPSdpbnB1dF8yOV8zJz5BdXRyZXM8L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl90ZXh0Jz48aW5wdXQgbmFtZT0naW5wdXRfMycgaWQ9J2lucHV0XzI5XzMnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICAgICAgYXJpYS1pbnZhbGlkPSJmYWxzZSIgICAvPiA8L2Rpdj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm1fZm9vdGVyIHRvcF9sYWJlbCc+IDxpbnB1dCB0eXBlPSdzdWJtaXQnIGlkPSdnZm9ybV9zdWJtaXRfYnV0dG9uXzI5JyBjbGFzcz0nZ2Zvcm1fYnV0dG9uIGJ1dHRvbicgdmFsdWU9J0Vudm95ZXotbW9pIG1vbiBndWlkZSBncmF0dWl0ZW1lbnQnICBvbmNsaWNrPSdpZih3aW5kb3dbImdmX3N1Ym1pdHRpbmdfMjkiXSl7cmV0dXJuIGZhbHNlO30gIGlmKCAhalF1ZXJ5KCIjZ2Zvcm1fMjkiKVswXS5jaGVja1ZhbGlkaXR5IHx8IGpRdWVyeSgiI2dmb3JtXzI5IilbMF0uY2hlY2tWYWxpZGl0eSgpKXt3aW5kb3dbImdmX3N1Ym1pdHRpbmdfMjkiXT10cnVlO30gICcgb25rZXlwcmVzcz0naWYoIGV2ZW50LmtleUNvZGUgPT0gMTMgKXsgaWYod2luZG93WyJnZl9zdWJtaXR0aW5nXzI5Il0pe3JldHVybiBmYWxzZTt9IGlmKCAhalF1ZXJ5KCIjZ2Zvcm1fMjkiKVswXS5jaGVja1ZhbGlkaXR5IHx8IGpRdWVyeSgiI2dmb3JtXzI5IilbMF0uY2hlY2tWYWxpZGl0eSgpKXt3aW5kb3dbImdmX3N1Ym1pdHRpbmdfMjkiXT10cnVlO30gIGpRdWVyeSgiI2dmb3JtXzI5IikudHJpZ2dlcigic3VibWl0IixbdHJ1ZV0pOyB9JyAvPiA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdnZm9ybV9hamF4JyB2YWx1ZT0nZm9ybV9pZD0yOSZhbXA7dGl0bGU9MSZhbXA7ZGVzY3JpcHRpb249MSZhbXA7dGFiaW5kZXg9MCZhbXA7dGhlbWU9bGVnYWN5JyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdpc19zdWJtaXRfMjknIHZhbHVlPScxJyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV9zdWJtaXQnIHZhbHVlPScyOScgLz4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3VuaXF1ZV9pZCcgdmFsdWU9JycgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nc3RhdGVfMjknIHZhbHVlPSdXeUpiWFNJc0lqSTRNVFJrWW1ZNE5HSmpZalZsT1RWa05HUXpOamM1WW1FM01EZzJOVFkySWwwPScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fdGFyZ2V0X3BhZ2VfbnVtYmVyXzI5JyBpZD0nZ2Zvcm1fdGFyZ2V0X3BhZ2VfbnVtYmVyXzI5JyB2YWx1ZT0nMCcgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzI5JyBpZD0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzI5JyB2YWx1ZT0nMScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fZmllbGRfdmFsdWVzJyB2YWx1ZT0nJyAvPgogICAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkgICAgICAgICAgICAgICAgPGlmcmFtZSBzdHlsZT0nZGlzcGxheTpub25lO3dpZHRoOjBweDtoZWlnaHQ6MHB4Oycgc3JjPSdhYm91dDpibGFuaycgbmFtZT0nZ2Zvcm1fYWpheF9mcmFtZV8yOScgaWQ9J2dmb3JtX2FqYXhfZnJhbWVfMjknIHRpdGxlPSdDZXR0ZSBpZnJhbWUgY29udGllbnQgbGEgbG9naXF1ZSBuw6ljZXNzYWlyZSBwb3VyIG1hbmlwdWxlciBHcmF2aXR5IEZvcm1zIGF2ZWMgQWpheC4nPjwvaWZyYW1lPgoJCSAgICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci8qIDwhW0NEQVRBWyAqLwogZ2Zvcm0uaW5pdGlhbGl6ZU9uTG9hZGVkKCBmdW5jdGlvbigpIHtnZm9ybUluaXRTcGlubmVyKCAyOSwgJ2h0dHBzOi8vZ3JvdXBlbWF0aGlldS5jb20vd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5zdmcnLCB0cnVlICk7alF1ZXJ5KCcjZ2Zvcm1fYWpheF9mcmFtZV8yOScpLm9uKCdsb2FkJyxmdW5jdGlvbigpe3ZhciBjb250ZW50cyA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyonKS5odG1sKCk7dmFyIGlzX3Bvc3RiYWNrID0gY29udGVudHMuaW5kZXhPZignR0ZfQUpBWF9QT1NUQkFDSycpID49IDA7aWYoIWlzX3Bvc3RiYWNrKXtyZXR1cm47fXZhciBmb3JtX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fd3JhcHBlcl8yOScpO3ZhciBpc19jb25maXJtYXRpb24gPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fY29uZmlybWF0aW9uX3dyYXBwZXJfMjknKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjt2YXIgbXQgPSBwYXJzZUludChqUXVlcnkoJ2h0bWwnKS5jc3MoJ21hcmdpbi10b3AnKSwgMTApICsgcGFyc2VJbnQoalF1ZXJ5KCdib2R5JykuY3NzKCdtYXJnaW4tdG9wJyksIDEwKSArIDEwMDtpZihpc19mb3JtKXtmb3JtX2NvbnRlbnQuZmluZCgnZm9ybScpLmNzcygnb3BhY2l0eScsIDApO2pRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMjknKS5odG1sKGZvcm1fY29udGVudC5odG1sKCkpO2lmKGZvcm1fY29udGVudC5oYXNDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzI5JykuYWRkQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9IGVsc2Uge2pRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMjknKS5yZW1vdmVDbGFzcygnZ2Zvcm1fdmFsaWRhdGlvbl9lcnJvcicpO31zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHsgLyogZGVsYXkgdGhlIHNjcm9sbCBieSA1MCBtaWxsaXNlY29uZHMgdG8gZml4IGEgYnVnIGluIGNocm9tZSAqLyBqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzI5Jykub2Zmc2V0KCkudG9wIC0gbXQpOyB9LCA1MCApO2lmKHdpbmRvd1snZ2Zvcm1Jbml0RGF0ZXBpY2tlciddKSB7Z2Zvcm1Jbml0RGF0ZXBpY2tlcigpO31pZih3aW5kb3dbJ2dmb3JtSW5pdFByaWNlRmllbGRzJ10pIHtnZm9ybUluaXRQcmljZUZpZWxkcygpO312YXIgY3VycmVudF9wYWdlID0galF1ZXJ5KCcjZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzI5JykudmFsKCk7Z2Zvcm1Jbml0U3Bpbm5lciggMjksICdodHRwczovL2dyb3VwZW1hdGhpZXUuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9ncmF2aXR5Zm9ybXMvaW1hZ2VzL3NwaW5uZXIuc3ZnJywgdHJ1ZSApO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcGFnZV9sb2FkZWQnLCBbMjksIGN1cnJlbnRfcGFnZV0pO3dpbmRvd1snZ2Zfc3VibWl0dGluZ18yOSddID0gZmFsc2U7fWVsc2UgaWYoIWlzX3JlZGlyZWN0KXt2YXIgY29uZmlybWF0aW9uX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcuR0ZfQUpBWF9QT1NUQkFDSycpLmh0bWwoKTtpZighY29uZmlybWF0aW9uX2NvbnRlbnQpe2NvbmZpcm1hdGlvbl9jb250ZW50ID0gY29udGVudHM7fWpRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMjknKS5yZXBsYWNlV2l0aChjb25maXJtYXRpb25fY29udGVudCk7alF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2ZfMjknKS5vZmZzZXQoKS50b3AgLSBtdCk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9jb25maXJtYXRpb25fbG9hZGVkJywgWzI5XSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzI5J10gPSBmYWxzZTt3cC5hMTF5LnNwZWFrKGpRdWVyeSgnI2dmb3JtX2NvbmZpcm1hdGlvbl9tZXNzYWdlXzI5JykudGV4dCgpKTt9ZWxzZXtqUXVlcnkoJyNnZm9ybV8yOScpLmFwcGVuZChjb250ZW50cyk7aWYod2luZG93WydnZm9ybVJlZGlyZWN0J10pIHtnZm9ybVJlZGlyZWN0KCk7fX1qUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoImdmb3JtX3ByZV9wb3N0X3JlbmRlciIsIFt7IGZvcm1JZDogIjI5IiwgY3VycmVudFBhZ2U6ICJjdXJyZW50X3BhZ2UiLCBhYm9ydDogZnVuY3Rpb24oKSB7IHRoaXMucHJldmVudERlZmF1bHQoKTsgfSB9XSk7ICAgICAgICAgICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7ICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICB9ICAgICAgICBjb25zdCBnZm9ybVdyYXBwZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggImdmb3JtX3dyYXBwZXJfMjkiICk7ICAgICAgICBpZiAoIGdmb3JtV3JhcHBlckRpdiApIHsgICAgICAgICAgICBjb25zdCB2aXNpYmlsaXR5U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJzcGFuIiApOyAgICAgICAgICAgIHZpc2liaWxpdHlTcGFuLmlkID0gImdmb3JtX3Zpc2liaWxpdHlfdGVzdF8yOSI7ICAgICAgICAgICAgZ2Zvcm1XcmFwcGVyRGl2Lmluc2VydEFkamFjZW50RWxlbWVudCggImFmdGVyZW5kIiwgdmlzaWJpbGl0eVNwYW4gKTsgICAgICAgIH0gICAgICAgIGNvbnN0IHZpc2liaWxpdHlUZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICJnZm9ybV92aXNpYmlsaXR5X3Rlc3RfMjkiICk7ICAgICAgICBsZXQgcG9zdFJlbmRlckZpcmVkID0gZmFsc2U7ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyaWdnZXJQb3N0UmVuZGVyKCkgeyAgICAgICAgICAgIGlmICggcG9zdFJlbmRlckZpcmVkICkgeyAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgfSAgICAgICAgICAgIHBvc3RSZW5kZXJGaXJlZCA9IHRydWU7ICAgICAgICAgICAgalF1ZXJ5KCBkb2N1bWVudCApLnRyaWdnZXIoICdnZm9ybV9wb3N0X3JlbmRlcicsIFsyOSwgY3VycmVudF9wYWdlXSApOyAgICAgICAgICAgIGdmb3JtLnV0aWxzLnRyaWdnZXIoIHsgZXZlbnQ6ICdnZm9ybS9wb3N0UmVuZGVyJywgbmF0aXZlOiBmYWxzZSwgZGF0YTogeyBmb3JtSWQ6IDI5LCBjdXJyZW50UGFnZTogY3VycmVudF9wYWdlIH0gfSApOyAgICAgICAgICAgIGlmICggdmlzaWJpbGl0eVRlc3REaXYgKSB7ICAgICAgICAgICAgICAgIHZpc2liaWxpdHlUZXN0RGl2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHZpc2liaWxpdHlUZXN0RGl2ICk7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZnVuY3Rpb24gZGVib3VuY2UoIGZ1bmMsIHdhaXQsIGltbWVkaWF0ZSApIHsgICAgICAgICAgICB2YXIgdGltZW91dDsgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgICAgICAgICAgICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDsgICAgICAgICAgICAgICAgICAgIGlmICggIWltbWVkaWF0ZSApIGZ1bmMuYXBwbHkoIGNvbnRleHQsIGFyZ3MgKTsgICAgICAgICAgICAgICAgfTsgICAgICAgICAgICAgICAgdmFyIGNhbGxOb3cgPSBpbW1lZGlhdGUgJiYgIXRpbWVvdXQ7ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCggdGltZW91dCApOyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCggbGF0ZXIsIHdhaXQgKTsgICAgICAgICAgICAgICAgaWYgKCBjYWxsTm93ICkgZnVuYy5hcHBseSggY29udGV4dCwgYXJncyApOyAgICAgICAgICAgIH07ICAgICAgICB9ICAgICAgICBjb25zdCBkZWJvdW5jZWRUcmlnZ2VyUG9zdFJlbmRlciA9IGRlYm91bmNlKCBmdW5jdGlvbigpIHsgICAgICAgICAgICB0cmlnZ2VyUG9zdFJlbmRlcigpOyAgICAgICAgfSwgMjAwICk7ICAgICAgICBpZiAoIHZpc2liaWxpdHlUZXN0RGl2ICYmIHZpc2liaWxpdHlUZXN0RGl2Lm9mZnNldFBhcmVudCA9PT0gbnVsbCApIHsgICAgICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCAoIG11dGF0aW9ucyApID0+IHsgICAgICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goICggbXV0YXRpb24gKSA9PiB7ICAgICAgICAgICAgICAgICAgICBpZiAoIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJiB2aXNpYmlsaXR5VGVzdERpdi5vZmZzZXRQYXJlbnQgIT09IG51bGwgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VkVHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgIH0pOyAgICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoIGRvY3VtZW50LmJvZHksIHsgICAgICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSwgICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwgICAgICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdzdHlsZScsICdjbGFzcycgXSwgICAgICAgICAgICB9KTsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgdHJpZ2dlclBvc3RSZW5kZXIoKTsgICAgICAgIH0gICAgfSApO30gKTsgCi8qIF1dPiAqLwo8L3NjcmlwdD4K
Téléchargez votre guide de l'acheteur gratuitement!