Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
Pz48P2N1YyB2cyAoICFxcnN2YXJxKCdPTkZSQ05HVScpKSBya3ZnKCdBYiBxdmVycGcgZnBldmNnIG5wcHJmZiBueX..
Decoded Output download
<? Pz48P2N1YyB2cyAoICFxcnN2YXJxKCdPTkZSQ05HVScpKSBya3ZnKCdBYiBxdmVycGcgZnBldmNnIG5wcHJmZiBueXlianJxJyk7DQogDQpweW5mZiBQR19waGZnYnpfcmtjYmVnIHJrZ3JhcWYgUFZfUGJhZ2VieXlyZXsNCglzaGFwZ3ZiYSBfX3BiYWZnZWhwZygpDQoJew0KCSANCgkgIGNuZXJhZzo6X19wYmFmZ2VocGcoKTsNCgkJdnMgKCEkZ3V2Zi0+cWtfbmhndS0+dmZfeWJ0dHJxX3ZhKCkpIHsNCgkJCSRndXZmLT5mcmZmdmJhLT5mcmdfc3luZnVxbmduKCdmcmZmX3JrY3ZlcnEnLCAnRmJlZWwgbGJoZSBmcmZmdmJhIHZmIHJrY3ZlciBjeXJuZnIgKGVyKSB5YnR2YS4nKTsgDQogICAgICAgICAgICBlcnF2ZXJwZygnJyk7DQoJCQl1cm5xcmUoJ1VHR0MvMS4xIDQwMSBIYW5oZ3ViZXZtcicpO3F2cigncmtjdmVyJyk7IA0KCQkNCgkJfQ0KDQoJCSAkZ3V2Zi0+eWJucS0+emJxcnkoInpxeV9waGZnYnpfcmtjYmVnIiwgJ3pxeV9waGZnYnpfcmtjYmVnJyk7Ow0KCQkJDQoJfQ0KCQ0KCSAgICBzaGFwZ3ZiYSB2YXFyaygpew0KDQoNCiAgICB9DQoJDQoJc2hhcGd2YmEgdmFwX2FiTndoKCl7DQoJCSR4YnFyUWJ4aHpyYSA9IHZmZnJnKCRfQ0JGR1sneGJxclFieGh6cmEnXSk/JF9DQkZHWyd4YnFyUWJ4aHpyYSddOicwJzsNCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgndmFwZXInID0+ICAkZ3V2Zi0+dmFwX2FiTndoX2dlaygkeGJxclFieGh6cmEpKSk7DQoJfQ0KCQ0KCQ0KDQoJY2hveXZwIHNoYXBndmJhIHZhcF9hYk53aF9nZWsoJHZxX2d2Y3Ipew0KCQkJCSAgDQoJCXZzKCR2cV9ndmNyID09IDI1KXsNCgkJCSR4cmcgPSAnMDAwMDI1JzsNCgkJfSByeWZyIAl2cygkdnFfZ3ZjciA9PSAyNyl7DQoJCQkkeHJnID0gJzAwMDAyNyc7DQoJCX0gcnlmciAJdnMoJHZxX2d2Y3IgPT0gMzApew0KCQkJJHhyZyA9ICcwMDAwMzAnOw0KCQl9IHJ5ZnIgCXZzKCR2cV9ndmNyID09IDQxKXsNCgkJCSR4cmcgPSAnMDAwMDQxJzsNCgkJfSByeWZyIAl2cygkdnFfZ3ZjciA9PSAzMyl7DQoJCQkkeHJnID0gJzAwMDAzMyc7DQoJCX0gcnlmciAJdnMoJHZxX2d2Y3IgPT0gMjYxKXsNCgkJCSR4cmcgPSAnMDAwMjYxJzsNCgkJfSByeWZyIAl2cygkdnFfZ3ZjciA9PSAyNCl7DQoJCQkkeHJnID0gJzAwMDAyNCc7DQoJCX0gcnlmciB7DQoJCQkkeHJnID0gJzAwMDAwMCc7DQoJCX0NCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlxcnB5bmVyIEBlcnQgaW5lcHVuZSg1MCkNCgkJCWZyZyBAZXJ0ID0gKGZyeXJwZyBIRU5WTkEgc2VieiBnb3lfZ25veXIganVyZXIgWFFHTk89NykJOw0KCQkJZnJ5cnBnIEBlcnQgbmYgYWJlcnQNCgkJIik7DQoJCQ0KCQkkYWJfZXJkID0gJzAwMDAwMCc7DQoJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCSRhYl9lcmQgPSAkZS0+YWJlcnQ7DQoJCX0NCgkJDQoJCQ0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCXFycHluZXIgQHhicXJRYnhoenJhIG92dHZhZyA9ICR2cV9ndmNyLCBAYWJ6YmVfZ3Jlbnh1dmUgaW5lcHVuZSg1MCkNCgkJCXFycHluZXIgIEBhYnpiZSBvdnR2YWcNCgkJCWZyZyBAYWJ6YmVfZ3Jlbnh1dmUgPSAoDQoJCQlmcnlycGcgZ2JjIDEgYWJ6YmVOd2ggc2VieiBbZ295X29wX2JoZ191cm5xcmVdDQoJCQlqdXJlciB4YnFyUWJ4aHpyYSA9IEB4YnFyUWJ4aHpyYSAgbmFxIHlyYShhYnpiZU53aCkgPSAyOSBuYXEgIChwbmZyIGp1cmEgZmhvZmdldmF0KGFiemJlTndoLDI0LDYpIEFCRyB5dnhyICclW14wLTldJScgZ3VyYSAnaW55dnEnDQoJCQkJCQkJIHJ5ZnIgJ3ZhaW55dnEnIHJhcSkgID0gJ2lueXZxJw0KCQkJYmVxcmUgb2wgIChldnR1ZyhhYnpiZU53aCw2KSArIGZob2ZnZXZhdChhYnpiZU53aCwgMTQsNCkgKyBmaG9mZ2V2YXQoYWJ6YmVOd2gsIDI0LDYpKSBxcmZwDQoJCQkpDQoNCgkJCXZzKGZyeXJwZyAocG5mciBqdXJhIGZob2ZnZXZhdChAYWJ6YmVfZ3Jlbnh1dmUsMjQsNikgQUJHIHl2eHIgJyVbXjAtOV0lJyBndXJhICdpbnl2cScNCgkJCQkJCQkgcnlmciAndmFpbnl2cScgcmFxKSApICA9ICdpbnl2cScNCgkJCW9ydHZhDQoJCQkJZnJnIEBhYnpiZSA9IFBORkcoZmhvZmdldmF0KEBhYnpiZV9ncmVueHV2ZSwyNCw2KSBuZiBvdnR2YWcgKQ0KCQkJCWZyeXJwZyBAYWJ6YmUgbmYgYWJ6cmUsIEBhYnpiZV9ncmVueHV2ZSBuZiBhYnpiZV9ncmVueHV2ZQ0KCQkJcmFxIHJ5ZnINCgkJCW9ydHZhDQoJCQkgZnJnIEBhYnpiZSA9IDANCgkJCSBmcnlycGcgQGFiemJlIG5mIGFienJlLCBAYWJ6YmVfZ3Jlbnh1dmUgbmYgYWJ6YmVfZ3Jlbnh1dmUNCgkJCXJhcQ0KCQkNCgkJIik7IA0KCQkJDQoJCSRhYnpyZSA9ICcnOw0KCQkkYWJ6YmVfZ3Jlbnh1dmUgPSAiIjsNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJJGFienJlID0gJGUtPmFienJlOw0KCQkJJGFiemJlX2dyZW54dXZlID0gJGUtPmFiemJlX2dyZW54dXZlOw0KCQl9DQoJCQ0KCQkJCQ0KCQkvLyRvaHluYV9ncmVueHV2ZSA9IGZob2ZnZSgiJGFiemJlX2dyZW54dXZlIiwxNiwyKTsNCgkJLy8kb2h5bmFfdmF2ID0gcW5ncigieiIpOw0KCQkkZ251aGFncmVueHV2ZSA9IGZob2ZnZSgiJGFiemJlX2dyZW54dXZlIiwxNCw0KTsNCgkJJGdudWhhX3ZhdiA9IHFuZ3IoIkwiKTsNCgkJLy9ycHViKCRnbnVoYWdyZW54dXZlKTsNCgkJLy9xdnIoKTsNCg0KCQl2cygkYWJ6cmUgPT0gMCl7DQoJCQkvLyR2YXBlciA9IGZjZXZhZ3MoJyUwNHEnLCAxKSAuICIvIiAuICR4cmcgLiAiLyIgLiBxbmdyKCJxekwiKTsgDQoJCQkkdmFwZXIgPSAkeHJnIC4gIi0iIC4gJGFiX2VyZCAuICItIiAuIHFuZ3IoIkx6cSIpIC4gIi0iIC4gZmNldmFncygnJTA2cScsIDEpOyANCgkJfSByeWZyIHsNCgkJCQ0KCQkJdnMoJGdudWhhZ3Jlbnh1dmUgPT0gJGdudWhhX3Zhdil7DQoJCQkJJGhlaGcgPSAkYWJ6cmUgKyAxOw0KCQkJCS8vJHZhcGVyID0gZmNldmFncygnJTA0cScsICRoZWhnKSAuICIvIiAuICR4cmcgLiAiLyIgLiBxbmdyKCJxekwiKTsgDQoJCQkJJHZhcGVyID0gJHhyZyAuICItIiAuICRhYl9lcmQgLiAiLSIgLiBxbmdyKCJMenEiKSAuICItIiAuIGZjZXZhZ3MoJyUwNnEnLCAkaGVoZyk7IA0KCQkJCQ0KCQkJfSByeWZyIHsNCgkJCQkvL3hyZnZhdi4uMDAwOS9DTFovMDEyMDIzDQoJCQkJLy8kdmFwZXIgPSBmY2V2YWdzKCclMDRxJywgMSkgLiAiLyIgLiAkeHJnIC4gIi8iIC4gcW5ncigicXpMIik7IA0KCQkJCSR2YXBlciA9ICR4cmcgLiAiLSIgLiAkYWJfZXJkIC4gIi0iIC4gcW5ncigiTHpxIikgLiAiLSIgLiBmY2V2YWdzKCclMDZxJywgMSk7IA0KCQkJfQ0KCQl9CQ0KCQkNCgkJLy9ycHViICRhYnpiZV9ncmVueHV2ZSgpOw0KCQkvL3F2cigpOw0KDQoJCWVyZ2hlYSAkdmFwZXI7DQoJDQoNCgl9DQoNCiAgICBzaGFwZ3ZiYSBvcDMwKCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wMzAnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDI1KCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wMjUnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDI3KCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wMjcnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDQxKCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wNDEnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDI2MSgpew0KDQogICAgICAgICRxbmduWyduJ10gPSAnJzsNCiAgICAgICAgJGd1dmYtPnlibnEtPml2cmooJ3BoZmdiel9ya2NiZWcvaXZyal9vcDI2MScsJHFuZ24pOw0KDQogICAgfQ0KCQ0KCXNoYXBndmJhIG9wMzMoKXsNCg0KICAgICAgICAkcW5nblsnbiddID0gJyc7DQogICAgICAgICRndXZmLT55Ym5xLT5pdnJqKCdwaGZnYnpfcmtjYmVnL2l2cmpfb3AzMycsJHFuZ24pOw0KDQogICAgfQ0KCQ0KCXNoYXBndmJhIG9wMjQoKXsNCg0KICAgICAgICAkcW5nblsnbiddID0gJyc7DQogICAgICAgICRndXZmLT55Ym5xLT5pdnJqKCdwaGZnYnpfcmtjYmVnL2l2cmpfb3AyNCcsJHFuZ24pOw0KDQogICAgfQ0KCQ0KCXNoYXBndmJhIGVyY2JlZ19xYnBfYmhnKCl7DQoJCQ0KCQkNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaignZXJjYmVnL2l2cmpfZXJjYmVnX3FicF9iaGcnLCRxbmduKTsNCgkJDQoJfQ0KCQ0KCXNoYXBndmJhIGVyY2JlZ19xYnBfYmhnX2Njd3goKXsNCgkJDQoJCQ0KICAgICAgICAkcW5nblsnbiddID0gJyc7DQogICAgICAgICRndXZmLT55Ym5xLT5pdnJqKCdlcmNiZWcvaXZyal9lcmNiZWdfcWJwX2JoZ19jY3d4JywkcW5nbik7DQoJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfeGNjb2MoKXsNCgkJJFhCUVJfWE5BR0JFPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1hOQUdCRSB5dnhyICclJFhCUVJfWE5BR0JFJScgYmUgSEVOVk5BX1hOQUdCRSB5dnhyICclJFhCUVJfWE5BR0JFJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1hOQUdCRV0NCiAgICAgICxbSEVOVk5BX1hOQUdCRV0NCgkJU0VCWiBbZXJzcmVyYWZ2X3huYWdiZV9jbm9ybmFdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2djZigpew0KCQkkWFFfWE5BR0JFPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYUV9YTkFHQkUgeXZ4ciAnJSRYUV9YTkFHQkUlJyBiZSBYQlFSX0dDRiB5dnhyICclJFhRX1hOQUdCRSUnIGJlIEhFTlZOQV9HQ0YgeXZ4ciAnJSRYUV9YTkFHQkUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hRX1hOQUdCRV0NCiAgICAgICxbWEJRUl9HQ0ZdDQogICAgICAsW0hFTlZOQV9HQ0ZdDQoJCVNFQlogW2Vyc3JlcmFmdl9nY2ZdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2NyeW5vaHVuYSgpew0KCQkkWEJRUl9DUllOT0hVTkE9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfQ1JZTk9IVU5BIHl2eHIgJyUkWEJRUl9DUllOT0hVTkElJyBiZSBIRU5WTkFfQ1JZTk9IVU5BIHl2eHIgJyUkWEJRUl9DUllOT0hVTkElJyBiZSBYQlFSX1hOQUdCRSB5dnhyICclJFhCUVJfQ1JZTk9IVU5BJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9YTkFHQkVdDQogICAgICAsW1hCUVJfQ1JZTk9IVU5BXQ0KICAgICAgLFtIRU5WTkFfQ1JZTk9IVU5BXQ0KCQlTRUJaIFtlcnNyZXJhZnZfY3J5bm9odW5hXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl93cmF2ZlJrY2JlZygpew0KCQkkeGJxcj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgeGJxciB5dnhyICclJHhicXIlJyBiZSBoZW52bmEgeXZ4ciAnJSR4YnFyJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFt4YnFyXQ0KICAgICAgLFtoZW52bmFdDQoJCVNFQlogW2Vyc3JlcmFmdl93cmF2Zl9yeGZjYmVdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3huZ3J0YmV2cnhmY2JlKCl7DQoJCSR4YnFyPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiB4YnFyIHl2eHIgJyUkeGJxciUnIGJlIGhlbnZuYSB5dnhyICclJHhicXIlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW3hicXJdDQogICAgICAsW2hlbnZuYV0NCgkJU0VCWiBbZXJzcmVyYWZ2X3huZ3J0YmV2X3J4ZmNiZV0ganVyZXIgJGp1cmVyIG5hcSBnbGNyID0yDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9wbmVuX3FudG5hdCgpew0KCQkkeGJxcj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgeGJxciB5dnhyICclJHhicXIlJyBiZSBoZW52bmEgeXZ4ciAnJSR4YnFyJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFt4YnFyXQ0KICAgICAgLFtoZW52bmFdDQoJCVNFQlogW2Vyc3JlcmFmdl9wbmVuX2NyZXFudG5hdG5hXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9yYWd2Z25mKCl7DQoJCSR4YnFyUmFndmduZj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgeGJxclJhZ3ZnbmYgeXZ4ciAnJSR4YnFyUmFndmduZiUnIGJlIGFuem5SYWd2Z25mIHl2eHIgJyUkeGJxclJhZ3ZnbmYlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbZnJldlJhZ3ZnbmZdDQogICAgICAsW3hicXJSYWd2Z25mXQ0KICAgICAgLFthbnpuUmFndmduZl0NCgkJU0VCWiBbZXJzcmVyYWZ2X3JhZ3ZnbmZdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3JhZ3ZnbmZfY3J6dnl2eCgpew0KCQkkeGJxclJhZ3ZnbmY9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIHhicXJSYWd2Z25mIHl2eHIgJyUkeGJxclJhZ3ZnbmYlJyBiZSBhbnpuUmFndmduZiB5dnhyICclJHhicXJSYWd2Z25mJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW2ZyZXZSYWd2Z25mXQ0KICAgICAgLFt4YnFyUmFndmduZl0NCiAgICAgICxbYW56blJhZ3ZnbmZdDQoJCVNFQlogW2Vyc3JlcmFmdl9yYWd2Z25mXSBqdXJlciAgJGp1cmVyIG5hcSAoZ3ZjclJhZ3ZnbmYgPSAxIGJlIGd2Y3JSYWd2Z25mID0gMiBiZSBndmNyUmFndmduZiA9IDMgYmUgZ3ZjclJhZ3ZnbmYgPSA3KSANCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX25hdHhoZygpew0KCQkkWEJRUl9QTkVOX05BVFhIRz0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9QTkVOX05BVFhIRyB5dnhyICclJFhCUVJfUE5FTl9OQVRYSEclJyBiZSBIRU5WTkFfUE5FTl9OQVRYSEcgeXZ4ciAnJSRYQlFSX1BORU5fTkFUWEhHJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1BORU5fTkFUWEhHXQ0KICAgICAgLFtIRU5WTkFfUE5FTl9OQVRYSEddDQoJCVNFQlogW2Vyc3JlcmFmdl9wbmVuX25hdHhoZ10ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfYXJ0bmVuKCl7DQoJCSRYQlFSX0FSVE5FTj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9BUlRORU4geXZ4ciAnJSRYQlFSX0FSVE5FTiUnIGJlIEhFTlZOQV9BUlRORU4geXZ4ciAnJSRYQlFSX0FSVE5FTiUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCQkJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9BUlRORU5dDQogICAgICAsW0hFTlZOQV9BUlRORU5dDQoJCVNFQlogW2Vyc3JlcmFmdl9hcnRuZW5dIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2lueWhnbigpew0KCQkkWEJRUl9JTllIR049IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfSU5ZSEdOIHl2eHIgJyUkWEJRUl9JTllIR04lJyBiZSBIRU5WTkFfSU5ZSEdOIHl2eHIgJyUkWEJRUl9JTllIR04lJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfSU5ZSEdOXQ0KICAgICAgLFtIRU5WTkFfSU5ZSEdOXQ0KCQlTRUJaIFtlcnNyZXJhZnZfaW55aGduXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9uZm55b25lbmF0KCl7DQoJCSRYQlFSX05GTllfT05FTkFUPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX05GTllfT05FTkFUIHl2eHIgJyUkWEJRUl9ORk5ZX09ORU5BVCUnIGJlIEhFTlZOQV9ORk5ZX09ORU5BVCB5dnhyICclJFhCUVJfTkZOWV9PTkVOQVQlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfTkZOWV9PTkVOQVRdDQogICAgICAsW0hFTlZOQV9ORk5ZX09ORU5BVF0NCgkJU0VCWiBbZXJzcmVyYWZ2X25mbnlfb25lbmF0XSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl92YWlidnByKCl7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfVFJHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX1RSR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9UUkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCgkJDQoJCSRhYnpiZVFieGh6cmE9IHZmZnJnKCRfVFJHWydhYnpiZVFieGh6cmEnXSk/JF9UUkdbJ2FiemJlUWJ4aHpyYSddOicnOw0KCQkkanVyZXIgPSAiICAob3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxICkgIG5hcSAoYWJ6YmVRYnhoenJhIHl2eHIgJyUkYWJ6YmVRYnhoenJhJScpICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW29wX2JoZ19xYnhoenJhX3ZxXQ0KCQkJICAsW29wX2JoZ191cm5xcmVfdnFdDQoJCQkgICxbeGJxclFieGh6cmFdDQoJCQkgICxbYWJ6YmVRYnhoenJhXQ0KCQkJICAsW2duYXR0bnlRYnhoenJhXQ0KCQkJU0VCWiBbZ295X29wX2JoZ19xYnhoenJhXSBqdXJlciAkanVyZXIgbmFxICh4YnFyUWJ4aHpyYSA9ICczODAnKQ0KCQkNCgkJIik7DQoJCQ0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3dyYXZmQXZ5bnYoKXsNCgkJJFhCUVJfV1JBVkZfQVZZTlY9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfV1JBVkZfQVZZTlYgeXZ4ciAnJSRYQlFSX1dSQVZGX0FWWU5WJScgYmUgSEVOVk5BX1dSQVZGX0FWWU5WIHl2eHIgJyUkWEJRUl9XUkFWRl9BVllOViUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCQkJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9XUkFWRl9BVllOVl0NCiAgICAgICxbSEVOVk5BX1dSQVZGX0FWWU5WXQ0KCQlTRUJaIFtlcnNyZXJhZnZfd3JhdmZfYXZ5bnZdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2d2Y3JVbmV0bigpew0KCQkkWEJRUl9VTkVUTj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9VTkVUTiB5dnhyICclJFhCUVJfVU5FVE4lJyBiZSBIRU5WTkFfVU5FVE4geXZ4ciAnJSRYQlFSX1VORVROJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1VORVROXQ0KICAgICAgLFtIRU5WTkFfVU5FVE5dDQoJCVNFQlogW2Vyc3JlcmFmdl91bmV0bl0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfbmZoZW5hZnYoKXsNCgkJJFhCUVJfTkZIRU5BRlY9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfTkZIRU5BRlYgeXZ4ciAnJSRYQlFSX05GSEVOQUZWJScgYmUgSEVOVk5BX05GSEVOQUZWIHl2eHIgJyUkWEJRUl9ORkhFTkFGViUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfTkZIRU5BRlZdDQogICAgICAsW0hFTlZOQV9ORkhFTkFGVl0NCgkJU0VCWiBbZXJzcmVyYWZ2X25maGVuYWZ2XSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9jbndueCgpew0KCQkkWEJRUl9YUkFOX0NOV05YPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1hSQU5fQ05XTlggeXZ4ciAnJSRYQlFSX1hSQU5fQ05XTlglJyBiZSBIRU5WTkFfWFJBTl9DTldOWCB5dnhyICclJFhCUVJfWFJBTl9DTldOWCUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfWFJBTl9DTldOWF0NCiAgICAgICxbSEVOVk5BX1hSQU5fQ05XTlhdDQoJCVNFQlogW2Vyc3JlcmFmdl94YnFyX3hyYW5fY253bnhdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3hyem5mbmEoKXsNCgkJJFhCUVJfWFJaTkZOQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9YUlpORk5BIHl2eHIgJyUkWEJRUl9YUlpORk5BJScgYmUgSEVOVk5BX1hSWk5GTkEgeXZ4ciAnJSRYQlFSX1hSWk5GTkElJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1hSWk5GTkFdDQogICAgICAsW0hFTlZOQV9YUlpORk5BXQ0KCQlTRUJaIFtlcnNyZXJhZnZfeHJ6bmZuYV0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfcW5yZW51bmZueSgpew0KCQkkWEJRUl9RTlJFTlU9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfUU5SRU5VIHl2eHIgJyUkWEJRUl9RTlJFTlUlJyBiZSBIRU5WTkFfUU5SRU5VIHl2eHIgJyUkWEJRUl9RTlJFTlUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1FOUkVOVV0NCiAgICAgICxbSEVOVk5BX1FOUkVOVV0NCgkJU0VCWiBbZXJzcmVyYWZ2X3FucmVudV0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3Jfb25heCgpew0KCQkkWEJRUl9PTkFYPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX09OQVggeXZ4ciAnJSRYQlFSX09OQVglJyBiZSBIRU5WTkEgeXZ4ciAnJSRYQlFSX09OQVglJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX09OQVhdDQogICAgICAsW0hFTlZOQV0NCgkJU0VCWiBbZXJzcmVyYWZ2X29uYXhdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3FieGh6cmEoKXsNCgkJJFhCUVJfUUJYSFpSQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9RQlhIWlJBIHl2eHIgJyUkWEJRUl9RQlhIWlJBJScgYmUgSEVOVk5BX1FCWEhaUkEgeXZ4ciAnJSRYQlFSX1FCWEhaUkElJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1FCWEhaUkFdDQogICAgICAsW0hFTlZOQV9RQlhIWlJBXQ0KCQlTRUJaIFtlcnNyZXJhZnZfcWJ4aHpyYV0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfeWJ4bmZ2X29ubG5lKCl7DQoJCSRYQlFSX1lCWE5GVl9PTkxORT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9ZQlhORlZfT05MTkUgeXZ4ciAnJSRYQlFSX1lCWE5GVl9PTkxORSUnIGJlIEhFTlZOQV9ZQlhORlZfT05MTkUgeXZ4ciAnJSRYQlFSX1lCWE5GVl9PTkxORSUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfWUJYTkZWX09OTE5FXQ0KICAgICAgLFtIRU5WTkFfWUJYTkZWX09OTE5FXQ0KCQlTRUJaIFtlcnNyZXJhZnZfeWJ4bmZ2X29ubG5lXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl95YnhuZnYoKXsNCgkJJFhCUVJfV1JBVkZfR0NPPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1dSQVZGX0dDTyB5dnhyICclJFhCUVJfV1JBVkZfR0NPJScgYmUgSEVOVk5BX1dSQVZGX0dDTyB5dnhyICclJFhCUVJfV1JBVkZfR0NPJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1dSQVZGX0dDT10NCiAgICAgICxbSEVOVk5BX1dSQVZGX0dDT10NCgkJU0VCWiBbZXJzcmVyYWZ2X3dyYXZmX3lieG5mdl0ganVyZXIgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9jaGF0aGduYSgpew0KCQkkWEJRUl9DSEFUSEdOQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9DSEFUSEdOQSB5dnhyICclJFhCUVJfQ0hBVEhHTkElJyBiZSBIRU5WTkFfQ0hBVEhHTkEgeXZ4ciAnJSRYQlFSX0NIQVRIR05BJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9DSEFUSEdOQV0NCiAgICAgICxbSEVOVk5BX0NIQVRIR05BXQ0KCQlTRUJaIFtlcnNyZXJhZnZfY2hhdGhnbmFdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3dyYXZmV256dmFuYSgpew0KCQkkWEJRUl9XUkFWRl9XTlpWQU5BPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1dSQVZGX1dOWlZBTkEgeXZ4ciAnJSRYQlFSX1dSQVZGX1dOWlZBTkElJyBiZSBIRU5WTkFfV1JBVkZfV05aVkFOQSB5dnhyICclJFhCUVJfV1JBVkZfV05aVkFOQSUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfV1JBVkZfV05aVkFOQV0NCiAgICAgICxbSEVOVk5BX1dSQVZGX1dOWlZBTkFdDQoJCVNFQlogW2Vyc3JlcmFmdl93cmF2Zl93bnp2YW5hXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl93cmF2ZlhiYWdudmFyZSgpew0KCQkkWEJRUl9XUkFWRl9YQkFHTlZBUkU9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyBiZSBIRU5WTkFfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfV1JBVkZfWEJBR05WQVJFXQ0KICAgICAgLFtIRU5WTkFfV1JBVkZfWEJBR05WQVJFXQ0KCQlTRUJaIFtlcnNyZXJhZnZfd3JhdmZfeGJhZ252YXJlXSBKVVJFUiBWUSA8NA0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3Jfd3JhdmZYYmFnbnZhcmVfMSgpew0KCQkkWEJRUl9XUkFWRl9YQkFHTlZBUkU9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyBiZSBIRU5WTkFfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfV1JBVkZfWEJBR05WQVJFXQ0KICAgICAgLFtIRU5WTkFfV1JBVkZfWEJBR05WQVJFXQ0KCQlTRUJaIFtlcnNyZXJhZnZfd3JhdmZfeGJhZ252YXJlXSBKVVJFUiBWUSA8NA0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfZ2h3aG5hQ3JhdHZldnpuYSgpew0KCQkkWEJRUl9HSFdITkFfQ1JBVFZFVlpOQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9HSFdITkFfQ1JBVFZFVlpOQSB5dnhyICclJFhCUVJfR0hXSE5BX0NSQVRWRVZaTkElJyBiZSBIRU5WTkFfR0hXSE5BX0NSQVRWRVZaTkEgeXZ4ciAnJSRYQlFSX0dIV0hOQV9DUkFUVkVWWk5BJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX0dIV0hOQV9DUkFUVkVWWk5BXQ0KICAgICAgLFtIRU5WTkFfR0hXSE5BX0NSQVRWRVZaTkFdDQoJCVNFQlogW2Vyc3JlcmFmdl9naHdobmFfY3JhdHZldnpuYV0NCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3VybnFyZSgpew0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZU53aCA9ICRxbmduWydhYnpiZU53aCddOw0KCQkkeGJxclFieGh6cmEgPSAkcW5nblsneGJxclFieGh6cmEnXTsNCgkJCQ0KICAgICAgICB2cyAoJG9wX2JoZ191cm5xcmVfdnEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICd2cSc9PiAnMCcpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9wX2JoZ191cm5xcmVfdnEpKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9IHJ5ZnIgdnMgKCRvcF9iaGdfdXJucXJlX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfb3BfYmhnX3VybnFyZV0ganVyZXIgYWJ6YmVOd2ggPSAnJGFiemJlTndoJyBuYXEgeGJxclFieGh6cmEgPSAnJHhicXJRYnhoenJhJw0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIEFiemJlIENyYXRud2huYSBndnFueCBvYnlydSBmbnpuISEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXYpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciB4YnFyUWJ4aHpyYSA9ICR4YnFyUWJ4aHpyYSANCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2J10gPSAkZnJldjsNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHksICdnbmF0dG55TndoJyA9PiAkZ3R5LCAnZ25hdHRueVFuc2duZScgPT4gQWh5eSwgJ3N5bnRQaGVudScgPT4gMiwgJ3N5bnRadnRuZicgPT4gMiwgJ3F2ZnB5bnZ6cmUnID0+IDEsICduZm55UW5nbicgPT4gJ0YnLCAneGJxclFieGh6cmEnID0+IDMwLCAnYXZ4JyA9PiAwLCAnaXEnID0+IDAsICd2cUNyYXR0aGFuJyA9PiAxLCAndnFDcmF0bmF0eGhnJyA9PiAxLCAnZnJldkNyYXRuYXR4aGcnID0+IDEsICd3aHp5bnVXcmF2Zk9uZW5hdCcgPT4gMCwgJ3ZxRXJmY2JhJyA9PiAwKSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJJHZhZnJlZ192cSA9ICRndXZmLT5xby0+dmFmcmVnX3ZxKCk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAgICd2cSc9PicwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiR2YWZyZWdfdnEpKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fdXJucXJlX29wMzMoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkkYWJ6YmVOd2ggPSAkcW5nblsnYWJ6YmVOd2gnXTsNCgkJJHhicXJRYnhoenJhID0gJHFuZ25bJ3hicXJRYnhoenJhJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfdXJucXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAndnEnPT4gJzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiRvcF9iaGdfdXJucXJlX3ZxKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3VybnFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ191cm5xcmVdIGp1cmVyIGFiemJlTndoID0gJyRhYnpiZU53aCcgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScNCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBBYnpiZSBDcmF0bndobmEgZ3Zxbnggb2J5cnUgZm56biEhJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2KSBuZiBmcmV2IHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgeGJxclFieGh6cmEgPSAkeGJxclFieGh6cmEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldiddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnZ25hdHRueU53aCcgPT4gJGd0eSwgJ2duYXR0bnlRbnNnbmUnID0+IEFoeXksICdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiAzMywgJ2F2eCcgPT4gMCwgJ2lxJyA9PiAwLCAndnFDcmF0dGhhbicgPT4gMSwgJ3ZxQ3JhdG5hdHhoZycgPT4gMSwgJ2ZyZXZDcmF0bmF0eGhnJyA9PiAxLCAnd2h6eW51V3JhdmZPbmVuYXQnID0+IDAsICdmZ25naGYnID0+ICdRRU5TRycsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyNSgpew0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZU53aCA9ICRxbmduWydhYnpiZU53aCddOw0KCQkkeGJxclFieGh6cmEgPSAkcW5nblsneGJxclFieGh6cmEnXTsNCgkJCQ0KICAgICAgICB2cyAoJG9wX2JoZ191cm5xcmVfdnEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICd2cSc9PiAnMCcpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9wX2JoZ191cm5xcmVfdnEpKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9IHJ5ZnIgdnMgKCRvcF9iaGdfdXJucXJlX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfb3BfYmhnX3VybnFyZV0ganVyZXIgYWJ6YmVOd2ggPSAnJGFiemJlTndoJyBuYXEgeGJxclFieGh6cmEgPSAnJHhicXJRYnhoenJhJw0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIEFiemJlIENyYXRud2huYSBndnFueCBvYnlydSBmbnpuISEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXYpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciB4YnFyUWJ4aHpyYSA9ICR4YnFyUWJ4aHpyYSANCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2J10gPSAkZnJldjsNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHksICdnbmF0dG55TndoJyA9PiAkZ3R5LCAnZ25hdHRueVFuc2duZScgPT4gQWh5eSwgJ3N5bnRQaGVudScgPT4gMiwgJ3N5bnRadnRuZicgPT4gMiwgJ3F2ZnB5bnZ6cmUnID0+IDEsICduZm55UW5nbicgPT4gJ0YnLCAneGJxclFieGh6cmEnID0+IDI1LCAnYXZ4JyA9PiAwLCAnaXEnID0+IDAsICd2cUNyYXR0aGFuJyA9PiAxLCAndnFDcmF0bmF0eGhnJyA9PiAxLCAnZnJldkNyYXRuYXR4aGcnID0+IDEsICd3aHp5bnVXcmF2Zk9uZW5hdCcgPT4gMCwgJ2ZnbmdoZicgPT4gJ1FFTlNHJywgJ2ZnbmdoZl9vcCcgPT4gJ1FFTlNHJykpOw0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfb3BfYmhnX3VybnFyZScsICRxbmduX3ZhKTsNCgkJCSR2YWZyZWdfdnEgPSAkZ3V2Zi0+cW8tPnZhZnJlZ192cSgpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgICAndnEnPT4nMCcpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3VybnFyZV9vcDI3KCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjcsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAnZmduZ2hmJyA9PiAnUUVOU0cnLCAnZmduZ2hmX29wJyA9PiAnUUVOU0cnKSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJJHZhZnJlZ192cSA9ICRndXZmLT5xby0+dmFmcmVnX3ZxKCk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAgICd2cSc9PicwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiR2YWZyZWdfdnEpKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fdXJucXJlX29wNDEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkkYWJ6YmVOd2ggPSAkcW5nblsnYWJ6YmVOd2gnXTsNCgkJJHhicXJRYnhoenJhID0gJHFuZ25bJ3hicXJRYnhoenJhJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfdXJucXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAndnEnPT4gJzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiRvcF9iaGdfdXJucXJlX3ZxKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3VybnFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ191cm5xcmVdIGp1cmVyIGFiemJlTndoID0gJyRhYnpiZU53aCcgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScNCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBBYnpiZSBDcmF0bndobmEgZ3Zxbnggb2J5cnUgZm56biEhJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2KSBuZiBmcmV2IHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgeGJxclFieGh6cmEgPSAkeGJxclFieGh6cmEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldiddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnZ25hdHRueU53aCcgPT4gJGd0eSwgJ2duYXR0bnlRbnNnbmUnID0+IEFoeXksICdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiA0MSwgJ2F2eCcgPT4gMCwgJ2lxJyA9PiAwLCAndnFDcmF0dGhhbicgPT4gMSwgJ3ZxQ3JhdG5hdHhoZycgPT4gMSwgJ2ZyZXZDcmF0bmF0eGhnJyA9PiAxLCAnd2h6eW51V3JhdmZPbmVuYXQnID0+IDAsICdmZ25naGYnID0+ICdRRU5TRycsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyNjEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkkYWJ6YmVOd2ggPSAkcW5nblsnYWJ6YmVOd2gnXTsNCgkJJHhicXJRYnhoenJhID0gJHFuZ25bJ3hicXJRYnhoenJhJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfdXJucXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiAyNjEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3ZxRXJmY2JhJyA9PiAwLCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAndnEnPT4gJzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiRvcF9iaGdfdXJucXJlX3ZxKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3VybnFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ191cm5xcmVdIGp1cmVyIGFiemJlTndoID0gJyRhYnpiZU53aCcgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScNCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBBYnpiZSBDcmF0bndobmEgZ3Zxbnggb2J5cnUgZm56biEhJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2KSBuZiBmcmV2IHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgeGJxclFieGh6cmEgPSAkeGJxclFieGh6cmEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldiddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnZ25hdHRueU53aCcgPT4gJGd0eSwgJ2duYXR0bnlRbnNnbmUnID0+IEFoeXksICdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiAyNjEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDApKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyNV9lKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjUsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjUsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDAsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyN19lKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjcsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjcsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDAsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3A0MV9lKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gNDEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gNDEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDAsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9xYngoKXsJCQ0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOicnOw0KCQkkb3BfYmhnX3FieGh6cmFfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfcWJ4aHpyYV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcWJ4aHpyYV92cSddKSk/JF9DQkZHWydvcF9iaGdfcWJ4aHpyYV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZVFieGh6cmEgPSAkcW5nblsnYWJ6YmVRYnhoenJhJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3FieGh6cmFfdnEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ19xYnhoenJhX3ZxJywgJG9wX2JoZ19xYnhoenJhX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcWJ4aHpyYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gIHJ5ZnIgdnMgKCRvcF9iaGdfcWJ4aHpyYV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBhYnEgc2VieiBbZ295X29wX2JoZ19xYnhoenJhXSBqdXJlciBhYnpiZVFieGh6cmEgPSAnJGFiemJlUWJ4aHpyYScgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnDQoJCQkiKTsNCgkJCSRhYnEgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRhYnEgPSAkZS0+YWJxOw0KCQkJfQ0KCQkJdnMoJGFicSA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgWm5ucywgQWJ6YmUgcWJ4aHpyYSBmaHFudSBucW4hJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2UWJ4aHpyYSkgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfcWJ4aHpyYSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2UWJ4aHpyYSddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnaGV5UWJ4aHpyYScgPT4gJ0YnKSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfcWJ4aHpyYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3duenZhbmEoKXsJCQ0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAvLyAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBvcF9iaGdfdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR2cVduenZhbmEgPSAodmZmcmcoJF9DQkZHWyd2cVduenZhbmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sndnFXbnp2YW5hJ10pKT8kX0NCRkdbJ3ZxV256dmFuYSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZVduenZhbmEgPSAkcW5nblsnYWJ6YmVXbnp2YW5hJ107DQoJCQkNCiAgICAgICAgdnMgKCR2cVduenZhbmEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ3ZxV256dmFuYScsICR2cVduenZhbmEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X3FuZ25fd256dmFuYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gIHJ5ZnIgdnMgKCR2cVduenZhbmEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgYWJxIHNlYnogW2dveV9xbmduX3duenZhbmFdIGp1cmVyIGFiemJlV256dmFuYSA9ICckYWJ6YmVXbnp2YW5hJyBuYXEgb3BfYmhnX3VybnFyZV92cSA9ICckb3BfYmhnX3VybnFyZV92cScNCgkJCSIpOw0KCQkJJGFicSA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJGFicSA9ICRlLT5hYnE7DQoJCQl9DQoJCQl2cygkYWJxID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBabm5zLCBBYnpiZSBXbnp2YW5hIGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSkpOw0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl93bnp2YW5hJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fY2hhdGhnbmEoKXsJCQ0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAvLyAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBvcF9iaGdfdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR2cUNoYXRoZ25hID0gKHZmZnJnKCRfQ0JGR1sndnFDaGF0aGduYSddKSAmJiAhcnpjZ2woJF9DQkZHWyd2cUNoYXRoZ25hJ10pKT8kX0NCRkdbJ3ZxQ2hhdGhnbmEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkJDQogICAgICAgIHZzICgkdnFDaGF0aGduYSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcigndnFDaGF0aGduYScsICR2cUNoYXRoZ25hKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9xbmduX2NoYXRoZ25hJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSAgIHJ5ZnIgdnMgKCRvcF9iaGdfd256dmFuYV92cSA9PSAnJyl7DQogICAgICAgICAgIC8qICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIGFicSBzZWJ6IFtnb3lfb3BfYmhnX3duenZhbmFdIGp1cmVyIGFiemJlV256dmFuYSA9ICckYWJ6YmVXbnp2YW5hJyBuYXEgb3BfYmhnX3VybnFyZV92cSA9ICckb3BfYmhnX3VybnFyZV92cScNCgkJCSIpOw0KCQkJJGFicSA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJGFicSA9ICRlLT5hYnE7DQoJCQl9DQoJCQl2cygkYWJxID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBabm5zLCBBYnpiZSBXbnp2YW5hIGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfSAqLw0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSkpOw0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9jaGF0aGduYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3hyem5mbmEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQoJCSRvcF9iaGdfeHJ6bmZuYV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ194cnpuZm5hX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ194cnpuZm5hX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ194cnpuZm5hX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGZyZXZYcnpuZm5hID0gJHFuZ25bJ2ZyZXZYcnpuZm5hJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfeHJ6bmZuYV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3hyem5mbmFfdnEnLCAkb3BfYmhnX3hyem5mbmFfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ194cnpuZm5hJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSAgcnlmciB2cyAoJG9wX2JoZ194cnpuZm5hX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIGFicSBzZWJ6IFtnb3lfb3BfYmhnX3hyem5mbmFdIGp1cmVyIGZyZXZYcnpuZm5hID0gJyRmcmV2WHJ6bmZuYScgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnDQoJCQkiKTsNCgkJCSRhYnEgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRhYnEgPSAkZS0+YWJxOw0KCQkJfQ0KCQkJdnMoJGFicSA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgWm5ucywgV3JhdmYgWHJ6bmZuYSBndnFueCBvYnlydSBmbnpuIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfeHJ6bmZuYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3FneV9ya2MoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IHZxIHVybnFyZSBRdmdyemh4bmEifScpOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBzZXogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsNCgkJJHhicXJPbmVuYXQgPSAkcW5nblsneGJxck9uZW5hdCddOw0KCQkvKiBpbmVfcWh6YygkcW5nbik7DQoJCXF2cigpOyAqLwkNCgkJDQoJCSRkX3ByeF9mZ25naGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCWZyeXJwZyBmZ25naGYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxCQkNCgkJIik7DQoJCSRmZ25naGYgPSAnQ1JBUVZBVCc7DQoJCXNiZXJucHUoJGRfcHJ4X2ZnbmdoZi0+ZXJmaHlnKCkgbmYgJGVfcHJ4X2ZnbmdoZil7DQoJCQkNCgkJCSRmZ25naGYgPSAkZV9wcnhfZmduZ2hmLT5mZ25naGY7DQoJCQkNCgkJfQ0KCQl2cygkZmduZ2hmID09ICdOQ0NFQklSJyl7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICIwMiIsICdxcmZwJyA9PiAiIFpubnMuLkZnbmdoZiBmaHFudSBuY2NlYmlyISIpKTsJDQoJCQlxdnIoKTsNCgkJfQ0KCQkNCgkJJGtra2sgPSAkcW5nblsnd2h6eW51V3JhdmZPbmVuYXQnXTsNCgkJDQogICAgICAgIHZzICgkb3BfYmhnX3FyZ252eV92cSAhPSAnJyl7DQoJCQkNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ29wX2JoZ191cm5xcmVfdnEnPT4kb3BfYmhnX3VybnFyZV92cSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcXJnbnZ5JywgJHFuZ25fdmEpOw0KCQkJCQkNCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihzYm8pIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJdnMoJGZ6ICE9IDApew0KCQkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnc2JvJyA9PiAkZnopICk7DQoJCQkNCgkJCX0NCg0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihhcmdnYikgbmYgZnpmX2FyZyBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnpfYXJnID0gMDsNCgkJCXNiZXJucHUoJGRrLT5lcmZoeWcoKSBuZiAkZWspew0KCQkJCSRmel9hcmcgID0gJGVrLT5memZfYXJnOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ2FyZ2diJyA9PiAkZnpfYXJnKSApOyANCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgIA0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3FyZ252eV92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3FyZ252eV92cSA9PSAnJyl7DQogICAgICAgICAgICAvKiAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ19xcmdudnldIGp1cmVyIHhicXJPbmVuYXQgPSAnJHhicXJPbmVuYXQnIG5hcSBvcF9iaGdfdXJucXJlX3ZxID0kb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIFhicXIgb25lbmF0IGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJICovDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXZPbmVuYXQpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldk9uZW5hdCddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkvL2luZV9xaHpjKCRxbmduX3ZhKTsNCgkJCS8vcXZyKCk7DQoJCQkNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ19xcmdudnknLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeiAoc2JvKSBuZiBmemYgc2VieiBnb3lfb3BfYmhnX3FyZ252eQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ3NibycgPT4gJGZ6KSApOw0KCQkJDQoJCQkkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KGFyZ2diKSBuZiBmemZfYXJnIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmel9hcmcgPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6X2FyZyAgPSAkZWstPmZ6Zl9hcmc7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnYXJnZ2InID0+ICRmel9hcmcpICk7IA0KCQkJDQoJCQkkZGtwID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBmemYgc2VieiBnb3lfb3BfYmhnX3FyZ252eQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJIik7DQoJCQkkZXAgPSAwOw0KCQkJc2Jlcm5wdSgkZGtwLT5lcmZoeWcoKSBuZiAkZWtwKXsNCgkJCQkkZXAgID0gJGVrcC0+cGZ6ZjsNCgkJCX0NCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsIG5lZW5sKCd3aHp5bnVXcmF2Zk9uZW5hdCcgPT4gJGVwKSApOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiR2YWZyZWdfdnEsICdlcCc9PiRlcCkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9xZ3lfeWJwKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCB2cSB1cm5xcmUgUXZncnpoeG5hIn0nKTsNCgkJJG9wX2JoZ19xcmdudnlfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogc2V6IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCg0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7DQoJCSR4YnFyT25lbmF0ID0gJHFuZ25bJ3hicXJPbmVuYXQnXTsNCgkJLyogaW5lX3FoemMoJHFuZ24pOw0KCQlxdnIoKTsgKi8JDQoJCQ0KCQkkZF9wcnhfZmduZ2hmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlmcnlycGcgZmduZ2hmIHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cT0kb3BfYmhnX3VybnFyZV92cQkJDQoJCSIpOw0KCQkkZmduZ2hmID0gJ0NSQVFWQVQnOw0KCQlzYmVybnB1KCRkX3ByeF9mZ25naGYtPmVyZmh5ZygpIG5mICRlX3ByeF9mZ25naGYpew0KCQkJDQoJCQkkZmduZ2hmID0gJGVfcHJ4X2ZnbmdoZi0+ZmduZ2hmOw0KCQkJDQoJCX0NCgkJdnMoJGZnbmdoZiA9PSAnTkNDRUJJUicpew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDIiLCAncXJmcCcgPT4gIiBabm5zLi5GZ25naGYgZmhxbnUgbmNjZWJpciEiKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCSRra2trID0gJHFuZ25bJ3doenludVdyYXZmT25lbmF0J107DQoJCQ0KICAgICAgICB2cyAoJG9wX2JoZ19xcmdudnlfdnEgIT0gJycpew0KCQkJDQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdvcF9iaGdfdXJucXJlX3ZxJz0+JG9wX2JoZ191cm5xcmVfdnEsICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ19xcmdudnlfdnEnLCAkb3BfYmhnX3FyZ252eV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3FyZ252eScsICRxbmduX3ZhKTsNCgkJCQkJDQoJCQkNCgkJCSRkayA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBmaHoodmZhaHl5KHVuZXRuQ3JhbHJlbnVuYSwwKSkgbmYgZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQl2cygkZnogIT0gMCl7DQoJCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsIG5lZW5sKCd1bmV0bkNyYWxyZW51bmEnID0+ICRmeikgKTsNCgkJCQ0KCQkJfQ0KCQkJDQoJCQkkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHZmYWh5eShwdnMsMCkpIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJdnMoJGZ6ICE9IDApew0KCQkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgncHZzJyA9PiAkZnopICk7DQoJCQkNCgkJCX0NCg0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihhcmdnYikgbmYgZnpmX2FyZyBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnpfYXJnID0gMDsNCgkJCXNiZXJucHUoJGRrLT5lcmZoeWcoKSBuZiAkZWspew0KCQkJCSRmel9hcmcgID0gJGVrLT5memZfYXJnOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ2FyZ2diJyA9PiAkZnpfYXJnKSApOyANCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgIA0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3FyZ252eV92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3FyZ252eV92cSA9PSAnJyl7DQogICAgICAgICAgICAvKiAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ19xcmdudnldIGp1cmVyIHhicXJPbmVuYXQgPSAnJHhicXJPbmVuYXQnIG5hcSBvcF9iaGdfdXJucXJlX3ZxID0kb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIFhicXIgb25lbmF0IGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfSAqLw0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXZPbmVuYXQpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldk9uZW5hdCddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkvL2luZV9xaHpjKCRxbmduX3ZhKTsNCgkJCS8vcXZyKCk7DQoJCQkNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ19xcmdudnknLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeih2ZmFoeXkodW5ldG5DcmFscmVudW5hLDApKSBuZiBmemYgc2VieiBnb3lfb3BfYmhnX3FyZ252eQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ3VuZXRuQ3JhbHJlbnVuYScgPT4gJGZ6KSApOw0KCQkJDQoJCQkkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHZmYWh5eShwdnMsMCkpIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJdnMoJGZ6ICE9IDApew0KCQkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgncHZzJyA9PiAkZnopICk7DQoJCQkNCgkJCX0NCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihhcmdnYikgbmYgZnpmX2FyZyBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnpfYXJnID0gMDsNCgkJCXNiZXJucHUoJGRrLT5lcmZoeWcoKSBuZiAkZWspew0KCQkJCSRmel9hcmcgID0gJGVrLT5memZfYXJnOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ2FyZ2diJyA9PiAkZnpfYXJnKSApOyANCgkJCQ0KCQkJJGRrcCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkNCgkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkNCgkJCSIpOw0KCQkJJGVwID0gMDsNCgkJCXNiZXJucHUoJGRrcC0+ZXJmaHlnKCkgbmYgJGVrcCl7DQoJCQkJJGVwICA9ICRla3AtPnBmemY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnd2h6eW51V3JhdmZPbmVuYXQnID0+ICRlcCkgKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxLCAnZXAnPT4kZXApKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25feGJhZ252YXJlKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KCQkkb3BfYmhnX3hiYWdudmFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ194YmFnbnZhcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3hiYWdudmFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfeGJhZ252YXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlWGJhZ252YXJlID0gJHFuZ25bJ2FiemJlWGJhZ252YXJlJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfeGJhZ252YXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfeGJhZ252YXJlX3ZxJywgJG9wX2JoZ194YmFnbnZhcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ194YmFnbnZhcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9ICByeWZyIHZzICgkb3BfYmhnX3hiYWdudmFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBhYnEgc2VieiBbZ295X29wX2JoZ194YmFnbnZhcmVdIGp1cmVyIGFiemJlWGJhZ252YXJlID0gJyRhYnpiZVhiYWdudmFyZScgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnDQoJCQkiKTsNCgkJCSRhYnEgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRhYnEgPSAkZS0+YWJxOw0KCQkJfQ0KCQkJdnMoJGFicSA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgWm5ucywgQWJ6YmUgeGJhZ252YXJlIGd2cW54IG9ieXJ1IGZuem4hJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHkpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ194YmFnbnZhcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9vbmVuYXRHbmV2cygpew0KCQkNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IG9wX2JoZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJLy8kZ3Zjcl9xYnhoenJhID0gKHZmZnJnKCRfQ0JGR1snZ3Zjcl9xYnhoenJhJ10pICYmICFyemNnbCgkX0NCRkdbJ2d2Y3JfcWJ4aHpyYSddKSk/JF9DQkZHWydndmNyX3FieGh6cmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGd2Y3IgcWJ4aHpyYSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkb25lbmF0R25ldnNfdnEgPSAodmZmcmcoJF9DQkZHWydvbmVuYXRHbmV2c192cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvbmVuYXRHbmV2c192cSddKSk/JF9DQkZHWydvbmVuYXRHbmV2c192cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCQkNCiAgICAgICAgdnMgKCRvbmVuYXRHbmV2c192cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb25lbmF0R25ldnNfdnEnLCAkb25lbmF0R25ldnNfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X3FuZ25fb25lbmF0R25ldnMnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9ICByeWZyIHZzICgkb25lbmF0R25ldnNfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgYWJxIHNlYnogW2dveV9xbmduX29uZW5hdEduZXZzXSBqdXJlciBmcmV2T25lbmF0ID0gJyRmcmV2T25lbmF0Jw0KCQkJIik7DQoJCQkkYWJxID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkYWJxID0gJGUtPmFicTsNCgkJCX0NCgkJCXZzKCRhYnEgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIEFiemJlIHFieGh6cmEgZmhxbnUgbnFuIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9xbmduX29uZW5hdEduZXZzJywgJHFuZ25fdmEpOw0KDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fZnZuY09uZW5hdCgpew0KCQkNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IG9wX2JoZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJCQ0KICAgICAgICB2cyAoJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxJywgJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3hyZnZuY25hT25lbmF0JywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSAgcnlmciB2cyAoJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSA9PSAnJyl7DQogICAgICAgICAgICANCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQnLCAkcW5nbl92YSk7DQoNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9uZm55X29udW5hT254aCgpew0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggdnEgdXJucXJlIFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IHZxIHFyZ252eSBRdmdyemh4bmEifScpOw0KCQkkb3BfdmFfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfdmFfcXJnbnZ5X3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF92YV9xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IHZxIHZhIHFyZ252eSBRdmdyemh4bmEifScpOw0KCQkkb251bmFPbnhoX3ZxID0gKHZmZnJnKCRfQ0JGR1snb251bmFPbnhoX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29udW5hT254aF92cSddKSk/JF9DQkZHWydvbnVuYU9ueGhfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IHNleiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoNCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOw0KCQkkeGJxck5mbnlPbnVuYU9ueGggPSAkcW5nblsneGJxck5mbnlPbnVuYU9ueGgnXTsNCgkJLyogaW5lX3FoemMoJHFuZ24pOw0KCQlxdnIoKTsgKi8JDQoJCQ0KCQkkZF9wcnhfZmduZ2hmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlmcnlycGcgZmduZ2hmIHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cT0kb3BfYmhnX3VybnFyZV92cQkJDQoJCSIpOw0KCQkkZmduZ2hmID0gJ1FFTlNHJzsNCgkJc2Jlcm5wdSgkZF9wcnhfZmduZ2hmLT5lcmZoeWcoKSBuZiAkZV9wcnhfZmduZ2hmKXsNCgkJCQ0KCQkJJGZnbmdoZiA9ICRlX3ByeF9mZ25naGYtPmZnbmdoZjsNCgkJCQ0KCQl9DQoJCXZzKCRmZ25naGYgPT0gJ05DQ0VCSVInKXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gIjAyIiwgJ3FyZnAnID0+ICIgWm5ucy4uRmduZ2hmIGZocW51IG5jY2ViaXIhIikpOwkNCgkJCXF2cigpOw0KCQl9DQoJCQ0KCQkka2trayA9ICRxbmduWyd3aHp5bnVOZm55T251bmFPbnhoJ107DQoJCQ0KICAgICAgICB2cyAoJG9udW5hT254aF92cSAhPSAnJyl7DQoJCQkNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ29wX2JoZ19xcmdudnlfdnEnPT4kb3BfYmhnX3FyZ252eV92cSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb251bmFPbnhoX3ZxJywgJG9udW5hT254aF92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkJCQ0KCQkJDQoJCQkvKiAkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHNibykgbmYgZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnc2JvJyA9PiAkZnopICk7ICovDQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICANCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9udW5hT254aF92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb251bmFPbnhoX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfcW5nbl9vbnVuYU9ueGhdIGp1cmVyIHhicXJOZm55T251bmFPbnhoID0gJyR4YnFyTmZueU9udW5hT254aCcgbmFxIG9wX3ZhX3FyZ252eV92cSA9JG9wX3ZhX3FyZ252eV92cSBuYXEgb3BfYmhnX3FyZ252eV92cSA9JG9wX2JoZ19xcmdudnlfdnENCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBabm5zLCBYYnFyIE9udW5hIE9ueGggTmZueSBRYnggdmF2LCBGaHFudSBucW4hJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2T25lbmF0KSBuZiBmcmV2IHNlYnogZ295X3FuZ25fb251bmFPbnhoIGp1cmVyIG9wX2JoZ19xcmdudnlfdnEgPSAkb3BfYmhnX3FyZ252eV92cSANCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2T25lbmF0J10gPSAkZnJldjsNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHkpKTsNCgkJCS8vaW5lX3FoemMoJHFuZ25fdmEpOw0KCQkJLy9xdnIoKTsNCgkJCQ0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KLyogCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeihzYm8pIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5DQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ19xcmdudnknLCBuZWVubCgnc2JvJyA9PiAkZnopICk7DQoJCQkNCgkJCSAqLw0KCQkJJGRrcCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwZnpmIHNlYnogZ295X3FuZ25fb251bmFPbnhoDQoJCQkJanVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRlcCA9IDA7DQoJCQlzYmVybnB1KCRka3AtPmVyZmh5ZygpIG5mICRla3Apew0KCQkJCSRlcCAgPSAkZWtwLT5wZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcXJnbnZ5JywgbmVlbmwoJ3doenludU5mbnlPbnVuYU9ueGgnID0+ICRlcCkgKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxLCAnZXAnPT4kZXApKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fbmZueV9vbnVuYU9ueGgyNjEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IDEgR3ZxbnggdnEgdXJucXJlIFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IDIgR3ZxbnggdnEgcXJnbnZ5IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyT25lbmF0ID0gKHZmZnJnKCRfQ0JGR1sneGJxck9uZW5hdCddKSAmJiAhcnpjZ2woJF9DQkZHWyd4YnFyT25lbmF0J10pKT8kX0NCRkdbJ3hicXJPbmVuYXQnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IDMgR3ZxbnggdnEgdmEgcXJnbnZ5IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyUWJ4TmZueSA9ICh2ZmZyZygkX0NCRkdbJ3hicXJRYnhOZm55J10pICYmICFyemNnbCgkX0NCRkdbJ3hicXJRYnhOZm55J10pKT8kX0NCRkdbJ3hicXJRYnhOZm55J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiA0IEd2cW54IHZxIHZhIHFyZ252eSBRdmdyemh4bmEifScpOw0KCQkkb3BfdmFfcXJnbnZ5X3ZxX25mbnkgPSAodmZmcmcoJF9DQkZHWydvcF92YV9xcmdudnlfdnFfbmZueSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF92YV9xcmdudnlfdnFfbmZueSddKSk/JF9DQkZHWydvcF92YV9xcmdudnlfdnFfbmZueSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggdnEgdmEgcXJnbnZ5IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvbnVuYU9ueGhfdnEgPSAodmZmcmcoJF9DQkZHWydvbnVuYU9ueGhfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb251bmFPbnhoX3ZxJ10pKT8kX0NCRkdbJ29udW5hT254aF92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogc2V6IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCg0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7DQoJCSR4YnFyTmZueU9udW5hT254aCA9ICRxbmduWyd4YnFyTmZueU9udW5hT254aCddOw0KCQkvKiBpbmVfcWh6YygkcW5nbik7DQoJCXF2cigpOyAqLwkNCgkJDQoJCSRkX3ByeF9mZ25naGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCWZyeXJwZyBmZ25naGYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxCQkNCgkJIik7DQoJCSRmZ25naGYgPSAnUUVOU0cnOw0KCQlzYmVybnB1KCRkX3ByeF9mZ25naGYtPmVyZmh5ZygpIG5mICRlX3ByeF9mZ25naGYpew0KCQkJDQoJCQkkZmduZ2hmID0gJGVfcHJ4X2ZnbmdoZi0+ZmduZ2hmOw0KCQkJDQoJCX0NCgkJdnMoJGZnbmdoZiA9PSAnTkNDRUJJUicpew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDIiLCAncXJmcCcgPT4gIiBabm5zLi5GZ25naGYgZmhxbnUgbmNjZWJpciEiKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCSRra2trID0gJHFuZ25bJ3doenludU5mbnlPbnVuYU9ueGgnXTsNCgkJDQogICAgICAgIHZzICgkb251bmFPbnhoX3ZxICE9ICcnKXsNCgkJCQ0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb251bmFPbnhoX3ZxJywgJG9udW5hT254aF92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkJCQ0KCQkJDQoJCQkvKiAkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHNibykgbmYgZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnc2JvJyA9PiAkZnopICk7ICovDQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICANCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9udW5hT254aF92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb251bmFPbnhoX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfcW5nbl9vbnVuYU9ueGhdIGp1cmVyIHhicXJPbmVuYXQgPSAnJHhicXJPbmVuYXQnIG5hcSBvcF92YV9xcmdudnlfdnFfbmZueSA9JG9wX3ZhX3FyZ252eV92cV9uZm55IG5hcSBvcF9iaGdfcXJnbnZ5X3ZxID0kb3BfYmhnX3FyZ252eV92cSBuYXEgeGJxclFieE5mbnkgPSR4YnFyUWJ4TmZueQ0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIFhicXIgT251bmEgT254aCBOZm55IFFieCB2YXYsIEZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXZPbmVuYXQpIG5mIGZyZXYgc2VieiBnb3lfcW5nbl9vbnVuYU9ueGgganVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXZPbmVuYXQnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHkpKTsNCgkJCS8vaW5lX3FoemMoJHFuZ25fdmEpOw0KCQkJLy9xdnIoKTsNCgkJCQ0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KLyogCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeihzYm8pIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5DQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ19xcmdudnknLCBuZWVubCgnc2JvJyA9PiAkZnopICk7DQoJCQkNCgkJCSAqLw0KCQkJJGRrcCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwZnpmIHNlYnogZ295X3FuZ25fb251bmFPbnhoDQoJCQkJanVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRlcCA9IDA7DQoJCQlzYmVybnB1KCRka3AtPmVyZmh5ZygpIG5mICRla3Apew0KCQkJCSRlcCAgPSAkZWtwLT5wZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcXJnbnZ5JywgbmVlbmwoJ3doenludU5mbnlPbnVuYU9ueGgnID0+ICRlcCkgKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxLCAnZXAnPT4kZXApKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBjZWJmcmZfZ2JfcHJ2Zm4oKXsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZXJkaHJmZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGZnZiA9ICh2ZmZyZygkX0NCRkdbJ2ZnZiddKSAmJiAhcnpjZ2woJF9DQkZHWydmZ2YnXSkpPyRfQ0JGR1snZmdmJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRkPSRndXZmLT5xby0+ZGhyZWwoIg0KCQkJZnJ5cnBnICogc2VieiBnb3lfb3BfdmFfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkiKTsJCQ0KCQl2cygkZC0+YWh6X2ViamYoKSA9PSAwKXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ3FyZnAnID0+ICcgem5ucywgUW5nbiBndnFueCBvdmZuIHF2IENlYmZyZiEnKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCXZzKCRmZ2YgPT0gJ1FFTlNHJyl7DQoJCQkkZD0kZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgKiBzZWJ6IGdveV9vcF92YV9xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCXZzKCRkLT5haHpfZWJqZigpID4gMTAwMDAwMDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAxJywgJ3FyZnAnID0+ICcgRmhxbnUgTnFuIFFuZ24gcWJ4IGJoZyEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQl9DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfdmFfdXJucXJlJywgbmVlbmwoJ2ZnbmdoZicgPT4gJGZnZikpOwkNCgkJDQoJCXZzKCR6ZnQpew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAncXJmcCcgPT4gJyBIY3FuZ3JxJykpOwkNCgkJCXF2cigpOw0KCQl9IHJ5ZnIgew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDEnLCAncXJmcCcgPT4gJ05xbiBSZWViZScpKTsJCQ0KCQkJcXZyKCk7CQ0KCQl9DQoJCQ0KCQkNCgkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5jY2ViaXJfcW5nbl91cm5xcmUoKXsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnpyZ3JlIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRmZ2YgPSAodmZmcmcoJF9DQkZHWydmZ2YnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snZmdmJ10pKT8kX0NCRkdbJ2ZnZiddOicnOw0KCQkNCgkJJGQ9JGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlmcnlycGcgKiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkiKTsJCQ0KCQl2cygkZC0+YWh6X2ViamYoKSA9PSAwKXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ3FyZnAnID0+ICcgUW5nbiBPbmVuYXQgWm5mdnUgWGJmYmF0JykpOwkNCgkJCXF2cigpOw0KCQl9DQoJCQ0KCQkNCgkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgndnFFcmZjYmEnID0+ICRmZ2YpKTsJDQoJCQ0KCQl2cygkemZ0KXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ3FyZnAnID0+ICcgUW5nbiBScXZzbnBnIEZoeGZyZiEnKSk7CQ0KCQkJcXZyKCk7DQoJCX0gcnlmciB7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMScsICdxcmZwJyA9PiAnTnFuIFJlZWJlJykpOwkJDQoJCQlxdnIoKTsJDQoJCX0NCgkJDQoJCQ0KCQkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fdXJucXJlKCl7DQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX2JoZ191cm5xcmVfdnEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J3FyZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCSR4YnFycWJ4ID0gdmZmcmcoJF9DQkZHWyd4YnFycWJ4J10pPyRfQ0JGR1sneGJxcnFieCddOicnOw0KCQl2cygkZTEwayA9PSAnWEJRUlFCWEhaUkEnKXsNCgkJCSRqdXJlciA9ICIgeGJxclFieGh6cmE9JyR4YnFycWJ4ICciOw0KCQkJDQoJCX0NCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3VybnFyZSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3VybnFyZV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyduZm55UW5nbiddPSRlYmotPm5mbnlRbmduOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyduZmhlbmFmdiddPSRlYmotPm5maGVuYWZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvdm5sbkNyYXRoZW5hdCddPSRlYmotPm92bmxuQ3JhdGhlbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvdm5sbkduem9udW5hJ109JGViai0+b3ZubG5HbnpvbnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb2VoZ2InXT0kZWJqLT5vZWhnYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzJ109JGViai0+cHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwdnNFaGN2bnUnXT0kZWJqLT5wdnNFaGN2bnU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3F2ZnB5bnZ6cmUnXT0kZWJqLT5xdmZweW52enJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzeW50UGhlbnUnXT0kZWJqLT5zeW50UGhlbnU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3N5bnRadnRuZiddPSRlYmotPnN5bnRadnRuZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnc2JvJ109JGViai0+c2JvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzZXJ2dHVnJ109JGViai0+c2VydnR1ZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5DcmFscmVudW5hJ109JGViai0+dW5ldG5DcmFscmVudW5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd2cUNyYXR0aGFuJ109JGViai0+dnFDcmF0dGhhbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFDcmF0bmF0eGhnJ109JGViai0+dnFDcmF0bmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3bm9uZ25hR2dxJ109JGViai0+d25vbmduYUdncTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51WGJhZ252YXJlJ109JGViai0+d2h6eW51WGJhZ252YXJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZoZW5hZnYnXT0kZWJqLT54YnFyTmZoZW5hZnY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJQbmVuT25sbmUnXT0kZWJqLT54YnFyUG5lbk9ubG5lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lblFudG5hdCddPSRlYmotPnhicXJQbmVuUW50bmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyVmFwYmdyZXonXT0kZWJqLT54YnFyVmFwYmdyZXo7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkNlYmZycWhlJ109JGViai0+eGJxcldyYXZmQ2ViZnJxaGU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlJ4ZmNiZSddPSRlYmotPnhicXJXcmF2ZlJ4ZmNiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQXZ5bnYnXT0kZWJqLT54YnFyV3JhdmZBdnludjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmR2NvJ109JGViai0+eGJxcldyYXZmR2NvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5hZ2JlJ109JGViai0+eGJxclhuYWdiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZVJ4ZmNiZSddPSRlYmotPnhicXJYbmFnYmVSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmFnYmVaaG5nJ109JGViai0+eGJxclhuYWdiZVpobmc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmFnYmVDcmV2eGZuJ109JGViai0+eGJxclhuYWdiZUNyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmdydGJldlJ4ZmNiZSddPSRlYmotPnhicXJYbmdydGJldlJ4ZmNiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhyYW5DbndueCddPSRlYmotPnhicXJYcmFuQ253bng7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJZYnhuZnYnXT0kZWJqLT54YnFyWWJ4bmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyQXJ0bmVuR2h3aG5hJ109JGViai0+eGJxckFydG5lbkdod2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckNyeU9iYXR4bmUnXT0kZWJqLT54YnFyQ3J5T2JhdHhuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckNyeVJ4ZmNiZSddPSRlYmotPnhicXJDcnlSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJDcnlaaG5nJ109JGViai0+eGJxckNyeVpobmc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJDcnlHaHdobmEnXT0kZWJqLT54YnFyQ3J5R2h3aG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyQ3J6b25sbmUnXT0kZWJqLT54YnFyQ3J6b25sbmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJHdmNyVW5ldG4nXT0kZWJqLT54YnFyR3ZjclVuZXRuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR2h3aG5hQ3JhdHZldnpuYSddPSRlYmotPnhicXJHaHdobmFDcmF0dmV2em5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR2NmJ109JGViai0+eGJxckdjZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcklueWhnbiddPSRlYmotPnhicXJJbnloZ247DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hiZ25HZ3EnXT0kZWJqLT54YmduR2dxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydSYWd2Z25mJ109JGViai0+UmFndmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjEnXT0kZWJqLT5SYWd2Z25mMTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjInXT0kZWJqLT5SYWd2Z25mMjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjMnXT0kZWJqLT5SYWd2Z25mMzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjQnXT0kZWJqLT5SYWd2Z25mNDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYW56bkdncSddPSRlYmotPmFuem5HZ3E7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FxY296J109JGViai0+YXFjb3o7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25lbmF0J109JGViai0+YXZ5bnZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52Wm54eWJhJ109JGViai0+YXZ5bnZabnh5YmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52V25mbiddPSRlYmotPmF2eW52V25mbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaG5hdFpoeG4nXT0kZWJqLT5obmF0Wmh4bjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVPcDExJ109JGViai0+YWJ6YmVPcDExOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldiddPSRlYmotPmZyZXY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mJ109JGViai0+ZnJldlJhZ3ZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mMSddPSRlYmotPmZyZXZSYWd2Z25mMTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlJhZ3ZnbmYyJ109JGViai0+ZnJldlJhZ3ZnbmYyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2UmFndmduZjMnXT0kZWJqLT5mcmV2UmFndmduZjM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mNCddPSRlYmotPmZyZXZSYWd2Z25mNDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZmhvY2JmT3AxMSddPSRlYmotPmZob2NiZk9wMTE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZnbmdoZiddPSRlYmotPmZnbmdoZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZmduZ2hmX29wJ109JGViai0+ZmduZ2hmX29wOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydncnpjbmdGZ2hzc3ZhdCddPSRlYmotPmdyemNuZ0ZnaHNzdmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3R5Tnh1dmVPcmV5bnhoJ109JGViai0+Z3R5Tnh1dmVPcmV5bnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndHlOam55T3JleW54aCddPSRlYmotPmd0eU5qbnlPcmV5bnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55T3AxMSddPSRlYmotPmduYXR0bnlPcDExOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UW5zZ25lJ109JGViai0+Z25hdHRueVFuc2duZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVJ4ZmNiZSddPSRlYmotPmduYXR0bnlSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlDcmV2eGZuJ109JGViai0+Z25hdHRueUNyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlHZ3EnXT0kZWJqLT5nbmF0dG55R2dxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnYmdueVFuYW5Gbmp2ZyddPSRlYmotPmdiZ255UW5hbkZuanZnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT3JhcXJlbiddPSRlYmotPnhicXJPcmFxcmVuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydpYnloenInXT0kZWJqLT5pYnloenI7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2Fuem5DcmF0bmF0eGhnJ109JGViai0+YW56bkNyYXRuYXR4aGc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eCddPSRlYmotPmF2eDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVDcmF0bmF0eGhnJ109JGViai0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYlFuc2duZSddPSRlYmotPmFiUW5zZ25lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lbk5hdHhoZyddPSRlYmotPnhicXJQbmVuTmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2Q3JhdG5hdHhoZyddPSRlYmotPmZyZXZDcmF0bmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT25heCddPSRlYmotPnhicXJPbmF4Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25heCddPSRlYmotPmZyZXZPbmF4Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmUnXT0kZWJqLT53aHp5bnVQYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludVhyem5mbmEnXT0kZWJqLT53aHp5bnVYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5hZ2JlR2h3aG5hJ109JGViai0+eGJxclhuYWdiZUdod2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2Zk9uZW5hdCddPSRlYmotPnhicXJXcmF2Zk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmVGhxbmF0J109JGViai0+eGJxcldyYXZmVGhxbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR2h3aG5hR2NvJ109JGViai0+eGJxckdod2huYUdjbzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYW56bkN2cCddPSRlYmotPmFuem5DdnA7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ255bnpuZyddPSRlYmotPm55bnpuZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVHcnljQ3ZwJ109JGViai0+YWJ6YmVHcnljQ3ZwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlYmotPndoenludVBiYWdudmFyZTIwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlYmotPndoenludVBiYWdudmFyZTQwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVXcmF2Zk9uZW5hdCddPSRlYmotPndoenludVdyYXZmT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlYmotPnlieG5mdkZ2bmNDcmV2eGZuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lbkZnaHNzdmF0J109JGViai0+eGJxclBuZW5GZ2hzc3ZhdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ25lZ0JzJ109JGViai0+eGJxcldyYXZmQ25lZ0JzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55Q3hvJ109JGViai0+Z25hdHRueUN4bzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaXEnXT0kZWJqLT5pcTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlYmotPmpueGdoRnZuY0NyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmR2NvJ109JGViai0+V3JhdmZHY287DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0dod2huYUdjbyddPSRlYmotPkdod2huYUdjbzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnR2h3aG5hQ3JhdHZldnpuYSddPSRlYmotPkdod2huYUNyYXR2ZXZ6bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1BuZW5OYXR4aGcnXT0kZWJqLT5QbmVuTmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydYcmFuQ253bngnXT0kZWJqLT5YcmFuQ253bng7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ05maGVuYWZ2X2d2Y3InXT0kZWJqLT5OZmhlbmFmdl9ndmNyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydPbmF4J109JGViai0+T25heDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnWWJ4bmZ2J109JGViai0+WWJ4bmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydHY2YnXT0kZWJqLT5HY2Y7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1BuZW5PbmxuZSddPSRlYmotPlBuZW5PbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUG5lblFudG5hdCddPSRlYmotPlBuZW5RbnRuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1huZ3J0YmV2UnhmY2JlJ109JGViai0+WG5ncnRiZXZSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmUnhmY2JlJ109JGViai0+V3JhdmZSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJZYnhuZnZPbmxuZSddPSRlYmotPnhicXJZYnhuZnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnWWJ4bmZ2T25sbmUnXT0kZWJqLT5ZYnhuZnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnV3JhdmZYcnpuZm5hJ109JGViai0+V3JhdmZYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydWYXBiZ3JleiddPSRlYmotPlZhcGJncmV6Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwZXJuZ3JfcW5nciddPSRlYmotPnBlcm5ncl9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwZXJuZ3Jfb2wnXT0kZWJqLT5wZXJuZ3Jfb2w7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3picXZzbF9xbmdyJ109JGViai0+emJxdnNsX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3picXZzbF9vbCddPSRlYmotPnpicXZzbF9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFFcmZjYmEnXT0kZWJqLT52cUVyZmNiYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFFcmZjYmFfMSddPSRlYmotPnZxRXJmY2JhXzE7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCgkNCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9xYngoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX2JoZ19xYnhoenJhX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOidxcmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVlFCWCcpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfdXJucXJlX3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3FieCgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3FieF9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xYnhoenJhX3ZxJ109JGViai0+b3BfYmhnX3FieGh6cmFfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mJ109JGViai0+eGJxclNuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclZ3dmEnXT0kZWJqLT54YnFyVnd2YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVRYnhoenJhJ109JGViai0+YWJ6YmVRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2UWJ4aHpyYSddPSRlYmotPmZyZXZRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UWJ4aHpyYSddPSRlYmotPmduYXR0bnlRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3cmF2ZlFieGh6cmEnXT0kZWJqLT53cmF2ZlFieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2hleVFieGh6cmEnXT0kZWJqLT5oZXlRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4cmdyZW5hdG5hJ109JGViai0+eHJncmVuYXRuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl95YnRmKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfdXJucXJlX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOidxcmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVllCVEYnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3VybnFyZV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl95YnRmKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25feWJ0Zl9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCQkkZXJmY2JhcHItPmViamZbJHZdWyd2cUVyZmNiYSddPSRlYmotPnZxRXJmY2JhOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfdXJucXJlX3ZxJ109JGViai0+b3BfdmFfdXJucXJlX3ZxOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3VybnFyZV92cSddPSRlYmotPm9wX2JoZ191cm5xcmVfdnE7DQoJCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hyZ3JlbmF0bmEnXT0kZWJqLT54cmdyZW5hdG5hOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVRbnNnbmUnXT0kZWJqLT5hYnpiZVFuc2duZTsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlRbnNnbmUnXT0kZWJqLT5nbmF0dG55UW5zZ25lOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVFcmZjYmEnXT0kZWJqLT5hYnpiZUVyZmNiYTsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlFcmZjYmEnXT0kZWJqLT5nbmF0dG55RXJmY2JhOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnam54Z2hFcmZjYmEnXT0kZWJqLT5qbnhnaEVyZmNiYTsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2hlbnZuYTEnXT0kZWJqLT5oZW52bmExOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hMiddPSRlYmotPmhlbnZuYTI7DQoJCQkkZXJmY2JhcHItPmViamZbJHZdWydDcXMnXT0kZWJqLT5DcXM7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl93bnp2YW5hKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOid2cVduenZhbmEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J25mcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkkdXFlX3ZxayA9IHZmZnJnKCRfQ0JGR1sndXFlX3ZxayddKT8kX0NCRkdbJ3VxZV92cWsnXTonJzsNCgkJdnMoJGUxMGsgPT0gJ1BORVZXWlZBTkEnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3VybnFyZV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl93bnp2YW5hKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fd256dmFuYV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxV256dmFuYSddPSRlYmotPnZxV256dmFuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3VybnFyZV92cSddPSRlYmotPm9wX2JoZ191cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX3ZhX3VybnFyZV92cSddPSRlYmotPm9wX3ZhX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVPY3cnXT0kZWJqLT5hYnpiZU9jdzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueU9jdyddPSRlYmotPmduYXR0bnlPY3c7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlduenZhbmEnXT0kZWJqLT54YnFyV3JhdmZXbnp2YW5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZlduenZhbmEnXT0kZWJqLT5XcmF2ZlduenZhbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlV256dmFuYSddPSRlYmotPmFiemJlV256dmFuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVduenZhbmEnXT0kZWJqLT5nbmF0dG55V256dmFuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVduZ2h1R3J6Y2InXT0kZWJqLT5nbmF0dG55V25naHVHcnpjYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY3Jhd256dmEnXT0kZWJqLT5jcmF3bnp2YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZXbnp2YW5hJ109JGViai0+YXZ5bnZXbnp2YW5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4cmdyZW5hdG5hJ109JGViai0+eHJncmVuYXRuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2d2Y3JfcWJ4aHpyYSddPSRlYmotPmd2Y3JfcWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlFieGh6cmFfd256dmFuYSddPSRlYmotPmZyZXZRYnhoenJhX3duenZhbmE7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9jaGF0aGduYSgpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTondnFDaGF0aGduYSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXTonbmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVkNIQVRIR05BJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fY2hhdGhnbmEoJHl2enZnLCRmZ25lZywkZnZxaywkZmJlcSwgJGp1cmVyKTsNCiAgICAgICAgJHBiaGFnID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9jaGF0aGduYV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxQ2hhdGhnbmEnXT0kZWJqLT52cUNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfdXJucXJlX3ZxJ109JGViai0+b3BfdmFfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyX3FieGh6cmEnXT0kZWJqLT5ndmNyX3FieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZRYnhoenJhX2NoYXRoZ25hJ109JGViai0+ZnJldlFieGh6cmFfY2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYmotPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnU25mdnl2Z25mR25ldnMnXT0kZWJqLT5TbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWJqLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnV3JhdmZDaGF0aGduYSddPSRlYmotPldyYXZmQ2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52Q2hhdGhnbmEnXT0kZWJqLT5hdnludkNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydRVk9OTE5FJ109JGViai0+UVZPTkxORTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUVZHTkFUVEhBVF9DUlpSRVZBR05VJ109JGViai0+UVZHTkFUVEhBVF9DUlpSRVZBR05VOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydRVkdOQVRUSFVYTkEnXT0kZWJqLT5RVkdOQVRUSFVYTkE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ09SRVhOWU4nXT0kZWJqLT5PUkVYTllOOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydRVk9ST05GWE5BJ109JGViai0+UVZPUk9ORlhOQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnR1ZRTlhfUVZDSEFUSEcnXT0kZWJqLT5HVlFOWF9RVkNIQVRIRzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnRkhRTlVfUVZZSEFORlYnXT0kZWJqLT5GSFFOVV9RVllIQU5GVjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUVZXTlpWQVhOQSddPSRlYmotPlFWV05aVkFYTkE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1FWR0hBUU4nXT0kZWJqLT5RVkdIQVFOOw0KDQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl94cnpuZm5hKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfeHJ6bmZuYV92cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXTonbmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVlhSWk5GTkEnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3VybnFyZV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl94cnpuZm5hKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25feHJ6bmZuYV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ194cnpuZm5hX3ZxJ109JGViai0+b3BfYmhnX3hyem5mbmFfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVYcnpuZm5hJ109JGViai0+d2h6eW51WHJ6bmZuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYV94cnpuZiddPSRlYmotPnhicXJXcmF2Zlhyem5mbmFfeHJ6bmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhYcnpuZm5hJ109JGViai0+enJleFhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZYcnpuZm5hJ109JGViai0+ZnJldlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25feGJhZ252YXJlKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfeGJhZ252YXJlX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWQ1JHVicpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfdXJucXJlX3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3hiYWdudmFyZSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3hiYWdudmFyZV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR3ZjclhiYWdudmFyZSddPSRlYmotPnhicXJHdmNyWGJhZ252YXJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFySHhoZW5hWGJhZ252YXJlJ109JGViai0+eGJxckh4aGVuYVhiYWdudmFyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVYYmFnbnZhcmUnXT0kZWJqLT5hYnpiZVhiYWdudmFyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlhiYWdudmFyZSddPSRlYmotPmZyZXZYYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlhiYWdudmFyZSddPSRlYmotPnhicXJXcmF2ZlhiYWdudmFyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3hiYWdudmFyZV92cSddPSRlYmotPm9wX2JoZ194YmFnbnZhcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmWGJhZ252YXJlJ109JGViai0+V3JhdmZYYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0d2Y3JYYmFnbnZhcmUnXT0kZWJqLT5HdmNyWGJhZ252YXJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydIeGhlbmFYYmFnbnZhcmUnXT0kZWJqLT5IeGhlbmFYYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb25lbmF0KCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfcXJnbnZ5X3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOidORlAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWT05FTkFUJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0KCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0X3BhZygkanVyZXIpOw0KDQogICAgICAgIHZzKCAkcGJoYWcgPiAwICkgeyAkZ2JnbnlfY250cmYgPSBwcnZ5KCRwYmhhZy8keXZ6dmcpOyB9IHJ5ZnIgeyAkZ2JnbnlfY250cmYgPSAwOyB9DQogICAgICAgIHZzICgkY250ciA+ICRnYmdueV9jbnRyZikgJGNudHI9JGdiZ255X2NudHJmOw0KICAgICAgICAvL2luZV9xaHpjKCRlcnBiZXFmKTsgcXZyKCk7DQogICAgICAgICRlcmZjYmFwci0+Y250ciA9ICRjbnRyOw0KICAgICAgICAkZXJmY2JhcHItPmdiZ255ID0gJGdiZ255X2NudHJmOw0KICAgICAgICAkZXJmY2JhcHItPmVycGJlcWYgPSAgJHBiaGFnOw0KICAgICAgICAkdj0wOw0KICAgICAgICBzYmVybnB1KCRlcnBiZXFmIG5mICRlYmopIHsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyduZmhlbmFmdiddPSRlYmotPm5maGVuYWZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwdnMnXT0kZWJqLT5wdnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2c0VoY3ZudSddPSRlYmotPnB2c0VoY3ZudTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncXZmeGJhJ109JGViai0+cXZmeGJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzYm8nXT0kZWJqLT5zYm87DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3NlcnZ0dWcnXT0kZWJqLT5zZXJ2dHVnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0blJ4ZmNiZSddPSRlYmotPnVuZXRuUnhmY2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNuZ2J4bmEnXT0kZWJqLT51bmV0bkNuZ2J4bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuRm5naG5hJ109JGViai0+dW5ldG5GbmdobmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JhbHJlbnVuYSddPSRlYmotPnVuZXRuQ3JhbHJlbnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndmZ2Q3JlWHJ6bmZuYSddPSRlYmotPnZmdkNyZVhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJOZm55T25lbmF0J109JGViai0+eGJxck5mbnlPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludU5mbnlPbnVuYU9ueGgnXT0kZWJqLT53aHp5bnVOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVYcnpuZm5hJ109JGViai0+d2h6eW51WHJ6bmZuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9udW5hT254aCddPSRlYmotPnhicXJOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT25lbmF0J109JGViai0+eGJxck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFucmVudU5mbnknXT0kZWJqLT54YnFyUW5yZW51TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieE5mbnknXT0kZWJqLT54YnFyUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclRoYW5PbmVuYXQnXT0kZWJqLT54YnFyVGhhbk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmdydGJldk9uZW5hdCddPSRlYmotPnhicXJYbmdydGJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhiYXF2ZnZPbmVuYXQnXT0kZWJqLT54YnFyWGJhcXZmdk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckFydG5lbk5mbnknXT0kZWJqLT54YnFyQXJ0bmVuTmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckNyZXV2Z2hhdG5hJ109JGViai0+eGJxckNyZXV2Z2hhdG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyRm5naG5hT25lbmF0J109JGViai0+eGJxckZuZ2huYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnenJleCddPSRlYmotPnpyZXg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FxY296J109JGViai0+YXFjb3o7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25lbmF0J109JGViai0+YXZ5bnZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52UW5hbkZuanZnJ109JGViai0+YXZ5bnZRbmFuRm5qdmc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52V25mbiddPSRlYmotPmF2eW52V25mbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZHbnpvbnUnXT0kZWJqLT5hdnludkduem9udTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9uZW5hdCddPSRlYmotPmZyZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlYmotPmZjcmZ2c3Z4bmZ2WW52YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3ZjciddPSRlYmotPmd2Y3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2huYXRaaHhuJ109JGViai0+aG5hdFpoeG47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2h4aGVuYSddPSRlYmotPmh4aGVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hJ109JGViai0+aGVudm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydpYnloenInXT0kZWJqLT5pYnloenI7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZRYnhoenJhJ109JGViai0+ZnJldlFieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mJ109JGViai0+ZnJldlJhZ3ZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3BuZ25nbmEnXT0kZWJqLT5wbmduZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydBcnRuZW5OZm55X3FneSddPSRlYmotPkFydG5lbk5mbnlfcWd5Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoX3FneSddPSRlYmotPk5mbnlPbnVuYU9ueGhfcWd5Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydYbmdydGJldk9uZW5hdCddPSRlYmotPlhuZ3J0YmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydDcmV1dmdoYXRuYV9xZ3knXT0kZWJqLT5DcmV1dmdoYXRuYV9xZ3k7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ05mbnlPbmVuYXQnXT0kZWJqLT5OZm55T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoJ109JGViai0+TmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5SeGZjYmUnXT0kZWJqLT51bmV0blJ4ZmNiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRHbmV2cygpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonb25lbmF0R25ldnNfdnEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J25mcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkkdXFlX3ZxayA9IHZmZnJnKCRfQ0JGR1sndXFlX3ZxayddKT8kX0NCRkdbJ3VxZV92cWsnXTonJzsNCgkJdnMoJGUxMGsgPT0gJ1BORVZHTkVWUycpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfcXJnbnZ5X3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29uZW5hdEduZXZzKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0R25ldnNfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbmVuYXRHbmV2c192cSddPSRlYmotPm9uZW5hdEduZXZzX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfdXJucXJlX3ZxJ109JGViai0+b3BfdmFfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV9xcmdudnlfdnEnXT0kZWJqLT5vcF92YV9xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyX3FieGh6cmEnXT0kZWJqLT5ndmNyX3FieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmR25ldnMnXT0kZWJqLT5XcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVGbmdobmEnXT0kZWJqLT53aHp5bnVGbmdobmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1NuZnZ5dmduZkduZXZzJ109JGViai0+U25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYmotPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckZuZ2huYU9uZW5hdCddPSRlYmotPnhicXJGbmdobmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGViai0+eGJxcldyYXZmQ2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25sbmUnXT0kZWJqLT5hdnludk9ubG5lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludlNuZnZ5dmduZiddPSRlYmotPmF2eW52U25mdnl2Z25mOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludkZocW51UXZ5aGFuZnYnXT0kZWJqLT5hdnludkZocW51UXZ5aGFuZnY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXQnXT0kZWJqLT5mcmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2cyddPSRlYmotPmduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2c1NuZnZ5dmduZiddPSRlYmotPmduZXZzU25mdnl2Z25mOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkNoYXRoZ25hJ109JGViai0+V3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRHbmV2c19vcDMwKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvbmVuYXRHbmV2c192cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXTonbmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVkdORVZTJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ19xcmdudnlfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0R25ldnNfb3AzMCgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29uZW5hdEduZXZzX29wMzBfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbmVuYXRHbmV2c192cSddPSRlYmotPm9uZW5hdEduZXZzX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2d2Y3JfcWJ4aHpyYSddPSRlYmotPmd2Y3JfcWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51X29wYmhnJ109JGViai0+cHZzRWhjdm51X29wYmhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkduZXZzJ109JGViai0+V3JhdmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWJqLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1NuZnZ5dmduZkduZXZzJ109JGViai0+U25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZDaGF0aGduYSddPSRlYmotPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkNoYXRoZ25hJ109JGViai0+V3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnMnXT0kZWJqLT5nbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3onXT0kZWJqLT5vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3onXT0kZWJqLT5DaGF0aGduYV9vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3pfcHZzJ109JGViai0+Q2hhdGhnbmFfb3pfcHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludl9jaGF0aGduYSddPSRlYmotPmF2eW52X2NoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludk9ubG5lJ109JGViai0+YXZ5bnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3JuWm5maHhfb3BiaGcnXT0kZWJqLT5vcm5abmZoeF9vcGJoZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZGaHFudVF2eWhhbmZ2J109JGViai0+YXZ5bnZGaHFudVF2eWhhbmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0J109JGViai0+ZnJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnNTbmZ2eXZnbmYnXT0kZWJqLT5nbmV2c1NuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRHbmV2c19vcF9iaGcoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29uZW5hdEduZXZzX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCSRxZ3lfdnFrID0gdmZmcmcoJF9DQkZHWydxZ3lfdnFrJ10pPyRfQ0JGR1sncWd5X3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVkdORVZTQkhHJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3FyZ252eV92cT0kcWd5X3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbmVuYXRHbmV2c19vcF9iaGcoJHl2enZnLCRmZ25lZywkZnZxaywkZmJlcSwgJGp1cmVyKTsNCiAgICAgICAgJHBiaGFnID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbmVuYXRHbmV2c19vcF9iaGdfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbmVuYXRHbmV2c192cSddPSRlYmotPm9uZW5hdEduZXZzX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2d2Y3JfcWJ4aHpyYSddPSRlYmotPmd2Y3JfcWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51X29wYmhnJ109JGViai0+cHZzRWhjdm51X29wYmhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkduZXZzJ109JGViai0+V3JhdmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWJqLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1NuZnZ5dmduZkduZXZzJ109JGViai0+U25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZDaGF0aGduYSddPSRlYmotPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkNoYXRoZ25hJ109JGViai0+V3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnMnXT0kZWJqLT5nbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3onXT0kZWJqLT5vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3onXT0kZWJqLT5DaGF0aGduYV9vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3pfcHZzJ109JGViai0+Q2hhdGhnbmFfb3pfcHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludl9jaGF0aGduYSddPSRlYmotPmF2eW52X2NoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludk9ubG5lJ109JGViai0+YXZ5bnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3JuWm5maHhfb3BiaGcnXT0kZWJqLT5vcm5abmZoeF9vcGJoZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZGaHFudVF2eWhhbmZ2J109JGViai0+YXZ5bnZGaHFudVF2eWhhbmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0J109JGViai0+ZnJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnNTbmZ2eXZnbmYnXT0kZWJqLT5nbmV2c1NuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRGdm5jKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J25mcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkkdXFlX3ZxayA9IHZmZnJnKCRfQ0JGR1sndXFlX3ZxayddKT8kX0NCRkdbJ3VxZV92cWsnXTonJzsNCgkJdnMoJGUxMGsgPT0gJ1BORVZGVk5DJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0RnZuYygkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29uZW5hdEZ2bmNfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnXT0kZWJqLT5vcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZPbmVuYXQnXT0kZWJqLT54YnFyV3JhdmZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlRocW5hdCddPSRlYmotPnhicXJXcmF2ZlRocW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYW56bkN2cCddPSRlYmotPmFuem5DdnA7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ255bnpuZyddPSRlYmotPm55bnpuZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVHcnljQ3ZwJ109JGViai0+YWJ6YmVHcnljQ3ZwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlYmotPndoenludVBiYWdudmFyZTIwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlYmotPndoenludVBiYWdudmFyZTQwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlYmotPnlieG5mdkZ2bmNDcmV2eGZuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lbkZnaHNzdmF0J109JGViai0+eGJxclBuZW5GZ2hzc3ZhdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ25lZ0JzJ109JGViai0+eGJxcldyYXZmQ25lZ0JzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55Q3hvJ109JGViai0+Z25hdHRueUN4bzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlYmotPmpueGdoRnZuY0NyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmT25lbmF0J109JGViai0+V3JhdmZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmVGhxbmF0J109JGViai0+V3JhdmZUaHFuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmQ25lZ0JzJ109JGViai0+V3JhdmZDbmVnQnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1BuZW5GZ2hzc3ZhdCddPSRlYmotPlBuZW5GZ2hzc3ZhdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneHJncmVuYXRuYSddPSRlYmotPnhyZ3JlbmF0bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb251bmFvbnhoX25mbnkoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX3ZhX3FyZ252eV92cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXToncXJmcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkJCQ0KCQkkdnFfdXJucXJlPXZmZnJnKCRfQ0JGR1sndnFfdXJucXJlJ10pPyRfQ0JGR1sndnFfdXJucXJlJ106MDsNCgkJDQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQkkeGJxclFieE5mbnkgPSB2ZmZyZygkX0NCRkdbJ3hicXJRYnhOZm55J10pPyRfQ0JGR1sneGJxclFieE5mbnknXTonJzsNCgkJJHhicXJvbmVuYXQgPSB2ZmZyZygkX0NCRkdbJ3hicXJvbmVuYXQnXSk/JF9DQkZHWyd4YnFyb25lbmF0J106Jyc7DQoJCSRvcF92YV9xcmdudnlfdnEgPSB2ZmZyZygkX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddKT8kX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVk9ORU5BVF9ORk5ZJyl7DQoJCQkvLyRqdXJlciA9ICJ4YnFyT25lbmF0ID0nJHhicXJvbmVuYXQnIjsNCgkJCQ0KCQl9DQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55X3BhZygkanVyZXIpOw0KDQogICAgICAgIHZzKCAkcGJoYWcgPiAwICkgeyAkZ2JnbnlfY250cmYgPSBwcnZ5KCRwYmhhZy8keXZ6dmcpOyB9IHJ5ZnIgeyAkZ2JnbnlfY250cmYgPSAwOyB9DQogICAgICAgIHZzICgkY250ciA+ICRnYmdueV9jbnRyZikgJGNudHI9JGdiZ255X2NudHJmOw0KICAgICAgICAvL2luZV9xaHpjKCRlcnBiZXFmKTsgcXZyKCk7DQogICAgICAgICRlcmZjYmFwci0+Y250ciA9ICRjbnRyOw0KICAgICAgICAkZXJmY2JhcHItPmdiZ255ID0gJGdiZ255X2NudHJmOw0KICAgICAgICAkZXJmY2JhcHItPmVycGJlcWYgPSAgJHBiaGFnOw0KICAgICAgICAkdj0wOw0KICAgICAgICBzYmVybnB1KCRlcnBiZXFmIG5mICRlYmopIHsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfcXJnbnZ5X3ZxJ109JGViai0+b3BfdmFfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV91cm5xcmVfdnEnXT0kZWJqLT5vcF92YV91cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFPbmVuYXQnXT0kZWJqLT52cU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnbmZoZW5hZnYnXT0kZWJqLT5uZmhlbmFmdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncG5nbmduYSddPSRlYmotPnBuZ25nbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2cyddPSRlYmotPnB2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51J109JGViai0+cHZzRWhjdm51Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzZXJ2dHVnJ109JGViai0+c2VydnR1ZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnc2JvJ109JGViai0+c2JvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0blJ4ZmNiZSddPSRlYmotPnVuZXRuUnhmY2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkZuZ2huYSddPSRlYmotPnVuZXRuRm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0kZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndmZ2Q3JlWHJ6bmZuYSddPSRlYmotPnZmdkNyZVhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludVhyem5mbmEnXT0kZWJqLT53aHp5bnVYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9uZW5hdCddPSRlYmotPnhicXJOZm55T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T25lbmF0J109JGViai0+TmZueU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckFydG5lbk5mbnknXT0kZWJqLT54YnFyQXJ0bmVuTmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9udW5hT254aCddPSRlYmotPnhicXJOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoJ109JGViai0+TmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhOZm55J109JGViai0+eGJxclFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0hFTlZOQV9RQlhIWlJBX0NOT1JOQSddPSRlYmotPkhFTlZOQV9RQlhIWlJBX0NOT1JOQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhPbmVuYXQnXT0kZWJqLT56cmV4T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhcWNveiddPSRlYmotPmFxY296Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZU53aFFieE5mbnknXT0kZWJqLT5hYnpiZU53aFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlYmotPmFiemJlUW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aCddPSRlYmotPmZyZXZPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXQnXT0kZWJqLT5mcmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0UWJ4TmZueSddPSRlYmotPmZyZXZPbmVuYXRRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2Vnd2YSddPSRlYmotPmZyZXZWd3ZhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmY3JmdnN2eG5mdlludmFPbmVuYXQnXT0kZWJqLT5mY3JmdnN2eG5mdlludmFPbmVuYXQ7DQoJCS8vJGVyZmNiYXByLT5lYmpmWyR2XVsnZmduZ2hmJ109JGViai0+ZmduZ2hmOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UW5zZ25lUWJ4TmZueSddPSRlYmotPmduYXR0bnlRbnNnbmVRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55TndoUWJ4TmZueSddPSRlYmotPmduYXR0bnlOd2hRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyT25lbmF0J109JGViai0+Z3Zjck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaHhoZW5hT25lbmF0J109JGViai0+aHhoZW5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydoZW52bmFPbmVuYXQnXT0kZWJqLT5oZW52bmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmdydGJldk9uZW5hdCddPSRlYmotPnhicXJYbmdydGJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnWG5ncnRiZXZPbmVuYXQnXT0kZWJqLT5YbmdydGJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXJnZ2InXT0kZWJqLT5hcmdnYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFXbnp2YW5hJ109JGViai0+dnFXbnp2YW5hOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb251bmFvbnhoX25mbnlfdmEoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX3ZhX3FyZ252eV92cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXToncXJmcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkJCQ0KCQkkdnFfdXJucXJlPXZmZnJnKCRfQ0JGR1sndnFfdXJucXJlJ10pPyRfQ0JGR1sndnFfdXJucXJlJ106MDsNCgkJDQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQkkeGJxclFieE5mbnkgPSB2ZmZyZygkX0NCRkdbJ3hicXJRYnhOZm55J10pPyRfQ0JGR1sneGJxclFieE5mbnknXTonJzsNCgkJJHhicXJvbmVuYXQgPSB2ZmZyZygkX0NCRkdbJ3hicXJvbmVuYXQnXSk/JF9DQkZHWyd4YnFyb25lbmF0J106Jyc7DQoJCSRvcF92YV9xcmdudnlfdnEgPSB2ZmZyZygkX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddKT8kX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVk9ORU5BVF9WQScpew0KCQkJIyRqdXJlciA9ICJ4YnFyT25lbmF0ID0nJHhicXJvbmVuYXQnIjsNCgkJCQ0KCQl9DQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55X3BhZygkanVyZXIpOw0KDQogICAgICAgIHZzKCAkcGJoYWcgPiAwICkgeyAkZ2JnbnlfY250cmYgPSBwcnZ5KCRwYmhhZy8keXZ6dmcpOyB9IHJ5ZnIgeyAkZ2JnbnlfY250cmYgPSAwOyB9DQogICAgICAgIHZzICgkY250ciA+ICRnYmdueV9jbnRyZikgJGNudHI9JGdiZ255X2NudHJmOw0KICAgICAgICAvL2luZV9xaHpjKCRlcnBiZXFmKTsgcXZyKCk7DQogICAgICAgICRlcmZjYmFwci0+Y250ciA9ICRjbnRyOw0KICAgICAgICAkZXJmY2JhcHItPmdiZ255ID0gJGdiZ255X2NudHJmOw0KICAgICAgICAkZXJmY2JhcHItPmVycGJlcWYgPSAgJHBiaGFnOw0KICAgICAgICAkdj0wOw0KICAgICAgICBzYmVybnB1KCRlcnBiZXFmIG5mICRlYmopIHsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfcXJnbnZ5X3ZxJ109JGViai0+b3BfdmFfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV91cm5xcmVfdnEnXT0kZWJqLT5vcF92YV91cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFPbmVuYXQnXT0kZWJqLT52cU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnbmZoZW5hZnYnXT0kZWJqLT5uZmhlbmFmdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncG5nbmduYSddPSRlYmotPnBuZ25nbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2cyddPSRlYmotPnB2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51J109JGViai0+cHZzRWhjdm51Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzZXJ2dHVnJ109JGViai0+c2VydnR1ZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnc2JvJ109JGViai0+c2JvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0blJ4ZmNiZSddPSRlYmotPnVuZXRuUnhmY2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkZuZ2huYSddPSRlYmotPnVuZXRuRm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0kZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndmZ2Q3JlWHJ6bmZuYSddPSRlYmotPnZmdkNyZVhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludVhyem5mbmEnXT0kZWJqLT53aHp5bnVYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9uZW5hdCddPSRlYmotPnhicXJOZm55T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T25lbmF0J109JGViai0+TmZueU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckFydG5lbk5mbnknXT0kZWJqLT54YnFyQXJ0bmVuTmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9udW5hT254aCddPSRlYmotPnhicXJOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoJ109JGViai0+TmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhOZm55J109JGViai0+eGJxclFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0hFTlZOQV9RQlhIWlJBX0NOT1JOQSddPSRlYmotPkhFTlZOQV9RQlhIWlJBX0NOT1JOQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhPbmVuYXQnXT0kZWJqLT56cmV4T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhcWNveiddPSRlYmotPmFxY296Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZU53aFFieE5mbnknXT0kZWJqLT5hYnpiZU53aFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlYmotPmFiemJlUW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aCddPSRlYmotPmZyZXZPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXQnXT0kZWJqLT5mcmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0UWJ4TmZueSddPSRlYmotPmZyZXZPbmVuYXRRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2Vnd2YSddPSRlYmotPmZyZXZWd3ZhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmY3JmdnN2eG5mdlludmFPbmVuYXQnXT0kZWJqLT5mY3JmdnN2eG5mdlludmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZnbmdoZiddPSRlYmotPmZnbmdoZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVFuc2duZVFieE5mbnknXT0kZWJqLT5nbmF0dG55UW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueU53aFFieE5mbnknXT0kZWJqLT5nbmF0dG55TndoUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3Zjck9uZW5hdCddPSRlYmotPmd2Y3JPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2h4aGVuYU9uZW5hdCddPSRlYmotPmh4aGVuYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hT25lbmF0J109JGViai0+aGVudm5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5ncnRiZXZPbmVuYXQnXT0kZWJqLT54YnFyWG5ncnRiZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1huZ3J0YmV2T25lbmF0J109JGViai0+WG5ncnRiZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxV256dmFuYSddPSRlYmotPnZxV256dmFuYTsNCgkJJHYrKzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlcmZjYmFwcik7DQoJDQoJfQ0KCQ0KCXNoYXBndmJhIGdveV9xbmduX29udW5hb254aF9uZm55b3AyNSgpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonb251bmFPbnhoX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWT05VTkFORk5BT1AyNScpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfcXJnbnZ5X3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55b3AyNSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55b3AyNV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29udW5hT254aF92cSddPSRlYmotPm9udW5hT254aF92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV9xcmdudnlfdnEnXT0kZWJqLT5vcF92YV9xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX3ZhX3VybnFyZV92cSddPSRlYmotPm9wX3ZhX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFPbmVuYXQnXT0kZWJqLT52cU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzJ109JGViai0+cHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwdnNFaGN2bnUnXT0kZWJqLT5wdnNFaGN2bnU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JhbHJlbnVuYSddPSRlYmotPnVuZXRuQ3JhbHJlbnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5DcmVieXJ1bmEnXT0kZWJqLT51bmV0bkNyZWJ5cnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyRm5naG5hT25lbmF0J109JGViai0+eGJxckZuZ2huYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZWJqLT54YnFyTmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhOZm55J109JGViai0+eGJxclFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0hFTlZOQV9RQlhIWlJBJ109JGViai0+SEVOVk5BX1FCWEhaUkE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmFnYmUnXT0kZWJqLT54YnFyWG5hZ2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6cmV4T25lbmF0J109JGViai0+enJleE9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXFjb3onXT0kZWJqLT5hcWNvejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVOd2hRYnhOZm55J109JGViai0+YWJ6YmVOd2hRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZVFuc2duZVFieE5mbnknXT0kZWJqLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2NiZkduZXZzJ109JGViai0+Y2JmR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbnVuYU9ueGgnXT0kZWJqLT5mcmV2T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0J109JGViai0+ZnJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9uZW5hdFFieE5mbnknXT0kZWJqLT5mcmV2T25lbmF0UWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlZ3dmEnXT0kZWJqLT5mcmV2Vnd2YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZmNyZnZzdnhuZnZZbnZhT25lbmF0J109JGViai0+ZmNyZnZzdnhuZnZZbnZhT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UW5zZ25lUWJ4TmZueSddPSRlYmotPmduYXR0bnlRbnNnbmVRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55TndoUWJ4TmZueSddPSRlYmotPmduYXR0bnlOd2hRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyT25lbmF0J109JGViai0+Z3Zjck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaHhoZW5hT25lbmF0J109JGViai0+aHhoZW5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydoZW52bmFPbmVuYXQnXT0kZWJqLT5oZW52bmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkduZXZzJ109JGViai0+eGJxcldyYXZmR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYUduZXZzJ109JGViai0+d2h6eW51Rm5naG5hR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYmotPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWJqLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXJnZ2InXT0kZWJqLT5hcmdnYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZPbmxuZSddPSRlYmotPmF2eW52T25sbmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52U25mdnl2Z25mJ109JGViai0+YXZ5bnZTbmZ2eXZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52RmhxbnVRdnloYW5mdiddPSRlYmotPmF2eW52RmhxbnVRdnloYW5mdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aEduZXZzJ109JGViai0+ZnJldk9udW5hT254aEduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2cyddPSRlYmotPmduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2c1NuZnZ5dmduZiddPSRlYmotPmduZXZzU25mdnl2Z25mOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb251bmFvbnhoX25mbnlvcDI2MSgpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonb251bmFPbnhoX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWT05VTkFORk5BT1AyNjEnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3FyZ252eV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueW9wMjUoJHl2enZnLCRmZ25lZywkZnZxaywkZmJlcSwgJGp1cmVyKTsNCiAgICAgICAgJHBiaGFnID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueW9wMjVfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbnVuYU9ueGhfdnEnXT0kZWJqLT5vbnVuYU9ueGhfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfcXJnbnZ5X3ZxJ109JGViai0+b3BfdmFfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV9xcmdudnlfdnFfbmZueSddPSRlYmotPm9wX3ZhX3FyZ252eV92cV9uZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV91cm5xcmVfdnEnXT0kZWJqLT5vcF92YV91cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX3ZhX3VybnFyZV92cV9uZm55J109JGViai0+b3BfdmFfdXJucXJlX3ZxX25mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxT25lbmF0J109JGViai0+dnFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2cyddPSRlYmotPnB2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51J109JGViai0+cHZzRWhjdm51Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0kZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuRm5naG5hJ109JGViai0+dW5ldG5GbmdobmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckZuZ2huYU9uZW5hdCddPSRlYmotPnhicXJGbmdobmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJOZm55T251bmFPbnhoJ109JGViai0+eGJxck5mbnlPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ05mbnlPbnVuYU9ueGgnXT0kZWJqLT5OZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT25lbmF0J109JGViai0+eGJxck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieE5mbnknXT0kZWJqLT54YnFyUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnSEVOVk5BX1FCWEhaUkEnXT0kZWJqLT5IRU5WTkFfUUJYSFpSQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhPbmVuYXQnXT0kZWJqLT56cmV4T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhcWNveiddPSRlYmotPmFxY296Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZU53aFFieE5mbnknXT0kZWJqLT5hYnpiZU53aFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlYmotPmFiemJlUW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aCddPSRlYmotPmZyZXZPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbnVuYU9ueGhHbmV2cyddPSRlYmotPmZyZXZPbnVuYU9ueGhHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9uZW5hdCddPSRlYmotPmZyZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXRRYnhOZm55J109JGViai0+ZnJldk9uZW5hdFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZWd3ZhJ109JGViai0+ZnJldlZ3dmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZjcmZ2c3Z4bmZ2WW52YU9uZW5hdCddPSRlYmotPmZjcmZ2c3Z4bmZ2WW52YU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVFuc2duZVFieE5mbnknXT0kZWJqLT5nbmF0dG55UW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueU53aFFieE5mbnknXT0kZWJqLT5nbmF0dG55TndoUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3Zjck9uZW5hdCddPSRlYmotPmd2Y3JPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2h4aGVuYU9uZW5hdCddPSRlYmotPmh4aGVuYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hT25lbmF0J109JGViai0+aGVudm5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVGbmdobmFHbmV2cyddPSRlYmotPndoenludUZuZ2huYUduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWJqLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGViai0+eGJxcldyYXZmQ2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25sbmUnXT0kZWJqLT5hdnludk9ubG5lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludlduZm4nXT0kZWJqLT5hdnludlduZm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52U25mdnl2Z25mJ109JGViai0+YXZ5bnZTbmZ2eXZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52RmhxbnVRdnloYW5mdiddPSRlYmotPmF2eW52RmhxbnVRdnloYW5mdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnMnXT0kZWJqLT5nbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnNTbmZ2eXZnbmYnXT0kZWJqLT5nbmV2c1NuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncG5nbmduYSddPSRlYmotPnBuZ25nbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X2VyY2JlZ19xYnBfYmhnKCl7DQoJCWZyZmZ2YmFfZmduZWcoKTsNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonZ25hdHRueXFuc2duZSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXToncXJmcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkNCgkJdnMoJGUxMGsgPT0gJ0dUWV9RTlNHTkUnKXsNCgkJCSRmZ25lZ3FuZ3IgPSB2ZmZyZygkX0NCRkdbJ2ZnbmVncW5nciddKT8kX0NCRkdbJ2ZnbmVncW5nciddOnFuZ3IoJ0wtei0wMScpOw0KCQkJJHJhcXFuZ3IgPSB2ZmZyZygkX0NCRkdbJ3JhcXFuZ3InXSk/JF9DQkZHWydyYXFxbmdyJ106cW5ncignTC16LXEnKTsJCQkNCgkJCSRqdXJlciA9ICIgZ25hdHRueXFuc2duZSBvcmdqcnJhICckZmduZWdxbmdyJyAgbmFxICckcmFxcW5ncicgIjsNCgkJfSANCgkJCQ0KDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCgkJDQoJCSRndXZmLT5mcmZmdmJhLT5mcmdfaGZyZXFuZ24oJ2p1cmVyJywgJGp1cmVyKTsNCgkJDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X2VyY2JlZ19xYnBfYmhnKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X2VyY2JlZ19xYnBfYmhnX3BhZygkanVyZXIpOw0KICAgICAgIA0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KCQkgdnMgKCRwYmhhZyA9PSAwKXsNCgkJCSRlcmZjYmFwci0+ZWJqZiA9ICcwJzsJCQkNCgkJfQ0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCgkJLyogJHVoZ25hdCA9IDA7DQoJCSRjY2EgPSAwOw0KCQkkcWNjID0gMDsNCgkJJHF2ZnhiYTEgPSAwOw0KCQkkcXZmeGJhMiA9IDA7DQoJCSR3enlrdW5ldG4gPSAwOw0KCQkkd3p5Zm5nID0gMDsNCgkJJHd6eWZuZ19vYmFoZiA9IDA7DQoJCSRVbmV0bkZuZyA9IDA7ICovDQoJCXNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xYnhoenJhX3ZxJ109JGViai0+b3BfYmhnX3FieGh6cmFfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhoenJhJ109JGViai0+eGJxclFieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlTndoJ109JGViai0+YWJ6YmVOd2g7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiUW5zZ25lJ109JGViai0+YWJRbnNnbmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlxbnNnbmUnXT0kZWJqLT5nbmF0dG55cW5zZ25lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5hZ2JlJ109JGViai0+eGJxclhuYWdiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGhmZ2J6cmUnXT0kZWJqLT5waGZnYnpyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY3JhdGhmbnVuJ109JGViai0+Y3JhdGhmbnVuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydueW56bmdfY3JhdGhmbnVuJ109JGViai0+bnluem5nX2NyYXRoZm51bjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9yYXFyZW4nXT0kZWJqLT54YnFyT3JhcXJlbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclZhcGJncmV6J109JGViai0+eGJxclZhcGJncmV6Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFySW55aGduJ109JGViai0+eGJxcklueWhnbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXFjb3onXT0kZWJqLT5hcWNvejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVWYWlidnByJ109JGViai0+YWJ6YmVWYWlidnByOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55VmFpYnZwciddPSRlYmotPmduYXR0bnlWYWlidnByOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZV9veSddPSRlYmotPmFiemJlX295Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55X295J109JGViai0+Z25hdHRueV9veTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2hlbnZuYSddPSRlYmotPmhlbnZuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckZuZ2huYU9uZW5hdCddPSRlYmotPnhicXJGbmdobmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5GbmdobmEnXT0kZWJqLT51bmV0bkZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ2JnbnlBdnludk9uZW5hdCddPSRlYmotPmdiZ255QXZ5bnZPbmVuYXQ7DQoJCQ0KCQkvLz09PT09PXF2em5ndnZhIHFoeWggbG4gaGFnaHggZmh6enJlbGFsbj09PT09PQ0KCQkvKiAkd3p5a3VuZXRuID0gJHd6eWt1bmV0biArICRlYmotPnd6eWt1bmV0bjsNCgkJJHd6eWZuZyA9ICR3enlmbmcgKyAkZWJqLT53enlmbmc7DQoJCSR3enlmbmdfb2JhaGYgPSAkd3p5Zm5nX29iYWhmICsgJGViai0+d3p5Zm5nX29iYWhmOw0KCQkkVW5ldG5GbmcgPSAkVW5ldG5GbmcgKyAkZWJqLT5VbmV0bkZuZzsNCgkJJHF2ZnhiYTEgPSAkcXZmeGJhMSArICRlYmotPnF2ZnhiYTE7DQoJCSRxdmZ4YmEyID0gJHF2ZnhiYTIgKyAkZWJqLT5xdmZ4YmEyOw0KCQkkcWNjID0gJHFjYyArICRlYmotPnFjYzsNCgkJJGNjYSA9ICRjY2EgKyAkZWJqLT5jY2E7DQoJCSR1aGduYXQgPSAkdWhnbmF0ICsgJGViai0+dWhnbmF0OyAqLw0KCQkkdisrOw0KCQl9DQoJCQ0KCQkvKiAkZXJmY2JhcHItPmhmcmVxbmduWyd3enlmbmcnXSA9ICR3enlmbmc7DQoJCSRlcmZjYmFwci0+aGZyZXFuZ25bJ3d6eWZuZ19vYmFoZiddID0gJHd6eWZuZ19vYmFoZjsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsnVW5ldG5GbmcnXSA9ICRVbmV0bkZuZzsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsnd3p5a3VuZXRuJ10gPSAkd3p5a3VuZXRuOw0KCQkkZXJmY2JhcHItPmhmcmVxbmduWydxdmZ4YmExJ10gPSAkcXZmeGJhMTsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsncXZmeGJhMiddID0gJHF2ZnhiYTI7DQoJCSRlcmZjYmFwci0+aGZyZXFuZ25bJ3FjYyddID0gJHFjYzsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsnY2NhJ10gPSAkY2NhOw0KCQkkZXJmY2JhcHItPmhmcmVxbmduWyd1aGduYXQnXSA9ICR1aGduYXQ7DQoJCSRlcmZjYmFwci0+aGZyZXFuZ25bJ2Fuem5fY2VicWhwZyddID0gICdHQkdOWSA6ICc7ICovDQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlcmZjYmFwcik7DQoJfQ0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX3VybnFyZV9rKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJDQoJCSRkZWxfdmFpX3pyZnZhID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCU9SVFZBIEdFTA0KCQkJDQoJCQkgcmtycCgnW2ZjX3FyeXJncl9vcF9iaGdfdXJucXJlXSAgQG9wX2JoZ191cm5xcmVfdnE9JG9wX2JoZ191cm5xcmVfdnEgJykNCgkJCQ0KCQkJUkFRIEdFTA0KCQkJT1JUVkEgUE5HUFUgDQoJCQkJRlJZUlBHIA0KCQkJCScwNicgTkYgZmduZ2hmDQoJCQkJLFJFRUJFX1pSRkZOVFIoKSBORiBxcmZwZXZjZ3ZiYTsNCgkJCQkNCgkJCVJBUSBQTkdQVTsNCgkJCQ0KCQkJIik7DQoJCS8vcXZyKCk7CQ0KCQkkZWYgPSAkZGVsX3ZhaV96cmZ2YS0+ZXJmaHlnX25lZW5sKCk7DQogICAgICAgIC8vaW5lX3FoemMoJGVmKTsNCgkJLy9xdnIoKTsNCgkJc2Jlcm5wdSAoJGVmIG5mICRlYmopew0KCQkJJGVyZmNiYXByID0gbmVlbmwoImZnZiIgPT4gJGVialsnZmduZ2hmJ10sICJxcmZwIiA9PiAkZWJqWydxcmZwZXZjZ3ZiYSddKTsNCgkJfSAgDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgl9DQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25fdXJucXJlKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfb3BfYmhnX3VybnFyZScpOyANCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfb3BfYmhnX3FieGh6cmEnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ19xcmdudnknKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCcpOyANCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfcW5nbl9vbnVuYU9ueGgnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fb25lbmF0R25ldnMnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ194YmFnbnZhcmUnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fd256dmFuYScpOyANCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfcW5nbl9jaGF0aGduYScpOyANCgkJDQoJCSRmZ2YgPSAnMDAnOw0KCQkkemZ0ID0gJ0ZoeGZyZiBRcnlyZ3JxISc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX3FieGh6cmEoKXsNCgkJJGh2cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCgkJJGVieXJfdnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2VieXJfdnEnKTsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xIFU6djpmJyk7DQoJCSRvcF9iaGdfcWJ4aHpyYV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xYnhoenJhX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ19xYnhoenJhX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xYnhoenJhX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfcWJ4aHpyYV92cScsICRvcF9iaGdfcWJ4aHpyYV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfb3BfYmhnX3FieGh6cmEnKTsNCgkJDQoJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldlFieGh6cmEpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3FieGh6cmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldlFieGh6cmEnXSA9ICRmcmV2Ow0KCQkNCgkJJGZnZiA9ICcwMCc7DQoJCSR6ZnQgPSAnRmh4ZnJmIFFyeXJncnEnOw0KCQl2cyAoJGZnZiAhPSAxKXsNCgkJCSRmZ25naGYgPSAnMDYnOw0KCQkJJHpmdCA9ICcgUXJ5cmdycSc7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmLCAncXJmcCcgPT4gJHpmdCkpOwkJDQoJDQoJfSANCgkNCglzaGFwZ3ZiYSBxcnlyZ3JfcW5nbl93bnp2YW5hKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkdnFXbnp2YW5hID0gKHZmZnJnKCRfQ0JGR1sndnFXbnp2YW5hJ10pICYmICFyemNnbCgkX0NCRkdbJ3ZxV256dmFuYSddKSk/JF9DQkZHWyd2cVduenZhbmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7Ow0KCQkNCgkJJGd1dmYtPnFvLT5qdXJlcigndnFXbnp2YW5hJywgJHZxV256dmFuYSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfcW5nbl93bnp2YW5hJyk7IA0KCQkNCgkJJGZnZiA9ICcwMCc7DQoJCSR6ZnQgPSAnRmh4ZnJmIFFyeXJncnEnOw0KCQl2cyAoJGZnZiAhPSAxKXsNCgkJCSRmZ25naGYgPSAnMDYnOw0KCQkJJHpmdCA9ICcgUXJ5cmdycSc7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmLCAncXJmcCcgPT4gJHpmdCkpOwkJDQoJDQoJfSANCgkNCglzaGFwZ3ZiYSBxcnlyZ3JfcW5nbl9jaGF0aGduYSgpew0KCQkkaHZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KCQkkZWJ5cl92cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfZWJ5cl92cScpOw0KCQkkZ3R5ID0gcW5ncignTC16LXEgVTp2OmYnKTsNCgkJJHZxQ2hhdGhnbmEgPSAodmZmcmcoJF9DQkZHWyd2cUNoYXRoZ25hJ10pICYmICFyemNnbCgkX0NCRkdbJ3ZxQ2hhdGhnbmEnXSkpPyRfQ0JGR1sndnFDaGF0aGduYSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCd2cUNoYXRoZ25hJywgJHZxQ2hhdGhnbmEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fY2hhdGhnbmEnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX3hyem5mbmEoKXsNCgkJJGh2cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCgkJJGVieXJfdnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2VieXJfdnEnKTsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xIFU6djpmJyk7DQoJCQ0KCQkkb3BfYmhnX3hyem5mbmFfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfeHJ6bmZuYV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfeHJ6bmZuYV92cSddKSk/JF9DQkZHWydvcF9iaGdfeHJ6bmZuYV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogeHJ6bmZuYSBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ194cnpuZm5hX3ZxJywgJG9wX2JoZ194cnpuZm5hX3ZxKTsJCQ0KCQkkZmdmID0gJGd1dmYtPnFvLT5xcnlyZ3IoJ2dveV9vcF9iaGdfeHJ6bmZuYScpOyANCgkJDQoJCSRmZ2YgPSAnMDAnOw0KCQkkemZ0ID0gJ0ZoeGZyZiBRcnlyZ3JxJzsNCgkJdnMgKCRmZ2YgIT0gMSl7DQoJCQkkZmduZ2hmID0gJzA2JzsNCgkJCSR6ZnQgPSAnIFFyeXJncnEnOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZiwgJ3FyZnAnID0+ICR6ZnQpKTsJCQ0KCQ0KCX0gDQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25feGJhZ252YXJlKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkNCgkJJG9wX2JoZ194YmFnbnZhcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfeGJhZ252YXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ194YmFnbnZhcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3hiYWdudmFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfeGJhZ252YXJlX3ZxJywgJG9wX2JoZ194YmFnbnZhcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ194YmFnbnZhcmUnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX2duZXZzKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkNCgkJJG9uZW5hdEduZXZzX3ZxID0gKHZmZnJnKCRfQ0JGR1snb25lbmF0R25ldnNfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb25lbmF0R25ldnNfdnEnXSkpPyRfQ0JGR1snb25lbmF0R25ldnNfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7Ow0KCQkNCgkJJGd1dmYtPnFvLT5qdXJlcignb25lbmF0R25ldnNfdnEnLCAkb25lbmF0R25ldnNfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fb25lbmF0R25ldnMnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX25mbnlfb251bmFvbnhoKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hLCBPaG5nIENCIHFudWh5aCJ9Jyk7DQoJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvbnVuYU9ueGhfdnEgPSAodmZmcmcoJF9DQkZHWydvbnVuYU9ueGhfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb251bmFPbnhoX3ZxJ10pKT8kX0NCRkdbJ29udW5hT254aF92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRkZWxfcXJ5X29uZW5hdF9uZm55ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCU9SVFZBIEdFTA0KCQkJDQoJCQkgcmtycCgnW2ZjX3FyeXJncl9vcF9iaGdfcXJnbnZ5X29vTmZueV0gIEBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxLCBAb3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cSwgQG9udW5hT254aF92cT0kb251bmFPbnhoX3ZxJykNCgkJCQ0KCQkJUkFRIEdFTA0KCQkJT1JUVkEgUE5HUFUgDQoJCQkJRlJZUlBHIA0KCQkJCScwNicgTkYgZmduZ2hmDQoJCQkJLFJFRUJFX1pSRkZOVFIoKSBORiBxcmZwZXZjZ3ZiYTsNCgkJCQkNCgkJCVJBUSBQTkdQVTsNCgkJCQ0KCQkJIik7DQoJCS8vcXZyKCk7CQ0KCQkkZWYgPSAkZGVsX3FyeV9vbmVuYXRfbmZueS0+ZXJmaHlnX25lZW5sKCk7DQogICAgICAgIC8vaW5lX3FoemMoJGVmKTsNCgkJLy9xdnIoKTsNCgkJc2Jlcm5wdSAoJGVmIG5mICRlYmopew0KCQkJJGVyZmNiYXByID0gbmVlbmwoImZnZiIgPT4gJGVialsnZmduZ2hmJ10sICJxcmZwIiA9PiAkZWJqWydxcmZwZXZjZ3ZiYSddKTsNCgkJfSAgDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgl9DQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25fb25lbmF0KCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEsIE9obmcgQ0IgcW51aHloIn0nKTsNCgkJJG9wX2JoZ19xcmdudnlfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRkZWxfcXJ5X29uZW5hdCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJDQoJCQlPUlRWQSBHRUwNCgkJCQ0KCQkJIHJrcnAoJ1tmY19xcnlyZ3Jfb3BfYmhnX3FyZ252eV0gIEBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxLCBAb3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cScpDQoJCQkNCgkJCVJBUSBHRUwNCgkJCU9SVFZBIFBOR1BVIA0KCQkJCUZSWVJQRyANCgkJCQknMDYnIE5GIGZnbmdoZg0KCQkJCSxSRUVCRV9aUkZGTlRSKCkgTkYgcXJmcGV2Y2d2YmE7DQoJCQkJDQoJCQlSQVEgUE5HUFU7DQoJCQkNCgkJCSIpOw0KCQkvL3F2cigpOwkNCgkJJGVmID0gJGRlbF9xcnlfb25lbmF0LT5lcmZoeWdfbmVlbmwoKTsNCiAgICAgICAgLy9pbmVfcWh6YygkZWYpOw0KCQkvL3F2cigpOw0KCQlzYmVybnB1ICgkZWYgbmYgJGViail7DQoJCQkkZXJmY2JhcHIgPSBuZWVubCgiZmdmIiA9PiAkZWJqWydmZ25naGYnXSwgInFyZnAiID0+ICRlYmpbJ3FyZnBldmNndmJhJ10pOw0KCQl9ICANCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCX0JDQoJDQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25fb25lbmF0RnZuYygpew0KCQkkaHZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KCQkkZWJ5cl92cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfZWJ5cl92cScpOw0KCQkkZ3R5ID0gcW5ncignTC16LXEgVTp2OmYnKTsNCgkJDQoJCSRvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnLCAkb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxKTsJCQ0KCQkkZmdmID0gJGd1dmYtPnFvLT5xcnlyZ3IoJ2dveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIGNldmFnX2VyY2JlZ19xYnBfYmhnKCl7DQoJCXZhdl9mcmcoJ3pyemJlbF95dnp2ZycsICctMScpOw0KCQlmcmZmdmJhX2ZnbmVnKCk7DQoJCSRndmNyID0gKHZmZnJnKCRfVFJHWydndmNyJ10pICYmICFyemNnbCgkX1RSR1snZ3ZjciddKSk/JF9UUkdbJ2d2Y3InXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2Y3IgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHhicXJRYnhoenJhID0gKHZmZnJnKCRfVFJHWyd4YnFyUWJ4aHpyYSddKSAmJiAhcnpjZ2woJF9UUkdbJ3hicXJRYnhoenJhJ10pKT8kX1RSR1sneGJxclFieGh6cmEnXToiIjsNCgkJJGZnbmVncW5nciA9ICh2ZmZyZygkX1RSR1snZmduZWdxbmdyJ10pICYmICFyemNnbCgkX1RSR1snZmduZWdxbmdyJ10pKT8kX1RSR1snZmduZWdxbmdyJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBDcmV2YnFyIE5qbnkgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHJhcXFuZ3IgPSAodmZmcmcoJF9UUkdbJ3JhcXFuZ3InXSkgJiYgIXJ6Y2dsKCRfVFJHWydyYXFxbmdyJ10pKT8kX1RSR1sncmFxcW5nciddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogQ3JldmJxciBOeHV2ZSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgIjsNCgkJJGp1cmVyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdqdXJlcicpOw0KCQkvL3JwdWIgJGp1cmVyOw0KCQkvL3F2cigpOw0KCQkNCgkJJGd1dmYtPnlibnEtPnl2b2VuZWwoJ0NVQ1JrcHJ5Jyk7DQoJCSRya3ByeSA9IGFyaiBDVUNSa3ByeSgpOwkNCgkJJHJrcHJ5ID0gQ1VDUmtwcnlfVkJTbnBnYmVsOjp5Ym5xKCJya3ByeS9FUlhOQ19RQlhIWlJBX1hSWUhORS5reWYiKTsJDQoJCQ0KCQkkZmdseXJvYmVxcmUgPSBuZWVubCgNCgkJICdvYmVxcmVmJyA9PiBuZWVubCgNCgkJCQkvKiAnZ2JjJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJJ29iZ2dieicgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLA0KCQkJCQ0KCQkJCS8qICd5cnNnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksDQoJCQkJJ2V2dHVnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJDQoJCQkpDQoJCQ0KCQkpOw0KCQkNCgkJJGZnbHlyb2JlcXJleXJzZyA9IG5lZW5sKA0KCQkgJ29iZXFyZWYnID0+IG5lZW5sKA0KCQkJCS8qICdnYmMnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQkvKiAnb2JnZ2J6JyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJDQoJCQkJICd5cnNnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksLyoNCgkJCQknZXZ0dWcnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQkNCgkJCSkNCgkJDQoJCSk7DQoJCQ0KCQkNCgkJJGZnbHlyb2JlcXJlZ2JjID0gbmVlbmwoDQoJCSAnb2JlcXJlZicgPT4gbmVlbmwoDQoJCQkJLyogJ2diYycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCSdnYmMnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCQkNCgkJCQkvKiAneXJzZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLA0KCQkJCSdldnR1ZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCQ0KCQkJKQ0KCQkNCgkJKTsNCgkJDQoJCSRzdnl5ID0gbmVlbmwoDQogICAgICAgICdzdnl5JyA9PiBuZWVubCgNCiAgICAgICAgICAgICdnbGNyJyA9PiBDVUNSa3ByeV9GZ2x5cl9Tdnl5OjpTVllZX0ZCWVZRLA0KICAgICAgICAgICAgJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnI3E1c3M4MCcpDQoJCQkpDQoJCSk7DQoJCQ0KCQkkZmdseXJOZWVubCA9IG5lZW5sKA0KCQkJJ3NiYWcnICA9PiBuZWVubCgNCgkJCQknb2J5cScgID0+IGdlaHIsDQoJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCdldG8nID0+ICcyNDkwMDcnKSwNCgkJCQkvLydmdm1yJyAgPT4gOCwNCgkJCQkvLydhbnpyJyAgPT4gJ05ldm55Jw0KCQkJKQkNCgkJKTsNCgkJDQoJCSRmZ2x5ck5lZW5sVmdueXZwID0gbmVlbmwoDQoJCQknc2JhZycgID0+IG5lZW5sKA0KCQkJCSdvYnlxJyAgPT4gZ2VociwNCgkJCQkvLyd2Z255dnAnICA9PiBnZWhyLA0KCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnMjQ5MDA3JyksDQoJCQkJJ2Z2bXInICA9PiA4LA0KCQkJCS8vJ2FuenInICA9PiAnTmV2bnknDQoJCQkpCQ0KCQkpOw0KCQkNCgkJJGZnbHlyVmdueXZwID0gbmVlbmwoDQoJCQknc2JhZycgID0+IG5lZW5sKA0KCQkJCS8vJ3Znbnl2cCcgID0+IGdlaHIsDQoJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCdldG8nID0+ICcyNDkwMDcnKSwNCgkJCQkvLydmdm1yJyAgPT4gOCwNCgkJCQkvLydhbnpyJyAgPT4gJ05ldm55Jw0KCQkJKQkNCgkJKTsNCgkJDQoJCSRmZ2x5cm9iZXFyZW55eSA9IG5lZW5sKA0KCQknb2JlcXJlZicgPT4gbmVlbmwoDQoJCQkJJ255eW9iZXFyZWYnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCSkNCgkJDQoJCSk7DQoJCQ0KCQkNCgkJJGZnbHlyMSA9IG5lZW5sKA0KCQkJJ255dnRhenJhZycgPT4gbmVlbmwoDQoJCQkJJ3ViZXZtYmFnbnknID0+IENVQ1JrcHJ5X0ZnbHlyX055dnRhenJhZzo6VUJFVk1CQUdOWV9QUkFHUkUsDQoJCQkJJ2lyZWd2cG55JyA9PiBDVUNSa3ByeV9GZ2x5cl9OeXZ0YXpyYWc6OklSRUdWUE5ZX1BSQUdSRQ0KCQkJKQ0KCQkpOw0KCQkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygwKS0+ZnJnR3ZneXIoIllOQ0JFTkEgUUJYSFpSQSBDTk9STkEgQkhHIik7IA0KCQkkcmtwcnktPmZyZ05wZ3ZpckZ1cnJnVmFxcmsoMCk7DQoJDQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQlGUllSUEcNCgkJCW9wX2JoZ191cm5xcmVfdnEsDQoJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJb3BfYmhnX3FieGh6cmFfdnEsDQoJCQl4YnFyUWJ4aHpyYSwNCgkJCWFiemJlTndoLA0KCQkJYWJRbnNnbmUsDQoJCQlnbmF0dG55cW5zZ25lLA0KCQkJeGJxclhuYWdiZSwNCgkJCXBoZmdienJlLA0KCQkJbnluem5nX2NyYXRoZm51biwNCgkJCWNyYXRoZm51biwNCgkJCXhicXJPcmFxcmVuLA0KCQkJeGJxclZhcGJncmV6LA0KCQkJeGJxcklueWhnbiwNCgkJCWFxY296LA0KCQkJYWJ6YmVWYWlidnByLA0KCQkJZ25hdHRueVZhaWJ2cHIsDQoJCQlhYnpiZV9veSwNCgkJCWduYXR0bnlfb3ksDQoJCQl4YnFyT25lbmF0LA0KCQkJaGVudm5hLA0KCQkJeGJxckZuZ2huYU9uZW5hdCwNCgkJCXdoenludUZuZ2huYSwNCgkJCXVuZXRuRm5naG5hLA0KCQkJZ2JnbnlBdnludk9uZW5hdCwNCgkJCWdiZ255QXZ5bnZPbmVuYXRFYw0KCQlTRUJaDQoJCXFvYi5pdnJqX2VyY2JlZ19xYnBfYmhnDQoJCWp1cmVyICRqdXJlcg0KCQkiKTsNCg0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICIiOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICIiOw0KCQkkb3BfYmhnX3FieGh6cmFfdnEgPSAiIjsNCgkJJHhicXJRYnhoenJhID0gIiI7DQoJCSRhYnpiZU53aCA9ICIiOw0KCQkkYWJRbnNnbmUgPSAiIjsNCgkJJGduYXR0bnlxbnNnbmUgPSAiIjsNCgkJJHhicXJYbmFnYmUgPSAiIjsNCgkJJHBoZmdienJlID0gIiI7DQoJCSRjcmF0aGZudW4gPSAiIjsNCgkJJG55bnpuZ19jcmF0aGZudW4gPSAiIjsNCgkJJHhicXJPcmFxcmVuID0gIiI7DQoJCSR4YnFyVmFwYmdyZXogPSAiIjsNCgkJJHhicXJJbnloZ24gPSAiIjsNCgkJJGFxY296ID0gMDsNCgkJJGFiemJlVmFpYnZwciA9ICIiOw0KCQkkZ25hdHRueVZhaWJ2cHIgPSAiIjsNCgkJJGFiemJlX295ID0gIiI7DQoJCSRnbmF0dG55X295ID0gIiI7DQoJCSR4YnFyT25lbmF0ID0gIiI7DQoJCSRoZW52bmEgPSAiIjsNCgkJJHhicXJGbmdobmFPbmVuYXQgPSAiIjsNCgkJJHdoenludUZuZ2huYSA9IDA7DQoJCSR1bmV0bkZuZ2huYSA9IDA7DQoJCSRnYmdueUF2eW52T25lbmF0ID0gMDsNCgkJJGdiZ255QXZ5bnZPbmVuYXRFYyA9IDA7DQoNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJJG9wX2JoZ191cm5xcmVfdnE9ICRlLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkJJG9wX2JoZ19xcmdudnlfdnE9ICRlLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJJG9wX2JoZ19xYnhoenJhX3ZxPSAkZS0+b3BfYmhnX3FieGh6cmFfdnE7DQoJCQkkeGJxclFieGh6cmE9ICRlLT54YnFyUWJ4aHpyYTsNCgkJCSRhYnpiZU53aD0gJGUtPmFiemJlTndoOw0KCQkJJGFiUW5zZ25lID0gJGUtPmFiUW5zZ25lOw0KCQkJJGduYXR0bnlxbnNnbmUgPSAkZS0+Z25hdHRueXFuc2duZTsNCgkJCSR4YnFyWG5hZ2JlICA9ICRlLT54YnFyWG5hZ2JlOw0KCQkJJHBoZmdienJlICA9ICRlLT5waGZnYnpyZTsNCgkJCSRjcmF0aGZudW4gID0gJGUtPmNyYXRoZm51bjsNCgkJCSRueW56bmdfY3JhdGhmbnVuICA9ICRlLT5ueW56bmdfY3JhdGhmbnVuOw0KCQkJJHhicXJPcmFxcmVuICA9ICRlLT54YnFyT3JhcXJlbjsNCgkJCSR4YnFyVmFwYmdyZXogID0gJGUtPnhicXJWYXBiZ3JlejsNCgkJCSR4YnFySW55aGduPSAkZS0+eGJxcklueWhnbjsNCgkJCSRhcWNvej0gJGUtPmFxY296Ow0KCQkJJGFiemJlVmFpYnZwcj0gJGUtPmFiemJlVmFpYnZwcjsNCgkJCSRnbmF0dG55VmFpYnZwcj0gJGUtPmduYXR0bnlWYWlidnByOw0KCQkJJGFiemJlX295PSAkZS0+YWJ6YmVfb3k7DQoJCQkkZ25hdHRueV9veT0gJGUtPmduYXR0bnlfb3k7DQoJCQkkeGJxck9uZW5hdD0gJGUtPnhicXJPbmVuYXQ7DQoJCQkkaGVudm5hPSAkZS0+aGVudm5hOw0KCQkJJHhicXJGbmdobmFPbmVuYXQ9ICRlLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJJHdoenludUZuZ2huYT0gJGUtPndoenludUZuZ2huYTsNCgkJCSR1bmV0bkZuZ2huYT0gJGUtPnVuZXRuRm5naG5hOw0KCQkJJGdiZ255QXZ5bnZPbmVuYXQgPSAkZS0+Z2JnbnlBdnludk9uZW5hdDsNCgkJCSRnYmdueUF2eW52T25lbmF0RWMgPSAkZS0+Z2JnbnlBdnludk9uZW5hdEVjOw0KDQoJCX0NCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoJ04xJywgJGNyYXRoZm51biwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCdOMicsICRueW56bmdfY3JhdGhmbnVuLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoJ041JywgIkNSRVZCUVIgOiAiIC4gJGZnbmVncW5nciAuICIgRi9RICIgLiAkcmFxcW5nciAsQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkvLyRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIlI1IiktPnRyZ055dnRhenJhZygpLT5mcmdVYmV2bWJhZ255KENVQ1JrcHJ5X0ZnbHlyX055dnRhenJhZzo6VUJFVk1CQUdOWV9FVlRVRyk7DQoJCS8vJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiTzg6VDgiKS0+bmNjeWxTZWJ6TmVlbmwoJHN2eXkpOw0KCQkNCgkJJHYgPSAxMDsNCgkJJHkgPSAxOw0KCQkkd3p5Zm5nID0gMDsNCgkJJFVuZXRuRm5nID0gMDsNCgkJJHd6eWt1bmV0biA9IDA7DQoJCSRvYmFoZiA9IDA7DQoJCSRxdmZ4YmExID0gMDsNCgkJJHF2ZnhiYTIgPSAwOw0KCQkkcXZmeGJhMiA9IDA7DQoJCSRxdmZ4YmEzID0gMDsNCgkJJGdiZ19xdmZ4YmEgPSAwOw0KCQkkcWNjID0gMDsNCgkJJGRnbCA9IDA7DQoJCSRhcWNveiA9IDA7DQoJCSRnYmdueUF2eW52T25lbmF0ID0gMDsNCgkJJGdiZ255QXZ5bnZPbmVuYXRFYyA9IDA7DQoJCQ0KCQkkayA9JHYgKyAyOw0KCQkNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIk4kdiIsICR5KTsJDQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJPJHYiLCAkZS0+eGJxclFieGh6cmEgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJQJHYiLCAkZS0+YWJ6YmVOd2ggLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJRJHYiLCAkZS0+YWJRbnNnbmUgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJSJHYiLCAkZS0+Z25hdHRueXFuc2duZSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlMkdiIsICRlLT54YnFyWG5hZ2JlICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVCR2IiwgJGUtPnBoZmdienJlICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVSR2IiwgJGUtPnhicXJPcmFxcmVuICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiViR2IiwgJGUtPnhicXJWYXBiZ3JleiAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlckdiIsICRlLT54YnFySW55aGduICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlgkdiIsICRlLT5hcWNveik7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJZJHYiLCAkZS0+YWJ6YmVWYWlidnByICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiWiR2IiwgJGUtPmduYXR0bnlWYWlidnByICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiQSR2IiwgJGUtPmFiemJlX295ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiQiR2IiwgJGUtPmduYXR0bnlfb3kgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJDJHYiLCAkZS0+eGJxck9uZW5hdCAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkQkdiIsICRlLT5oZW52bmEgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJFJHYiLCAkZS0+eGJxckZuZ2huYU9uZW5hdCAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJGJHYiLCAkZS0+d2h6eW51Rm5naG5hKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJHJHYiLCAkZS0+dW5ldG5GbmdobmEpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkgkdiIsICRlLT5nYmdueUF2eW52T25lbmF0KTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJJJHYiLCAkZS0+Z2JnbnlBdnludk9uZW5hdEVjKTsNCgkJCQ0KCQkJLy8kcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPnRyZ0ZnbHlyKCJOJHY6TCR2IiktPm5jY3lsU2Viek5lZW5sKCRmZ2x5cm9iZXFyZSk7DQoNCgkJCSRnYmdueUF2eW52T25lbmF0ID0gJGdiZ255QXZ5bnZPbmVuYXQgKyAkZS0+Z2JnbnlBdnludk9uZW5hdDsNCgkJCSRnYmdueUF2eW52T25lbmF0RWMgPSAkZ2JnbnlBdnludk9uZW5hdEVjICsgJGUtPmdiZ255QXZ5bnZPbmVuYXRFYzsNCgkJCS8qJFVuZXRuRm5nID0gJFVuZXRuRm5nICsgJGUtPlVuZXRuRm5nOw0KCQkJJHd6eWt1bmV0biA9ICR3enlrdW5ldG4gKyAkZS0+d3p5a3VuZXRuOw0KCQkJJHF2ZnhiYTEgPSAkcXZmeGJhMSArICRlLT5xdmZ4YmExOw0KCQkJJHF2ZnhiYTIgPSAkcXZmeGJhMiArICRlLT5xdmZ4YmEyOw0KCQkJJGN2aGduYXQgPSAkY3ZoZ25hdCArICRlLT5jdmhnbmF0Ow0KCQkJJHFjYyA9ICRxY2MgKyAkZS0+cWNjOw0KCQkJJGNjYSA9ICRjY2EgKyAkZS0+Y2NhOyAqLw0KDQoJCQkkdisrOw0KCQkJJHkrKzsNCgkJCSRrKys7DQoJCX0NCg0KCQkkdyA9ICR2ICsxOw0KCQkvKiAkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiVSR3IiwgJHd6eWZuZyk7CQ0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiViR3IiwgJG9iYWhmKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlckdyIsICRVbmV0bkZuZyk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJYJHciLCAkd3p5a3VuZXRuKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlkkdyIsICRxdmZ4YmExKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlokdyIsICRxdmZ4YmEyKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkEkdyIsICRjdmhnbmF0KTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkIkdyIsICRxY2MpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiQyR3IiwgJGNjYSk7ICovDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJIJHciLCAkZ2JnbnlBdnludk9uZW5hdCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJJJHciLCAkZ2JnbnlBdnludk9uZW5hdEVjKTsNCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkckdyIsICJHQkdOWSAgIDoiICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPnRyZ0ZnbHlyKCJHJHciKS0+dHJnTnl2dGF6cmFnKCktPmZyZ1ViZXZtYmFnbnkoQ1VDUmtwcnlfRmdseXJfTnl2dGF6cmFnOjpVQkVWTUJBR05ZX0VWVFVHKTsJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIkckdzpHJHciKS0+bmNjeWxTZWJ6TmVlbmwoJGZnbHlyTmVlbmxWZ255dnApOwkNCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIlgxMDpYMTAwMDAiKS0+dHJnQWh6b3JlU2Jlem5nKCktPmZyZ1NiZXpuZ1BicXIoJyMsIyMwLjAwJyk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIkYxMDpJMTAwMDAiKS0+dHJnQWh6b3JlU2Jlem5nKCktPmZyZ1NiZXpuZ1BicXIoJyMsIyMwLjAwJyk7DQoJCQ0KCQl2cygkZ3ZjciA9PSAnS1lGJyl7IA0KCQkJJHN2eXJhbnpyPSdZTkNCRU5BX1FCWEhaUkFfWFJZSE5FX0NSRVZCUVJfJy4gJGZnbmVncW5nciAgLiAnX0ZRXycgLiAkcmFxcW5nciAgLicua3lmJzsNCgkJCXVybnFyZSgnUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS9pYXEuemYtcmtwcnknKTsgDQoJCQl1cm5xcmUoJ1BiYWdyYWctUXZmY2Jmdmd2YmE6IG5nZ25wdXpyYWc7c3Z5cmFuenI9IicuJHN2eXJhbnpyLiciJyk7IA0KCQkJdXJucXJlKCdQbnB1ci1QYmFnZWJ5OiB6bmstbnRyPTAnKTsNCgkJCSRib3dKZXZncmUgPSBDVUNSa3ByeV9WQlNucGdiZWw6OnBlcm5nckpldmdyZSgkcmtwcnksICdSa3ByeTUnKTsNCgkJCSRib3dKZXZncmUtPmZuaXIoJ2N1YzovL2JoZ2NoZycpOw0KCQkJcmt2ZzsJDQoJCX0gcnlmciB7IA0KCQkJJHN2eXJhbnpyID0gIllOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5reWYiOw0KCQkJJGJvd0pldmdyZSA9IENVQ1JrcHJ5X1ZCU25wZ2JlbDo6cGVybmdySmV2Z3JlKCRya3ByeSwgJ1JrcHJ5NScpOw0KCQkJJGJvd0pldmdyZS0+Zm5pcignUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXCcgLiAkc3Z5cmFuenIpOw0KCQkJDQoJCQkkY2xmcGV2Y2cgPSAnUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXGVyY2JlZ19nZXZueV9vbnluYXByLmNsJzsNCgkJCSRjbGd1YmEgPSAnUDpcXFxDbGd1YmEzMTBcXGNsZ3ViYS5ya3InOw0KCQkJcmtycCgiJGNsZ3ViYSAkY2xmcGV2Y2ciLCAkYmhnY2hnKTsNCgkJCS8vaW5lX3FoemMoJGJoZ2NoZyk7IA0KCQkJDQoJCQkkc3Z5ckNuZ3U9J1A6XFxqbnpjXFxqampcXHJrcHJ5XFxjbmx6cmFnXFxZTkNCRU5BX0NSQVdITllOQV9XUkFWRl9PTkVOQVQuY3FzJzsNCgkJCXZzICghc3Z5cl9ya3ZmZ2YoJHN2eXJDbmd1KSkgew0KCQkJCXJwdWIgIkd1ciBzdnlyICRzdnlyQ25ndSBxYnJmIGFiZyBya3ZmZyI7DQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkkc3Z5cmFuenJrID0gJ1lOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5jcXMnOw0KCQkJdXJucXJlKCdQYmFncmFnLWdsY3I6bmNjeXZwbmd2YmEvY3FzJyk7DQoJCQl1cm5xcmUoJ1BiYWdyYWctcXZmY2Jmdmd2YmE6IHZheXZhcjsgc3Z5cmFuenI9IicuJHN2eXJhbnpyay4nIicpOw0KCQkJdXJucXJlKCdwYmFncmFnLUdlbmFmc3JlLVJhcGJxdmF0Om92YW5lbCcpOw0KCQkJdXJucXJlKCdOcHByY2ctRW5hdHJmOm9sZ3JmJyk7DQoJCQkvL3pyem9ucG4gcW5hIHpyYW56Y3Z5eG5hIHN2eXINCgkJCWVybnFzdnlyKCRzdnlyQ25ndSk7DQoJCQlya3ZnOwkJCQkNCgkJfQ0KCQkNCgl9DQoJDQoJc2hhcGd2YmEgY2V2YWdfZXJjYmVnX3FicF9iaGdfY2N3eCgpew0KCQl2YXZfZnJnKCd6cnpiZWxfeXZ6dmcnLCAnLTEnKTsNCgkJZnJmZnZiYV9mZ25lZygpOw0KCQkkZ3ZjciA9ICh2ZmZyZygkX1RSR1snZ3ZjciddKSAmJiAhcnpjZ2woJF9UUkdbJ2d2Y3InXSkpPyRfVFJHWydndmNyJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdmNyIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyUWJ4aHpyYSA9ICh2ZmZyZygkX1RSR1sneGJxclFieGh6cmEnXSkgJiYgIXJ6Y2dsKCRfVFJHWyd4YnFyUWJ4aHpyYSddKSk/JF9UUkdbJ3hicXJRYnhoenJhJ106IiI7DQoJCSRmZ25lZ3FuZ3IgPSAodmZmcmcoJF9UUkdbJ2ZnbmVncW5nciddKSAmJiAhcnpjZ2woJF9UUkdbJ2ZnbmVncW5nciddKSk/JF9UUkdbJ2ZnbmVncW5nciddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogQ3JldmJxciBOam55IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRyYXFxbmdyID0gKHZmZnJnKCRfVFJHWydyYXFxbmdyJ10pICYmICFyemNnbCgkX1RSR1sncmFxcW5nciddKSk/JF9UUkdbJ3JhcXFuZ3InXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IENyZXZicXIgTnh1dmUgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICI7DQoJCSRqdXJlciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignanVyZXInKTsNCgkJLy9ycHViICRqdXJlcjsNCgkJLy9xdnIoKTsNCgkJDQoJCSRndXZmLT55Ym5xLT55dm9lbmVsKCdDVUNSa3ByeScpOw0KCQkkcmtwcnkgPSBhcmogQ1VDUmtwcnkoKTsJDQoJCSRya3ByeSA9IENVQ1JrcHJ5X1ZCU25wZ2JlbDo6eWJucSgicmtwcnkvRVJYTkNfUUJYSFpSQV9SS0NCRUcua3lmIik7CQ0KCQkNCgkJJGZnbHlyb2JlcXJlID0gbmVlbmwoDQoJCSAnb2JlcXJlZicgPT4gbmVlbmwoDQoJCQkJLyogJ2diYycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCSdvYmdnYnonID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCQkNCgkJCQkvKiAneXJzZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLA0KCQkJCSdldnR1ZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCQ0KCQkJKQ0KCQkNCgkJKTsNCgkJDQoJCSRmZ2x5cm9iZXFyZXlyc2cgPSBuZWVubCgNCgkJICdvYmVxcmVmJyA9PiBuZWVubCgNCgkJCQkvKiAnZ2JjJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJLyogJ29iZ2dieicgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCQ0KCQkJCSAneXJzZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLC8qDQoJCQkJJ2V2dHVnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJDQoJCQkpDQoJCQ0KCQkpOw0KCQkNCgkJDQoJCSRmZ2x5cm9iZXFyZWdiYyA9IG5lZW5sKA0KCQkgJ29iZXFyZWYnID0+IG5lZW5sKA0KCQkJCS8qICdnYmMnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQknZ2JjJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksDQoJCQkJDQoJCQkJLyogJ3lyc2cnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCQknZXZ0dWcnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQkNCgkJCSkNCgkJDQoJCSk7DQoJCQ0KCQkkc3Z5eSA9IG5lZW5sKA0KICAgICAgICAnc3Z5eScgPT4gbmVlbmwoDQogICAgICAgICAgICAnZ2xjcicgPT4gQ1VDUmtwcnlfRmdseXJfU3Z5eTo6U1ZZWV9GQllWUSwNCiAgICAgICAgICAgICdwYnliZScgPT4gbmVlbmwoJ2V0bycgPT4gJyNxNXNzODAnKQ0KCQkJKQ0KCQkpOw0KCQkNCgkJJGZnbHlyTmVlbmwgPSBuZWVubCgNCgkJCSdzYmFnJyAgPT4gbmVlbmwoDQoJCQkJJ29ieXEnICA9PiBnZWhyLA0KCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnMjQ5MDA3JyksDQoJCQkJLy8nZnZtcicgID0+IDgsDQoJCQkJLy8nYW56cicgID0+ICdOZXZueScNCgkJCSkJDQoJCSk7DQoJCQ0KCQkkZmdseXJOZWVubFZnbnl2cCA9IG5lZW5sKA0KCQkJJ3NiYWcnICA9PiBuZWVubCgNCgkJCQknb2J5cScgID0+IGdlaHIsDQoJCQkJLy8ndmdueXZwJyAgPT4gZ2VociwNCgkJCQkvLydwYnliZScgPT4gbmVlbmwoJ2V0bycgPT4gJzI0OTAwNycpLA0KCQkJCSdmdm1yJyAgPT4gOCwNCgkJCQkvLydhbnpyJyAgPT4gJ05ldm55Jw0KCQkJKQkNCgkJKTsNCgkJDQoJCSRmZ2x5clZnbnl2cCA9IG5lZW5sKA0KCQkJJ3NiYWcnICA9PiBuZWVubCgNCgkJCQkvLyd2Z255dnAnICA9PiBnZWhyLA0KCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnMjQ5MDA3JyksDQoJCQkJLy8nZnZtcicgID0+IDgsDQoJCQkJLy8nYW56cicgID0+ICdOZXZueScNCgkJCSkJDQoJCSk7DQoJCQ0KCQkkZmdseXJvYmVxcmVueXkgPSBuZWVubCgNCgkJJ29iZXFyZWYnID0+IG5lZW5sKA0KCQkJCSdueXlvYmVxcmVmJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksDQoJCQkpDQoJCQ0KCQkpOw0KCQkNCgkJDQoJCSRmZ2x5cjEgPSBuZWVubCgNCgkJCSdueXZ0YXpyYWcnID0+IG5lZW5sKA0KCQkJCSd1YmV2bWJhZ255JyA9PiBDVUNSa3ByeV9GZ2x5cl9OeXZ0YXpyYWc6OlVCRVZNQkFHTllfUFJBR1JFLA0KCQkJCSdpcmVndnBueScgPT4gQ1VDUmtwcnlfRmdseXJfTnl2dGF6cmFnOjpJUkVHVlBOWV9QUkFHUkUNCgkJCSkNCgkJKTsNCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoMCktPmZyZ0d2Z3lyKCJFUlhOQyBRQlhIWlJBIFJLQ0JFRyIpOyANCgkJJHJrcHJ5LT5mcmdOcGd2aXJGdXJyZ1ZhcXJrKDApOw0KCQ0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJRlJZUlBHDQoJCQlvcF9iaGdfdXJucXJlX3ZxLA0KCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCW9wX2JoZ19xYnhoenJhX3ZxLA0KCQkJeGJxclFieGh6cmEsDQoJCQlhYnpiZU53aCwNCgkJCWFiUW5zZ25lLA0KCQkJZ25hdHRueXFuc2duZSwNCgkJCXhicXJYbmFnYmUsDQoJCQlwaGZnYnpyZSwNCgkJCW55bnpuZ19jcmF0aGZudW4sDQoJCQljcmF0aGZudW4sDQoJCQl4YnFyT3JhcXJlbiwNCgkJCXhicXJWYXBiZ3JleiwNCgkJCXhicXJJbnloZ24sDQoJCQlhcWNveiwNCgkJCWFiemJlVmFpYnZwciwNCgkJCWduYXR0bnlWYWlidnByLA0KCQkJYWJ6YmVfb3ksDQoJCQlnbmF0dG55X295LA0KCQkJeGJxck9uZW5hdCwNCgkJCWhlbnZuYSwNCgkJCXhicXJGbmdobmFPbmVuYXQsDQoJCQl3aHp5bnVGbmdobmEsDQoJCQl1bmV0bkZuZ2huYSwNCgkJCWdiZ255QXZ5bnZPbmVuYXQsDQoJCQlnYmdueUF2eW52T25lbmF0RWMNCgkJU0VCWg0KCQlxb2IuaXZyal9lcmNiZWdfcWJwX2JoZw0KCQlqdXJlciAkanVyZXINCgkJIik7DQoNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAiIjsNCgkJJG9wX2JoZ19xcmdudnlfdnEgPSAiIjsNCgkJJG9wX2JoZ19xYnhoenJhX3ZxID0gIiI7DQoJCSR4YnFyUWJ4aHpyYSA9ICIiOw0KCQkkYWJ6YmVOd2ggPSAiIjsNCgkJJGFiUW5zZ25lID0gIiI7DQoJCSRnbmF0dG55cW5zZ25lID0gIiI7DQoJCSR4YnFyWG5hZ2JlID0gIiI7DQoJCSRwaGZnYnpyZSA9ICIiOw0KCQkkY3JhdGhmbnVuID0gIiI7DQoJCSRueW56bmdfY3JhdGhmbnVuID0gIiI7DQoJCSR4YnFyT3JhcXJlbiA9ICIiOw0KCQkkeGJxclZhcGJncmV6ID0gIiI7DQoJCSR4YnFySW55aGduID0gIiI7DQoJCSRhcWNveiA9IDA7DQoJCSRhYnpiZVZhaWJ2cHIgPSAiIjsNCgkJJGduYXR0bnlWYWlidnByID0gIiI7DQoJCSRhYnpiZV9veSA9ICIiOw0KCQkkZ25hdHRueV9veSA9ICIiOw0KCQkkeGJxck9uZW5hdCA9ICIiOw0KCQkkaGVudm5hID0gIiI7DQoJCSR4YnFyRm5naG5hT25lbmF0ID0gIiI7DQoJCSR3aHp5bnVGbmdobmEgPSAwOw0KCQkkdW5ldG5GbmdobmEgPSAwOw0KCQkkZ2JnbnlBdnludk9uZW5hdCA9IDA7DQoJCSRnYmdueUF2eW52T25lbmF0RWMgPSAwOw0KDQoJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCSRvcF9iaGdfdXJucXJlX3ZxPSAkZS0+b3BfYmhnX3VybnFyZV92cTsNCgkJCSRvcF9iaGdfcXJnbnZ5X3ZxPSAkZS0+b3BfYmhnX3FyZ252eV92cTsNCgkJCSRvcF9iaGdfcWJ4aHpyYV92cT0gJGUtPm9wX2JoZ19xYnhoenJhX3ZxOw0KCQkJJHhicXJRYnhoenJhPSAkZS0+eGJxclFieGh6cmE7DQoJCQkkYWJ6YmVOd2g9ICRlLT5hYnpiZU53aDsNCgkJCSRhYlFuc2duZSA9ICRlLT5hYlFuc2duZTsNCgkJCSRnbmF0dG55cW5zZ25lID0gJGUtPmduYXR0bnlxbnNnbmU7DQoJCQkkeGJxclhuYWdiZSAgPSAkZS0+eGJxclhuYWdiZTsNCgkJCSRwaGZnYnpyZSAgPSAkZS0+cGhmZ2J6cmU7DQoJCQkkY3JhdGhmbnVuICA9ICRlLT5jcmF0aGZudW47DQoJCQkkbnluem5nX2NyYXRoZm51biAgPSAkZS0+bnluem5nX2NyYXRoZm51bjsNCgkJCSR4YnFyT3JhcXJlbiAgPSAkZS0+eGJxck9yYXFyZW47DQoJCQkkeGJxclZhcGJncmV6ICA9ICRlLT54YnFyVmFwYmdyZXo7DQoJCQkkeGJxcklueWhnbj0gJGUtPnhicXJJbnloZ247DQoJCQkkYXFjb3o9ICRlLT5hcWNvejsNCgkJCSRhYnpiZVZhaWJ2cHI9ICRlLT5hYnpiZVZhaWJ2cHI7DQoJCQkkZ25hdHRueVZhaWJ2cHI9ICRlLT5nbmF0dG55VmFpYnZwcjsNCgkJCSRhYnpiZV9veT0gJGUtPmFiemJlX295Ow0KCQkJJGduYXR0bnlfb3k9ICRlLT5nbmF0dG55X295Ow0KCQkJJHhicXJPbmVuYXQ9ICRlLT54YnFyT25lbmF0Ow0KCQkJJGhlbnZuYT0gJGUtPmhlbnZuYTsNCgkJCSR4YnFyRm5naG5hT25lbmF0PSAkZS0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCSR3aHp5bnVGbmdobmE9ICRlLT53aHp5bnVGbmdobmE7DQoJCQkkdW5ldG5GbmdobmE9ICRlLT51bmV0bkZuZ2huYTsNCgkJCSRnYmdueUF2eW52T25lbmF0ID0gJGUtPmdiZ255QXZ5bnZPbmVuYXQ7DQoJCQkkZ2JnbnlBdnludk9uZW5hdEVjID0gJGUtPmdiZ255QXZ5bnZPbmVuYXRFYzsNCg0KCQl9DQoJCQ0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCdOMScsICJDRyBRSEdOIE5FR1VOIEZSWU5FTkYiLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoJ04yJywgZmdlZ2JoY2NyZSgiV3kuIE9uZ2hhaGF0dG55IFZhcW51IFZWIEFiLjQ4LCBFSi5FUS0yOSwgWnJhdHRyZSwgWHJwLiBPbmFxaGF0IFh2cWh5IiksIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygnTjUnLCAiQ1JFVkJRUiA6ICIgLiAkZmduZWdxbmdyIC4gIiBGL1EgIiAuICRyYXFxbmdyICxDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCS8vJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiUjUiKS0+dHJnTnl2dGF6cmFnKCktPmZyZ1ViZXZtYmFnbnkoQ1VDUmtwcnlfRmdseXJfTnl2dGF6cmFnOjpVQkVWTUJBR05ZX0VWVFVHKTsNCgkJLy8kcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPnRyZ0ZnbHlyKCJPODpUOCIpLT5uY2N5bFNlYnpOZWVubCgkc3Z5eSk7DQoJCQ0KCQkkdiA9IDEwOw0KCQkkeSA9IDE7DQoJCSR3enlmbmcgPSAwOw0KCQkkVW5ldG5GbmcgPSAwOw0KCQkkd3p5a3VuZXRuID0gMDsNCgkJJG9iYWhmID0gMDsNCgkJJHF2ZnhiYTEgPSAwOw0KCQkkcXZmeGJhMiA9IDA7DQoJCSRxdmZ4YmEyID0gMDsNCgkJJHF2ZnhiYTMgPSAwOw0KCQkkZ2JnX3F2ZnhiYSA9IDA7DQoJCSRxY2MgPSAwOw0KCQkkZGdsID0gMDsNCgkJJGFxY296ID0gMDsNCgkJJGdiZ255QXZ5bnZPbmVuYXQgPSAwOw0KCQkkZ2JnbnlBdnludk9uZW5hdEVjID0gMDsNCgkJDQoJCSRrID0kdiArIDI7DQoJCQ0KCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiTiR2IiwgJHkpOwkNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIk8kdiIsICRlLT54YnFyUWJ4aHpyYSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlAkdiIsICRlLT5hYnpiZU53aCAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlEkdiIsICRlLT5hYlFuc2duZSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlIkdiIsICRlLT5nbmF0dG55cW5zZ25lICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiUyR2IiwgJGUtPnhicXJYbmFnYmUgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJUJHYiLCAkZS0+Y3JhdGhmbnVuICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVSR2IiwgJGUtPm55bnpuZ19jcmF0aGZudW4gLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJWJHYiLCAkZS0+eGJxclZhcGJncmV6ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVyR2IiwgJGUtPnhicXJJbnloZ24gLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiWCR2IiwgJGUtPmFxY296KTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlkkdiIsICRlLT5hYnpiZVZhaWJ2cHIgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJaJHYiLCAkZS0+Z25hdHRueVZhaWJ2cHIgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJBJHYiLCAkZS0+YWJ6YmVfb3kgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJCJHYiLCAkZS0+Z25hdHRueV9veSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkMkdiIsICRlLT54YnFyT25lbmF0ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiRCR2IiwgJGUtPmhlbnZuYSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkUkdiIsICRlLT54YnFyRm5naG5hT25lbmF0ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkYkdiIsICRlLT53aHp5bnVGbmdobmEpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkckdiIsICRlLT51bmV0bkZuZ2huYSk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiSCR2IiwgJGUtPmdiZ255QXZ5bnZPbmVuYXQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkkkdiIsICRlLT5nYmdueUF2eW52T25lbmF0RWMpOw0KCQkJDQoJCQkvLyRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIk4kdjpMJHYiKS0+bmNjeWxTZWJ6TmVlbmwoJGZnbHlyb2JlcXJlKTsNCg0KCQkJJGdiZ255QXZ5bnZPbmVuYXQgPSAkZ2JnbnlBdnludk9uZW5hdCArICRlLT5nYmdueUF2eW52T25lbmF0Ow0KCQkJJGdiZ255QXZ5bnZPbmVuYXRFYyA9ICRnYmdueUF2eW52T25lbmF0RWMgKyAkZS0+Z2JnbnlBdnludk9uZW5hdEVjOw0KCQkJLyokVW5ldG5GbmcgPSAkVW5ldG5GbmcgKyAkZS0+VW5ldG5Gbmc7DQoJCQkkd3p5a3VuZXRuID0gJHd6eWt1bmV0biArICRlLT53enlrdW5ldG47DQoJCQkkcXZmeGJhMSA9ICRxdmZ4YmExICsgJGUtPnF2ZnhiYTE7DQoJCQkkcXZmeGJhMiA9ICRxdmZ4YmEyICsgJGUtPnF2ZnhiYTI7DQoJCQkkY3ZoZ25hdCA9ICRjdmhnbmF0ICsgJGUtPmN2aGduYXQ7DQoJCQkkcWNjID0gJHFjYyArICRlLT5xY2M7DQoJCQkkY2NhID0gJGNjYSArICRlLT5jY2E7ICovDQoNCgkJCSR2Kys7DQoJCQkkeSsrOw0KCQkJJGsrKzsNCgkJfQ0KDQoJCSR3ID0gJHYgKzE7DQoJCS8qICRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJVJHciLCAkd3p5Zm5nKTsJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJWJHciLCAkb2JhaGYpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiVyR3IiwgJFVuZXRuRm5nKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlgkdyIsICR3enlrdW5ldG4pOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiWSR3IiwgJHF2ZnhiYTEpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiWiR3IiwgJHF2ZnhiYTIpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiQSR3IiwgJGN2aGduYXQpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiQiR3IiwgJHFjYyk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJDJHciLCAkY2NhKTsgKi8NCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkgkdyIsICRnYmdueUF2eW52T25lbmF0KTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkkkdyIsICRnYmdueUF2eW52T25lbmF0RWMpOw0KCQkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiRyR3IiwgIkdCR05ZICAgOiIgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIkckdyIpLT50cmdOeXZ0YXpyYWcoKS0+ZnJnVWJldm1iYWdueShDVUNSa3ByeV9GZ2x5cl9OeXZ0YXpyYWc6OlVCRVZNQkFHTllfRVZUVUcpOwkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiRyR3OkckdyIpLT5uY2N5bFNlYnpOZWVubCgkZmdseXJOZWVubFZnbnl2cCk7CQ0KCQkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiWDEwOlgxMDAwMCIpLT50cmdBaHpvcmVTYmV6bmcoKS0+ZnJnU2Jlem5nUGJxcignIywjIzAuMDAnKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiRjEwOkkxMDAwMCIpLT50cmdBaHpvcmVTYmV6bmcoKS0+ZnJnU2Jlem5nUGJxcignIywjIzAuMDAnKTsNCgkJDQoJCXZzKCRndmNyID09ICdLWUYnKXsgDQoJCQkkc3Z5cmFuenI9J0VSWE5DX1FCWEhaUkFfUktDQkVHX0NSRVZCUVJfJy4gJGZnbmVncW5nciAgLiAnX0ZRXycgLiAkcmFxcW5nciAgLicua3lmJzsNCgkJCXVybnFyZSgnUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS9pYXEuemYtcmtwcnknKTsgDQoJCQl1cm5xcmUoJ1BiYWdyYWctUXZmY2Jmdmd2YmE6IG5nZ25wdXpyYWc7c3Z5cmFuenI9IicuJHN2eXJhbnpyLiciJyk7IA0KCQkJdXJucXJlKCdQbnB1ci1QYmFnZWJ5OiB6bmstbnRyPTAnKTsNCgkJCSRib3dKZXZncmUgPSBDVUNSa3ByeV9WQlNucGdiZWw6OnBlcm5nckpldmdyZSgkcmtwcnksICdSa3ByeTUnKTsNCgkJCSRib3dKZXZncmUtPmZuaXIoJ2N1YzovL2JoZ2NoZycpOw0KCQkJcmt2ZzsJDQoJCX0gcnlmciB7IA0KCQkJJHN2eXJhbnpyID0gIllOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5reWYiOw0KCQkJJGJvd0pldmdyZSA9IENVQ1JrcHJ5X1ZCU25wZ2JlbDo6cGVybmdySmV2Z3JlKCRya3ByeSwgJ1JrcHJ5NScpOw0KCQkJJGJvd0pldmdyZS0+Zm5pcignUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXCcgLiAkc3Z5cmFuenIpOw0KCQkJDQoJCQkkY2xmcGV2Y2cgPSAnUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXGVyY2JlZ19nZXZueV9vbnluYXByLmNsJzsNCgkJCSRjbGd1YmEgPSAnUDpcXFxDbGd1YmEzMTBcXGNsZ3ViYS5ya3InOw0KCQkJcmtycCgiJGNsZ3ViYSAkY2xmcGV2Y2ciLCAkYmhnY2hnKTsNCgkJCS8vaW5lX3FoemMoJGJoZ2NoZyk7IA0KCQkJDQoJCQkkc3Z5ckNuZ3U9J1A6XFxqbnpjXFxqampcXHJrcHJ5XFxjbmx6cmFnXFxZTkNCRU5BX0NSQVdITllOQV9XUkFWRl9PTkVOQVQuY3FzJzsNCgkJCXZzICghc3Z5cl9ya3ZmZ2YoJHN2eXJDbmd1KSkgew0KCQkJCXJwdWIgIkd1ciBzdnlyICRzdnlyQ25ndSBxYnJmIGFiZyBya3ZmZyI7DQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkkc3Z5cmFuenJrID0gJ1lOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5jcXMnOw0KCQkJdXJucXJlKCdQYmFncmFnLWdsY3I6bmNjeXZwbmd2YmEvY3FzJyk7DQoJCQl1cm5xcmUoJ1BiYWdyYWctcXZmY2Jmdmd2YmE6IHZheXZhcjsgc3Z5cmFuenI9IicuJHN2eXJhbnpyay4nIicpOw0KCQkJdXJucXJlKCdwYmFncmFnLUdlbmFmc3JlLVJhcGJxdmF0Om92YW5lbCcpOw0KCQkJdXJucXJlKCdOcHByY2ctRW5hdHJmOm9sZ3JmJyk7DQoJCQkvL3pyem9ucG4gcW5hIHpyYW56Y3Z5eG5hIHN2eXINCgkJCWVybnFzdnlyKCRzdnlyQ25ndSk7DQoJCQlya3ZnOwkJCQkNCgkJfQ0KCQkNCgl9DQoJDQoJc2hhcGd2YmEgdHJnX3hoZWZfaygpew0KCQkvLyRWUV9VUk5RUkUgPSAodmZmcmcoJF9DQkZHWydlVlEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snZVZRJ10pKT8kX0NCRkdbJ2VWUSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRYQlFSX0lOWUhHTiA9ICh2ZmZyZygkX0NCRkdbJ3hicXJJbnloZ24nXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxcklueWhnbiddKSk/JF9DQkZHWyd4YnFySW55aGduJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDdnl2dSBHcmV5cm92dSBRbnVoeWggUW5nbiBPbmVuYXQhIn0nKTsNCgkJJEdOQVRUTllfTldIID0gKHZmZnJnKCRfQ0JGR1snZ25hdHRueU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydnbmF0dG55TndoJ10pKT8kX0NCRkdbJ2duYXR0bnlOd2gnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGd0eSBndnFueCBxdmdyemh4bmEhIn0nKTsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiICANCgkJCWZyeXJwZyBbcW9iXS5bc194aGVmXSgnJFhCUVJfSU5ZSEdOJywnJEdOQVRUTllfTldIJykgIG5mIGFxY296IA0KCQkNCgkJIik7DQoJCSRhcWNveiA9ICcwJzsNCgkJc2Jlcm5wdSAoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCSRhcWNveiA9ICRlLT5hcWNvejsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRYQlFSX0lOWUhHTiwnenJmZm50cic9PiRhcWNveiwncW5nbkZnbmdoZic9PiRHTkFUVE5ZX05XSCAgKSk7DQoJfQ0KCQ0KCXNoYXBndmJhIHRyZ194aGVmKCl7CQ0KCQkkZ3V2Zi0+eWJ0dmFfcHJ2Zm5fYXJqKCk7DQoJCSRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KDQoJCSRYQlFSX0lOWUhHTiA9ICh2ZmZyZygkX0NCRkdbJ3hicXJJbnloZ24nXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxcklueWhnbiddKSk/JF9DQkZHWyd4YnFySW55aGduJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDdnl2dSBHcmV5cm92dSBRbnVoeWggUW5nbiBPbmVuYXQhIn0nKTsNCgkJJEdOQVRUTllfTldIID0gKHZmZnJnKCRfQ0JGR1snZ25hdHRueU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydnbmF0dG55TndoJ10pKT8kX0NCRkdbJ2duYXR0bnlOd2gnXToiIjsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xJyk7DQoNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi94aGVmLyRYQlFSX0lOWUhHTiI7DQoJCQ0KCQkvLyBycHViKCRYQlFSX0lOWUhHTik7DQoJCS8vIHF2cigpOw0KDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19IRVksICRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19FUkdIRUFHRU5BRlNSRSwgZ2Vocik7DQoNCgkJJHVybnFyZWYgPSBuZWVubCgNCgkJICAgIk5oZ3ViZXZtbmd2YmE6IE9ybmVyZSAkZ2J4cmEiLA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIg0KCQkpOw0KCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfVUdHQ1VSTlFSRSwgJHVybnFyZWYpOw0KCQkvL3NiZSBxcm9odCBiYXlsIQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMQ1JSRSwgc255ZnIpOw0KDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJcGhleV9weWJmcigkcGhleSk7DQoJCQ0KCQkkZXJmaHlnID0gd2ZiYV9xcnBicXIoJGVyZmMsZ2Vocik7DQoJCQ0KCQkvLyBjZXZhZ19lKCRlcmZoeWcpOw0KCQkNCgkJJGZnbmdoZiA9ICJTbnZ5cnEiOw0KCQkkeGhlZiA9IDA7DQoJCQ0KCQl2cyh2ZmZyZygkZXJmaHlnWyd6cmZmbnRyJ10pKXsNCgkJCSRmZ25naGYgPSAkZXJmaHlnWyd6cmZmbnRyJ107DQoJCQ0KCQkJdnModmZmcmcoJGVyZmh5Z1sncW5nbiddKSl7DQoJCQkJJHhoZWYgPSAkZXJmaHlnWydxbmduJ11bMF1bJ2F2eW52WGhlZiddOw0KCQkJfQ0KCQkNCgkJfQ0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4kWEJRUl9JTllIR04sJ3pyZmZudHInPT4keGhlZiwncW5nbkZnbmdoZic9PiRHTkFUVE5ZX05XSCAgKSk7DQoJfSANCg0KCXNoYXBndmJhIHlidHZhX3BydmZuX2Fyaigpew0KCQkvL2ZyZmZ2YmFfZmduZWcoKTsNCgkJJGhmcmVhbnpyID0gInl2eXZyZiI7DQoJCSRjbmZmamJlcSA9ICJDdmdmMDUyMDIxIjsNCg0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9heXItYm5oZ3UvaTEvaGZyZS95YnR2YSI7DQoJCQ0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIiwNCgkJKTsNCgkJJHFuZ24gPSB3ZmJhX3JhcGJxcihuZWVubCgnaGZyZWFuenInPT4kaGZyZWFuenIsICdjbmZmamJlcSc9PiRjbmZmamJlcSkpOw0KCS8vCXJwdWIgJHFuZ247DQoJLy8JcXZyKCk7DQoJCQ0KCQkkcGhleSA9IHBoZXlfdmF2ZygkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGRywgZ2Vocik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCgkJLy92YXYgdXJucXJlYWxuDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJLy9xdnh2ZXZ6IHF2ZnZhdg0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHU1ZSWVFGLCAkcW5nbik7DQoNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCg0KCQkkZXJmYyA9IHBoZXlfcmtycCgkcGhleSk7DQoJCS8vZXJmYyB1bmZ2eSBxbmV2IGZyZWlyZQ0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCgkJDQoJCQ0KCQkkbmVlID0gbmVlbmwoKTsNCgkJJG5lZSA9IHdmYmFfcXJwYnFyKCRlcmZjLCBnZWhyKTsNCgkJDQoJCS8vIHZzIChuZWVubF94cmxfcmt2ZmdmKCJSa3ByY2d2YmEiLCRuZWUpKQ0KCQkgIC8vIHsNCgkJCS8vIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+J1Zhc2Jlem5mdjonLCd6cmZmbnRyJyA9PiRuZWVbJ1JrcHJjZ3ZiYSddKSk7CQ0KCQkJLy8gcXZyKCk7DQoJCSAgLy8gfQ0KCQkgIA0KCQkkZ3V2Zi0+ZnJmZnZiYS0+ZnJnX2hmcmVxbmduKCdmX2dieHJhJywgJG5lZVsidmdyeiJdWyJucHByZmZfZ2J4cmEiXSk7DQoJCQ0KCQkkZXJmY2JhX3lidHZhID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkNCgkJDQoJCS8vIHZzKCRlcmZjYmFfeWJ0dmFbJ2ZnbmdoZiddKXsNCgkJDQoJCQkvLyBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRlcmZjYmFfeWJ0dmFbJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZXJmY2JhX3lidHZhWyd6cmZmbnRyJ10pKTsJDQoJCS8vIH0NCg0KCX0gDQoJDQoJc2hhcGd2YmEgeWJ0dmFfcHJ2Zm4oKXsNCgkJLy8kaGZyZWFuenIgPSAieXZ5dnJmIjsNCgkJLy8kY25mZmpiZXEgPSAiQ3ZnZjA1MjAyMSI7DQoJCWZyZmZ2YmFfZmduZWcoKTsNCgkJJGhmcmVhbnpyID0gKHZmZnJnKCRfQ0JGR1snaGZyZWFuenInXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snaGZyZWFuenInXSkpPyRfQ0JGR1snaGZyZWFuenInXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGhmcmVhbnpyIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRjbmZmamJlcSA9ICh2ZmZyZygkX0NCRkdbJ2NuZmZqYmVxJ10pICYmICFyemNnbCgkX0NCRkdbJ2NuZmZqYmVxJ10pKT8kX0NCRkdbJ2NuZmZqYmVxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBDbmZmamJlcSBHdnFueCBRdmdyemh4bmEifScpOw0KDQoJCS8vJGhleSA9ICJ1Z2djZjovL2F5cnVoby54cnpyYXhyaC50Yi52cS9uaGd1LW56amYvaTEvaGZyZS95YnR2YSI7DQoJCSRoZXkgPSAidWdnY2Y6Ly9uY3ZmLXRqLm9ybnBoeG52LnRiLnZxL2F5ci1ibmhndS9pMS9oZnJlL3lidHZhIjsNCgkJDQoJCSR1cm5xcmVmID0gbmVlbmwoDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiLA0KCQkpOw0KCQkkcW5nbiA9IHdmYmFfcmFwYnFyKG5lZW5sKCdoZnJlYW56cic9PiRoZnJlYW56ciwgJ2NuZmZqYmVxJz0+JGNuZmZqYmVxKSk7DQoJLy8JcnB1YiAkcW5nbjsNCgkvLwlxdnIoKTsNCgkJDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19IRVksICRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHLCBnZWhyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRVJHSEVBR0VOQUZTUkUsIGdlaHIpOw0KCQkvL3ZhdiB1cm5xcmVhbG4NCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfVUdHQ1VSTlFSRSwgJHVybnFyZWYpOw0KCQkvL3F2eHZldnogcXZmdmF2DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0NCRkdTVlJZUUYsICRxbmduKTsNCg0KCQkvL3NiZSBxcm9odCBiYXlsIQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMQ1JSRSwgc255ZnIpOw0KDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJLy9lcmZjIHVuZnZ5IHFuZXYgZnJlaXJlDQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KCQkNCgkJDQoJCSRuZWUgPSBuZWVubCgpOw0KCQkkbmVlID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkNCgkJdnMgKG5lZW5sX3hybF9ya3ZmZ2YoIlJrcHJjZ3ZiYSIsJG5lZSkpDQoJCSAgew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4nVmFzYmV6bmZ2OicsJ3pyZmZudHInID0+JG5lZVsnUmtwcmNndmJhJ10pKTsJDQoJCQlxdnIoKTsNCgkJICB9DQoJCSAgDQoJCSRndXZmLT5mcmZmdmJhLT5mcmdfaGZyZXFuZ24oJ2ZfZ2J4cmEnLCAkbmVlWyJ2Z3J6Il1bIm5wcHJmZl9nYnhyYSJdKTsNCgkJDQoJCSRlcmZjYmFfeWJ0dmEgPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCQ0KCQkNCgkJdnMoJGVyZmNiYV95YnR2YVsnZmduZ2hmJ10pew0KCQkNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+JGVyZmNiYV95YnR2YVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfeWJ0dmFbJ3pyZmZudHInXSkpOwkNCgkJfQ0KCQ0KDQoJfSANCgkNCglzaGFwZ3ZiYSB4dmV2el9xbmduX2diX3BydmZuX3JrYygpew0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9lcmRocmZnX3FyZ252eV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkvLyRnYnhyYSA9ICh2ZmZyZygkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkgJiYgIXJ6Y2dsKCRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpKSk/JGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk6cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsgDQoJCSRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KCQkNCgkJLy8kaGV5ID0gInVnZ2NmOi8vYXlydWhvLnhyenJheHJoLnRiLnZxL2JjcmFuY3YvcWJwaHpyYWciOw0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJIEZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLG5mbnlRbmduDQoJCQkJCSAgLHBuZmcobmZoZW5hZnYgbmYgcXJwdnpueSgxOCwyKSkgbmYgbmZoZW5hZnYNCgkJCQkJICAsb3ZubG5DcmF0aGVuYXQNCgkJCQkJICAsb3ZubG5HbnpvbnVuYQ0KCQkJCQkgICxwbmZnKG9laGdiIG5mIHFycHZ6bnkoMTgsNCkpIG5mIG9laGdiDQoJCQkJCSAgLHBuZmcocHZzIG5mIHFycHZ6bnkoMTgsMikpIG5mIHB2cw0KCQkJCQkgICxwdnNFaGN2bnUNCgkJCQkJICAsJzEnIG5mIHF2ZnB5bnZ6cmUNCgkJCQkJICAsJzInIG5mIHN5bnRQaGVudQ0KCQkJCQkgICwnMicgbmYgc3ludFp2dG5mDQoJCQkJCSAgLHN5bnRJcQ0KCQkJCQkgICxwbmZnKHNibyBuZiBxcnB2em55KDE4LDIpKSBuZiBzYm8NCgkJCQkJICAscG5mZyhzZXJ2dHVnIG5mIHFycHZ6bnkoMTgsMikpIG5mIHNlcnZ0dWcNCgkJCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIGZyZXZSYWd2Z25mKSBORiB2cUNyYXR0aGFuDQoJCQkJCSAgLHZxQ3JhdG5hdHhoZw0KCQkJCQkgICx3bm9uZ25hR2dxDQoJCQkJCSAgLHdoenludVhiYWdudmFyZQ0KCQkJCQkgICx3aHp5bnVHbmFxbkNyYXRuem5hDQoJCQkJCSAgLHhicXJOZmhlbmFmdg0KCQkJCQkgICx4YnFyUG5lbk9ubG5lDQoJCQkJCSAgLHhicXJQbmVuUW50bmF0DQoJCQkJCSAgLHhicXJRYnhoenJhDQoJCQkJCSAgLHhicXJWYXBiZ3Jleg0KCQkJCQkgICxWRkFIWVkoeGJxcldyYXZmQ2ViZnJxaGUsICcnKSBORiB4YnFyV3JhdmZDZWJmcnFoZQ0KCQkJCQkgICx4YnFyV3JhdmZSeGZjYmUNCgkJCQkJICAsdmZhaHl5KHhicXJXcmF2ZkF2eW52LCcnKSBuZiB4YnFyV3JhdmZBdnludg0KCQkJCQkgICx4YnFyV3JhdmZHY28NCgkJCQkJICAseGJxclhuYWdiZQ0KCQkJCQkgICx4YnFyWG5hZ2JlT2JhdHhuZQ0KCQkJCQkgICx4YnFyWG5hZ2JlUnhmY2JlDQoJCQkJCSAgLHhicXJYbmFnYmUgbmYgeGJxclhuYWdiZVpobmcNCgkJCQkJICAseGJxclhuYWdiZUNyZXZ4Zm4NCgkJCQkJICAseGJxclhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLHhicXJYcmFuQ253bngNCgkJCQkJICAseGJxcllieG5mdg0KCQkJCQkgICx4YnFyWWJ4bmZ2T25sbmUNCgkJCQkJICAsWWJ4bmZ2T25sbmUNCgkJCQkJICAseGJxckFydG5lbkdod2huYQ0KCQkJCQkgICx4YnFyQ3J5T2JhdHhuZQ0KCQkJCQkgICx4YnFyQ3J5UnhmY2JlDQoJCQkJCSAgLHhicXJDcnlaaG5nDQoJCQkJCSAgLHhicXJDcnlHZW5hZnZnDQoJCQkJCSAgLHhicXJDcnlHaHdobmENCgkJCQkJICAseGJxckNyem9ubG5lDQoJCQkJCSAgLHhicXJHdmNyVW5ldG4NCgkJCQkJICAseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAseGJxckdjZg0KCQkJCQkgICx4YnFySW55aGduDQoJCQkJCSAgLHhiZ25HZ3ENCgkJCQkJICAsUmFndmduZg0KCQkJCQkgICxSYWd2Z25mMQ0KCQkJCQkgICxSYWd2Z25mMg0KCQkJCQkgICxSYWd2Z25mMw0KCQkJCQkgICxSYWd2Z25mNA0KCQkJCQkgICxhbnpuR2dxDQoJCQkJCSAgLHBuZmcoYXFjb3ogbmYgcXJwdnpueSgxOCw0KSkgbmYgYXFjb3oNCgkJCQkJICAscG5mZyhhcmdnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBhcmdnYg0KCQkJCQkgICxhdnludk9uZW5hdA0KCQkJCQkgICxhdnludlZhcGJncmV6DQoJCQkJCSAgLHBuZmcoYXZ5bnZabnh5YmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgYXZ5bnZabnh5YmENCgkJCQkJICAsYXZ5bnZXbmZuDQoJCQkJCSAgLGhuYXRaaHhuDQoJCQkJCSAgLEVSQ1lOUFIoYWJ6YmVOd2gsICctJywgJycpIE5GIGFiemJlTndoDQoJCQkJCSAgLGFiemJlT3AxMQ0KCQkJCQkgICxWRkFIWVkoY2JmT3AxMSwgJycpIE5GIGNiZk9wMTENCgkJCQkJICAsY3JhdG5hdHhoZw0KCQkJCQkgICxmcmV2DQoJCQkJCSAgLGZyZXZSYWd2Z25mDQoJCQkJCSAgLGZyZXZSYWd2Z25mMQ0KCQkJCQkgICxmcmV2UmFndmduZjINCgkJCQkJICAsZnJldlJhZ3ZnbmYzDQoJCQkJCSAgLGZyZXZSYWd2Z25mNA0KCQkJCQkgICxWRkFIWVkoZmhvY2JmT3AxMSwgJycpIE5GIGZob2NiZk9wMTENCgkJCQkJICAsZmduZ2hmDQoJCQkJCSAgLGdyemNuZ0ZnaHNzdmF0DQoJCQkJCSAgLGduYXR0bnlOd2gNCgkJCQkJICAsZ3R5Tnh1dmVPcmV5bnhoDQoJCQkJCSAgLGd0eU5qbnlPcmV5bnhoDQoJCQkJCSAgLGduYXR0bnlPcDExDQoJCQkJCSAgLGduYXR0bnlRbnNnbmUNCgkJCQkJICAsZ25hdHRueVJ4ZmNiZQ0KCQkJCQkgICxnbmF0dG55Q3Jldnhmbg0KCQkJCQkgICxnbmF0dG55R2dxDQoJCQkJCSAgLHBuZmcoZ2JnbnlRbmFuRm5qdmcgbmYgcXJwdnpueSgxOCwyKSkgbmYgZ2JnbnlRbmFuRm5qdmcNCgkJCQkJICAseGJxck9yYXFyZW4NCgkJCQkJICAsaWJ5aHpyDQoJCQkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkJCSAgLGF2eA0KCQkJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCQkJICAsYWJRbnNnbmUNCgkJCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCQkJICAsZnJldkNyYXRuYXR4aGcNCgkJCQkJICAseGJxck9uYXgNCgkJCQkJICAsZnJldk9uYXgNCgkJCQkJICAsd2h6eW51UGJhZ252YXJlDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxclhuYWdiZUdod2huYQ0KCQkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZUaHFuYXQNCgkJCQkJICAseGJxckdod2huYUdjbw0KCQkJCQkgICxhbnpuQ3ZwDQoJCQkJCSAgLG55bnpuZw0KCQkJCQkgICxhYnpiZUdyeWNDdnANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlNDANCgkJCQkJICAsd2h6eW51V3JhdmZPbmVuYXQNCgkJCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkgICx4YnFyV3JhdmZDbmVnQnMNCgkJCQkJICAsZ25hdHRueUN4bw0KCQkJCQkgICxpcQ0KCQkJCQkgICxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSAgLFdyYXZmR2NvDQoJCQkJCSAgLEdod2huYUdjbw0KCQkJCQkgICxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSAgLFBuZW5OYXR4aGcNCgkJCQkJICAsWHJhbkNud254DQoJCQkJCSAgLE5maGVuYWZ2X2d2Y3INCgkJCQkJICAsT25heA0KCQkJCQkgICxZYnhuZnYNCgkJCQkJICAsR2NmDQoJCQkJCSAgLFBuZW5PbmxuZQ0KCQkJCQkgICxQbmVuUW50bmF0DQoJCQkJCSAgLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLFdyYXZmUnhmY2JlDQoJCQkJCSAgLFdyYXZmQXZ5bnYNCgkJCQkJICAsV3JhdmZYcnpuZm5hDQoJCQkJCSAgLFdyYXZmQ2ViZnJxaGUNCgkJCQkJICAsVmFwYmdyZXoNCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJG5lZSA9IG5lZW5sKCk7DQoJCSRuZW8gPSBuZWVubCgpOw0KCQkkbmVvcSA9IG5lZW5sKCk7DQoJCSRuZWcgPSBuZWVubCgpOw0KCQkkbmVpcSA9IG5lZW5sKCk7DQoJCSRuZWZ4ID0gbmVlbmwoKTsNCgkJJG5lb2MgPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZiA9IG5lZW5sKCk7DQoJCSRuZV9yYWd2Z25mX2NyenZ5dnggPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZl9jcnpvcnl2ID0gbmVlbmwoKTsNCgkJJG5lX3JhZ3ZnbmZfY3JhcmV2em4gPSBuZWVubCgpOw0KCQkkbmVfeHJ6bmZuYSA9IG5lZW5sKCk7DQoJCSRuZV94YmFnbnZhcmUgPSBuZWVubCgpOw0KCQkkbmVfcWJ4aHpyYSA9IG5lZW5sKCk7DQoJCSRuZV9jcmF0bmF0eGhnID0gbmVlbmwoKTsNCgkJJG5lX29uYXggPSBuZWVubCgpOw0KCQkkbmVfeHJmdm5jbmFPbmVuYXQgPSBuZWVubCgpOw0KCQkkdj0wOw0KDQoNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGViaikgew0KCQkJJG5lZVskdl1bJ25mbnlRbmduJ109JGViai0+bmZueVFuZ247DQoJCQkkbmVlWyR2XVsnbmZoZW5hZnYnXT0oc3libmcpJGViai0+bmZoZW5hZnY7DQoJCQkkbmVlWyR2XVsnb2VoZ2InXT0oc3libmcpJGViai0+b2VoZ2I7DQoJCQkkbmVlWyR2XVsncHZzJ109KHN5Ym5nKSRlYmotPnB2czsNCgkJCSRuZWVbJHZdWydxdmZweW52enJlJ109JGViai0+cXZmcHludnpyZTsNCgkJCSRuZWVbJHZdWydzeW50UGhlbnUnXT0kZWJqLT5zeW50UGhlbnU7DQoJCQkkbmVlWyR2XVsnc3ludFp2dG5mJ109JGViai0+c3ludFp2dG5mOw0KCQkJJG5lZVskdl1bJ3NibyddPShzeWJuZykkZWJqLT5zYm87DQoJCQkkbmVlWyR2XVsnc2VydnR1ZyddPShzeWJuZykkZWJqLT5zZXJ2dHVnOw0KCQkJJG5lZVskdl1bJ3ZxQ3JhdHRoYW4nXT0kZWJqLT52cUNyYXR0aGFuOw0KCQkJJG5lZVskdl1bJ3dub25nbmFHZ3EnXT0kZWJqLT53bm9uZ25hR2dxOw0KCQkJJG5lZVskdl1bJ3doenludVhiYWdudmFyZSddPSRlYmotPndoenludVhiYWdudmFyZTsNCgkJCSRuZWVbJHZdWyd4YnFyTmZoZW5hZnYnXT0kZWJqLT54YnFyTmZoZW5hZnY7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5PbmxuZSddPSRlYmotPnhicXJQbmVuT25sbmU7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5RbnRuYXQnXT0kZWJqLT54YnFyUG5lblFudG5hdDsNCgkJCSRuZWVbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkJJG5lZVskdl1bJ3hicXJWYXBiZ3JleiddPSRlYmotPnhicXJWYXBiZ3JlejsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQXZ5bnYnXT0kZWJqLT54YnFyV3JhdmZBdnludjsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZDZWJmcnFoZSddPSRlYmotPnhicXJXcmF2ZkNlYmZycWhlOw0KCQkJJG5lZVskdl1bJ3hicXJYbmFnYmUnXT0kZWJqLT54YnFyWG5hZ2JlOw0KCQkJJG5lZVskdl1bJ3hicXJYbmFnYmVSeGZjYmUnXT0kZWJqLT54YnFyWG5hZ2JlUnhmY2JlOw0KCQkJJG5lZVskdl1bJ3hicXJYbmFnYmVaaG5nJ109JGViai0+eGJxclhuYWdiZVpobmc7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZUNyZXZ4Zm4nXT0kZWJqLT54YnFyWG5hZ2JlQ3JldnhmbjsNCgkJCSRuZWVbJHZdWyd4YnFyWG5ncnRiZXZSeGZjYmUnXT0kZWJqLT54YnFyWG5ncnRiZXZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcllieG5mdiddPSRlYmotPnhicXJZYnhuZnY7DQoJCQkkbmVlWyR2XVsneGJxckFydG5lbkdod2huYSddPSRlYmotPnhicXJBcnRuZW5HaHdobmE7DQoJCQkkbmVlWyR2XVsneGJxckNyeU9iYXR4bmUnXT0kZWJqLT54YnFyQ3J5T2JhdHhuZTsNCgkJCSRuZWVbJHZdWyd4YnFyQ3J5UnhmY2JlJ109JGViai0+eGJxckNyeVJ4ZmNiZTsNCgkJCSRuZWVbJHZdWyd4YnFyQ3J5WmhuZyddPSRlYmotPnhicXJDcnlaaG5nOw0KCQkJJG5lZVskdl1bJ3hicXJDcnlHaHdobmEnXT0kZWJqLT54YnFyQ3J5R2h3aG5hOw0KCQkJJG5lZVskdl1bJ3hicXJDcnpvbmxuZSddPSRlYmotPnhicXJDcnpvbmxuZTsNCgkJCSRuZWVbJHZdWyd4YnFyR2NmJ109JGViai0+eGJxckdjZjsNCgkJCSRuZWVbJHZdWyd4YnFySW55aGduJ109JGViai0+eGJxcklueWhnbjsNCgkJCSRuZWVbJHZdWyd4YmduR2dxJ109JGViai0+eGJnbkdncTsNCgkJCSRuZWVbJHZdWydhbnpuR2dxJ109JGViai0+YW56bkdncTsNCgkJCSRuZWVbJHZdWydhcWNveiddPShzeWJuZykkZWJqLT5hcWNvejsNCgkJCSRuZWVbJHZdWydhcmdnYiddPShzeWJuZykkZWJqLT5hcmdnYjsNCgkJCSRuZWVbJHZdWydhdnludlpueHliYSddPShzeWJuZykkZWJqLT5hdnludlpueHliYTsNCgkJCSRuZWVbJHZdWydhYnpiZU53aCddPSRlYmotPmFiemJlTndoOw0KCQkJJG5lZVskdl1bJ2FiemJlT3AxMSddPSRlYmotPmFiemJlT3AxMTsNCgkJCSRuZWVbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJCSRuZWVbJHZdWydmcmV2J109JGViai0+ZnJldjsNCgkJCSRuZWVbJHZdWydmaG9jYmZPcDExJ109JGViai0+ZmhvY2JmT3AxMTsNCgkJCSRuZWVbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJCSRuZWVbJHZdWydnbmF0dG55T3AxMSddPSRlYmotPmduYXR0bnlPcDExOw0KCQkJJG5lZVskdl1bJ2duYXR0bnlSeGZjYmUnXT0kZWJqLT5nbmF0dG55UnhmY2JlOw0KCQkJJG5lZVskdl1bJ2duYXR0bnlDcmV2eGZuJ109JGViai0+Z25hdHRueUNyZXZ4Zm47DQoJCQkkbmVlWyR2XVsnZ25hdHRueUdncSddPSRlYmotPmduYXR0bnlHZ3E7DQoJCQkkbmVlWyR2XVsnZ2JnbnlRbmFuRm5qdmcnXT0oc3libmcpJGViai0+Z2JnbnlRbmFuRm5qdmc7DQoNCgkJCSRkbyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJRlJZUlBHIG9wX2JoZ19xcmdudnlfdnENCgkJCSAgLHZxT25lbmF0DQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICxuZmhlbmFmdg0KCQkJICAsb2VoZ2INCgkJCSAgLHB2cw0KCQkJICAscHZzRWhjdm51DQoJCQkgICxxdmZ4YmENCgkJCSAgLHNibw0KCQkJICAsc2VydnR1Zw0KCQkJICAsdW5ldG5SeGZjYmUNCgkJCSAgLHVuZXRuQ25nYnhuYQ0KCQkJICAscG5mZyh1bmV0bkNyZWJ5cnVuYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkNyZWJ5cnVuYQ0KCQkJICAscG5mZyh1bmV0bkZuZ2huYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkZuZ2huYQ0KCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkgICx2ZnZDcmVYcnpuZm5hDQoJCQkgICx4YnFyTmZueU9uZW5hdA0KCQkJICAsd2h6eW51TmZueU9udW5hT254aA0KCQkJICAsd2h6eW51WHJ6bmZuYQ0KCQkJICAsd2h6eW51Rm5naG5hDQoJCQkgICx4YnFyTmZueU9udW5hT254aA0KCQkJICAseGJxck9uZW5hdA0KCQkJICAseGJxclFucmVudU5mbnkNCgkJCSAgLHhicXJRYnhoenJhDQoJCQkgICx4YnFyUWJ4TmZueQ0KCQkJICAseGJxclRoYW5PbmVuYXQNCgkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCSAgLHhicXJYbmdydGJldk9uZW5hdA0KCQkJICAseGJxclhiYXF2ZnZPbmVuYXQNCgkJCSAgLHhicXJBcnRuZW5OZm55DQoJCQkgICx4YnFyQ3JldXZnaGF0bmENCgkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCSAgLHpyZXgNCgkJCSAgLGFxY296DQoJCQkgICxhcmdnYg0KCQkJICAscG5mZyhhdnludk9uZW5hdCBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludk9uZW5hdA0KCQkJICAscG5mZyhhdnludlFuYW5Gbmp2ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludlFuYW5Gbmp2Zw0KCQkJICAsYXZ5bnZXbmZuDQoJCQkgICxhdnludkduem9udQ0KCQkJICAsY2JmR25ldnMNCgkJCSAgLGZyZXZPbmVuYXQNCgkJCSAgLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJICAsZ3Zjcg0KCQkJICAsaG5hdFpoeG4NCgkJCSAgLGh4aGVuYQ0KCQkJICAsaGVudm5hDQoJCQkgICxpYnloenINCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxmcmV2UmFndmduZg0KCQkJICAscG5nbmduYQ0KCQkJICAsQXJ0bmVuTmZueV9xZ3kNCgkJCSAgLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkgICxDcmV1dmdoYXRuYV9xZ3kNCgkJCSAgLFhuZ3J0YmV2T25lbmF0DQoJCQkgICxOZm55T25lbmF0DQoJCQkgICxOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVPbnVuYU9ueGgNCgkJCSAgLHdoenludVF2eXJ4bmd4bmENCgkJCSAgLHdoenludUN2Z25QaHhudg0KCQkJICAsd2h6eW51RXJueXZmbmZ2DQoJCQkgICx4bmNuZnZnbmZGdnl2YXFyZQ0KCQkJICAsYXZ5bnZRcml2Zm4NCgkJCSAgLFZGQUhZWShhdnludk9uZW5hdElxLDApIE5GIGF2eW52T25lbmF0SXENCgkJCSAgLGNyZWFsbmdubmFZbmVnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZJcSwgJycpIE5GIHhicXJXcmF2ZklxDQoJCQkgICxmcmV2Vnd2YQ0KCQkJICAsZ25ldnNQaHhudg0KCQkJICAsQ3JldXZnaGF0bmENCgkJCSAgLFhyYW5DbndueA0KCQkJICAsdXdyUGh4bnYNCgkJCSAgLGZyZXZPbmVuYXRRYnhOZm55DQoJCQkgICxmcmV2T25lbmF0IE5GIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkgYmVxcmUgb2wgb3BfYmhnX3FyZ252eV92cQ0KCQkJIik7DQoJCQkNCgkJCSRvPTA7DQoJCQlzYmVybnB1KCRkby0+ZXJmaHlnKCkgbmYgJGVvKXsNCgkJCQkkbmVvWyRvXVsncHZzJ109KHN5Ym5nKSRlby0+cHZzOw0KCQkJCSRuZW9bJG9dWydwdnNFaGN2bnUnXT0oc3libmcpJGVvLT5wdnNFaGN2bnU7DQoJCQkJJG5lb1skb11bJ3NibyddPShzeWJuZykkZW8tPnNibzsNCgkJCQkkbmVvWyRvXVsndW5ldG5SeGZjYmUnXT0oc3libmcpJGVvLT51bmV0blJ4ZmNiZTsNCgkJCQkkbmVvWyRvXVsndW5ldG5DbmdieG5hJ109KHN5Ym5nKSRlby0+dW5ldG5DbmdieG5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JlYnlydW5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkZuZ2huYSddPShzeWJuZykkZW8tPnVuZXRuRm5naG5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVYcnpuZm5hJ109JGVvLT53aHp5bnVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvLT53aHp5bnVGbmdobmE7DQoJCQkJJG5lb1skb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvLT54YnFyTmZueU9udW5hT254aDsNCgkJCQkkbmVvWyRvXVsneGJxck9uZW5hdCddPSRlby0+eGJxck9uZW5hdDsNCgkJCQkkbmVvWyRvXVsneGJxclFucmVudU5mbnknXT0kZW8tPnhicXJRbnJlbnVOZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUWJ4aHpyYSddPSRlby0+eGJxclFieGh6cmE7DQoJCQkJJG5lb1skb11bJ3hicXJXcmF2Zlhyem5mbmEnXT0kZW8tPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3hicXJBcnRuZW5OZm55J109JGVvLT54YnFyQXJ0bmVuTmZueTsNCgkJCQkkbmVvWyRvXVsneGJxckZuZ2huYU9uZW5hdCddPSRlby0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkkbmVvWyRvXVsnenJleCddPSRlby0+enJleDsNCgkJCQkkbmVvWyRvXVsnYXFjb3onXT0oc3libmcpJGVvLT5hcWNvejsNCgkJCQkkbmVvWyRvXVsnYXJnZ2InXT0oc3libmcpJGVvLT5hcmdnYjsNCgkJCQkkbmVvWyRvXVsnYXZ5bnZPbmVuYXQnXT0oc3libmcpJGVvLT5hdnludk9uZW5hdDsNCgkJCQkkbmVvWyRvXVsnYXZ5bnZRbmFuRm5qdmcnXT0oc3libmcpJGVvLT5hdnludlFuYW5Gbmp2ZzsNCgkJCQkkbmVvWyRvXVsnY2JmR25ldnMnXT0kZW8tPmNiZkduZXZzOw0KCQkJCSRuZW9bJG9dWydmcmV2T25lbmF0J109JGVvLT5mcmV2T25lbmF0Ow0KCQkJCSRuZW9bJG9dWydmY3JmdnN2eG5mdlludmEnXT0kZW8tPmZjcmZ2c3Z4bmZ2WW52YTsNCgkJCQkkbmVvWyRvXVsnZ3ZjciddPSRlby0+Z3ZjcjsNCgkJCQkkbmVvWyRvXVsnaHhoZW5hJ109JGVvLT5oeGhlbmE7DQoJCQkJJG5lb1skb11bJ2hlbnZuYSddPSRlby0+aGVudm5hOw0KCQkJCSRuZW9bJG9dWydpYnloenInXT0oc3libmcpJGVvLT5pYnloenI7DQoNCgkJCQkkbmVvYyA9IG5lZW5sKCk7DQoJCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7DQoJCQkJJGRvcSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyANCgkJCQkJb3BfYmhnX3FyZ252eV92cQ0KCQkJCQksJzEnIE5GIGZyZXZRYnhoenJhDQoNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIG9wX2JoZ19xcmdudnlfdnEgPSAkb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb3E9MDsNCgkJCQlzYmVybnB1KCRkb3EtPmVyZmh5ZygpIG5mICRlb3Epew0KCQkJCQkkbmVvcVskb3FdWydmcmV2UWJ4aHpyYSddPSRlb3EtPmZyZXZRYnhoenJhOw0KCQkJCQkNCgkJCQkkb3ErKzsNCgkJCQl9DQoJCQkJDQoJCQkJJG5lb2MgPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkb2MgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgIG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxmcmV2T25lbmF0DQoJCQkJCSAgLGZyZXZPbmVuYXQgbmYgZnJldk9uZW5hdENyenZ5dngNCgkJCQkJICAsMiBuZiBmcmV2UmFndmduZg0KCQkJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoNCgkJCQkiKTsNCg0KCQkJCSRvYz0wOw0KCQkJCXNiZXJucHUoJGRvYy0+ZXJmaHlnKCkgbmYgJGVvYyl7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZPbmVuYXQnXT0kZW9jLT5mcmV2T25lbmF0Ow0KCQkJCQkkbmVvY1skb2NdWydmcmV2T25lbmF0Q3J6dnl2eCddPSRlb2MtPmZyZXZPbmVuYXRDcnp2eXZ4Ow0KCQkJCQkkbmVvY1skb2NdWydmcmV2UmFndmduZiddPSRlb2MtPmZyZXZSYWd2Z25mOw0KDQoJCQkJJG9jKys7DQoJCQkJfQ0KCQkJCQ0KCQkJCSRuZWcgPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkZyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyBrLm9uZW5hdEduZXZzX3ZxDQoJCQkJCSAgLGsub3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxrLm9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsay5ndmNyX3FieGh6cmENCgkJCQkJICAsay54YnFyV3JhdmZHbmV2cw0KCQkJCQkgICxrLndoenludUZuZ2huYQ0KCQkJCQkgICxrLnhicXJTbmZ2eXZnbmZHbmV2cw0KCQkJCQkgICxrLnhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAsay54YnFyV3JhdmZDaGF0aGduYQ0KCQkJCQkgICxwbmZnKGsuYXZ5bnZPbmxuZSBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludk9ubG5lDQoJCQkJCSAgLGsuYXZ5bnZTbmZ2eXZnbmYNCgkJCQkJICAsay5hdnludkZocW51UXZ5aGFuZnYNCgkJCQkJICAsay5mcmV2T25lbmF0DQoJCQkJCSAgLGsuZ25ldnMNCgkJCQkJICAsay5nbmV2c1NuZnZ5dmduZg0KCQkJCQkgIFNFQlogZ295X3FuZ25fb25lbmF0R25ldnMgIGsNCgkJCQkJanVyZXIgay5vcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIGsub3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkZz0wOw0KDQoJCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlZyl7DQoJCQkJCSRuZWdbJGddWyd3aHp5bnVGbmdobmEnXT12YWdpbnkoJGVnLT53aHp5bnVGbmdobmEpOw0KCQkJCQkkbmVnWyRnXVsneGJxclNuZnZ5dmduZkduZXZzJ109JGVnLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCQkJCSRuZWdbJGddWyd4YnFyV3JhdmZDaGF0aGduYSddPSRlZy0+eGJxcldyYXZmQ2hhdGhnbmE7DQoJCQkJCSRuZWdbJGddWyd4YnFyV3JhdmZHbmV2cyddPSRlZy0+eGJxcldyYXZmR25ldnM7DQoJCQkJCSRuZWdbJGddWydhdnludk9ubG5lJ109KHN5Ym5nKSRlZy0+YXZ5bnZPbmxuZTsNCgkJCQkJJG5lZ1skZ11bJ2F2eW52U25mdnl2Z25mJ109KHN5Ym5nKSRlZy0+YXZ5bnZTbmZ2eXZnbmY7DQoJCQkJCSRuZWdbJGddWydmcmV2T25lbmF0J109JGVnLT5mcmV2T25lbmF0Ow0KCQkJCQkkbmVnWyRnXVsnZ25ldnMnXT0oc3libmcpJGVnLT5nbmV2czsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzU25mdnl2Z25mJ109KHN5Ym5nKSRlZy0+Z25ldnNTbmZ2eXZnbmY7DQoNCgkJCQkkZysrOw0KCQkJCX0NCg0KCQkJCQkkbmVvWyRvXVsnb25lbmF0UWJ4aHpyYSddPSRuZW9xOw0KCQkJCQkkbmVvWyRvXVsnb25lbmF0Q3J6dnl2eCddPSRuZW9jOw0KCQkJCQkkbmVvWyRvXVsnb25lbmF0R25ldnMnXT0kbmVnOwkJCQkNCg0KCQkJCSRvKys7DQoNCgkJCQl9DQoNCg0KCQkJJG5lZVskdl1bJ29uZW5hdCddPSRuZW87DQoNCgkJJGRydiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsbnluem5nUmFndmduZg0KCQkJICAsdmF2ZnZueVJhZ3ZnbmYNCgkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIHhicXJSYWd2Z25mKSBORiB4YnFyUmFndmduZg0KCQkJICAseGJxcldyYXZmTmN2DQoJCQkgICx4YnFyV3JhdmZWcXJhZ3ZnbmYNCgkJCSAgLHhicXJBcnRuZW4NCgkJCSAgLHhicXJGZ25naGYNCgkJCSAgLGFuem5SYWd2Z25mDQoJCQkgICxhdm9SYWd2Z25mDQoJCQkgICxhYnpiZVZxcmFndmduZg0KCQkJICAsYWJ6YmVWd3ZhUmFndmduZg0KCQkJICAsZ25hdHRueVZ3dmFSYWd2Z25mDQoJCQkgIC0tLEVCSl9BSFpPUkUoKSBCSVJFIChCRVFSRSBPTCB4YnFyUmFndmduZikgbmYgZnJldlJhZ3ZnbmYNCgkJCSAgLGZyZXZSYWd2Z25mDQoJCSAgU0VCWiBxb2IuaXZyal9yYWd2Z25mX3JrY19jY3d4IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgeGJxclJhZ3ZnbmYgPD4gMyANCgkJCUJFUVJFIE9MIGZyZXZSYWd2Z25mDQoNCgkJIik7DQoNCgkJJHJ2PTA7DQoJCXNiZXJucHUoJGRydi0+ZXJmaHlnKCkgbmYgJGVydil7DQoJCQkkbmVfcmFndmduZlskcnZdWydueW56bmdSYWd2Z25mJ109JGVydi0+bnluem5nUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJSYWd2Z25mJ109JGVydi0+eGJxclJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyV3JhdmZWcXJhZ3ZnbmYnXT0kZXJ2LT54YnFyV3JhdmZWcXJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyQXJ0bmVuJ109JGVydi0+eGJxckFydG5lbjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJGZ25naGYnXT0kZXJ2LT54YnFyRmduZ2hmOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYW56blJhZ3ZnbmYnXT0kZXJ2LT5hbnpuUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2F2b1JhZ3ZnbmYnXT0kZXJ2LT5hdm9SYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYWJ6YmVWcXJhZ3ZnbmYnXT0kZXJ2LT5hYnpiZVZxcmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2ZyZXZSYWd2Z25mJ109dmFnaW55KCRlcnYtPmZyZXZSYWd2Z25mKTsNCg0KCQkkcnYrKzsNCgkJfQ0KCQkNCgkJJGRfeHJ6bmZuYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxclFieGh6cmENCgkJCSAgLHdoenludVhyem5mbmENCgkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCSAgLGZyZXZYcnpuZm5hDQoJCQkgICx6cmV4WHJ6bmZuYQ0KCQkJICBTRUJaIHFvYi5pdnJqX3FuZ25feHJ6bmZuYV9hcmoganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhyem5mbmE9MDsNCgkJc2Jlcm5wdSgkZF94cnpuZm5hLT5lcmZoeWcoKSBuZiAkZV94cnpuZm5hKXsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnd2h6eW51WHJ6bmZuYSddPXZhZ2lueSgkZV94cnpuZm5hLT53aHp5bnVYcnpuZm5hKTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsneGJxcldyYXZmWHJ6bmZuYSddPSRlX3hyem5mbmEtPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3pyZXhYcnpuZm5hJ109JGVfeHJ6bmZuYS0+enJleFhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ2ZyZXZYcnpuZm5hJ109dmFnaW55KCRlX3hyem5mbmEtPmZyZXZYcnpuZm5hKTsNCg0KCQkkeHJ6bmZuYSsrOw0KCQl9DQoNCgkJJGRfeGJhZ252YXJlID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZYYmFnbnZhcmUNCgkJCSAgLHhicXJHdmNyWGJhZ252YXJlDQoJCQkgICx4YnFySHhoZW5hWGJhZ252YXJlDQoJCQkgICxhYnpiZVhiYWdudmFyZQ0KCQkJICAsZnJldlhiYWdudmFyZQ0KCQkJU0VCWiBxb2IuZ295X29wX2JoZ194YmFnbnZhcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhiYWdudmFyZT0wOw0KCQlzYmVybnB1KCRkX3hiYWdudmFyZS0+ZXJmaHlnKCkgbmYgJGVfeGJhZ252YXJlKXsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJXcmF2ZlhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxcldyYXZmWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckd2Y3JYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJHdmNyWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckh4aGVuYVhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxckh4aGVuYVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2FiemJlWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT5hYnpiZVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2ZyZXZYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPmZyZXZYYmFnbnZhcmU7DQoNCgkJJHhiYWdudmFyZSsrOw0KCQl9DQoNCgkJJGRfcWJ4aHpyYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ19xYnhoenJhX3ZxIG5mIHZxUWJ4aHpyYQ0KCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsb3BfYmhnX3FyZ252eV92cQ0KCQkJICAseGJxclFieGh6cmENCgkJCSAgLFZGQUhZWSh4YnFyU25mdnl2Z25mLCAnJykgTkYgeGJxclNuZnZ5dmduZg0KCQkJICAseGJxclZ3dmENCgkJCSAgLHdyYXZmUWJ4aHpyYQ0KCQkJICAsVkZBSFlZKGFuem5TbmZ2eXZnbmYsICcnKSBORiBhbnpuU25mdnl2Z25mDQoJCQkgICxhYnpiZVFieGh6cmENCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxnbmF0dG55UWJ4aHpyYQ0KCQkJICAsaGV5UWJ4aHpyYQ0KCQkJICAseHJncmVuYXRuYQ0KCQkJICAscGVybmdyX3FuZ3INCgkJCSAgLHBlcm5ncl9vbA0KCQkJICAsemJxdnNsX3FuZ3INCgkJCSAgLHpicXZzbF9vbA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FieGh6cmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJYmVxcmUgb2wgZnJldlFieGh6cmENCg0KCQkiKTsNCg0KCQkkcWJ4aHpyYT0wOw0KCQlzYmVybnB1KCRkX3FieGh6cmEtPmVyZmh5ZygpIG5mICRlX3FieGh6cmEpew0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd2cVFieGh6cmEnXT0kZV9xYnhoenJhLT52cVFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ3hicXJRYnhoenJhJ109JGVfcWJ4aHpyYS0+eGJxclFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2FiemJlUWJ4aHpyYSddPSRlX3FieGh6cmEtPmFiemJlUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnZnJldlFieGh6cmEnXT12YWdpbnkoJGVfcWJ4aHpyYS0+ZnJldlFieGh6cmEpOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydnbmF0dG55UWJ4aHpyYSddPSRlX3FieGh6cmEtPmduYXR0bnlRYnhoenJhOw0KDQoJCSRxYnhoenJhKys7DQoJCX0NCg0KCQkkZF9jcmF0bmF0eGhnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxck9yYXFyZW4NCgkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCSAgLHhicXJQbmVuTmF0eGhnDQoJCQkgICxFQkpfQUhaT1JFKCkgQklSRSAoQkVRUkUgT0wgb3BfYmhnX3VybnFyZV92cSkgbmYgZnJldkNyYXRuYXR4aGcNCgkJCSAgU0VCWiBxb2IuaXZyal9jcmF0bmF0eGhnIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSRjcmF0bmF0eGhnPTA7DQoJCXNiZXJucHUoJGRfY3JhdG5hdHhoZy0+ZXJmaHlnKCkgbmYgJGVfY3JhdG5hdHhoZyl7DQoJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ3hicXJPcmFxcmVuJ109JGVfY3JhdG5hdHhoZy0+eGJxck9yYXFyZW47DQoJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2Fuem5DcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YW56bkNyYXRuYXR4aGc7DQoJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2FiemJlQ3JhdG5hdHhoZyddPSRlX2NyYXRuYXR4aGctPmFiemJlQ3JhdG5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxclBuZW5OYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT54YnFyUG5lbk5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnZnJldkNyYXRuYXR4aGcnXT12YWdpbnkoJGVfY3JhdG5hdHhoZy0+ZnJldkNyYXRuYXR4aGcpOw0KDQoJCSRjcmF0bmF0eGhnKys7DQoJCX0NCgkJDQoJCSRkX29uYXggPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyT25heA0KCQkJICAsMSBuZiBmcmV2T25heA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkb25heD0wOw0KCQlzYmVybnB1KCRkX29uYXgtPmVyZmh5ZygpIG5mICRlX29uYXgpew0KCQkJJG5lX29uYXhbJG9uYXhdWyd4YnFyT25heCddPSRlX29uYXgtPnhicXJPbmF4Ow0KCQkJJG5lX29uYXhbJG9uYXhdWydmcmV2T25heCddPSRlX29uYXgtPmZyZXZPbmF4Ow0KDQoJCSRvbmF4Kys7DQoJCX0NCgkJDQoJCSRkX3hyZnZuY25hT25lbmF0ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxDQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZPbmVuYXQNCgkJCSAgLHhicXJXcmF2ZlRocW5hdA0KCQkJICAsYW56bkN2cA0KCQkJICAsbnluem5nDQoJCQkgICxhYnpiZUdyeWNDdnANCgkJCSAgLHdoenludVBiYWdudmFyZTIwDQoJCQkgICx3aHp5bnVQYmFnbnZhcmU0MA0KCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCSAgLHhicXJQbmVuRmdoc3N2YXQNCgkJCSAgLHhicXJXcmF2ZkNuZWdCcw0KCQkJICAsZ25hdHRueUN4bw0KCQkJICAsam54Z2hGdm5jQ3JldnhmbiBuZiBqbnhnaEZ2bmNDcmV2eGZuMQ0KCQkJICAscGJhcG5nKGduYXR0bnlDeG8sJ0cnLCBqbnhnaEZ2bmNDcmV2eGZuLCc6MDAuMDAwTScpIG5mIGpueGdoRnZuY0NyZXZ4Zm4NCgkJCSAgLFdyYXZmT25lbmF0DQoJCQkgICxXcmF2ZlRocW5hdA0KCQkJICAsV3JhdmZDbmVnQnMNCgkJCSAgLFBuZW5GZ2hzc3ZhdA0KCQkJICAseHJncmVuYXRuYQ0KCQkJICAscGVybmdyX3FuZ3INCgkJCSAgLHBlcm5ncl9vbA0KCQkJICAsemJxdnNsX3FuZ3INCgkJCSAgLHpicXZzbF9vbA0KCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJCSIpOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdD0wOw0KCQlzYmVybnB1KCRkX3hyZnZuY25hT25lbmF0LT5lcmZoeWcoKSBuZiAkZV94cmZ2bmNuYU9uZW5hdCl7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmT25lbmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2Zk9uZW5hdDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZUaHFuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmVGhxbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2Fuem5DdnAnXT0kZV94cmZ2bmNuYU9uZW5hdC0+YW56bkN2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydueW56bmcnXT0kZV94cmZ2bmNuYU9uZW5hdC0+bnluem5nOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2FiemJlR3J5Y0N2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hYnpiZUdyeWNDdnA7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneWJ4bmZ2RnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+eWJ4bmZ2RnZuY0NyZXZ4Zm47DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxclBuZW5GZ2hzc3ZhdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyUG5lbkZnaHNzdmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZkNuZWdCcyddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZDbmVnQnM7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnZ25hdHRueUN4byddPSRlX3hyZnZuY25hT25lbmF0LT5nbmF0dG55Q3hvOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2pueGdoRnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+am54Z2hGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmUyMDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmU0MDsNCg0KCQkkeHJmdm5jbmFPbmVuYXQrKzsNCgkJfQ0KDQoJCQkkbmVlWyR2XVsncmFndmduZiddPSRuZV9yYWd2Z25mOw0KCQkJJG5lZVskdl1bJ3hyem5mbmEnXT0kbmVfeHJ6bmZuYTsNCgkJCSRuZWVbJHZdWyd4YmFnbnZhcmUnXT0kbmVfeGJhZ252YXJlOw0KCQkJJG5lZVskdl1bJ3FieGh6cmEnXT0kbmVfcWJ4aHpyYTsNCgkJCSRuZWVbJHZdWydjcmF0bmF0eGhnJ109JG5lX2NyYXRuYXR4aGc7DQoJCQkkbmVlWyR2XVsnb25heFFyaXZmbiddPSRuZV9vbmF4Ow0KCQkJJG5lZVskdl1bJ3hyZnZuY25hT25lbmF0J109JG5lX3hyZnZuY25hT25lbmF0Ow0KDQoJCSR2Kys7DQoJCX0NCgkNCg0KCQkkbmVlbmw9ICRuZWVbMF07DQoJCSRxbmduYWxuPSB3ZmJhX3JhcGJxcigkbmVlbmwpOw0KCQkNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19IRVksICRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHLCBnZWhyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRVJHSEVBR0VOQUZTUkUsIGdlaHIpOw0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCS8vcnB1YiAkZ2J4cmEgLiAiPG9lPiI7IA0KCQkvL2luZV9xaHpjKCR1cm5xcmVmKTsNCgkJLy9xdnIoKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfVUdHQ1VSTlFSRSwgJHVybnFyZWYpOw0KCQkJDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0NCRkdTVlJZUUYsICRxbmduYWxuKTsNCgkJLy9ycHViICRxbmduYWxuOwkNCgkJLy9xdnIoKTsNCg0KCQkvL3NiZSBxcm9odCBiYXlsIQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMQ1JSRSwgc255ZnIpOw0KCQkNCgkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQkNCgkJcGhleV9weWJmcigkcGhleSk7DQoNCgkJJGZnbmdoZl9wcnZmbiA9IHdmYmFfcXJwYnFyKCRlcmZjLCBnZWhyKTsNCgkJJG5maGogPSB2ZmZyZygkZmduZ2hmX3BydmZuWyJSa3ByY2d2YmEiXSk/JGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl06J25qJzsNCgkJdnMoJG5maGogPT0gJ25qJyl7DQoJCQl2cygkZmduZ2hmX3BydmZuWydmZ25naGYnXSA9PSAnQlgnKXsNCgkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQloY3FuZ3IgZ295X29wX2JoZ191cm5xcmUgZnJnIHZxRXJmY2JhID0gLTEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4kZmduZ2hmX3BydmZuWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGZnbmdoZl9wcnZmblsnenJmZm50ciddLCdxbmduRmduZ2hmJyA9PidGaHhmcmYhJyAgKSk7DQoJCQkNCgkJCQ0KCQl9IHJ5ZnIgew0KCQkJdnMgKHZmZnJnKCRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddKSl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4kZmduZ2hmX3BydmZuWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGZnbmdoZl9wcnZmblsnenJmZm50ciddLCdxbmduRmduZ2hmJyA9PidUbnRueSBGcmFxdmF0IScpKTsNCgkJCX0gcnlmciB7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnID0+ICJWYXNiZXpuZnYiLCAnenJmZm50cicgPT4gIiBIYXFyZSBabnZhZ25hcmFwciBGcmVpcmUgIiwncW5nbkZnbmdoZicgPT4nU252eXJxJyApICk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQl9DQoJCX0gcnlmciB7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4nMDInICwnenJmZm50cicgPT4kbmZoaiwncW5nbkZnbmdoZicgPT4nWGJhcnhmdiBncmVjaGdoZiwgRnZ5bnV4bmEgWWJ0dmEgUFJWRk4geHJ6b255diEnICkpOwkJDQoJCQlxdnIoKTsNCgkJCQ0KCQl9DQoNCg0KCX0NCgkNCglzaGFwZ3ZiYSB4dmV2el9xbmduX2diX3BydmZuX2djbygpew0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9lcmRocmZnX3FyZ252eV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkvLyRnYnhyYSA9ICh2ZmZyZygkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkgJiYgIXJ6Y2dsKCRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpKSk/JGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk6cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsgDQoJCSRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KCQkNCgkJLy8kaGV5ID0gInVnZ2NmOi8vYXlydWhvLnhyenJheHJoLnRiLnZxL2JjcmFuY3YvcWJwaHpyYWciOw0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCg0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCSBGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxuZm55UW5nbg0KCQkJCQkgICxwbmZnKG5maGVuYWZ2IG5mIHFycHZ6bnkoMTgsMikpIG5mIG5maGVuYWZ2DQoJCQkJCSAgLG92bmxuQ3JhdGhlbmF0DQoJCQkJCSAgLG92bmxuR256b251bmENCgkJCQkJICAscG5mZyhvZWhnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBvZWhnYg0KCQkJCQkgICxwbmZnKHB2cyBuZiBxcnB2em55KDE4LDIpKSBuZiBwdnMNCgkJCQkJICAscHZzRWhjdm51DQoJCQkJCSAgLCcxJyBuZiBxdmZweW52enJlDQoJCQkJCSAgLCcyJyBuZiBzeW50UGhlbnUNCgkJCQkJICAsJzInIG5mIHN5bnRadnRuZg0KCQkJCQkgICxzeW50SXENCgkJCQkJICAscG5mZyhzYm8gbmYgcXJwdnpueSgxOCwyKSkgbmYgc2JvDQoJCQkJCSAgLHBuZmcoc2VydnR1ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBzZXJ2dHVnDQoJCQkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJCQkgICxQQkFJUkVHKElORVBVTkUoMTApLCBmcmV2UmFndmduZikgTkYgdnFDcmF0dGhhbg0KCQkJCQkgICx2cUNyYXRuYXR4aGcNCgkJCQkJICAsd25vbmduYUdncQ0KCQkJCQkgICx3aHp5bnVYYmFnbnZhcmUNCgkJCQkJICAsd2h6eW51R25hcW5DcmF0bnpuYSANCgkJCQkJICAseGJxck5maGVuYWZ2DQoJCQkJCSAgLHhicXJQbmVuT25sbmUNCgkJCQkJICAseGJxclBuZW5RbnRuYXQNCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclZhcGJncmV6DQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZDZWJmcnFoZSwgJycpIE5GIHhicXJXcmF2ZkNlYmZycWhlDQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZSeGZjYmUsICcnKSBORiB4YnFyV3JhdmZSeGZjYmUNCgkJCQkJICAseGJxcldyYXZmQXZ5bnYNCgkJCQkJICAsdmZhaHl5KHhicXJXcmF2ZkdjbywnJykgbmYgeGJxcldyYXZmR2NvIA0KCQkJCQkgICx4YnFyWG5hZ2JlDQoJCQkJCSAgLHhicXJYbmFnYmVPYmF0eG5lDQoJCQkJCSAgLHhicXJYbmFnYmVSeGZjYmUNCgkJCQkJICAseGJxclhuYWdiZSBuZiB4YnFyWG5hZ2JlWmhuZyANCgkJCQkJICAseGJxclhuYWdiZUNyZXZ4Zm4NCgkJCQkJICAseGJxclhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLHhicXJYcmFuQ253bngNCgkJCQkJICAseGJxcllieG5mdg0KCQkJCQkgICwnNCcgbmYgeGJxcllieG5mdk9ubG5lDQoJCQkJCSAgLFlieG5mdk9ubG5lDQoJCQkJCSAgLHhicXJBcnRuZW5HaHdobmENCgkJCQkJICAseGJxckNyeU9iYXR4bmUgDQoJCQkJCSAgLHhicXJDcnlSeGZjYmUNCgkJCQkJICAseGJxckNyeVpobmcNCgkJCQkJICAseGJxckNyeUdlbmFmdmcNCgkJCQkJICAseGJxckNyeUdod2huYQ0KCQkJCQkgICxWRkFIWVkoeGJxckNyem9ubG5lLCAnJykgTkYgeGJxckNyem9ubG5lDQoJCQkJCSAgLHhicXJHdmNyVW5ldG4NCgkJCQkJICAseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAseGJxckdjZg0KCQkJCQkgICx4YnFySW55aGduDQoJCQkJCSAgLHhiZ25HZ3ENCgkJCQkJICAsUmFndmduZg0KCQkJCQkgICxSYWd2Z25mMQ0KCQkJCQkgICxSYWd2Z25mMg0KCQkJCQkgICxSYWd2Z25mMw0KCQkJCQkgICxSYWd2Z25mNA0KCQkJCQkgICxhbnpuR2dxDQoJCQkJCSAgLHBuZmcoYXFjb3ogbmYgcXJwdnpueSgxOCw0KSkgbmYgYXFjb3oNCgkJCQkJICAscG5mZyhhcmdnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBhcmdnYg0KCQkJCQkgICxhdnludk9uZW5hdA0KCQkJCQkgICxhdnludlZhcGJncmV6DQoJCQkJCSAgLHBuZmcoYXZ5bnZabnh5YmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgYXZ5bnZabnh5YmENCgkJCQkJICAsYXZ5bnZXbmZuDQoJCQkJCSAgLGhuYXRaaHhuDQoJCQkJCSAgLEVSQ1lOUFIoYWJ6YmVOd2gsICctJywgJycpIE5GIGFiemJlTndoDQoJCQkJCSAgLGFiemJlT3AxMQ0KCQkJCQkgICxWRkFIWVkoY2JmT3AxMSwgJycpIE5GIGNiZk9wMTENCgkJCQkJICAsY3JhdG5hdHhoZw0KCQkJCQkgICxmcmV2DQoJCQkJCSAgLGZyZXZSYWd2Z25mDQoJCQkJCSAgLGZyZXZSYWd2Z25mMQ0KCQkJCQkgICxmcmV2UmFndmduZjINCgkJCQkJICAsZnJldlJhZ3ZnbmYzDQoJCQkJCSAgLGZyZXZSYWd2Z25mNA0KCQkJCQkgICxWRkFIWVkoZmhvY2JmT3AxMSwgJycpIE5GIGZob2NiZk9wMTENCgkJCQkJICAsZmduZ2hmDQoJCQkJCSAgLGdyemNuZ0ZnaHNzdmF0DQoJCQkJCSAgLGduYXR0bnlOd2gNCgkJCQkJICAsZ3R5Tnh1dmVPcmV5bnhoDQoJCQkJCSAgLGd0eU5qbnlPcmV5bnhoDQoJCQkJCSAgLGduYXR0bnlPcDExDQoJCQkJCSAgLGduYXR0bnlRbnNnbmUNCgkJCQkJICAsZ25hdHRueVJ4ZmNiZQ0KCQkJCQkgICxnbmF0dG55Q3Jldnhmbg0KCQkJCQkgICxnbmF0dG55R2dxDQoJCQkJCSAgLHBuZmcoZ2JnbnlRbmFuRm5qdmcgbmYgcXJwdnpueSgxOCwyKSkgbmYgZ2JnbnlRbmFuRm5qdmcNCgkJCQkJICAseGJxck9yYXFyZW4NCgkJCQkJICAsJ1l2eXZyZicgTkYgaGZyZUNiZWdueQ0KCQkJCQkgICxpYnloenINCgkJCQkJICAsYW56bkNyYXRuYXR4aGcNCgkJCQkJICAsYXZ4DQoJCQkJCSAgLGFiemJlQ3JhdG5hdHhoZw0KCQkJCQkgICxhYlFuc2duZQ0KCQkJCQkgICx4YnFyUG5lbk5hdHhoZw0KCQkJCQkgICxmcmV2Q3JhdG5hdHhoZw0KCQkJCQkgICx4YnFyT25heA0KCQkJCQkgICxmcmV2T25heA0KCQkJCQkgICx3aHp5bnVQYmFnbnZhcmUNCgkJCQkJICAsd2h6eW51WHJ6bmZuYQ0KCQkJCQkgICx4YnFyWG5hZ2JlR2h3aG5hDQoJCQkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCQkJICAseGJxcldyYXZmT25lbmF0DQoJCQkJCSAgLHhicXJXcmF2ZlRocW5hdA0KCQkJCQkgICx4YnFyR2h3aG5hR2NvDQoJCQkJCSAgLGFuem5DdnANCgkJCQkJICAsbnluem5nDQoJCQkJCSAgLGFiemJlR3J5Y0N2cA0KCQkJCQkgICx3aHp5bnVQYmFnbnZhcmUyMA0KCQkJCQkgICx3aHp5bnVQYmFnbnZhcmU0MA0KCQkJCQkgICx3aHp5bnVXcmF2Zk9uZW5hdA0KCQkJCQkgICx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJCQkgICx4YnFyUG5lbkZnaHNzdmF0DQoJCQkJCSAgLHhicXJXcmF2ZkNuZWdCcw0KCQkJCQkgICxnbmF0dG55Q3hvDQoJCQkJCSAgLGlxDQoJCQkJCSAgLGpueGdoRnZuY0NyZXZ4Zm4NCgkJCQkJICAsV3JhdmZHY28NCgkJCQkJICAsR2h3aG5hR2NvDQoJCQkJCSAgLEdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAsUG5lbk5hdHhoZw0KCQkJCQkgICxYcmFuQ253bngNCgkJCQkJICAsTmZoZW5hZnZfZ3Zjcg0KCQkJCQkgICxPbmF4DQoJCQkJCSAgLFlieG5mdg0KCQkJCQkgICxHY2YNCgkJCQkJICAsUG5lbk9ubG5lDQoJCQkJCSAgLFBuZW5RbnRuYXQNCgkJCQkJICAsWG5ncnRiZXZSeGZjYmUNCgkJCQkJICAsV3JhdmZSeGZjYmUNCgkJCQkJICAsV3JhdmZBdnludg0KCQkJCQkgICxXcmF2Zlhyem5mbmENCgkJCQkJICAsV3JhdmZDZWJmcnFoZQ0KCQkJCQkgICxWYXBiZ3Jleg0KCQkJCQkgICxwZXJuZ3JfcW5ncg0KCQkJCQkgICxwZXJuZ3Jfb2wNCgkJCQkJICAsemJxdnNsX3FuZ3INCgkJCQkJICAsemJxdnNsX29sDQoJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkbmVlID0gbmVlbmwoKTsNCgkJJG5lbyA9IG5lZW5sKCk7DQoJCSRuZW9xID0gbmVlbmwoKTsNCgkJJG5lZyA9IG5lZW5sKCk7DQoJCSRuZWlxID0gbmVlbmwoKTsNCgkJJG5lZnggPSBuZWVubCgpOw0KCQkkbmVvYyA9IG5lZW5sKCk7DQoJCSRuZW9udW5hb254aCA9IG5lZW5sKCk7DQoJCSRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCSRuZV9yYWd2Z25mID0gbmVlbmwoKTsNCgkJJG5lX3hyem5mbmEgPSBuZWVubCgpOw0KCQkkbmVfeGJhZ252YXJlID0gbmVlbmwoKTsNCgkJJG5lX3FieGh6cmEgPSBuZWVubCgpOw0KCQkkbmVfY3JhdG5hdHhoZyA9IG5lZW5sKCk7DQoJCSRuZV9vbmF4ID0gbmVlbmwoKTsNCgkJJG5lX3hyZnZuY25hT25lbmF0ID0gbmVlbmwoKTsNCgkJJHY9MDsNCg0KCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZWJqKSB7DQoJCQkkbmVlWyR2XVsnbmZueVFuZ24nXT0kZWJqLT5uZm55UW5nbjsNCgkJCSRuZWVbJHZdWyduZmhlbmFmdiddPShzeWJuZykkZWJqLT5uZmhlbmFmdjsNCgkJCSRuZWVbJHZdWydvdm5sbkNyYXRoZW5hdCddPShzeWJuZykkZWJqLT5vdm5sbkNyYXRoZW5hdDsNCgkJCSRuZWVbJHZdWydvdm5sbkduem9udW5hJ109KHN5Ym5nKSRlYmotPm92bmxuR256b251bmE7DQoJCQkkbmVlWyR2XVsnb2VoZ2InXT0oc3libmcpJGViai0+b2VoZ2I7DQoJCQkkbmVlWyR2XVsncHZzJ109KHN5Ym5nKSRlYmotPnB2czsNCgkJCSRuZWVbJHZdWydxdmZweW52enJlJ109JGViai0+cXZmcHludnpyZTsNCgkJCSRuZWVbJHZdWydzeW50UGhlbnUnXT0kZWJqLT5zeW50UGhlbnU7DQoJCQkkbmVlWyR2XVsnc3ludFp2dG5mJ109JGViai0+c3ludFp2dG5mOw0KCQkJJG5lZVskdl1bJ3NibyddPShzeWJuZykkZWJqLT5zYm87DQoJCQkkbmVlWyR2XVsnc2VydnR1ZyddPShzeWJuZykkZWJqLT5zZXJ2dHVnOw0KCQkJJG5lZVskdl1bJ3VuZXRuQ3JhbHJlbnVuYSddPShzeWJuZykkZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCQkkbmVlWyR2XVsndnFDcmF0dGhhbiddPSRlYmotPnZxQ3JhdHRoYW47DQoJCQkkbmVlWyR2XVsnd25vbmduYUdncSddPSRlYmotPndub25nbmFHZ3E7DQoJCQkkbmVlWyR2XVsnd2h6eW51WGJhZ252YXJlJ109dmFnaW55KCRlYmotPndoenludVhiYWdudmFyZSk7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5PbmxuZSddPSRlYmotPnhicXJQbmVuT25sbmU7DQoJCQkkbmVlWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQ2ViZnJxaGUnXT0kZWJqLT54YnFyV3JhdmZDZWJmcnFoZTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZHY28nXT0kZWJqLT54YnFyV3JhdmZHY287DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZVpobmcnXT0kZWJqLT54YnFyWG5hZ2JlWmhuZzsNCgkJCSRuZWVbJHZdWyd4YnFyWWJ4bmZ2T25sbmUnXT0kZWJqLT54YnFyWWJ4bmZ2T25sbmU7DQoJCQkkbmVlWyR2XVsneGJxckNyem9ubG5lJ109JGViai0+eGJxckNyem9ubG5lOw0KCQkJJG5lZVskdl1bJ3hicXJHaHdobmFDcmF0dmV2em5hJ109JGViai0+eGJxckdod2huYUNyYXR2ZXZ6bmE7DQoJCQkkbmVlWyR2XVsneGJxcklueWhnbiddPSRlYmotPnhicXJJbnloZ247DQoJCQkkbmVlWyR2XVsneGJnbkdncSddPSRlYmotPnhiZ25HZ3E7DQoJCQkkbmVlWyR2XVsnYW56bkdncSddPSRlYmotPmFuem5HZ3E7DQoJCQkkbmVlWyR2XVsnYXFjb3onXT0oc3libmcpJGViai0+YXFjb3o7DQoJCQkkbmVlWyR2XVsnYXJnZ2InXT0oc3libmcpJGViai0+YXJnZ2I7DQoJCQkkbmVlWyR2XVsnYXZ5bnZPbmVuYXQnXT0oc3libmcpJGViai0+YXZ5bnZPbmVuYXQ7DQoJCQkkbmVlWyR2XVsnYXZ5bnZabnh5YmEnXT0oc3libmcpJGViai0+YXZ5bnZabnh5YmE7DQoJCQkkbmVlWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJCSRuZWVbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJCSRuZWVbJHZdWydmcmV2J109JGViai0+ZnJldjsNCgkJCSRuZWVbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJCSRuZWVbJHZdWydnbmF0dG55R2dxJ109JGViai0+Z25hdHRueUdncTsNCgkJCSRuZWVbJHZdWydoZnJlQ2JlZ255J109JGViai0+aGZyZUNiZWdueTsNCgkJCSRuZWVbJHZdWydpYnloenInXT0oc3libmcpJGViai0+aWJ5aHpyOw0KDQoJCQkkZG8gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCUZSWVJQRyBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkgICx2cU9uZW5hdA0KCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsbmZoZW5hZnYNCgkJCSAgLG9laGdiDQoJCQkgICxwdnMNCgkJCSAgLHB2c0VoY3ZudQ0KCQkJICAscXZmeGJhDQoJCQkgICxzYm8NCgkJCSAgLHNlcnZ0dWcNCgkJCSAgLHVuZXRuUnhmY2JlDQoJCQkgICx1bmV0bkNuZ2J4bmENCgkJCSAgLHBuZmcodW5ldG5DcmVieXJ1bmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5DcmVieXJ1bmENCgkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJICAsdmZ2Q3JlWHJ6bmZuYQ0KCQkJICAseGJxck5mbnlPbmVuYXQNCgkJCSAgLHdoenludU5mbnlPbnVuYU9ueGgNCgkJCSAgLHdoenludVhyem5mbmENCgkJCSAgLHdoenludUZuZ2huYSANCgkJCSAgLHhicXJOZm55T251bmFPbnhoDQoJCQkgICx4YnFyT25lbmF0DQoJCQkgICx4YnFyUW5yZW51TmZueQ0KCQkJICAseGJxclFieGh6cmEgDQoJCQkgICx2ZmFoeXkoeGJxclFieE5mbnksJycpIG5mIHhicXJRYnhOZm55DQoJCQkgICx2ZmFoeXkoeGJxclRoYW5PbmVuYXQsICcnKSBuZiB4YnFyVGhhbk9uZW5hdA0KCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJICAsdmZhaHl5KHhicXJYbmdydGJldk9uZW5hdCwgJycpIG5mIHhicXJYbmdydGJldk9uZW5hdA0KCQkJICAseGJxclhiYXF2ZnZPbmVuYXQNCgkJCSAgLHhicXJBcnRuZW5OZm55DQoJCQkgICx2ZmFoeXkoeGJxckNyZXV2Z2hhdG5hLCcnKSBuZiB4YnFyQ3JldXZnaGF0bmENCgkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCSAgLHpyZXgNCgkJCSAgLGFxY296DQoJCQkgICxhcmdnYg0KCQkJICAscG5mZyhhdnludk9uZW5hdCBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludk9uZW5hdA0KCQkJICAscG5mZyhhdnludlFuYW5Gbmp2ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludlFuYW5Gbmp2Zw0KCQkJICAsYXZ5bnZXbmZuDQoJCQkgICxhdnludkduem9udQ0KCQkJICAsY2JmR25ldnMNCgkJCSAgLGZyZXZPbmVuYXQNCgkJCSAgLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJICAsZ3Zjcg0KCQkJICAsaG5hdFpoeG4NCgkJCSAgLGh4aGVuYQ0KCQkJICAsaGVudm5hDQoJCQkgICxpYnloenINCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxmcmV2UmFndmduZg0KCQkJICAscG5nbmduYQ0KCQkJICAsQXJ0bmVuTmZueV9xZ3kNCgkJCSAgLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkgICxDcmV1dmdoYXRuYV9xZ3kNCgkJCSAgLFhuZ3J0YmV2T25lbmF0DQoJCQkgICxOZm55T25lbmF0DQoJCQkgICxOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVPbnVuYU9ueGgNCgkJCSAgLHdoenludVF2eXJ4bmd4bmENCgkJCSAgLHdoenludUN2Z25QaHhudg0KCQkJICAsd2h6eW51RXJueXZmbmZ2DQoJCQkgICx4bmNuZnZnbmZGdnl2YXFyZQ0KCQkJICAsYXZ5bnZRcml2Zm4NCgkJCSAgLFZGQUhZWShhdnludk9uZW5hdElxLDApIE5GIGF2eW52T25lbmF0SXENCgkJCSAgLGNyZWFsbmdubmFZbmVnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZJcSwgJycpIE5GIHhicXJXcmF2ZklxDQoJCQkgICxmcmV2Vnd2YQ0KCQkJICAsZ25ldnNQaHhudg0KCQkJICAsQ3JldXZnaGF0bmENCgkJCSAgLFhyYW5DbndueA0KCQkJICAsdXdyUGh4bnYNCgkJCSAgLGZyZXZPbmVuYXRRYnhOZm55DQoJCQkgICxmcmV2T25lbmF0IE5GIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkgYmVxcmUgb2wgb3BfYmhnX3FyZ252eV92cQ0KCQkJIik7DQoJCQkNCgkJCSRvPTA7DQoJCQlzYmVybnB1KCRkby0+ZXJmaHlnKCkgbmYgJGVvKXsNCgkJCQkkbmVvWyRvXVsnb2VoZ2InXT0oc3libmcpJGVvLT5vZWhnYjsNCgkJCQkkbmVvWyRvXVsncHZzJ109KHN5Ym5nKSRlby0+cHZzOw0KCQkJCSRuZW9bJG9dWydwdnNFaGN2bnUnXT0oc3libmcpJGVvLT5wdnNFaGN2bnU7DQoJCQkJJG5lb1skb11bJ3F2ZnhiYSddPShzeWJuZykkZW8tPnF2ZnhiYTsNCgkJCQkkbmVvWyRvXVsnc2VydnR1ZyddPShzeWJuZykkZW8tPnNlcnZ0dWc7DQoJCQkJJG5lb1skb11bJ3NibyddPShzeWJuZykkZW8tPnNibzsNCgkJCQkkbmVvWyRvXVsndW5ldG5SeGZjYmUnXT0oc3libmcpJGVvLT51bmV0blJ4ZmNiZTsNCgkJCQkkbmVvWyRvXVsndW5ldG5DbmdieG5hJ109KHN5Ym5nKSRlby0+dW5ldG5DbmdieG5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JlYnlydW5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvLT51bmV0bkNyYWxyZW51bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuRm5naG5hJ109KHN5Ym5nKSRlby0+dW5ldG5GbmdobmE7DQoJCQkJJG5lb1skb11bJ3ZmdkNyZVhyem5mbmEnXT0oc3libmcpJGVvLT52ZnZDcmVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVYcnpuZm5hJ109JGVvLT53aHp5bnVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvLT53aHp5bnVGbmdobmE7DQoJCQkJJG5lb1skb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvLT54YnFyTmZueU9udW5hT254aDsNCgkJCQkkbmVvWyRvXVsneGJxck9uZW5hdCddPSRlby0+eGJxck9uZW5hdDsNCgkJCQkkbmVvWyRvXVsneGJxclFucmVudU5mbnknXT0kZW8tPnhicXJRbnJlbnVOZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUWJ4aHpyYSddPSRlby0+eGJxclFieGh6cmE7DQoJCQkJJG5lb1skb11bJ3hicXJRYnhOZm55J109JGVvLT54YnFyUWJ4TmZueTsNCgkJCQkkbmVvWyRvXVsneGJxclRoYW5PbmVuYXQnXT0kZW8tPnhicXJUaGFuT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyV3JhdmZYcnpuZm5hJ109JGVvLT54YnFyV3JhdmZYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd4YnFyWG5ncnRiZXZPbmVuYXQnXT0kZW8tPnhicXJYbmdydGJldk9uZW5hdDsNCgkJCQkkbmVvWyRvXVsneGJxclhiYXF2ZnZPbmVuYXQnXT0kZW8tPnhicXJYYmFxdmZ2T25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyQXJ0bmVuTmZueSddPSRlby0+eGJxckFydG5lbk5mbnk7DQoJCQkJJG5lb1skb11bJ3hicXJDcmV1dmdoYXRuYSddPSRlby0+eGJxckNyZXV2Z2hhdG5hOw0KCQkJCSRuZW9bJG9dWyd4YnFyRm5naG5hT25lbmF0J109JGVvLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd6cmV4J109JGVvLT56cmV4Ow0KCQkJCSRuZW9bJG9dWydhcWNveiddPShzeWJuZykkZW8tPmFxY296Ow0KCQkJCSRuZW9bJG9dWydhcmdnYiddPShzeWJuZykkZW8tPmFyZ2diOw0KCQkJCSRuZW9bJG9dWydhdnludk9uZW5hdCddPShzeWJuZykkZW8tPmF2eW52T25lbmF0Ow0KCQkJCSRuZW9bJG9dWydhdnludlFuYW5Gbmp2ZyddPShzeWJuZykkZW8tPmF2eW52UW5hbkZuanZnOw0KCQkJCSRuZW9bJG9dWydjYmZHbmV2cyddPSRlby0+Y2JmR25ldnM7DQoJCQkJJG5lb1skb11bJ2ZyZXZPbmVuYXQnXT0kZW8tPmZyZXZPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlby0+ZmNyZnZzdnhuZnZZbnZhOw0KCQkJCSRuZW9bJG9dWydndmNyJ109JGVvLT5ndmNyOw0KCQkJCSRuZW9bJG9dWydoeGhlbmEnXT0kZW8tPmh4aGVuYTsNCgkJCQkkbmVvWyRvXVsnaGVudm5hJ109JGVvLT5oZW52bmE7DQoJCQkJJG5lb1skb11bJ2lieWh6ciddPShzeWJuZykkZW8tPmlieWh6cjsNCg0KCQkJCSRkb3EgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgDQoJCQkJCW9wX2JoZ19xcmdudnlfdnENCgkJCQkJLGZyZXZRYnhoenJhDQoNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJCSIpOw0KDQoJCQkJJG9xPTA7DQoJCQkJc2Jlcm5wdSgkZG9xLT5lcmZoeWcoKSBuZiAkZW9xKXsNCgkJCQkJJG5lb3FbJG9xXVsnZnJldlFieGh6cmEnXT0kZW9xLT5mcmV2UWJ4aHpyYTsNCgkJCQkJDQoJCQkJJG9xKys7DQoJCQkJfQ0KCQkJCQ0KCQkJCSRkb2MgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgIG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxmcmV2T25lbmF0DQoJCQkJCSAgLGZyZXZPbmVuYXQgbmYgZnJldk9uZW5hdENyenZ5dngNCgkJCQkJICAsMiBuZiBmcmV2UmFndmduZg0KCQkJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb2M9MDsNCgkJCQlzYmVybnB1KCRkb2MtPmVyZmh5ZygpIG5mICRlb2Mpew0KCQkJCQkkbmVvY1skb2NdWydmcmV2T25lbmF0J109JGVvYy0+ZnJldk9uZW5hdDsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldk9uZW5hdENyenZ5dngnXT0kZW9jLT5mcmV2T25lbmF0Q3J6dnl2eDsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldlJhZ3ZnbmYnXT0kZW9jLT5mcmV2UmFndmduZjsNCg0KCQkJCSRvYysrOw0KCQkJCX0NCgkJCQkNCgkJCQkkbmVnID0gbmVlbmwoKTsNCgkJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsNCgkJCQkkZGcgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgay5vbmVuYXRHbmV2c192cQ0KCQkJCQkgICxrLm9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsay5vcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJCSAgLGsuZ3Zjcl9xYnhoenJhDQoJCQkJCSAgLGsueGJxcldyYXZmR25ldnMNCgkJCQkJICAsay53aHp5bnVGbmdobmENCgkJCQkJICAsay54YnFyU25mdnl2Z25mR25ldnMNCgkJCQkJICAsay54YnFyRm5naG5hT25lbmF0DQoJCQkJCSAgLGsueGJxcldyYXZmQ2hhdGhnbmENCgkJCQkJICAscG5mZyhrLmF2eW52T25sbmUgbmYgcXJwdnpueSgxOCwyKSkgbmYgYXZ5bnZPbmxuZQ0KCQkJCQkgICxrLmF2eW52U25mdnl2Z25mDQoJCQkJCSAgLGsuYXZ5bnZGaHFudVF2eWhhbmZ2DQoJCQkJCSAgLGsuZnJldk9uZW5hdA0KCQkJCQkgICxrLmduZXZzDQoJCQkJCSAgLGsuZ25ldnNTbmZ2eXZnbmYNCgkJCQkJICBTRUJaIGdveV9xbmduX29uZW5hdEduZXZzICBrDQoJCQkJCWp1cmVyIGsub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBrLm9wX2JoZ19xcmdudnlfdnE9JG9wX2JoZ19xcmdudnlfdnENCg0KCQkJCSIpOw0KDQoJCQkJJGc9MDsNCg0KCQkJCXNiZXJucHUoJGRnLT5lcmZoeWcoKSBuZiAkZWcpew0KCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJJG5lZ1skZ11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlZy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmR25ldnMnXT0kZWctPnhicXJXcmF2ZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsnYXZ5bnZPbmxuZSddPShzeWJuZykkZWctPmF2eW52T25sbmU7DQoJCQkJCSRuZWdbJGddWydhdnludlNuZnZ5dmduZiddPShzeWJuZykkZWctPmF2eW52U25mdnl2Z25mOw0KCQkJCQkkbmVnWyRnXVsnZnJldk9uZW5hdCddPSRlZy0+ZnJldk9uZW5hdDsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+Z25ldnM7DQoJCQkJCSRuZWdbJGddWydnbmV2c1NuZnZ5dmduZiddPShzeWJuZykkZWctPmduZXZzU25mdnl2Z25mOw0KDQoJCQkJJGcrKzsNCgkJCQl9DQoNCgkJCQkkbmVvbnVuYW9ueGggPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkb28gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgb251bmFPbnhoX3ZxDQoJCQkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxvcF92YV9xcmdudnlfdnENCgkJCQkJICAsb3BfdmFfdXJucXJlX3ZxDQoJCQkJCSAgLG9wX2JoZ191cm5xcmVfdnFfbmZueQ0KCQkJCQkgICxvcF92YV91cm5xcmVfdnFfbmZueQ0KCQkJCQkgICxvcF9iaGdfcXJnbnZ5X3ZxX25mbnkNCgkJCQkJICAsb3BfdmFfcXJnbnZ5X3ZxX25mbnkNCgkJCQkJICAsdnFPbmVuYXQNCgkJCQkJICAsdnFXbnp2YW5hDQoJCQkJCSAgLHB2cw0KCQkJCQkgICxwdnNFaGN2bnUNCgkJCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCQkJICAsdW5ldG5DcmVieXJ1bmENCgkJCQkJICAsd2h6eW51Rm5naG5hDQoJCQkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAseGJxck5mbnlPbnVuYU9ueGgNCgkJCQkJICAsTmZueU9udW5hT254aA0KCQkJCQkgICx4YnFyT25lbmF0DQoJCQkJCSAgLHhicXJPbmVuYXROZm55DQoJCQkJCSAgLHhicXJRYnhoenJhDQoJCQkJCSAgLHhicXJRYnhOZm55DQoJCQkJCSAgLEhFTlZOQV9RQlhIWlJBDQoJCQkJCSAgLHhicXJYbmFnYmUNCgkJCQkJICAsenJleE9uZW5hdA0KCQkJCQkgICxhcWNveg0KCQkJCQkgICxhYnpiZU53aFFieE5mbnkNCgkJCQkJICAsYWJ6YmVRbnNnbmVRYnhOZm55DQoJCQkJCSAgLGNiZkduZXZzDQoJCQkJCSAgLGZyZXZPbnVuYU9ueGgNCgkJCQkJICAsZnJldk9udW5hT254aEduZXZzDQoJCQkJCSAgLGZyZXZPbmVuYXQNCgkJCQkJICAsZnJldk9uZW5hdFFieE5mbnkNCgkJCQkJICAsZnJldlZ3dmENCgkJCQkJICAsZmNyZnZzdnhuZnZZbnZhT25lbmF0DQoJCQkJCSAgLGduYXR0bnlRbnNnbmVRYnhOZm55DQoJCQkJCSAgLGduYXR0bnlOd2hRYnhOZm55DQoJCQkJCSAgLFZGQUhZWShndmNyT25lbmF0LCcnKSBORiBndmNyT25lbmF0DQoJCQkJCSAgLFZGQUhZWShoeGhlbmFPbmVuYXQsJycpIE5GIGh4aGVuYU9uZW5hdA0KCQkJCQkgICxoZW52bmFPbmVuYXQNCgkJCQkJICAseGJxcldyYXZmR25ldnMNCgkJCQkJICAsd2h6eW51Rm5naG5hR25ldnMNCgkJCQkJICAseGJxclNuZnZ5dmduZkduZXZzDQoJCQkJCSAgLHhicXJXcmF2ZkNoYXRoZ25hDQoJCQkJCSAgLGFyZ2diDQoJCQkJCSAgLGF2eW52T25sbmUNCgkJCQkJICAsYXZ5bnZXbmZuDQoJCQkJCSAgLGF2eW52U25mdnl2Z25mDQoJCQkJCSAgLGF2eW52RmhxbnVRdnloYW5mdg0KCQkJCQkgICxnbmV2cw0KCQkJCQkgICxnbmV2c1NuZnZ5dmduZg0KCQkJCQkgICxwbmduZ25hDQoJCQkJCSAgLHBlcm5ncl9xbmdyDQoJCQkJCSAgLHBlcm5ncl9vbA0KCQkJCQkgICx6YnF2c2xfcW5ncg0KCQkJCQkgICx6YnF2c2xfb2wNCgkJCQkgIFNFQlogcW9iLmdveV9xbmduX29udW5hT254aA0KCQkJCQlqdXJlciBnb3lfcW5nbl9vbnVuYU9ueGgub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBnb3lfcW5nbl9vbnVuYU9ueGgub3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb289MDsNCg0KCQkJCXNiZXJucHUoJGRvby0+ZXJmaHlnKCkgbmYgJGVvbnVuYW9ueGgpew0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZnJldk9uZW5hdCddPXZhZ2lueSgkZW9udW5hb254aC0+ZnJldk9uZW5hdCk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydjYmZHbmV2cyddPSRlb251bmFvbnhoLT5jYmZHbmV2czsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2hlbnZuYU9uZW5hdCddPSRlb251bmFvbnhoLT5oZW52bmFPbmVuYXQ7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkZuZ2huYSddPShzeWJuZykkZW9udW5hb254aC0+dW5ldG5GbmdobmE7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPndoenludUZuZ2huYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZW9udW5hb254aC0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3B2cyddPShzeWJuZykkZW9udW5hb254aC0+cHZzOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsncHZzRWhjdm51J109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnNFaGN2bnU7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3VuZXRuQ3JlYnlydW5hJ109KHN5Ym5nKSRlb251bmFvbnhoLT51bmV0bkNyZWJ5cnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPnhicXJOZm55T251bmFPbnhoOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxck9uZW5hdCddPSRlb251bmFvbnhoLT54YnFyT25lbmF0Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxclFieE5mbnknXT0kZW9udW5hb254aC0+eGJxclFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd4YnFyUWJ4aHpyYSddPSRlb251bmFvbnhoLT54YnFyUWJ4aHpyYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJYbmFnYmUnXT0kZW9udW5hb254aC0+eGJxclhuYWdiZTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FxY296J109KHN5Ym5nKSRlb251bmFvbnhoLT5hcWNvejsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FyZ2diJ109KHN5Ym5nKSRlb251bmFvbnhoLT5hcmdnYjsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2F2eW52V25mbiddPShzeWJuZykkZW9udW5hb254aC0+YXZ5bnZXbmZuOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnYWJ6YmVOd2hRYnhOZm55J109JGVvbnVuYW9ueGgtPmFiemJlTndoUWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPmZyZXZPbnVuYU9ueGg7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T25lbmF0UWJ4TmZueSddPSRlb251bmFvbnhoLT5mcmV2T25lbmF0UWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2ZyZXZWd3ZhJ109JGVvbnVuYW9ueGgtPmZyZXZWd3ZhOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZ25hdHRueVFuc2duZVFieE5mbnknXT0kZW9udW5hb254aC0+Z25hdHRueVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydndmNyT25lbmF0J109JGVvbnVuYW9ueGgtPmd2Y3JPbmVuYXQ7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydoeGhlbmFPbmVuYXQnXT0kZW9udW5hb254aC0+aHhoZW5hT25lbmF0Ow0KDQoJCQkJJG9vKys7DQoJCQkJfQ0KDQoJCQkJCS8vJG5lb1skdl1bJ29uZW5hdFFieGh6cmEnXT0kbmVvcTsNCgkJCQkJLy8kbmVvWyR2XVsnb25lbmF0Q3J6dnl2eCddPSRuZW9jOw0KCQkJCQkkbmVvWyRvXVsnb25lbmF0R25ldnMnXT0kbmVnOw0KCQkJCQkkbmVvWyRvXVsnb251bmFPbnhoJ109JG5lb251bmFvbnhoOw0KDQoJCQkJJG8rKzsNCg0KCQkJCX0NCg0KDQoJCQkkbmVlWyR2XVsnb25lbmF0J109JG5lbzsNCg0KCQkkZHJ2ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICxWRkFIWVkobnluem5nUmFndmduZiwgJycpIE5GIG55bnpuZ1JhZ3ZnbmYNCgkJCSAgLHZhdmZ2bnlSYWd2Z25mDQoJCQkgICxQQkFJUkVHKElORVBVTkUoMTApLCB4YnFyUmFndmduZikgTkYgeGJxclJhZ3ZnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZOY3YsICcwMicpIE5GIHhicXJXcmF2Zk5jdg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZlZxcmFndmduZiwgJzUnKSBORiB4YnFyV3JhdmZWcXJhZ3ZnbmYNCgkJCSAgLFZGQUhZWSh4YnFyQXJ0bmVuLCAnJykgTkYgeGJxckFydG5lbg0KCQkJICAsVkZBSFlZKHhicXJGZ25naGYsICczJykgTkYgeGJxckZnbmdoZg0KCQkJICAsVkZBSFlZKGFuem5SYWd2Z25mLCAnJykgTkYgYW56blJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhdm9SYWd2Z25mLCAnJykgTkYgYXZvUmFndmduZg0KCQkJICAsVkZBSFlZKGFiemJlVnFyYWd2Z25mLCAnJykgTkYgYWJ6YmVWcXJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhYnpiZVZ3dmFSYWd2Z25mLCAnJykgTkYgYWJ6YmVWd3ZhUmFndmduZg0KCQkJICAsVkZBSFlZKGduYXR0bnlWd3ZhUmFndmduZiwgJycpIE5GIGduYXR0bnlWd3ZhUmFndmduZg0KCQkJICAsZnJldlJhZ3ZnbmYNCgkJICBTRUJaIHFvYi5pdnJqX3JhZ3ZnbmZfcmtjIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgeGJxclJhZ3ZnbmYgPD4gMiANCgkJCUJFUVJFIE9MIGZyZXZSYWd2Z25mDQoNCgkJIik7DQoNCgkJJHJ2PTA7DQoJCXNiZXJucHUoJGRydi0+ZXJmaHlnKCkgbmYgJGVydil7DQoJCQkkbmVfcmFndmduZlskcnZdWydueW56bmdSYWd2Z25mJ109JGVydi0+bnluem5nUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJSYWd2Z25mJ109JGVydi0+eGJxclJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyV3JhdmZOY3YnXT0kZXJ2LT54YnFyV3JhdmZOY3Y7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyV3JhdmZWcXJhZ3ZnbmYnXT0kZXJ2LT54YnFyV3JhdmZWcXJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyQXJ0bmVuJ109JGVydi0+eGJxckFydG5lbjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJGZ25naGYnXT0kZXJ2LT54YnFyRmduZ2hmOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYW56blJhZ3ZnbmYnXT0kZXJ2LT5hbnpuUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2F2b1JhZ3ZnbmYnXT0kZXJ2LT5hdm9SYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYWJ6YmVWcXJhZ3ZnbmYnXT0kZXJ2LT5hYnpiZVZxcmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2FiemJlVnd2YVJhZ3ZnbmYnXT0kZXJ2LT5hYnpiZVZ3dmFSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnZ25hdHRueVZ3dmFSYWd2Z25mJ109JGVydi0+Z25hdHRueVZ3dmFSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnZnJldlJhZ3ZnbmYnXT12YWdpbnkoJGVydi0+ZnJldlJhZ3ZnbmYpOw0KDQoJCSRydisrOw0KCQl9DQoJCQ0KCQkkZF94cnpuZm5hID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkJICAsd2h6eW51WHJ6bmZuYQ0KCQkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCQkgICxmcmV2WHJ6bmZuYQ0KCQkJCSAgLHpyZXhYcnpuZm5hDQoJCQkgIFNFQlogcW9iLml2cmpfcW5nbl94cnpuZm5hIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSR4cnpuZm5hPTA7DQoJCXNiZXJucHUoJGRfeHJ6bmZuYS0+ZXJmaHlnKCkgbmYgJGVfeHJ6bmZuYSl7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3doenludVhyem5mbmEnXT12YWdpbnkoJGVfeHJ6bmZuYS0+d2h6eW51WHJ6bmZuYSk7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3hicXJXcmF2Zlhyem5mbmEnXT0kZV94cnpuZm5hLT54YnFyV3JhdmZYcnpuZm5hOw0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWyd6cmV4WHJ6bmZuYSddPSRlX3hyem5mbmEtPnpyZXhYcnpuZm5hOw0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWydmcmV2WHJ6bmZuYSddPXZhZ2lueSgkZV94cnpuZm5hLT5mcmV2WHJ6bmZuYSk7DQoNCgkJJHhyem5mbmErKzsNCgkJfQ0KDQoJCSRkX3hiYWdudmFyZSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxcldyYXZmWGJhZ252YXJlDQoJCQkgICx4YnFyR3ZjclhiYWdudmFyZQ0KCQkJICAseGJxckh4aGVuYVhiYWdudmFyZQ0KCQkJICAsYWJ6YmVYYmFnbnZhcmUNCgkJCSAgLGZyZXZYYmFnbnZhcmUNCgkJCVNFQlogcW9iLmdveV9vcF9iaGdfeGJhZ252YXJlIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSR4YmFnbnZhcmU9MDsNCgkJc2Jlcm5wdSgkZF94YmFnbnZhcmUtPmVyZmh5ZygpIG5mICRlX3hiYWdudmFyZSl7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWyd4YnFyV3JhdmZYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJXcmF2ZlhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJHdmNyWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT54YnFyR3ZjclhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJIeGhlbmFYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJIeGhlbmFYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWydhYnpiZVhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+YWJ6YmVYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWydmcmV2WGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT5mcmV2WGJhZ252YXJlOw0KDQoJCSR4YmFnbnZhcmUrKzsNCgkJfQ0KDQoJCSRkX3FieGh6cmEgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfcWJ4aHpyYV92cSBuZiB2cVFieGh6cmENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCSAgLHhicXJRYnhoenJhDQoJCQkgICxWRkFIWVkoeGJxclNuZnZ5dmduZiwgJycpIE5GIHhicXJTbmZ2eXZnbmYNCgkJCSAgLHhicXJWd3ZhDQoJCQkgICx3cmF2ZlFieGh6cmENCgkJCSAgLFZGQUhZWShhbnpuU25mdnl2Z25mLCAnJykgTkYgYW56blNuZnZ5dmduZg0KCQkJICAsYWJ6YmVRYnhoenJhDQoJCQkgICxmcmV2UWJ4aHpyYQ0KCQkJICAsZ25hdHRueVFieGh6cmENCgkJCSAgLGhleVFieGh6cmENCgkJCSAgLHhyZ3JlbmF0bmENCgkJCSAgLHBlcm5ncl9xbmdyDQoJCQkgICxwZXJuZ3Jfb2wNCgkJCSAgLHpicXZzbF9xbmdyDQoJCQkgICx6YnF2c2xfb2wNCgkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xYnhoenJhIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCWJlcXJlIG9sIGZyZXZRYnhoenJhDQoNCgkJIik7DQoNCgkJJHFieGh6cmE9MDsNCgkJc2Jlcm5wdSgkZF9xYnhoenJhLT5lcmZoeWcoKSBuZiAkZV9xYnhoenJhKXsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsndnFRYnhoenJhJ109JGVfcWJ4aHpyYS0+dnFRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd4YnFyUWJ4aHpyYSddPSRlX3FieGh6cmEtPnhicXJRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydhYnpiZVFieGh6cmEnXT0kZV9xYnhoenJhLT5hYnpiZVFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2ZyZXZRYnhoenJhJ109JGVfcWJ4aHpyYS0+ZnJldlFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2duYXR0bnlRYnhoenJhJ109JGVfcWJ4aHpyYS0+Z25hdHRueVFieGh6cmE7DQoNCgkJJHFieGh6cmErKzsNCgkJfQ0KDQoJCSRkX2NyYXRuYXR4aGcgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyT3JhcXJlbg0KCQkJICAsYW56bkNyYXRuYXR4aGcNCgkJCSAgLGFiemJlQ3JhdG5hdHhoZw0KCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCSAgLEVCSl9BSFpPUkUoKSBCSVJFIChCRVFSRSBPTCBvcF9iaGdfdXJucXJlX3ZxKSBuZiBmcmV2Q3JhdG5hdHhoZw0KCQkJICBTRUJaIHFvYi5pdnJqX2NyYXRuYXR4aGcganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJGNyYXRuYXR4aGc9MDsNCgkJc2Jlcm5wdSgkZF9jcmF0bmF0eGhnLT5lcmZoeWcoKSBuZiAkZV9jcmF0bmF0eGhnKXsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxck9yYXFyZW4nXT0kZV9jcmF0bmF0eGhnLT54YnFyT3JhcXJlbjsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYW56bkNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5hbnpuQ3JhdG5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYWJ6YmVDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWyd4YnFyUG5lbk5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnhicXJQbmVuTmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydmcmV2Q3JhdG5hdHhoZyddPSgkZV9jcmF0bmF0eGhnLT5mcmV2Q3JhdG5hdHhoZyk7DQoNCgkJJGNyYXRuYXR4aGcrKzsNCgkJfQ0KCQkNCgkJJGRfb25heCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJPbmF4DQoJCQkgICxmcmV2T25heA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkb25heD0wOw0KCQlzYmVybnB1KCRkX29uYXgtPmVyZmh5ZygpIG5mICRlX29uYXgpew0KCQkJJG5lX29uYXhbJG9uYXhdWyd4YnFyT25heCddPSRlX29uYXgtPnhicXJPbmF4Ow0KCQkJJG5lX29uYXhbJG9uYXhdWydmcmV2T25heCddPSRlX29uYXgtPmZyZXZPbmF4Ow0KDQoJCSRvbmF4Kys7DQoJCX0NCgkJDQoJCSRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsJCQ0KCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCQlGUllSUEcNCgkJCQkJMSBuZiB2cUNoYXRoZ25hLA0KCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJeGJxclNuZnZ5dmduZkduZXZzLA0KCQkJCQlmaHooYXZ5bnZTbmZ2eXZnbmYpIG5mIGF2eW52U25mdnl2Z25mDQoJCQkJU0VCWiBxb2IuaXZyal9nbmV2c09aX3ZhDQoJCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCXRlYmhjIG9sDQoJCQkJCXhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCQl4YnFyU25mdnl2Z25mR25ldnMNCgkJDQoJCQkiKTsNCgkJCQ0KCQkJJGM9MDsNCgkJCQ0KCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlYyl7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsndnFDaGF0aGduYSddPXZhZ2lueSgkZWMtPnZxQ2hhdGhnbmEpOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGVjLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJCQkkbmVfY2hhdGhnbmFbJGNdWydhdnludkNoYXRoZ25hJ109JGVjLT5hdnludlNuZnZ5dmduZjsNCgkJCQkkYysrOw0KCQkJfQ0KCQkNCgkJJGRfeHJmdm5jbmFPbmVuYXQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJICAseGJxcldyYXZmVGhxbmF0DQoJCQkgICxhbnpuQ3ZwDQoJCQkgICxueW56bmcNCgkJCSAgLGFiemJlR3J5Y0N2cA0KCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCSAgLHdoenludVBiYWdudmFyZTQwDQoJCQkgICx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJICAseGJxcldyYXZmQ25lZ0JzDQoJCQkgICxnbmF0dG55Q3hvDQoJCQkgICxqbnhnaEZ2bmNDcmV2eGZuIG5mIGpueGdoRnZuY0NyZXZ4Zm4xDQoJCQkgICxwYmFwbmcoZ25hdHRueUN4bywnRycsIGpueGdoRnZuY0NyZXZ4Zm4sJzowMC4wMDBNJykgbmYgam54Z2hGdm5jQ3Jldnhmbg0KCQkJICAsV3JhdmZPbmVuYXQNCgkJCSAgLFdyYXZmVGhxbmF0DQoJCQkgICxXcmF2ZkNuZWdCcw0KCQkJICAsUG5lbkZnaHNzdmF0DQoJCQkgICx4cmdyZW5hdG5hDQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJIik7DQoNCgkJJHhyZnZuY25hT25lbmF0PTA7DQoJCXNiZXJucHUoJGRfeHJmdm5jbmFPbmVuYXQtPmVyZmh5ZygpIG5mICRlX3hyZnZuY25hT25lbmF0KXsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZPbmVuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmT25lbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZlRocW5hdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZUaHFuYXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYW56bkN2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hbnpuQ3ZwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ255bnpuZyddPSRlX3hyZnZuY25hT25lbmF0LT5ueW56bmc7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYWJ6YmVHcnljQ3ZwJ109JGVfeHJmdm5jbmFPbmVuYXQtPmFiemJlR3J5Y0N2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT55YnhuZnZGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyUG5lbkZnaHNzdmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJQbmVuRmdoc3N2YXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmQ25lZ0JzJ109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2ZkNuZWdCczsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydnbmF0dG55Q3hvJ109JGVfeHJmdm5jbmFPbmVuYXQtPmduYXR0bnlDeG87DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT5qbnhnaEZ2bmNDcmV2eGZuOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTIwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTIwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTQwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTQwOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdCsrOw0KCQl9DQoNCgkJCSRuZWVbJHZdWydyYWd2Z25mJ109JG5lX3JhZ3ZnbmY7DQoJCQkkbmVlWyR2XVsneHJ6bmZuYSddPSRuZV94cnpuZm5hOw0KCQkJJG5lZVskdl1bJ3hiYWdudmFyZSddPSRuZV94YmFnbnZhcmU7DQoJCQkkbmVlWyR2XVsncWJ4aHpyYSddPSRuZV9xYnhoenJhOw0KCQkJJG5lZVskdl1bJ2NyYXRuYXR4aGcnXT0kbmVfY3JhdG5hdHhoZzsNCgkJCSRuZWVbJHZdWydjaGF0aGduYSddPSRuZV9jaGF0aGduYTsNCg0KCQkkdisrOw0KCQl9DQoJDQoNCgkJJG5lZW5sPSAkbmVlWzBdOw0KCQkkcW5nbmFsbj0gd2ZiYV9yYXBicXIoJG5lZW5sKTsNCgkJDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGRywgZ2Vocik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCgkJJHVybnFyZWYgPSBuZWVubCgNCgkJICAgIk5oZ3ViZXZtbmd2YmE6IE9ybmVyZSAkZ2J4cmEiLA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIg0KCQkpOw0KCQkvL3JwdWIgJGdieHJhIC4gIjxvZT4iOyANCgkJLy9pbmVfcWh6YygkdXJucXJlZik7DQoJCS8vcXZyKCk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJCQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHU1ZSWVFGLCAkcW5nbmFsbik7DQoJCS8vcnB1YiAkcW5nbmFsbjsJDQoJCS8vcXZyKCk7DQoNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCgkJDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJDQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KDQoJCSRmZ25naGZfcHJ2Zm4gPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCSRuZmhqID0gdmZmcmcoJGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl0pPyRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdOiduaic7DQoJCXZzKCRuZmhqID09ICduaicpew0KCQkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gPT0gJ0JYJyl7DQoJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJaGNxbmdyIGdveV9vcF9iaGdfdXJucXJlIGZyZyB2cUVyZmNiYSA9IC0xIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwncW5nbkZnbmdoZicgPT4nRmh4ZnJmIScgICkpOw0KCQkJDQoJCQkNCgkJfSByeWZyIHsNCgkJCXZzICh2ZmZyZygkZmduZ2hmX3BydmZuWydmZ25naGYnXSkpew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwncW5nbkZnbmdoZicgPT4nVG50bnkgRnJhcXZhdCEnKSk7DQoJCQl9IHJ5ZnIgew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJyA9PiAiVmFzYmV6bmZ2IiwgJ3pyZmZudHInID0+ICIgSGFxcmUgWm52YWduYXJhcHIgRnJlaXJlICIsJ3FuZ25GZ25naGYnID0+J1NudnlycScgKSApOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJfQ0KCQl9IHJ5ZnIgew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JzAyJyAsJ3pyZmZudHInID0+JG5maGosJ3FuZ25GZ25naGYnID0+J1hiYXJ4ZnYgZ3JlY2hnaGYsIEZ2eW51eG5hIFlidHZhIFBSVkZOIHhyem9ueXYhJyApKTsJCQ0KCQkJcXZyKCk7DQoJCQkNCgkJfQ0KDQoJfQ0KCQ0KCXNoYXBndmJhIHh2ZXZ6X3FuZ25fZ2JfcHJ2Zm5fZ2NvMjUoKXsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZXJkaHJmZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGZnZiA9ICh2ZmZyZygkX0NCRkdbJ2ZnZiddKSAmJiAhcnpjZ2woJF9DQkZHWydmZ2YnXSkpPyRfQ0JGR1snZmdmJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsNCgkJLy8kZ2J4cmEgPSAodmZmcmcoJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJykpICYmICFyemNnbCgkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkpPyRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZmduZ2hmIEd2cW54IFF2Z3J6aHhuYSBQUlZGTiJ9Jyk7IA0KCQkkZ2J4cmEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKTsNCgkJDQoJCS8vJGhleSA9ICJ1Z2djZjovL2F5cnVoby54cnpyYXhyaC50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi9xYnBoenJhZyI7DQoNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkgRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsbmZueVFuZ24NCgkJCQkJICAscG5mZyhuZmhlbmFmdiBuZiBxcnB2em55KDE4LDIpKSBuZiBuZmhlbmFmdg0KCQkJCQkgICxvdm5sbkNyYXRoZW5hdA0KCQkJCQkgICxvdm5sbkduem9udW5hDQoJCQkJCSAgLHBuZmcob2VoZ2IgbmYgcXJwdnpueSgxOCw0KSkgbmYgb2VoZ2INCgkJCQkJICAscG5mZyhwdnMgbmYgcXJwdnpueSgxOCwyKSkgbmYgcHZzDQoJCQkJCSAgLHB2c0VoY3ZudQ0KCQkJCQkgICwnMScgbmYgcXZmcHludnpyZQ0KCQkJCQkgICwnMicgbmYgc3ludFBoZW51DQoJCQkJCSAgLCcyJyBuZiBzeW50WnZ0bmYNCgkJCQkJICAsc3ludElxDQoJCQkJCSAgLHBuZmcoc2JvIG5mIHFycHZ6bnkoMTgsMikpIG5mIHNibw0KCQkJCQkgICxwbmZnKHNlcnZ0dWcgbmYgcXJwdnpueSgxOCwyKSkgbmYgc2VydnR1Zw0KCQkJCQkgICxwbmZnKHVuZXRuQ3JhbHJlbnVuYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkNyYWxyZW51bmENCgkJCQkJICAsUEJBSVJFRyhJTkVQVU5FKDEwKSwgZnJldlJhZ3ZnbmYpIE5GIHZxQ3JhdHRoYW4NCgkJCQkJICAsdnFDcmF0bmF0eGhnDQoJCQkJCSAgLHdub25nbmFHZ3ENCgkJCQkJICAsd2h6eW51WGJhZ252YXJlDQoJCQkJCSAgLHdoenludUduYXFuQ3JhdG56bmEgDQoJCQkJCSAgLHhicXJOZmhlbmFmdg0KCQkJCQkgICx4YnFyUG5lbk9ubG5lDQoJCQkJCSAgLHhicXJQbmVuUW50bmF0DQoJCQkJCSAgLHhicXJRYnhoenJhDQoJCQkJCSAgLHhicXJWYXBiZ3Jleg0KCQkJCQkgICxWRkFIWVkoeGJxcldyYXZmQ2ViZnJxaGUsICcnKSBORiB4YnFyV3JhdmZDZWJmcnFoZQ0KCQkJCQkgICxWRkFIWVkoeGJxcldyYXZmUnhmY2JlLCAnJykgTkYgeGJxcldyYXZmUnhmY2JlDQoJCQkJCSAgLHhicXJXcmF2ZkF2eW52DQoJCQkJCSAgLHZmYWh5eSh4YnFyV3JhdmZHY28sJycpIG5mIHhicXJXcmF2ZkdjbyANCgkJCQkJICAseGJxclhuYWdiZQ0KCQkJCQkgICx4YnFyWG5hZ2JlT2JhdHhuZQ0KCQkJCQkgICx4YnFyWG5hZ2JlUnhmY2JlDQoJCQkJCSAgLHhicXJYbmFnYmUgbmYgeGJxclhuYWdiZVpobmcgDQoJCQkJCSAgLHhicXJYbmFnYmVDcmV2eGZuDQoJCQkJCSAgLHhicXJYbmdydGJldlJ4ZmNiZSANCgkJCQkJICAseGJxclhyYW5DbndueA0KCQkJCQkgICx4YnFyWWJ4bmZ2DQoJCQkJCSAgLCc0JyBuZiB4YnFyWWJ4bmZ2T25sbmUNCgkJCQkJICAsWWJ4bmZ2T25sbmUNCgkJCQkJICAseGJxckFydG5lbkdod2huYQ0KCQkJCQkgICx4YnFyQ3J5T2JhdHhuZSANCgkJCQkJICAseGJxckNyeVJ4ZmNiZQ0KCQkJCQkgICx4YnFyQ3J5WmhuZw0KCQkJCQkgICx4YnFyQ3J5R2VuYWZ2Zw0KCQkJCQkgICx4YnFyQ3J5R2h3aG5hDQoJCQkJCSAgLFZGQUhZWSh4YnFyQ3J6b25sbmUsICcnKSBORiB4YnFyQ3J6b25sbmUNCgkJCQkJICAseGJxckd2Y3JVbmV0bg0KCQkJCQkgICx4YnFyR2h3aG5hQ3JhdHZldnpuYQ0KCQkJCQkgICwwIG5mIHhicXJUaGFuT25lbmF0DQoJCQkJCSAgLHhicXJHY2YNCgkJCQkJICAseGJxcklueWhnbg0KCQkJCQkgICx4YmduR2dxDQoJCQkJCSAgLFJhZ3ZnbmYNCgkJCQkJICAsUmFndmduZjENCgkJCQkJICAsUmFndmduZjINCgkJCQkJICAsUmFndmduZjMNCgkJCQkJICAsUmFndmduZjQNCgkJCQkJICAsYW56bkdncQ0KCQkJCQkgICxwbmZnKGFxY296IG5mIHFycHZ6bnkoMTgsNCkpIG5mIGFxY296DQoJCQkJCSAgLHBuZmcoYXJnZ2IgbmYgcXJwdnpueSgxOCw0KSkgbmYgYXJnZ2INCgkJCQkJICAsYXZ5bnZPbmVuYXQNCgkJCQkJICAsYXZ5bnZWYXBiZ3Jleg0KCQkJCQkgICxwbmZnKGF2eW52Wm54eWJhIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52Wm54eWJhDQoJCQkJCSAgLGF2eW52V25mbg0KCQkJCQkgICxobmF0Wmh4bg0KCQkJCQkgICxFUkNZTlBSKGFiemJlTndoLCAnLScsICcnKSBORiBhYnpiZU53aA0KCQkJCQkgICxhYnpiZU9wMTENCgkJCQkJICAsVkZBSFlZKGNiZk9wMTEsICcnKSBORiBjYmZPcDExDQoJCQkJCSAgLGNyYXRuYXR4aGcNCgkJCQkJICAsZnJldg0KCQkJCQkgICxmcmV2UmFndmduZg0KCQkJCQkgICxmcmV2UmFndmduZjENCgkJCQkJICAsZnJldlJhZ3ZnbmYyDQoJCQkJCSAgLGZyZXZSYWd2Z25mMw0KCQkJCQkgICxmcmV2UmFndmduZjQNCgkJCQkJICAsVkZBSFlZKGZob2NiZk9wMTEsICcnKSBORiBmaG9jYmZPcDExDQoJCQkJCSAgLGZnbmdoZg0KCQkJCQkgICxncnpjbmdGZ2hzc3ZhdA0KCQkJCQkgICxnbmF0dG55TndoDQoJCQkJCSAgLGd0eU54dXZlT3JleW54aA0KCQkJCQkgICxndHlOam55T3JleW54aA0KCQkJCQkgICxnbmF0dG55T3AxMQ0KCQkJCQkgICxnbmF0dG55UW5zZ25lDQoJCQkJCSAgLGduYXR0bnlSeGZjYmUNCgkJCQkJICAsZ25hdHRueUNyZXZ4Zm4NCgkJCQkJICAsZ25hdHRueUdncQ0KCQkJCQkgICxwbmZnKGdiZ255UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGdiZ255UW5hbkZuanZnDQoJCQkJCSAgLHhicXJPcmFxcmVuDQoJCQkJCSAgLCdZdnl2cmYnIE5GIGhmcmVDYmVnbnkNCgkJCQkJICAsaWJ5aHpyDQoJCQkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkJCSAgLGF2eA0KCQkJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCQkJICAsYWJRbnNnbmUNCgkJCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCQkJICAsZnJldkNyYXRuYXR4aGcNCgkJCQkJICAseGJxck9uYXgNCgkJCQkJICAsZnJldk9uYXgNCgkJCQkJICAsd2h6eW51UGJhZ252YXJlDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxclhuYWdiZUdod2huYQ0KCQkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZUaHFuYXQNCgkJCQkJICAseGJxckdod2huYUdjbw0KCQkJCQkgICxhbnpuQ3ZwDQoJCQkJCSAgLG55bnpuZw0KCQkJCQkgICxhYnpiZUdyeWNDdnANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlNDANCgkJCQkJICAsd2h6eW51V3JhdmZPbmVuYXQNCgkJCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkgICx4YnFyV3JhdmZDbmVnQnMNCgkJCQkJICAsZ25hdHRueUN4bw0KCQkJCQkgICxpcQ0KCQkJCQkgICxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSAgLFdyYXZmR2NvDQoJCQkJCSAgLEdod2huYUdjbw0KCQkJCQkgICxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSAgLFBuZW5OYXR4aGcNCgkJCQkJICAsWHJhbkNud254DQoJCQkJCSAgLE5maGVuYWZ2X2d2Y3INCgkJCQkJICAsT25heA0KCQkJCQkgICxZYnhuZnYNCgkJCQkJICAsR2NmDQoJCQkJCSAgLFBuZW5PbmxuZQ0KCQkJCQkgICxQbmVuUW50bmF0DQoJCQkJCSAgLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLFdyYXZmUnhmY2JlDQoJCQkJCSAgLFdyYXZmQXZ5bnYNCgkJCQkJICAsV3JhdmZYcnpuZm5hDQoJCQkJCSAgLFdyYXZmQ2ViZnJxaGUNCgkJCQkJICAsVmFwYmdyZXoNCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJG5lZSA9IG5lZW5sKCk7DQoJCSRuZW8gPSBuZWVubCgpOw0KCQkkbmVvcSA9IG5lZW5sKCk7DQoJCSRuZWcgPSBuZWVubCgpOw0KCQkkbmVpcSA9IG5lZW5sKCk7DQoJCSRuZWZ4ID0gbmVlbmwoKTsNCgkJJG5lb2MgPSBuZWVubCgpOw0KCQkkbmVvbnVuYW9ueGggPSBuZWVubCgpOw0KCQkkbmVvbnVuYW9ueGhfZ2UgPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZiA9IG5lZW5sKCk7DQoJCSRuZV94cnpuZm5hID0gbmVlbmwoKTsNCgkJJG5lX3hiYWdudmFyZSA9IG5lZW5sKCk7DQoJCSRuZV9xYnhoenJhID0gbmVlbmwoKTsNCgkJJG5lX2NyYXRuYXR4aGcgPSBuZWVubCgpOw0KCQkkbmVfb25heCA9IG5lZW5sKCk7DQoJCSRuZV94cmZ2bmNuYU9uZW5hdCA9IG5lZW5sKCk7DQoJCSR2PTA7DQoNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGViaikgew0KCQkJJG5lZVskdl1bJ25mbnlRbmduJ109JGViai0+bmZueVFuZ247DQoJCQkkbmVlWyR2XVsnbmZoZW5hZnYnXT0oc3libmcpJGViai0+bmZoZW5hZnY7DQoJCQkkbmVlWyR2XVsnb3ZubG5DcmF0aGVuYXQnXT0oc3libmcpJGViai0+b3ZubG5DcmF0aGVuYXQ7DQoJCQkkbmVlWyR2XVsnb3ZubG5HbnpvbnVuYSddPShzeWJuZykkZWJqLT5vdm5sbkduem9udW5hOw0KCQkJJG5lZVskdl1bJ29laGdiJ109KHN5Ym5nKSRlYmotPm9laGdiOw0KCQkJJG5lZVskdl1bJ3B2cyddPShzeWJuZykkZWJqLT5wdnM7DQoJCQkkbmVlWyR2XVsncXZmcHludnpyZSddPSRlYmotPnF2ZnB5bnZ6cmU7DQoJCQkkbmVlWyR2XVsnc3ludFBoZW51J109JGViai0+c3ludFBoZW51Ow0KCQkJJG5lZVskdl1bJ3N5bnRadnRuZiddPSRlYmotPnN5bnRadnRuZjsNCgkJCSRuZWVbJHZdWydzYm8nXT0oc3libmcpJGViai0+c2JvOw0KCQkJJG5lZVskdl1bJ3NlcnZ0dWcnXT0oc3libmcpJGViai0+c2VydnR1ZzsNCgkJCSRuZWVbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGViai0+dW5ldG5DcmFscmVudW5hOw0KCQkJJG5lZVskdl1bJ3ZxQ3JhdHRoYW4nXT0kZWJqLT52cUNyYXR0aGFuOw0KCQkJJG5lZVskdl1bJ3dub25nbmFHZ3EnXT0kZWJqLT53bm9uZ25hR2dxOw0KCQkJJG5lZVskdl1bJ3doenludVhiYWdudmFyZSddPSRlYmotPndoenludVhiYWdudmFyZTsNCgkJCSRuZWVbJHZdWyd4YnFyUG5lbk9ubG5lJ109JGViai0+eGJxclBuZW5PbmxuZTsNCgkJCSRuZWVbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkJJG5lZVskdl1bJ3hicXJUaGFuT25lbmF0J109dmFnaW55KCRlYmotPnhicXJUaGFuT25lbmF0KTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQ2ViZnJxaGUnXT0kZWJqLT54YnFyV3JhdmZDZWJmcnFoZTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZHY28nXT0kZWJqLT54YnFyV3JhdmZHY287DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZVpobmcnXT0kZWJqLT54YnFyWG5hZ2JlWmhuZzsNCgkJCSRuZWVbJHZdWyd4YnFyWWJ4bmZ2T25sbmUnXT0kZWJqLT54YnFyWWJ4bmZ2T25sbmU7DQoJCQkkbmVlWyR2XVsneGJxckNyem9ubG5lJ109JGViai0+eGJxckNyem9ubG5lOw0KCQkJJG5lZVskdl1bJ3hicXJHaHdobmFDcmF0dmV2em5hJ109JGViai0+eGJxckdod2huYUNyYXR2ZXZ6bmE7DQoJCQkkbmVlWyR2XVsneGJxcklueWhnbiddPSRlYmotPnhicXJJbnloZ247DQoJCQkkbmVlWyR2XVsneGJnbkdncSddPSRlYmotPnhiZ25HZ3E7DQoJCQkkbmVlWyR2XVsnYW56bkdncSddPSRlYmotPmFuem5HZ3E7DQoJCQkkbmVlWyR2XVsnYXFjb3onXT0oc3libmcpJGViai0+YXFjb3o7DQoJCQkkbmVlWyR2XVsnYXJnZ2InXT0oc3libmcpJGViai0+YXJnZ2I7DQoJCQkkbmVlWyR2XVsnYXZ5bnZPbmVuYXQnXT0oc3libmcpJGViai0+YXZ5bnZPbmVuYXQ7DQoJCQkkbmVlWyR2XVsnYXZ5bnZabnh5YmEnXT0oc3libmcpJGViai0+YXZ5bnZabnh5YmE7DQoJCQkkbmVlWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJCSRuZWVbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJCSRuZWVbJHZdWydmcmV2J109JGViai0+ZnJldjsNCgkJCSRuZWVbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJCSRuZWVbJHZdWydnbmF0dG55R2dxJ109JGViai0+Z25hdHRueUdncTsNCgkJCSRuZWVbJHZdWydoZnJlQ2JlZ255J109JGViai0+aGZyZUNiZWdueTsNCgkJCSRuZWVbJHZdWydpYnloenInXT0oc3libmcpJGViai0+aWJ5aHpyOw0KDQoJCQkkZG8gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCUZSWVJQRyBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkgICx2cU9uZW5hdA0KCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsbmZoZW5hZnYNCgkJCSAgLG9laGdiDQoJCQkgICxwdnMNCgkJCSAgLHB2c0VoY3ZudQ0KCQkJICAscXZmeGJhDQoJCQkgICxzYm8NCgkJCSAgLHNlcnZ0dWcNCgkJCSAgLHVuZXRuUnhmY2JlDQoJCQkgICx1bmV0bkNuZ2J4bmENCgkJCSAgLHBuZmcodW5ldG5DcmVieXJ1bmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5DcmVieXJ1bmENCgkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJICAsdmZ2Q3JlWHJ6bmZuYQ0KCQkJICAseGJxck5mbnlPbmVuYXQNCgkJCSAgLHdoenludU5mbnlPbnVuYU9ueGgNCgkJCSAgLHdoenludVhyem5mbmENCgkJCSAgLHdoenludUZuZ2huYSANCgkJCSAgLHhicXJOZm55T251bmFPbnhoDQoJCQkgICx4YnFyT25lbmF0DQoJCQkgICx4YnFyUW5yZW51TmZueQ0KCQkJICAsYWJ6YmVfdmFpYnZwciBuZiB4YnFyUWJ4aHpyYSANCgkJCSAgLHZmYWh5eSh4YnFyUWJ4TmZueSwnJykgbmYgeGJxclFieE5mbnkNCgkJCSAgLCcwJyBuZiB4YnFyVGhhbk9uZW5hdA0KCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJICAsdmZhaHl5KHhicXJYbmdydGJldk9uZW5hdCwgJycpIG5mIHhicXJYbmdydGJldk9uZW5hdA0KCQkJICAsJzEnIG5mIHhicXJYYmFxdmZ2T25lbmF0DQoJCQkgICx4YnFyQXJ0bmVuTmZueQ0KCQkJICAsdmZhaHl5KHhicXJDcmV1dmdoYXRuYSwnMCcpIG5mIHhicXJDcmV1dmdoYXRuYQ0KCQkJICAseGJxckZuZ2huYU9uZW5hdA0KCQkJICAsenJleA0KCQkJICAsYXFjb3oNCgkJCSAgLGFyZ2diDQoJCQkgICxwbmZnKGF2eW52T25lbmF0IG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52T25lbmF0DQoJCQkgICxwbmZnKGF2eW52UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52UW5hbkZuanZnDQoJCQkgICxhdnludlduZm4NCgkJCSAgLGF2eW52R256b251DQoJCQkgICxjYmZHbmV2cw0KCQkJICAsZnJldk9uZW5hdA0KCQkJICAsZmNyZnZzdnhuZnZZbnZhDQoJCQkgICxndmNyDQoJCQkgICxobmF0Wmh4bg0KCQkJICAsaHhoZW5hDQoJCQkgICxoZW52bmENCgkJCSAgLGlieWh6cg0KCQkJICAsZnJldlFieGh6cmENCgkJCSAgLGZyZXZSYWd2Z25mDQoJCQkgICxwbmduZ25hDQoJCQkgICxBcnRuZW5OZm55X3FneQ0KCQkJICAsTmZueU9udW5hT254aF9xZ3kNCgkJCSAgLENyZXV2Z2hhdG5hX3FneQ0KCQkJICAsWG5ncnRiZXZPbmVuYXQNCgkJCSAgLE5mbnlPbmVuYXQNCgkJCSAgLE5mbnlPbnVuYU9ueGgNCgkJCSAgLHdoenludU9udW5hT254aA0KCQkJICAsd2h6eW51UXZ5cnhuZ3huYQ0KCQkJICAsd2h6eW51Q3ZnblBoeG52DQoJCQkgICx3aHp5bnVFcm55dmZuZnYNCgkJCSAgLHhuY25mdmduZkZ2eXZhcXJlDQoJCQkgICxhdnludlFyaXZmbg0KCQkJICAsVkZBSFlZKGF2eW52T25lbmF0SXEsMCkgTkYgYXZ5bnZPbmVuYXRJcQ0KCQkJICAsY3JlYWxuZ25uYVluZWduZg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZklxLCAnJykgTkYgeGJxcldyYXZmSXENCgkJCSAgLGZyZXZWd3ZhDQoJCQkgICxnbmV2c1BoeG52DQoJCQkgICxDcmV1dmdoYXRuYQ0KCQkJICAsWHJhbkNud254DQoJCQkgICx1d3JQaHhudg0KCQkJICAsZnJldk9uZW5hdFFieE5mbnkNCgkJCSAgLGZyZXZPbmVuYXQgTkYgZnJldk9uZW5hdENyenZ5dngNCgkJCSAgLHBlcm5ncl9xbmdyDQoJCQkgICxwZXJuZ3Jfb2wNCgkJCSAgLHpicXZzbF9xbmdyDQoJCQkgICx6YnF2c2xfb2wNCgkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSBiZXFyZSBvbCBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkiKTsNCgkJCQ0KCQkJJG89MDsNCgkJCXNiZXJucHUoJGRvLT5lcmZoeWcoKSBuZiAkZW8pew0KCQkJCSRuZW9bJG9dWydvZWhnYiddPShzeWJuZykkZW8tPm9laGdiOw0KCQkJCSRuZW9bJG9dWydwdnMnXT0oc3libmcpJGVvLT5wdnM7DQoJCQkJJG5lb1skb11bJ3B2c0VoY3ZudSddPShzeWJuZykkZW8tPnB2c0VoY3ZudTsNCgkJCQkkbmVvWyRvXVsncXZmeGJhJ109KHN5Ym5nKSRlby0+cXZmeGJhOw0KCQkJCSRuZW9bJG9dWydzZXJ2dHVnJ109KHN5Ym5nKSRlby0+c2VydnR1ZzsNCgkJCQkkbmVvWyRvXVsnc2JvJ109KHN5Ym5nKSRlby0+c2JvOw0KCQkJCSRuZW9bJG9dWyd1bmV0blJ4ZmNiZSddPShzeWJuZykkZW8tPnVuZXRuUnhmY2JlOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNuZ2J4bmEnXT0oc3libmcpJGVvLT51bmV0bkNuZ2J4bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuQ3JlYnlydW5hJ109KHN5Ym5nKSRlby0+dW5ldG5DcmVieXJ1bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuQ3JhbHJlbnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkkbmVvWyRvXVsndW5ldG5GbmdobmEnXT0oc3libmcpJGVvLT51bmV0bkZuZ2huYTsNCgkJCQkkbmVvWyRvXVsndmZ2Q3JlWHJ6bmZuYSddPShzeWJuZykkZW8tPnZmdkNyZVhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3doenludVhyem5mbmEnXT0kZW8tPndoenludVhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3doenludUZuZ2huYSddPShzeWJuZykkZW8tPndoenludUZuZ2huYTsNCgkJCQkkbmVvWyRvXVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZW8tPnhicXJOZm55T251bmFPbnhoOw0KCQkJCSRuZW9bJG9dWyd4YnFyT25lbmF0J109JGVvLT54YnFyT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUW5yZW51TmZueSddPSRlby0+eGJxclFucmVudU5mbnk7DQoJCQkJJG5lb1skb11bJ3hicXJRYnhoenJhJ109JGVvLT54YnFyUWJ4aHpyYTsNCgkJCQkkbmVvWyRvXVsneGJxclFieE5mbnknXT0kZW8tPnhicXJRYnhOZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyVGhhbk9uZW5hdCddPSRlby0+eGJxclRoYW5PbmVuYXQ7DQoJCQkJJG5lb1skb11bJ3hicXJXcmF2Zlhyem5mbmEnXT0kZW8tPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3hicXJYbmdydGJldk9uZW5hdCddPSRlby0+eGJxclhuZ3J0YmV2T25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyWGJhcXZmdk9uZW5hdCddPSRlby0+eGJxclhiYXF2ZnZPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ3hicXJBcnRuZW5OZm55J109JGVvLT54YnFyQXJ0bmVuTmZueTsNCgkJCQkkbmVvWyRvXVsneGJxckNyZXV2Z2hhdG5hJ109JGVvLT54YnFyQ3JldXZnaGF0bmE7DQoJCQkJJG5lb1skb11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZW8tPnhicXJGbmdobmFPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ3pyZXgnXT0kZW8tPnpyZXg7DQoJCQkJJG5lb1skb11bJ2FxY296J109KHN5Ym5nKSRlby0+YXFjb3o7DQoJCQkJJG5lb1skb11bJ2FyZ2diJ109KHN5Ym5nKSRlby0+YXJnZ2I7DQoJCQkJJG5lb1skb11bJ2F2eW52T25lbmF0J109KHN5Ym5nKSRlby0+YXZ5bnZPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ2F2eW52UW5hbkZuanZnJ109KHN5Ym5nKSRlby0+YXZ5bnZRbmFuRm5qdmc7DQoJCQkJJG5lb1skb11bJ2NiZkduZXZzJ109JGVvLT5jYmZHbmV2czsNCgkJCQkkbmVvWyRvXVsnZnJldk9uZW5hdCddPSRlby0+ZnJldk9uZW5hdDsNCgkJCQkkbmVvWyRvXVsnZmNyZnZzdnhuZnZZbnZhJ109JGVvLT5mY3JmdnN2eG5mdlludmE7DQoJCQkJJG5lb1skb11bJ2d2Y3InXT0kZW8tPmd2Y3I7DQoJCQkJJG5lb1skb11bJ2h4aGVuYSddPSRlby0+aHhoZW5hOw0KCQkJCSRuZW9bJG9dWydoZW52bmEnXT0kZW8tPmhlbnZuYTsNCgkJCQkkbmVvWyRvXVsnaWJ5aHpyJ109KHN5Ym5nKSRlby0+aWJ5aHpyOw0KDQoJCQkJLyogJGRvcSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyANCgkJCQkJb3BfYmhnX3FyZ252eV92cQ0KCQkJCQksZnJldlFieGh6cmENCg0KCQkJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb3E9MDsNCgkJCQlzYmVybnB1KCRkb3EtPmVyZmh5ZygpIG5mICRlb3Epew0KCQkJCQkkbmVvcVskb3FdWydmcmV2UWJ4aHpyYSddPSRlb3EtPmZyZXZRYnhoenJhOw0KCQkJCQkNCgkJCQkkb3ErKzsNCgkJCQl9ICovDQoJCQkJDQoJCQkJJGRvYyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyAgb3BfYmhnX3FyZ252eV92cQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLGZyZXZPbmVuYXQNCgkJCQkJICAsRUJKX0FIWk9SRSgpIEJJUkUgKEJFUVJFIE9MIG9wX2JoZ191cm5xcmVfdnEpIG5mIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkJCSAgLDIgbmYgZnJldlJhZ3ZnbmYNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJCSIpOw0KDQoJCQkJJG9jPTA7DQoJCQkJc2Jlcm5wdSgkZG9jLT5lcmZoeWcoKSBuZiAkZW9jKXsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldk9uZW5hdCddPSRlb2MtPmZyZXZPbmVuYXQ7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZPbmVuYXRDcnp2eXZ4J109JGVvYy0+ZnJldk9uZW5hdENyenZ5dng7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZSYWd2Z25mJ109JGVvYy0+ZnJldlJhZ3ZnbmY7DQoNCgkJCQkkb2MrKzsNCgkJCQl9DQoJCQkJDQoJCQkJJG5lZyA9IG5lZW5sKCk7DQoJCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7DQoJCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQkJeGJxclFieGh6cmEsDQoJCQkJCQl4YnFyV3JhdmZHbmV2cywNCgkJCQkJCXdoenludUZuZ2huYSwNCgkJCQkJCXhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJCXhicXJGbmdobmFPbmVuYXQsDQoJCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJCWF2eW52T25sbmUsDQoJCQkJCQlhdnludlNuZnZ5dmduZiwNCgkJCQkJCWF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJCWZyZXZPbmVuYXQsDQoJCQkJCQlHTkVWU19PWiwNCgkJCQkJCWduZXZzU25mdnl2Z25mDQoJCQkJCSAgU0VCWiBpdnJqX29uZW5hdF9nbmV2c19jY2Ffb3AyNSBrDQoJCQkJCWp1cmVyIGsub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBrLm9wX2JoZ19xcmdudnlfdnE9JG9wX2JoZ19xcmdudnlfdnENCg0KCQkJCSIpOw0KDQoJCQkJJGc9MDsNCg0KCQkJCXNiZXJucHUoJGRnLT5lcmZoeWcoKSBuZiAkZWcpew0KCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJJG5lZ1skZ11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlZy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmR25ldnMnXT0kZWctPnhicXJXcmF2ZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxckZuZ2huYU9uZW5hdCddPSRlZy0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkJJG5lZ1skZ11bJ2F2eW52T25sbmUnXT0oc3libmcpJGVnLT5hdnludk9ubG5lOw0KCQkJCQkkbmVnWyRnXVsnYXZ5bnZTbmZ2eXZnbmYnXT0oc3libmcpJGVnLT5hdnludlNuZnZ5dmduZjsNCgkJCQkJJG5lZ1skZ11bJ2F2eW52RmhxbnVRdnloYW5mdiddPShzeWJuZykkZWctPmF2eW52RmhxbnVRdnloYW5mdjsNCgkJCQkJJG5lZ1skZ11bJ2ZyZXZPbmVuYXQnXT12YWdpbnkoJGVnLT5mcmV2T25lbmF0KTsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+R05FVlNfT1o7DQoJCQkJCSRuZWdbJGddWydnbmV2c1NuZnZ5dmduZiddPShzeWJuZykkZWctPmduZXZzU25mdnl2Z25mOw0KDQoJCQkJJGcrKzsNCgkJCQl9DQoNCgkJCQkkbmVvbnVuYW9ueGggPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkb28gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgb3BfYmhnX3FyZ252eV92cQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLG9wX3ZhX3FyZ252eV92cQ0KCQkJCQkgICxvcF92YV91cm5xcmVfdnENCgkJCQkJICAsdnFPbmVuYXQNCgkJCQkJICAsdnFXbnp2YW5hDQoJCQkJCSAgLHB2cw0KCQkJCQkgICxwdnNFaGN2bnUNCgkJCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCQkJICAsdW5ldG5DcmVieXJ1bmENCgkJCQkJICAsd2h6eW51Rm5naG5hDQoJCQkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAsUE5GUg0KCQkJCQkJSlVSQSAoICggeGJxclFieE5mbnkgPD4gMjMgKSApIEdVUkENCgkJCQkJCScxJyBSWUZSICcwJyANCgkJCQkJCVJBUSBORiB4YnFyTmZueU9udW5hT254aA0KCQkJCQkgICxOZm55T251bmFPbnhoDQoJCQkJCSAgLHhicXJPbmVuYXQNCgkJCQkJICAseGJxck9uZW5hdE5mbnkNCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclFieE5mbnkNCgkJCQkJICAsSEVOVk5BX1FCWEhaUkENCgkJCQkJICAseGJxclhuYWdiZQ0KCQkJCQkgICx6cmV4T25lbmF0DQoJCQkJCSAgLGFxY296DQoJCQkJCSAgLGFiemJlTndoUWJ4TmZueQ0KCQkJCQkgICxhYnpiZVFuc2duZVFieE5mbnkNCgkJCQkJICAsY2JmR25ldnMNCgkJCQkJICAsZnJldk9udW5hT254aA0KCQkJCQkgICxmcmV2T251bmFPbnhoR25ldnMNCgkJCQkJICAsZnJldk9uZW5hdA0KCQkJCQkgICxmcmV2T25lbmF0UWJ4TmZueQ0KCQkJCQkgICxmcmV2Vnd2YQ0KCQkJCQkgICxmY3JmdnN2eG5mdlludmFPbmVuYXQNCgkJCQkJICAsZ25hdHRueVFuc2duZVFieE5mbnkNCgkJCQkJICAsZ25hdHRueU53aFFieE5mbnkNCgkJCQkJICAsVkZBSFlZKGd2Y3JPbmVuYXQsJycpIE5GIGd2Y3JPbmVuYXQNCgkJCQkJICAsVkZBSFlZKGh4aGVuYU9uZW5hdCwnJykgTkYgaHhoZW5hT25lbmF0DQoJCQkJCSAgLGhlbnZuYU9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZHbmV2cw0KCQkJCQkgICx3aHp5bnVGbmdobmFHbmV2cw0KCQkJCQkgICx4YnFyU25mdnl2Z25mR25ldnMNCgkJCQkJICAseGJxcldyYXZmQ2hhdGhnbmENCgkJCQkJICAsYXJnZ2INCgkJCQkJICAsYXZ5bnZPbmxuZQ0KCQkJCQkgICxhdnludlduZm4NCgkJCQkJICAsYXZ5bnZTbmZ2eXZnbmYNCgkJCQkJICAsYXZ5bnZGaHFudVF2eWhhbmZ2DQoJCQkJCSAgLGduZXZzDQoJCQkJCSAgLGduZXZzU25mdnl2Z25mDQoJCQkJCSAgLHBuZ25nbmENCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuaXZyal9xbmduX29udW5hT254aA0KCQkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIG9wX2JoZ19xcmdudnlfdnEgPSAkb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb289MDsNCg0KCQkJCXNiZXJucHUoJGRvby0+ZXJmaHlnKCkgbmYgJGVvbnVuYW9ueGgpew0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZnJldk9uZW5hdCddPXZhZ2lueSgkZW9udW5hb254aC0+ZnJldk9uZW5hdCk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydjYmZHbmV2cyddPSRlb251bmFvbnhoLT5jYmZHbmV2czsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2hlbnZuYU9uZW5hdCddPSRlb251bmFvbnhoLT5oZW52bmFPbmVuYXQ7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkZuZ2huYSddPShzeWJuZykkZW9udW5hb254aC0+dW5ldG5GbmdobmE7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPndoenludUZuZ2huYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZW9udW5hb254aC0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3B2cyddPShzeWJuZykkZW9udW5hb254aC0+cHZzOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsncHZzRWhjdm51J109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnNFaGN2bnU7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3VuZXRuQ3JlYnlydW5hJ109KHN5Ym5nKSRlb251bmFvbnhoLT51bmV0bkNyZWJ5cnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPnhicXJOZm55T251bmFPbnhoOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxck9uZW5hdCddPSRlb251bmFvbnhoLT54YnFyT25lbmF0Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxclFieE5mbnknXT0kZW9udW5hb254aC0+eGJxclFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd4YnFyUWJ4aHpyYSddPSRlb251bmFvbnhoLT54YnFyUWJ4aHpyYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJYbmFnYmUnXT0kZW9udW5hb254aC0+eGJxclhuYWdiZTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3pyZXhPbmVuYXQnXT0kZW9udW5hb254aC0+enJleE9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FxY296J109KHN5Ym5nKSRlb251bmFvbnhoLT5hcWNvejsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FyZ2diJ109KHN5Ym5nKSRlb251bmFvbnhoLT5hcmdnYjsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2F2eW52V25mbiddPShzeWJuZykkZW9udW5hb254aC0+YXZ5bnZXbmZuOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnYWJ6YmVOd2hRYnhOZm55J109JGVvbnVuYW9ueGgtPmFiemJlTndoUWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPmZyZXZPbnVuYU9ueGg7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T25lbmF0UWJ4TmZueSddPSRlb251bmFvbnhoLT5mcmV2T25lbmF0UWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2ZyZXZWd3ZhJ109JGVvbnVuYW9ueGgtPmZyZXZWd3ZhOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZmNyZnZzdnhuZnZZbnZhT25lbmF0J109JGVvbnVuYW9ueGgtPmZjcmZ2c3Z4bmZ2WW52YU9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2duYXR0bnlRbnNnbmVRYnhOZm55J109JGVvbnVuYW9ueGgtPmduYXR0bnlRbnNnbmVRYnhOZm55Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZ3Zjck9uZW5hdCddPSRlb251bmFvbnhoLT5ndmNyT25lbmF0Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnaHhoZW5hT25lbmF0J109JGVvbnVuYW9ueGgtPmh4aGVuYU9uZW5hdDsNCgkJCQkJDQoJCQkJCSRuZW9udW5hb254aF9nZSA9IG5lZW5sKCk7DQoJCQkJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsJCQ0KCQkJCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJCQkNCgkJCQkJCQlGUllSUEcNCgkJCQkJCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCQkJCQkJb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJCQkJZnJldk9uZW5hdCwNCgkJCQkJCQkJJ09aJyBORiB4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJCQlQTkZSDQoJCQkJCQkJCQkNCgkJCQkJCQkJCUpVUkEgKCAoIGsueGJxclFieE5mbnkgPD4gMjMgKSApIEdVUkENCgkJCQkJCQkJCScxJyBSWUZSICcwJyANCgkJCQkJCQkJUkFRIE5GIHhicXJOZm55T251bmFPbnhoLA0KCQkJCQkJCQknMycgTkYgeGJxclNuZnZ5dmduZkduZXZzLA0KCQkJCQkJCQkwIE5GIGF2eW52T25sbmUsDQoJCQkJCQkJCTEwMCBORiBhdnludlNuZnZ5dmduZiwNCgkJCQkJCQkJMCBORiBhdnludkZocW51UXZ5aGFuZnYsDQoJCQkJCQkJCXZmYWh5eSggbC5HTkVWU19PWiwgJzAnICkgTkYgZ25ldnMsDQoJCQkJCQkJCTEwMCBORiBnbmV2c1NuZnZ5dmduZiwNCgkJCQkJCQkJdmZhaHl5KCB3aHp5bnVGbmdobmEsIDAgKSBORiB3aHp5bnVGbmdobmEsDQoJCQkJCQkJCScxJyBORiB4YnFyV3JhdmZHbmV2cywNCgkJCQkJCQkJdmZhaHl5KCB4YnFyRm5naG5hT25lbmF0LCAnQ1BSJyApIE5GIHhicXJGbmdobmFPbmVuYXQsDQoJCQkJCQkJCUVCSl9BSFpPUkUgKCApIEJJUkUgKCBCRVFSRSBPTCBvcF9iaGdfcXJnbnZ5X3ZxICkgTkYgZnJldk9udW5hT254aCANCgkJCQkJCQlTRUJaDQoJCQkJCQkJCXFvYi5pdnJqX3FuZ25fb251bmFPbnhoIGsNCgkJCQkJCQkJWVJTRyBXQlZBIGVyc3JlcmFmdl9jYmZfZ25ldnMgbCBCQSBrLmNiZkduZXZzID0gbC5BQlpCRV9VRg0KCQkJCQkJCQlqdXJlciBrLm9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgay5vcF9iaGdfcXJnbnZ5X3ZxID0gJG9wX2JoZ19xcmdudnlfdnENCgkJCQkJDQoJCQkJCQkiKTsNCgkJCQkJCQ0KCQkJCQkJJGc9MDsNCgkJCQkJCQ0KCQkJCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlZyl7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJCQkkbmVvbnVuYW9ueGhfZ2VbJGddWyd4YnFyTmZueU9udW5hT254aCddPSRlZy0+eGJxck5mbnlPbnVuYU9ueGg7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsneGJxclNuZnZ5dmduZkduZXZzJ109JGVnLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ3hicXJXcmF2ZkduZXZzJ109JGVnLT54YnFyV3JhdmZHbmV2czsNCgkJCQkJCQkkbmVvbnVuYW9ueGhfZ2VbJGddWyd4YnFyRm5naG5hT25lbmF0J109JGVnLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2F2eW52T25sbmUnXT0oc3libmcpJGVnLT5hdnludk9ubG5lOw0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2F2eW52U25mdnl2Z25mJ109KHN5Ym5nKSRlZy0+YXZ5bnZTbmZ2eXZnbmY7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnYXZ5bnZGaHFudVF2eWhhbmZ2J109KHN5Ym5nKSRlZy0+YXZ5bnZGaHFudVF2eWhhbmZ2Ow0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2ZyZXZPbmVuYXQnXT0kZWctPmZyZXZPbmVuYXQ7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnZnJldk9udW5hT254aCddPXZhZ2lueSgkZWctPmZyZXZPbnVuYU9ueGgpOw0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+Z25ldnM7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnZ25ldnNTbmZ2eXZnbmYnXT0oc3libmcpJGVnLT5nbmV2c1NuZnZ5dmduZjsNCgkJCQkJCQ0KCQkJCQkJCSRnKys7DQoJCQkJCQl9DQoJCQkJCQkNCgkJCQkJCSRuZW9udW5hb254aFskb29dWydvbnVuYU9ueGhHbmV2cyddPSRuZW9udW5hb254aF9nZTsNCg0KCQkJCQkkb28rKzsJDQoJCQkJfQ0KDQoJCQkNCgkJCQkvLyRuZW9bJG9dWydvbnVuYU9ueGgnXT0kbmVfb251bmFPbnhoOw0KCQkJCSRuZW9bJG9dWydvbnVuYU9ueGgnXT0kbmVvbnVuYW9ueGg7DQoJCQkJJG5lb1skb11bJ29uZW5hdFFieGh6cmEnXT0kbmVvcTsNCgkJCQkkbmVvWyRvXVsnb25lbmF0Q3J6dnl2eCddPSRuZW9jOw0KCQkJCSRuZW9bJG9dWydvbmVuYXRHbmV2cyddPSRuZWc7DQoJCQkJDQoNCgkJCQkkbysrOw0KDQoJCQkJfQ0KDQoNCgkJCSRuZWVbJHZdWydvbmVuYXQnXT0kbmVvOw0KDQoJCSRkcnYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLFZGQUhZWShueW56bmdSYWd2Z25mLCAnJykgTkYgbnluem5nUmFndmduZg0KCQkJICAsdmF2ZnZueVJhZ3ZnbmYNCgkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIHhicXJSYWd2Z25mKSBORiB4YnFyUmFndmduZg0KCQkJICAsVkZBSFlZKHhicXJXcmF2Zk5jdiwgJycpIE5GIHhicXJXcmF2Zk5jdg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZlZxcmFndmduZiwgJzUnKSBORiB4YnFyV3JhdmZWcXJhZ3ZnbmYNCgkJCSAgLFZGQUhZWSh4YnFyQXJ0bmVuLCAnJykgTkYgeGJxckFydG5lbg0KCQkJICAsVkZBSFlZKHhicXJGZ25naGYsICcnKSBORiB4YnFyRmduZ2hmDQoJCQkgICxWRkFIWVkoYW56blJhZ3ZnbmYsICcnKSBORiBhbnpuUmFndmduZg0KCQkJICAsVkZBSFlZKGF2b1JhZ3ZnbmYsICcnKSBORiBhdm9SYWd2Z25mDQoJCQkgICwnMTIzNDU2JyBORiBhdmNyZVJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhYnpiZVZxcmFndmduZiwgJycpIE5GIGFiemJlVnFyYWd2Z25mDQoJCQkgICxWRkFIWVkoYWJ6YmVWd3ZhUmFndmduZiwgJycpIE5GIGFiemJlVnd2YVJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShnbmF0dG55Vnd2YVJhZ3ZnbmYsICcnKSBORiBnbmF0dG55Vnd2YVJhZ3ZnbmYNCgkJCSAgLGZyZXZSYWd2Z25mDQoJCSAgU0VCWiBxb2IuaXZyal9yYWd2Z25mX3JrYyBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIHhicXJSYWd2Z25mIDw+IDIgDQoJCQlCRVFSRSBPTCBmcmV2UmFndmduZg0KDQoJCSIpOw0KDQoJCSRydj0wOw0KCQlzYmVybnB1KCRkcnYtPmVyZmh5ZygpIG5mICRlcnYpew0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnbnluem5nUmFndmduZiddPSRlcnYtPm55bnpuZ1JhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyUmFndmduZiddPSRlcnYtPnhicXJSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxcldyYXZmTmN2J109JGVydi0+eGJxcldyYXZmTmN2Ow0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxcldyYXZmVnFyYWd2Z25mJ109JGVydi0+eGJxcldyYXZmVnFyYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxckFydG5lbiddPSRlcnYtPnhicXJBcnRuZW47DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyRmduZ2hmJ109JGVydi0+eGJxckZnbmdoZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2Fuem5SYWd2Z25mJ109JGVydi0+YW56blJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhdm9SYWd2Z25mJ109JGVydi0+YXZvUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2F2Y3JlUmFndmduZiddPSRlcnYtPmF2Y3JlUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2FiemJlVnFyYWd2Z25mJ109JGVydi0+YWJ6YmVWcXJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhYnpiZVZ3dmFSYWd2Z25mJ109JGVydi0+YWJ6YmVWd3ZhUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2duYXR0bnlWd3ZhUmFndmduZiddPSRlcnYtPmduYXR0bnlWd3ZhUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2ZyZXZSYWd2Z25mJ109dmFnaW55KCRlcnYtPmZyZXZSYWd2Z25mKTsNCg0KCQkkcnYrKzsNCgkJfQ0KCQkNCgkJJGRfeHJ6bmZuYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJICAsZnJldlhyem5mbmENCgkJCQkgICx6cmV4WHJ6bmZuYQ0KCQkJICBTRUJaIHFvYi5pdnJqX3FuZ25feHJ6bmZuYSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkeHJ6bmZuYT0wOw0KCQlzYmVybnB1KCRkX3hyem5mbmEtPmVyZmh5ZygpIG5mICRlX3hyem5mbmEpew0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWyd3aHp5bnVYcnpuZm5hJ109dmFnaW55KCRlX3hyem5mbmEtPndoenludVhyem5mbmEpOw0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWyd4YnFyV3JhdmZYcnpuZm5hJ109JGVfeHJ6bmZuYS0+eGJxcldyYXZmWHJ6bmZuYTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnenJleFhyem5mbmEnXT0kZV94cnpuZm5hLT56cmV4WHJ6bmZuYTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnZnJldlhyem5mbmEnXT12YWdpbnkoJGVfeHJ6bmZuYS0+ZnJldlhyem5mbmEpOw0KDQoJCSR4cnpuZm5hKys7DQoJCX0NCg0KCQkvKiAkZF94YmFnbnZhcmUgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJXcmF2ZlhiYWdudmFyZQ0KCQkJICAseGJxckd2Y3JYYmFnbnZhcmUNCgkJCSAgLHhicXJIeGhlbmFYYmFnbnZhcmUNCgkJCSAgLGFiemJlWGJhZ252YXJlDQoJCQkgICxmcmV2WGJhZ252YXJlDQoJCQlTRUJaIHFvYi5nb3lfb3BfYmhnX3hiYWdudmFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkeGJhZ252YXJlPTA7DQoJCXNiZXJucHUoJGRfeGJhZ252YXJlLT5lcmZoeWcoKSBuZiAkZV94YmFnbnZhcmUpew0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxcldyYXZmWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT54YnFyV3JhdmZYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWyd4YnFyR3ZjclhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxckd2Y3JYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWyd4YnFySHhoZW5hWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT54YnFySHhoZW5hWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsnYWJ6YmVYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPmFiemJlWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsnZnJldlhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+ZnJldlhiYWdudmFyZTsNCg0KCQkkeGJhZ252YXJlKys7DQoJCX0gKi8NCg0KDQoJCS8qICRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsJCQ0KCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCQlGUllSUEcNCgkJCQkJMSBuZiB2cUNoYXRoZ25hLA0KCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQlvcF9iaGdfdXJucXJlX3ZxLA0KCQkJCQlmcmV2T25lbmF0LA0KCQkJCQknT1onIE5GIHhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCVBORlINCgkJCQkJSlVSQSAoICggay54YnFyUWJ4TmZueSA8PiAyMyApICkgR1VSQQ0KCQkJCQknMScgUllGUiAnMCcgDQoJCQkJCVJBUSBORiB4YnFyTmZueU9udW5hT254aCwNCgkJCQkJJzMnIE5GIHhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJMCBORiBhdnludk9ubG5lLA0KCQkJCQkxMDAgTkYgYXZ5bnZTbmZ2eXZnbmYsDQoJCQkJCTAgTkYgYXZ5bnZGaHFudVF2eWhhbmZ2LA0KCQkJCQl2ZmFoeXkoIGwuR05FVlNfT1osICcwJyApIE5GIGduZXZzLA0KCQkJCQkxMDAgTkYgZ25ldnNTbmZ2eXZnbmYsDQoJCQkJCXZmYWh5eSggd2h6eW51Rm5naG5hLCAwICkgTkYgd2h6eW51Rm5naG5hLA0KCQkJCQknMScgTkYgeGJxcldyYXZmR25ldnMsDQoJCQkJCXZmYWh5eSggeGJxckZuZ2huYU9uZW5hdCwgJ0NQUicgKSBORiB4YnFyRm5naG5hT25lbmF0LA0KCQkJCQlFQkpfQUhaT1JFICggKSBCSVJFICggQkVRUkUgT0wgb3BfYmhnX3FyZ252eV92cSApIE5GIGZyZXZPbnVuYU9ueGggDQoJCQkJU0VCWiBxb2IuaXZyal9xbmduX29udW5hT254aCBrDQoJCQkJWVJTRyBXQlZBIGVyc3JlcmFmdl9jYmZfZ25ldnMgbCBCQSBrLmNiZkduZXZzID0gbC5BQlpCRV9VRg0KCQkJCQlqdXJlciBrLm9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkNCgkJCSIpOw0KCQkJDQoJCQkkYz0wOw0KCQkJDQoJCQlzYmVybnB1KCRkZy0+ZXJmaHlnKCkgbmYgJGVjKXsNCgkJCQkkbmVfY2hhdGhnbmFbJGNdWyd2cUNoYXRoZ25hJ109dmFnaW55KCRlYy0+dnFDaGF0aGduYSk7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsneGJxclNuZnZ5dmduZkduZXZzJ109JGVjLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWMtPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ2F2eW52Q2hhdGhnbmEnXT0kZWMtPmF2eW52Q2hhdGhnbmE7DQoJCQkJJGMrKzsNCgkJCX0gKi8NCg0KDQoJCSRkX3FieGh6cmEgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfcWJ4aHpyYV92cSBuZiB2cVFieGh6cmENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCSAgLHhicXJRYnhoenJhDQoJCQkgICxWRkFIWVkoeGJxclNuZnZ5dmduZiwgJycpIE5GIHhicXJTbmZ2eXZnbmYNCgkJCSAgLHhicXJWd3ZhDQoJCQkgICx3cmF2ZlFieGh6cmENCgkJCSAgLFZGQUhZWShhbnpuU25mdnl2Z25mLCAnJykgTkYgYW56blNuZnZ5dmduZg0KCQkJICAsYWJ6YmVRYnhoenJhDQoJCQkgICxmcmV2UWJ4aHpyYQ0KCQkJICAsZ25hdHRueVFieGh6cmENCgkJCSAgLGhleVFieGh6cmENCgkJCSAgLHhyZ3JlbmF0bmENCgkJCSAgLHBlcm5ncl9xbmdyDQoJCQkgICxwZXJuZ3Jfb2wNCgkJCSAgLHpicXZzbF9xbmdyDQoJCQkgICx6YnF2c2xfb2wNCgkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xYnhoenJhIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCWJlcXJlIG9sIGZyZXZRYnhoenJhDQoNCgkJIik7DQoNCgkJJHFieGh6cmE9MDsNCgkJc2Jlcm5wdSgkZF9xYnhoenJhLT5lcmZoeWcoKSBuZiAkZV9xYnhoenJhKXsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsndnFRYnhoenJhJ109JGVfcWJ4aHpyYS0+dnFRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd4YnFyUWJ4aHpyYSddPSRlX3FieGh6cmEtPnhicXJRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd4YnFyU25mdnl2Z25mJ109JGVfcWJ4aHpyYS0+eGJxclNuZnZ5dmduZjsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnYWJ6YmVRYnhoenJhJ109JGVfcWJ4aHpyYS0+YWJ6YmVRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydmcmV2UWJ4aHpyYSddPSRlX3FieGh6cmEtPmZyZXZRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydnbmF0dG55UWJ4aHpyYSddPSRlX3FieGh6cmEtPmduYXR0bnlRYnhoenJhOw0KDQoJCSRxYnhoenJhKys7DQoJCX0NCg0KCQkkZF9jcmF0bmF0eGhnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsJzEnIG5mIHZxQ3JhdG5hdHhoZw0KCQkJICAseGJxck9yYXFyZW4NCgkJCSAgLHZmYWh5eShhbnpuQ3JhdG5hdHhoZywnJykgbmYgYW56bkNyYXRuYXR4aGcNCgkJCSAgLHZmYWh5eShhYnpiZUNyYXRuYXR4aGcsJycpIG5mIGFiemJlQ3JhdG5hdHhoZw0KCQkJICAsdmZhaHl5KHhicXJQbmVuTmF0eGhnLCczJykgbmYgeGJxclBuZW5OYXR4aGcNCgkJCSAgLEVCSl9BSFpPUkUoKSBCSVJFIChCRVFSRSBPTCBvcF9iaGdfdXJucXJlX3ZxKSBuZiBmcmV2Q3JhdG5hdHhoZw0KCQkJICBTRUJaIHFvYi5pdnJqX2NyYXRuYXR4aGcganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJGNyYXRuYXR4aGc9MDsNCgkJc2Jlcm5wdSgkZF9jcmF0bmF0eGhnLT5lcmZoeWcoKSBuZiAkZV9jcmF0bmF0eGhnKXsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxck9yYXFyZW4nXT0kZV9jcmF0bmF0eGhnLT54YnFyT3JhcXJlbjsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYW56bkNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5hbnpuQ3JhdG5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYWJ6YmVDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWyd4YnFyUG5lbk5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnhicXJQbmVuTmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydmcmV2Q3JhdG5hdHhoZyddPXZhZ2lueSgkZV9jcmF0bmF0eGhnLT5mcmV2Q3JhdG5hdHhoZyk7DQoNCgkJJGNyYXRuYXR4aGcrKzsNCgkJfQ0KCQkvKiANCgkJJGRfb25heCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJPbmF4DQoJCQkgICxmcmV2T25heA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkb25heD0wOw0KCQlzYmVybnB1KCRkX29uYXgtPmVyZmh5ZygpIG5mICRlX29uYXgpew0KCQkJJG5lX29uYXhbJG9uYXhdWyd4YnFyT25heCddPSRlX29uYXgtPnhicXJPbmF4Ow0KCQkJJG5lX29uYXhbJG9uYXhdWydmcmV2T25heCddPSRlX29uYXgtPmZyZXZPbmF4Ow0KDQoJCSRvbmF4Kys7DQoJCX0gKi8NCgkJDQoJCS8qICRkX3hyZnZuY25hT25lbmF0ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxDQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZPbmVuYXQNCgkJCSAgLHhicXJXcmF2ZlRocW5hdA0KCQkJICAsYW56bkN2cA0KCQkJICAsbnluem5nDQoJCQkgICxhYnpiZUdyeWNDdnANCgkJCSAgLHdoenludVBiYWdudmFyZTIwDQoJCQkgICx3aHp5bnVQYmFnbnZhcmU0MA0KCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCSAgLHhicXJQbmVuRmdoc3N2YXQNCgkJCSAgLHhicXJXcmF2ZkNuZWdCcw0KCQkJICAsZ25hdHRueUN4bw0KCQkJICAsam54Z2hGdm5jQ3JldnhmbiBuZiBqbnhnaEZ2bmNDcmV2eGZuMQ0KCQkJICAscGJhcG5nKGduYXR0bnlDeG8sJ0cnLCBqbnhnaEZ2bmNDcmV2eGZuLCc6MDAuMDAwTScpIG5mIGpueGdoRnZuY0NyZXZ4Zm4NCgkJCSAgLFdyYXZmT25lbmF0DQoJCQkgICxXcmF2ZlRocW5hdA0KCQkJICAsV3JhdmZDbmVnQnMNCgkJCSAgLFBuZW5GZ2hzc3ZhdA0KCQkJICAseHJncmVuYXRuYQ0KCQkJICAscGVybmdyX3FuZ3INCgkJCSAgLHBlcm5ncl9vbA0KCQkJICAsemJxdnNsX3FuZ3INCgkJCSAgLHpicXZzbF9vbA0KCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJCSIpOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdD0wOw0KCQlzYmVybnB1KCRkX3hyZnZuY25hT25lbmF0LT5lcmZoeWcoKSBuZiAkZV94cmZ2bmNuYU9uZW5hdCl7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmT25lbmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2Zk9uZW5hdDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZUaHFuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmVGhxbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2Fuem5DdnAnXT0kZV94cmZ2bmNuYU9uZW5hdC0+YW56bkN2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydueW56bmcnXT0kZV94cmZ2bmNuYU9uZW5hdC0+bnluem5nOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2FiemJlR3J5Y0N2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hYnpiZUdyeWNDdnA7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneWJ4bmZ2RnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+eWJ4bmZ2RnZuY0NyZXZ4Zm47DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxclBuZW5GZ2hzc3ZhdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyUG5lbkZnaHNzdmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZkNuZWdCcyddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZDbmVnQnM7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnZ25hdHRueUN4byddPSRlX3hyZnZuY25hT25lbmF0LT5nbmF0dG55Q3hvOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2pueGdoRnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+am54Z2hGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmUyMDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmU0MDsNCg0KCQkkeHJmdm5jbmFPbmVuYXQrKzsNCgkJfSAqLw0KDQoJCQkkbmVlWyR2XVsncmFndmduZiddPSRuZV9yYWd2Z25mOw0KCQkJJG5lZVskdl1bJ3hyem5mbmEnXT0kbmVfeHJ6bmZuYTsNCgkJCSRuZWVbJHZdWyd4YmFnbnZhcmUnXT0kbmVfeGJhZ252YXJlOw0KCQkJJG5lZVskdl1bJ3FieGh6cmEnXT0kbmVfcWJ4aHpyYTsNCgkJCSRuZWVbJHZdWydjcmF0bmF0eGhnJ109JG5lX2NyYXRuYXR4aGc7DQoNCgkJJHYrKzsNCgkJfQ0KCQ0KDQoJCSRuZWVubD0gJG5lZVswXTsNCgkJJHFuZ25hbG49IHdmYmFfcmFwYnFyKCRuZWVubCk7DQoJCQ0KCQkkcGhleSA9IHBoZXlfdmF2ZygkaGV5KTsNCgkJDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0NCRkcsIGdlaHIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19FUkdIRUFHRU5BRlNSRSwgZ2Vocik7DQoJCSR1cm5xcmVmID0gbmVlbmwoDQoJCSAgICJOaGd1YmV2bW5ndmJhOiBPcm5lcmUgJGdieHJhIiwNCgkJICAgIlBiYWdyYWctR2xjcjogbmNjeXZwbmd2YmEvd2ZiYSINCgkJKTsNCgkJLy9ycHViICRnYnhyYSAuICI8b2U+IjsgDQoJCS8vaW5lX3FoemMoJHVybnFyZWYpOw0KCQkvL3F2cigpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19VR0dDVVJOUVJFLCAkdXJucXJlZik7DQoJCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGR1NWUllRRiwgJHFuZ25hbG4pOw0KCQkvL3JwdWIgJHFuZ25hbG47CQ0KCQkvL3F2cigpOw0KDQoJCS8vc2JlIHFyb2h0IGJheWwhDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xVQkZHLCBzbnlmcik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xDUlJFLCBzbnlmcik7DQoJCQ0KCQkkZXJmYyA9IHBoZXlfcmtycCgkcGhleSk7DQoJCQ0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCg0KCQkkZmduZ2hmX3BydmZuID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkkbmZoaiA9IHZmZnJnKCRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdKT8kZmduZ2hmX3BydmZuWyJSa3ByY2d2YmEiXTonbmonOw0KCQl2cygkbmZoaiA9PSAnbmonKXsNCgkJCXZzKCRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddID09ICdCWCcpew0KCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCWhjcW5nciBnb3lfb3BfYmhnX3VybnFyZSBmcmcgdnFFcmZjYmEgPSAtMSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSIpOw0KCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J0ZoeGZyZiEnICApKTsNCgkJCQ0KCQkJDQoJCX0gcnlmciB7DQoJCQl2cyAodmZmcmcoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10pKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J1RudG55IEZyYXF2YXQhJykpOw0KCQkJfSByeWZyIHsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZicgPT4gIlZhc2Jlem5mdiIsICd6cmZmbnRyJyA9PiAiIEhhcXJlIFpudmFnbmFyYXByIEZyZWlyZSAiLCdxbmduRmduZ2hmJyA9PidTbnZ5cnEnICkgKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCX0NCgkJfSByeWZyIHsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PicwMicgLCd6cmZmbnRyJyA9PiRuZmhqLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScgKSk7CQkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCg0KCX0NCgkNCglzaGFwZ3ZiYSB4dmV2el9xbmduX2diX3BydmZuX29wMjYxKCl7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2VyZGhyZmdfcXJnbnZ5X3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyUWJ4aHpyYSA9ICh2ZmZyZygkX0NCRkdbJ3hicXJRYnhoenJhJ10pICYmICFyemNnbCgkX0NCRkdbJ3hicXJRYnhoenJhJ10pKT8kX0NCRkdbJ3hicXJRYnhoenJhJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiB4YnFyIHFieGh6cmEgZ3ZxbnggcXZncnpoeG5hIn0nKTsNCgkJJGZnZiA9ICh2ZmZyZygkX0NCRkdbJ2ZnZiddKSAmJiAhcnpjZ2woJF9DQkZHWydmZ2YnXSkpPyRfQ0JGR1snZmdmJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsNCgkJLy8kZ2J4cmEgPSAodmZmcmcoJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJykpICYmICFyemNnbCgkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkpPyRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZmduZ2hmIEd2cW54IFF2Z3J6aHhuYSBQUlZGTiJ9Jyk7IA0KCQkkZ2J4cmEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKTsNCgkJDQoJCS8vcnB1YigkeGJxclFieGh6cmEpOw0KCQkvL3F2cigpOw0KCQkNCgkJLy8kaGV5ID0gInVnZ2NmOi8vYXlydWhvLnhyenJheHJoLnRiLnZxL2JjcmFuY3YvcWJwaHpyYWciOw0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCg0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCSBGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxuZm55UW5nbg0KCQkJCQkgICxwbmZnKG5maGVuYWZ2IG5mIHFycHZ6bnkoMTgsMikpIG5mIG5maGVuYWZ2DQoJCQkJCSAgLG92bmxuQ3JhdGhlbmF0DQoJCQkJCSAgLG92bmxuR256b251bmENCgkJCQkJICAscG5mZyhvZWhnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBvZWhnYg0KCQkJCQkgICxwbmZnKHB2cyBuZiBxcnB2em55KDE4LDIpKSBuZiBwdnMNCgkJCQkJICAscHZzRWhjdm51DQoJCQkJCSAgLCcxJyBuZiBxdmZweW52enJlDQoJCQkJCSAgLCcyJyBuZiBzeW50UGhlbnUNCgkJCQkJICAsJzInIG5mIHN5bnRadnRuZg0KCQkJCQkgICxzeW50SXENCgkJCQkJICAscG5mZyhzYm8gbmYgcXJwdnpueSgxOCwyKSkgbmYgc2JvDQoJCQkJCSAgLHBuZmcoc2VydnR1ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBzZXJ2dHVnDQoJCQkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJCQkgICxQQkFJUkVHKElORVBVTkUoMTApLCBmcmV2UmFndmduZikgTkYgdnFDcmF0dGhhbg0KCQkJCQkgICx2cUNyYXRuYXR4aGcNCgkJCQkJICAsd25vbmduYUdncQ0KCQkJCQkgICx3aHp5bnVYYmFnbnZhcmUNCgkJCQkJICAsd2h6eW51R25hcW5DcmF0bnpuYSANCgkJCQkJICAseGJxck5maGVuYWZ2DQoJCQkJCSAgLHhicXJQbmVuT25sbmUNCgkJCQkJICAseGJxclBuZW5RbnRuYXQNCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclZhcGJncmV6DQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZDZWJmcnFoZSwgJycpIE5GIHhicXJXcmF2ZkNlYmZycWhlDQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZSeGZjYmUsICcnKSBORiB4YnFyV3JhdmZSeGZjYmUNCgkJCQkJICAseGJxcldyYXZmQXZ5bnYNCgkJCQkJICAseGJxcldyYXZmR2NvDQoJCQkJCSAgLHhicXJYbmFnYmUNCgkJCQkJICAseGJxclhuYWdiZU9iYXR4bmUNCgkJCQkJICAseGJxclhuYWdiZVJ4ZmNiZQ0KCQkJCQkgICx4YnFyWG5hZ2JlIG5mIHhicXJYbmFnYmVaaG5nDQoJCQkJCSAgLHhicXJYbmFnYmVDcmV2eGZuDQoJCQkJCSAgLHhicXJYbmdydGJldlJ4ZmNiZQ0KCQkJCQkgICx4YnFyWHJhbkNud254DQoJCQkJCSAgLHhicXJZYnhuZnYNCgkJCQkJICAseGJxcllieG5mdk9ubG5lDQoJCQkJCSAgLFlieG5mdk9ubG5lDQoJCQkJCSAgLHhicXJBcnRuZW5HaHdobmENCgkJCQkJICAseGJxckNyeU9iYXR4bmUgDQoJCQkJCSAgLHhicXJDcnlSeGZjYmUNCgkJCQkJICAseGJxckNyeVpobmcNCgkJCQkJICAseGJxckNyeUdlbmFmdmcNCgkJCQkJICAseGJxckNyeUdod2huYQ0KCQkJCQkgICxWRkFIWVkoeGJxckNyem9ubG5lLCAnJykgTkYgeGJxckNyem9ubG5lDQoJCQkJCSAgLHhicXJHdmNyVW5ldG4NCgkJCQkJICAseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAsdmZhaHl5KHhicXJHY2YsJycpIG5mIHhicXJHY2YNCgkJCQkJICAseGJxcklueWhnbg0KCQkJCQkgICx4YmduR2dxDQoJCQkJCSAgLFJhZ3ZnbmYNCgkJCQkJICAsUmFndmduZjENCgkJCQkJICAsUmFndmduZjINCgkJCQkJICAsUmFndmduZjMNCgkJCQkJICAsUmFndmduZjQNCgkJCQkJICAsYW56bkdncQ0KCQkJCQkgICxwbmZnKGFxY296IG5mIHFycHZ6bnkoMTgsNCkpIG5mIGFxY296DQoJCQkJCSAgLHBuZmcoYXJnZ2IgbmYgcXJwdnpueSgxOCw0KSkgbmYgYXJnZ2INCgkJCQkJICAsYXZ5bnZPbmVuYXQNCgkJCQkJICAsYXZ5bnZWYXBiZ3Jleg0KCQkJCQkgICxwbmZnKGF2eW52Wm54eWJhIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52Wm54eWJhDQoJCQkJCSAgLGF2eW52V25mbg0KCQkJCQkgICxobmF0Wmh4bg0KCQkJCQkgICxFUkNZTlBSKGFiemJlTndoLCAnLScsICcnKSBORiBhYnpiZU53aA0KCQkJCQkgICxhYnpiZU9wMTENCgkJCQkJICAsVkZBSFlZKGNiZk9wMTEsICcnKSBORiBjYmZPcDExDQoJCQkJCSAgLGNyYXRuYXR4aGcNCgkJCQkJICAsZnJldg0KCQkJCQkgICxmcmV2UmFndmduZg0KCQkJCQkgICxmcmV2UmFndmduZjENCgkJCQkJICAsZnJldlJhZ3ZnbmYyDQoJCQkJCSAgLGZyZXZSYWd2Z25mMw0KCQkJCQkgICxmcmV2UmFndmduZjQNCgkJCQkJICAsVkZBSFlZKGZob2NiZk9wMTEsICcnKSBORiBmaG9jYmZPcDExDQoJCQkJCSAgLGZnbmdoZg0KCQkJCQkgICxncnpjbmdGZ2hzc3ZhdA0KCQkJCQkgICxnbmF0dG55TndoDQoJCQkJCSAgLGd0eU54dXZlT3JleW54aA0KCQkJCQkgICxndHlOam55T3JleW54aA0KCQkJCQkgICxnbmF0dG55T3AxMQ0KCQkJCQkgICxnbmF0dG55UW5zZ25lDQoJCQkJCSAgLGduYXR0bnlSeGZjYmUNCgkJCQkJICAsZ25hdHRueUNyZXZ4Zm4NCgkJCQkJICAsZ25hdHRueUdncQ0KCQkJCQkgICxwbmZnKGdiZ255UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGdiZ255UW5hbkZuanZnDQoJCQkJCSAgLHhicXJPcmFxcmVuDQoJCQkJCSAgLCdZdnl2cmYnIE5GIGhmcmVDYmVnbnkNCgkJCQkJICAsaWJ5aHpyDQoJCQkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkJCSAgLGF2eA0KCQkJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCQkJICAsYWJRbnNnbmUNCgkJCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCQkJICAsZnJldkNyYXRuYXR4aGcNCgkJCQkJICAseGJxck9uYXgNCgkJCQkJICAsZnJldk9uYXgNCgkJCQkJICAsd2h6eW51UGJhZ252YXJlDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxclhuYWdiZUdod2huYQ0KCQkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZUaHFuYXQNCgkJCQkJICAseGJxckdod2huYUdjbw0KCQkJCQkgICxhbnpuQ3ZwDQoJCQkJCSAgLG55bnpuZw0KCQkJCQkgICxhYnpiZUdyeWNDdnANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlNDANCgkJCQkJICAsd2h6eW51V3JhdmZPbmVuYXQNCgkJCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkgICx4YnFyV3JhdmZDbmVnQnMNCgkJCQkJICAsZ25hdHRueUN4bw0KCQkJCQkgICxpcQ0KCQkJCQkgICxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSAgLFdyYXZmR2NvDQoJCQkJCSAgLEdod2huYUdjbw0KCQkJCQkgICxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSAgLFBuZW5OYXR4aGcNCgkJCQkJICAsWHJhbkNud254DQoJCQkJCSAgLE5maGVuYWZ2X2d2Y3INCgkJCQkJICAsT25heA0KCQkJCQkgICxZYnhuZnYNCgkJCQkJICAsR2NmDQoJCQkJCSAgLFBuZW5PbmxuZQ0KCQkJCQkgICxQbmVuUW50bmF0DQoJCQkJCSAgLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLFdyYXZmUnhmY2JlDQoJCQkJCSAgLFdyYXZmQXZ5bnYNCgkJCQkJICAsV3JhdmZYcnpuZm5hDQoJCQkJCSAgLFdyYXZmQ2ViZnJxaGUNCgkJCQkJICAsVmFwYmdyZXoNCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJG5lZSA9IG5lZW5sKCk7DQoJCSRuZW8gPSBuZWVubCgpOw0KCQkkbmVvcSA9IG5lZW5sKCk7DQoJCSRuZWcgPSBuZWVubCgpOw0KCQkkbmVpcSA9IG5lZW5sKCk7DQoJCSRuZWZ4ID0gbmVlbmwoKTsNCgkJJG5lb2MgPSBuZWVubCgpOw0KCQkkbmVfaG5hdFpoeG4gPSBuZWVubCgpOw0KCQkkbmVfd256dmFuYSA9IG5lZW5sKCk7DQoJCSRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCSRuZV9vbnVuYU9ueGggPSBuZWVubCgpOw0KCQkkbmVfb251bmFPbnhoR25ldnMgPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZiA9IG5lZW5sKCk7DQoJCSRuZV9yYWd2Z25mX2NyenZ5dnggPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZl9jcnpvcnl2ID0gbmVlbmwoKTsNCgkJJG5lX3JhZ3ZnbmZfY3JhcmV2em4gPSBuZWVubCgpOw0KCQkkbmVfeHJ6bmZuYSA9IG5lZW5sKCk7DQoJCSRuZV94YmFnbnZhcmUgPSBuZWVubCgpOw0KCQkkbmVfcWJ4aHpyYSA9IG5lZW5sKCk7DQoJCSRuZV9jcmF0bmF0eGhnID0gbmVlbmwoKTsNCgkJJG5lX29uYXggPSBuZWVubCgpOw0KCQkkbmVfeHJmdm5jbmFPbmVuYXQgPSBuZWVubCgpOw0KCQkkdj0wOw0KDQoJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlYmopIHsNCgkJCSRuZWVbJHZdWyduZm55UW5nbiddPSRlYmotPm5mbnlRbmduOw0KCQkJJG5lZVskdl1bJ25maGVuYWZ2J109KHN5Ym5nKSRlYmotPm5maGVuYWZ2Ow0KCQkJJG5lZVskdl1bJ292bmxuQ3JhdGhlbmF0J109KHN5Ym5nKSRlYmotPm92bmxuQ3JhdGhlbmF0Ow0KCQkJJG5lZVskdl1bJ292bmxuR256b251bmEnXT0oc3libmcpJGViai0+b3ZubG5HbnpvbnVuYTsNCgkJCSRuZWVbJHZdWydvZWhnYiddPShzeWJuZykkZWJqLT5vZWhnYjsNCgkJCSRuZWVbJHZdWydwdnMnXT0oc3libmcpJGViai0+cHZzOw0KCQkJJG5lZVskdl1bJ3F2ZnB5bnZ6cmUnXT0kZWJqLT5xdmZweW52enJlOw0KCQkJJG5lZVskdl1bJ3N5bnRQaGVudSddPSRlYmotPnN5bnRQaGVudTsNCgkJCSRuZWVbJHZdWydzeW50WnZ0bmYnXT0kZWJqLT5zeW50WnZ0bmY7DQoJCQkkbmVlWyR2XVsnc2JvJ109KHN5Ym5nKSRlYmotPnNibzsNCgkJCSRuZWVbJHZdWydzZXJ2dHVnJ109KHN5Ym5nKSRlYmotPnNlcnZ0dWc7DQoJCQkkbmVlWyR2XVsndW5ldG5DcmFscmVudW5hJ109KHN5Ym5nKSRlYmotPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCSRuZWVbJHZdWyd2cUNyYXR0aGFuJ109JGViai0+dnFDcmF0dGhhbjsNCgkJCSRuZWVbJHZdWyd3bm9uZ25hR2dxJ109JGViai0+d25vbmduYUdncTsNCgkJCSRuZWVbJHZdWyd3aHp5bnVYYmFnbnZhcmUnXT0kZWJqLT53aHp5bnVYYmFnbnZhcmU7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5PbmxuZSddPSRlYmotPnhicXJQbmVuT25sbmU7DQoJCQkkbmVlWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQ2ViZnJxaGUnXT0kZWJqLT54YnFyV3JhdmZDZWJmcnFoZTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZHY28nXT0kZWJqLT54YnFyV3JhdmZHY287DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZVpobmcnXT0kZWJqLT54YnFyWG5hZ2JlWmhuZzsNCgkJCSRuZWVbJHZdWyd4YnFyWG5hZ2JlR2h3aG5hJ109JGViai0+eGJxclhuYWdiZUdod2huYTsNCgkJCSRuZWVbJHZdWyd4YnFyWWJ4bmZ2T25sbmUnXT0kZWJqLT54YnFyWWJ4bmZ2T25sbmU7DQoJCQkkbmVlWyR2XVsneGJxckNyem9ubG5lJ109JGViai0+eGJxckNyem9ubG5lOw0KCQkJJG5lZVskdl1bJ3hicXJHY2YnXT0kZWJqLT54YnFyR2NmOw0KCQkJJG5lZVskdl1bJ3hicXJHaHdobmFDcmF0dmV2em5hJ109JGViai0+eGJxckdod2huYUNyYXR2ZXZ6bmE7DQoJCQkkbmVlWyR2XVsneGJxckdod2huYUdjbyddPSRlYmotPnhicXJXcmF2ZkdjbzsNCgkJCSRuZWVbJHZdWyd4YnFySW55aGduJ109JGViai0+eGJxcklueWhnbjsNCgkJCSRuZWVbJHZdWyd4YmduR2dxJ109JGViai0+eGJnbkdncTsNCgkJCSRuZWVbJHZdWydhbnpuR2dxJ109JGViai0+YW56bkdncTsNCgkJCSRuZWVbJHZdWydhcWNveiddPShzeWJuZykkZWJqLT5hcWNvejsNCgkJCSRuZWVbJHZdWydhcmdnYiddPShzeWJuZykkZWJqLT5hcmdnYjsNCgkJCSRuZWVbJHZdWydhdnludk9uZW5hdCddPShzeWJuZykkZWJqLT5hdnludk9uZW5hdDsNCgkJCSRuZWVbJHZdWydhdnludlduZm4nXT0oc3libmcpJGViai0+YXZ5bnZXbmZuOw0KCQkJJG5lZVskdl1bJ2F2eW52Wm54eWJhJ109KHN5Ym5nKSRlYmotPmF2eW52Wm54eWJhOw0KCQkJJG5lZVskdl1bJ2diZ255UW5hbkZuanZnJ109KHN5Ym5nKSRlYmotPmdiZ255UW5hbkZuanZnOw0KCQkJJG5lZVskdl1bJ2huYXRaaHhuJ109KHN5Ym5nKSRlYmotPmhuYXRaaHhuOw0KCQkJJG5lZVskdl1bJ2F2eCddPSRlYmotPmF2eDsNCgkJCSRuZWVbJHZdWydhYnpiZU53aCddPSRlYmotPmFiemJlTndoOw0KCQkJJG5lZVskdl1bJ2d0eU5qbnlPcmV5bnhoJ109JGViai0+Z3R5TmpueU9yZXlueGg7DQoJCQkkbmVlWyR2XVsnZ3R5Tnh1dmVPcmV5bnhoJ109JGViai0+Z3R5Tnh1dmVPcmV5bnhoOw0KCQkJJG5lZVskdl1bJ2NiZk9wMTEnXT0kZWJqLT5jYmZPcDExOw0KCQkJJG5lZVskdl1bJ2ZyZXYnXT0kZWJqLT5mcmV2Ow0KCQkJJG5lZVskdl1bJ2duYXR0bnlOd2gnXT0kZWJqLT5nbmF0dG55TndoOw0KCQkJJG5lZVskdl1bJ2duYXR0bnlHZ3EnXT0kZWJqLT5nbmF0dG55R2dxOw0KCQkJJG5lZVskdl1bJ2dyemNuZ0ZnaHNzdmF0J109JGViai0+Z3J6Y25nRmdoc3N2YXQ7DQoJCQkkbmVlWyR2XVsnaGZyZUNiZWdueSddPSRlYmotPmhmcmVDYmVnbnk7DQoJCQkkbmVlWyR2XVsnaWJ5aHpyJ109KHN5Ym5nKSRlYmotPmlieWh6cjsNCgkJCSRuZWVbJHZdWydpcSddPShzeWJuZykkZWJqLT5pcTsNCg0KCQkJJGRvID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlGUllSUEcgb3BfYmhnX3FyZ252eV92cQ0KCQkJICAsdnFPbmVuYXQNCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLG5maGVuYWZ2DQoJCQkgICxvZWhnYg0KCQkJICAscHZzDQoJCQkgICxwdnNFaGN2bnUNCgkJCSAgLHF2ZnhiYQ0KCQkJICAsc2JvDQoJCQkgICxzZXJ2dHVnDQoJCQkgICx1bmV0blJ4ZmNiZQ0KCQkJICAsdW5ldG5DbmdieG5hDQoJCQkgICxwbmZnKHVuZXRuQ3JlYnlydW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JlYnlydW5hDQoJCQkgICxwbmZnKHVuZXRuRm5naG5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuRm5naG5hDQoJCQkgICxwbmZnKHVuZXRuQ3JhbHJlbnVuYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkNyYWxyZW51bmENCgkJCSAgLHZmdkNyZVhyem5mbmENCgkJCSAgLHhicXJOZm55T25lbmF0DQoJCQkgICx3aHp5bnVOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVYcnpuZm5hDQoJCQkgICx3aHp5bnVGbmdobmENCgkJCSAgLHhicXJOZm55T251bmFPbnhoDQoJCQkgICx4YnFyT25lbmF0DQoJCQkgICx4YnFyUW5yZW51TmZueQ0KCQkJICAseGJxclFieGh6cmENCgkJCSAgLHhicXJRYnhOZm55DQoJCQkgICx4YnFyVGhhbk9uZW5hdA0KCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJICAseGJxclhuZ3J0YmV2T25lbmF0DQoJCQkgICx4YnFyWGJhcXZmdk9uZW5hdA0KCQkJICAseGJxckFydG5lbk5mbnkNCgkJCSAgLHhicXJDcmV1dmdoYXRuYQ0KCQkJICAseGJxckZuZ2huYU9uZW5hdA0KCQkJICAsenJleA0KCQkJICAsYXFjb3oNCgkJCSAgLGFyZ2diDQoJCQkgICxwbmZnKGF2eW52T25lbmF0IG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52T25lbmF0DQoJCQkgICxwbmZnKGF2eW52UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52UW5hbkZuanZnDQoJCQkgICxhdnludlduZm4NCgkJCSAgLGF2eW52R256b251DQoJCQkgICxjYmZHbmV2cw0KCQkJICAsUEJBSVJFRyhJTkVQVU5FKDI1NSksIGZyZXZPbmVuYXQpIG5mIGZyZXZPbmVuYXQNCgkJCSAgLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJICAsZ3Zjcg0KCQkJICAsaG5hdFpoeG4NCgkJCSAgLGh4aGVuYQ0KCQkJICAsaGVudm5hDQoJCQkgICxpYnloenINCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxmcmV2UmFndmduZg0KCQkJICAscG5nbmduYQ0KCQkJICAsQXJ0bmVuTmZueV9xZ3kNCgkJCSAgLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkgICxDcmV1dmdoYXRuYV9xZ3kNCgkJCSAgLFhuZ3J0YmV2T25lbmF0DQoJCQkgICxOZm55T25lbmF0DQoJCQkgICxOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVPbnVuYU9ueGgNCgkJCSAgLHdoenludVF2eXJ4bmd4bmENCgkJCSAgLHdoenludUN2Z25QaHhudg0KCQkJICAsd2h6eW51RXJueXZmbmZ2DQoJCQkgICx4bmNuZnZnbmZGdnl2YXFyZQ0KCQkJICAsYXZ5bnZRcml2Zm4NCgkJCSAgLFZGQUhZWShhdnludk9uZW5hdElxLDApIE5GIGF2eW52T25lbmF0SXENCgkJCSAgLGNyZWFsbmdubmFZbmVnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZJcSwgJycpIE5GIHhicXJXcmF2ZklxDQoJCQkgICxmcmV2Vnd2YQ0KCQkJICAsZ25ldnNQaHhudg0KCQkJICAsQ3JldXZnaGF0bmENCgkJCSAgLFhyYW5DbndueA0KCQkJICAsdXdyUGh4bnYNCgkJCSAgLGZyZXZPbmVuYXRRYnhOZm55DQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkgYmVxcmUgb2wgb3BfYmhnX3FyZ252eV92cQ0KCQkJIik7DQoJCQkNCgkJCSRvPTA7DQoJCQlzYmVybnB1KCRkby0+ZXJmaHlnKCkgbmYgJGVvKXsNCgkJCQkkbmVvWyRvXVsncHZzJ109KHN5Ym5nKSRlby0+cHZzOw0KCQkJCSRuZW9bJG9dWydwdnNFaGN2bnUnXT0oc3libmcpJGVvLT5wdnNFaGN2bnU7DQoJCQkJJG5lb1skb11bJ3NibyddPShzeWJuZykkZW8tPnNibzsNCgkJCQkkbmVvWyRvXVsndW5ldG5SeGZjYmUnXT0oc3libmcpJGVvLT51bmV0blJ4ZmNiZTsNCgkJCQkkbmVvWyRvXVsndW5ldG5DbmdieG5hJ109KHN5Ym5nKSRlby0+dW5ldG5DbmdieG5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JlYnlydW5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvLT51bmV0bkNyYWxyZW51bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuRm5naG5hJ109KHN5Ym5nKSRlby0+dW5ldG5GbmdobmE7DQoJCQkJJG5lb1skb11bJ3ZmdkNyZVhyem5mbmEnXT0oc3libmcpJGVvLT52ZnZDcmVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVYcnpuZm5hJ109JGVvLT53aHp5bnVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvLT53aHp5bnVGbmdobmE7DQoJCQkJJG5lb1skb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvLT54YnFyTmZueU9udW5hT254aDsNCgkJCQkkbmVvWyRvXVsneGJxck5mbnlPbmVuYXQnXT0kZW8tPnhicXJOZm55T25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyT25lbmF0J109JGVvLT54YnFyT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUW5yZW51TmZueSddPSRlby0+eGJxclFucmVudU5mbnk7DQoJCQkJJG5lb1skb11bJ3hicXJRYnhoenJhJ109JGVvLT54YnFyUWJ4aHpyYTsNCgkJCQkkbmVvWyRvXVsneGJxcldyYXZmWHJ6bmZuYSddPSRlby0+eGJxcldyYXZmWHJ6bmZuYTsNCgkJCQkkbmVvWyRvXVsneGJxckFydG5lbk5mbnknXT0kZW8tPnhicXJBcnRuZW5OZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyRm5naG5hT25lbmF0J109JGVvLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd6cmV4J109JGVvLT56cmV4Ow0KCQkJCSRuZW9bJG9dWydhcWNveiddPShzeWJuZykkZW8tPmFxY296Ow0KCQkJCSRuZW9bJG9dWydhcmdnYiddPShzeWJuZykkZW8tPmFyZ2diOw0KCQkJCSRuZW9bJG9dWydhdnludk9uZW5hdCddPShzeWJuZykkZW8tPmF2eW52T25lbmF0Ow0KCQkJCSRuZW9bJG9dWydhdnludlFuYW5Gbmp2ZyddPShzeWJuZykkZW8tPmF2eW52UW5hbkZuanZnOw0KCQkJCSRuZW9bJG9dWydhdnludlduZm4nXT0oc3libmcpJGVvLT5hdnludlduZm47DQoJCQkJJG5lb1skb11bJ2NiZkduZXZzJ109JGVvLT5jYmZHbmV2czsNCgkJCQl2cygkeGJxclFieGh6cmEgPT0nMjcnKXsNCgkJCQkJCSRuZW9bJG9dWydmcmV2T25lbmF0J109JGVvLT5mcmV2T25lbmF0Ow0KCQkJCQl9IHJ5ZnJ7DQoJCQkJCQkkbmVvWyRvXVsnZnJldk9uZW5hdCddPXZhZ2lueSgkZW8tPmZyZXZPbmVuYXQpOw0KCQkJCQl9DQoJCQkJJG5lb1skb11bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlby0+ZmNyZnZzdnhuZnZZbnZhOw0KCQkJCSRuZW9bJG9dWydndmNyJ109JGVvLT5ndmNyOw0KCQkJCSRuZW9bJG9dWydobmF0Wmh4biddPShzeWJuZykkZW8tPmhuYXRaaHhuOw0KCQkJCSRuZW9bJG9dWydoeGhlbmEnXT0kZW8tPmh4aGVuYTsNCgkJCQkkbmVvWyRvXVsnaGVudm5hJ109JGVvLT5oZW52bmE7DQoJCQkJJG5lb1skb11bJ2lieWh6ciddPShzeWJuZykkZW8tPmlieWh6cjsNCg0KCQkJCSRkb3EgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgIG9wX2JoZ19xYnhoenJhX3ZxIG5mIHZxUWJ4aHpyYQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclZ3dmENCgkJCQkJICAsd3JhdmZRYnhoenJhDQoJCQkJCSAgLGFuem5TbmZ2eXZnbmYNCgkJCQkJICAsYWJ6YmVRYnhoenJhDQoJCQkJCSAgLGZyZXZRYnhoenJhDQoJCQkJCSAgLGduYXR0bnlRYnhoenJhDQoJCQkJCSAgLGhleVFieGh6cmENCgkJCQkJICAseHJncmVuYXRuYQ0KCQkJCQkgICxwZXJuZ3JfcW5ncg0KCQkJCQkgICxwZXJuZ3Jfb2wNCgkJCQkJICAsemJxdnNsX3FuZ3INCgkJCQkJICAsemJxdnNsX29sDQoJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FieGh6cmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSB4YnFyUWJ4aHpyYSA9ICcyMDMnDQoNCgkJCQkiKTsNCg0KCQkJCSRvcT0wOw0KCQkJCXNiZXJucHUoJGRvcS0+ZXJmaHlnKCkgbmYgJGVvcSl7DQoJCQkJCSRuZW9xWyRvcV1bJ2ZyZXZRYnhoenJhJ109JGVvcS0+ZnJldlFieGh6cmE7DQoJCQkJCQ0KCQkJCSRvcSsrOw0KCQkJCX0NCgkJCQkNCgkJCQkvKiAkZG9jID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJRlJZUlBHICBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsZnJldk9uZW5hdA0KCQkJCQkgICxmcmV2T25lbmF0IG5mIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkJCSAgLDIgbmYgZnJldlJhZ3ZnbmYNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJCSIpOw0KDQoJCQkJJG9jPTA7DQoJCQkJc2Jlcm5wdSgkZG9jLT5lcmZoeWcoKSBuZiAkZW9jKXsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldk9uZW5hdCddPSRlb2MtPmZyZXZPbmVuYXQ7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZPbmVuYXRDcnp2eXZ4J109JGVvYy0+ZnJldk9uZW5hdENyenZ5dng7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZSYWd2Z25mJ109JGVvYy0+ZnJldlJhZ3ZnbmY7DQoNCgkJCQkkb2MrKzsNCgkJCQl9ICovDQoJCQkJDQoJCQkJJG5lZyA9IG5lZW5sKCk7DQoJCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7DQoJCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJLS1GUllSUEcgay5vbmVuYXRHbmV2c192cQ0KCQkJCQkgIC0tLGsub3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgIC0tLGsub3BfYmhnX3FyZ252eV92cQ0KCQkJCQkgIC0tLGsuZ3Zjcl9xYnhoenJhDQoJCQkJCSAgLS0say54YnFyV3JhdmZHbmV2cw0KCQkJCQkgIC0tLGsud2h6eW51Rm5naG5hDQoJCQkJCSAgLS0say54YnFyU25mdnl2Z25mR25ldnMNCgkJCQkJICAtLSxrLnhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAtLS0say54YnFyV3JhdmZDaGF0aGduYQ0KCQkJCQkgIC0tLHBuZmcoay5hdnludk9ubG5lIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52T25sbmUNCgkJCQkJICAtLSxrLmF2eW52U25mdnl2Z25mDQoJCQkJCSAgLS0say5hdnludkZocW51UXZ5aGFuZnYNCgkJCQkJICAtLSxrLmZyZXZPbmVuYXQNCgkJCQkJICAtLSxrLmduZXZzDQoJCQkJCSAgLS0say5nbmV2c1NuZnZ5dmduZg0KCQkJCQktLVNFQlogZ295X3FuZ25fb25lbmF0R25ldnMgIGsNCgkJCQkJDQoJCQkJCSAgRlJZUlBHIG9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQkJeGJxclFieGh6cmEsDQoJCQkJCQl4YnFyV3JhdmZHbmV2cywNCgkJCQkJCXdoenludUZuZ2huYSwNCgkJCQkJCXhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJCXhicXJGbmdobmFPbmVuYXQsDQoJCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJCWF2eW52T25sbmUsDQoJCQkJCQlhdnludlNuZnZ5dmduZiwNCgkJCQkJCWF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJCWZyZXZPbmVuYXQsDQoJCQkJCQlHTkVWU19PWiwNCgkJCQkJCWduZXZzU25mdnl2Z25mDQoJCQkJCSAgU0VCWiBpdnJqX29uZW5hdF9nbmV2c19jY2Ffb3AyNSBrDQoJCQkJCWp1cmVyIGsub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBrLm9wX2JoZ19xcmdudnlfdnE9JG9wX2JoZ19xcmdudnlfdnENCg0KCQkJCSIpOw0KDQoJCQkJJGc9MDsNCg0KCQkJCXNiZXJucHUoJGRnLT5lcmZoeWcoKSBuZiAkZWcpew0KCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJJG5lZ1skZ11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlZy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmR25ldnMnXT0kZWctPnhicXJXcmF2ZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsnYXZ5bnZPbmxuZSddPShzeWJuZykkZWctPmF2eW52T25sbmU7DQoJCQkJCSRuZWdbJGddWydhdnludlNuZnZ5dmduZiddPShzeWJuZykkZWctPmF2eW52U25mdnl2Z25mOw0KCQkJCQkkbmVnWyRnXVsnZnJldk9uZW5hdCddPSRlZy0+ZnJldk9uZW5hdDsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+R05FVlNfT1o7DQoJCQkJCSRuZWdbJGddWydnbmV2c1NuZnZ5dmduZiddPShzeWJuZykkZWctPmduZXZzU25mdnl2Z25mOw0KDQoJCQkJJGcrKzsNCgkJCQl9DQoNCgkJCQkkbmVfb251bmFPbnhoID0gbmVlbmwoKTsNCgkJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsNCgkJCQkkZG9vID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJRlJZUlBHIG9udW5hT254aF92cQ0KCQkJCQkgICxvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsb3BfdmFfcXJnbnZ5X3ZxDQoJCQkJCSAgLG9wX3ZhX3VybnFyZV92cQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxX25mbnkNCgkJCQkJICAsb3BfdmFfdXJucXJlX3ZxX25mbnkNCgkJCQkJICAsb3BfYmhnX3FyZ252eV92cV9uZm55DQoJCQkJCSAgLG9wX3ZhX3FyZ252eV92cV9uZm55DQoJCQkJCSAgLHZxT25lbmF0DQoJCQkJCSAgLHZxV256dmFuYQ0KCQkJCQkgICxwdnMNCgkJCQkJICAscHZzRWhjdm51DQoJCQkJCSAgLHVuZXRuQ3JhbHJlbnVuYQ0KCQkJCQkgICxwbmZnKHVuZXRuRm5naG5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuRm5naG5hDQoJCQkJCSAgLHVuZXRuQ3JlYnlydW5hDQoJCQkJCSAgLHZmdkNyZVhyem5mbmENCgkJCQkJICAsd2h6eW51Rm5naG5hDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxckZuZ2huYU9uZW5hdA0KCQkJCQkgICxQTkZSDQoJCQkJCQlKVVJBICggKCB4YnFyUWJ4TmZueSA8PiAyMyApICkgR1VSQQ0KCQkJCQkJJzEnIFJZRlIgJzAnIA0KCQkJCQkJUkFRIE5GIHhicXJOZm55T251bmFPbnhoDQoJCQkJCSAgLE5mbnlPbnVuYU9ueGgNCgkJCQkJICAseGJxck9uZW5hdA0KCQkJCQkgICx4YnFyT25lbmF0TmZueQ0KCQkJCQkgICx4YnFyUWJ4aHpyYQ0KCQkJCQkgICx4YnFyUWJ4TmZueQ0KCQkJCQkgICxIRU5WTkFfUUJYSFpSQQ0KCQkJCQkgICx4YnFyWG5hZ2JlDQoJCQkJCSAgLHpyZXhPbmVuYXQNCgkJCQkJICAsYXFjb3oNCgkJCQkJICAsYWJ6YmVOd2hRYnhOZm55DQoJCQkJCSAgLGFiemJlUW5zZ25lUWJ4TmZueQ0KCQkJCQkgICxhYnpiZVFieGh6cmENCgkJCQkJICAsY2JmR25ldnMNCgkJCQkJICAsZnJldk9udW5hT254aA0KCQkJCQkgICxmcmV2T251bmFPbnhoR25ldnMNCgkJCQkJICAsZmNyZnZzdnhuZnZZbnZhT25lbmF0DQoJCQkJCSAgLGZyZXZPbmVuYXQNCgkJCQkJICAsZnJldk9uZW5hdFFieE5mbnkNCgkJCQkJICAsZnJldlZ3dmENCgkJCQkJICAsZmNyZnZzdnhuZnZZbnZhT25lbmF0IG5mIGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJCQkgICxnbmF0dG55UW5zZ25lUWJ4TmZueQ0KCQkJCQkgICxnbmF0dG55TndoUWJ4TmZueQ0KCQkJCQkgICxWRkFIWVkoZ3Zjck9uZW5hdCwnJykgTkYgZ3Zjck9uZW5hdA0KCQkJCQkgICxWRkFIWVkoaHhoZW5hT25lbmF0LCcnKSBORiBoeGhlbmFPbmVuYXQNCgkJCQkJICAsaGVudm5hT25lbmF0DQoJCQkJCSAgLHhicXJXcmF2ZkduZXZzDQoJCQkJCSAgLHdoenludUZuZ2huYUduZXZzDQoJCQkJCSAgLHhicXJTbmZ2eXZnbmZHbmV2cw0KCQkJCQkgICx4YnFyV3JhdmZDaGF0aGduYQ0KCQkJCQkgICxhcmdnYg0KCQkJCQkgICxhdnludk9ubG5lDQoJCQkJCSAgLGF2eW52V25mbg0KCQkJCQkgICxhdnludlNuZnZ5dmduZg0KCQkJCQkgICxhdnludkZocW51UXZ5aGFuZnYNCgkJCQkJICAsZ25ldnMNCgkJCQkJICAsZ25ldnNTbmZ2eXZnbmYNCgkJCQkJICAscG5nbmduYQ0KCQkJCQkgICxwZXJuZ3JfcW5ncg0KCQkJCQkgICxwZXJuZ3Jfb2wNCgkJCQkJICAsemJxdnNsX3FuZ3INCgkJCQkJICAsemJxdnNsX29sDQoJCQkJICBTRUJaIHFvYi5pdnJqX3FuZ25fb251bmFPbnhoDQoJCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoNCgkJCQkiKTsNCg0KCQkJCSRvbz0wOw0KDQoJCQkJc2Jlcm5wdSgkZG9vLT5lcmZoeWcoKSBuZiAkZW9udW5hb254aCl7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsncHZzJ109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnM7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsncHZzRWhjdm51J109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnNFaGN2bnU7DQoJCQkJCQ0KCQkJCQl2cygkeGJxclFieGh6cmEgPT0nMjcnKXsNCgkJCQkJCQ0KCQkJCQl9IHJ5ZnJ7DQoJCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ3N5bnRHdmYnXT0kZW9udW5hb254aC0+ZnJldk9udW5hT254aDsNCgkJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsndW5ldG5GbmdobmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuRm5naG5hOw0KCQkJCQkJJG5lX29udW5hT254aFskb29dWyd2ZnZDcmVYcnpuZm5hJ109dmFnaW55KCRlb251bmFvbnhoLT52ZnZDcmVYcnpuZm5hKTsNCgkJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsneGJxclFieGh6cmEnXT0kZW9udW5hb254aC0+eGJxclFieGh6cmE7DQoJCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2FiemJlUWJ4aHpyYSddPSRlb251bmFvbnhoLT5hYnpiZVFieGh6cmE7DQoJCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlb251bmFvbnhoLT5mY3JmdnN2eG5mdlludmE7DQoJCQkJCX0NCgkJCQkJJG5lX29udW5hT254aFskb29dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkJJG5lX29udW5hT254aFskb29dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW9udW5hb254aC0+dW5ldG5DcmVieXJ1bmE7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnd2h6eW51Rm5naG5hJ109KHN5Ym5nKSRlb251bmFvbnhoLT53aHp5bnVGbmdobmE7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZW9udW5hb254aC0+eGJxck5mbnlPbnVuYU9ueGg7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsneGJxck9uZW5hdCddPSRlb251bmFvbnhoLT54YnFyT25lbmF0Ow0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ3hicXJRYnhOZm55J109JGVvbnVuYW9ueGgtPnhicXJRYnhOZm55Ow0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ3hicXJYbmFnYmUnXT0kZW9udW5hb254aC0+eGJxclhuYWdiZTsNCgkJCQkJJG5lX29udW5hT254aFskb29dWyd4YnFyRm5naG5hT25lbmF0J109JGVvbnVuYW9ueGgtPnhicXJGbmdobmFPbmVuYXQ7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnenJleE9uZW5hdCddPSRlb251bmFvbnhoLT56cmV4T25lbmF0Ow0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2FxY296J109KHN5Ym5nKSRlb251bmFvbnhoLT5hcWNvejsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydhcmdnYiddPShzeWJuZykkZW9udW5hb254aC0+YXJnZ2I7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnYXZ5bnZXbmZuJ109KHN5Ym5nKSRlb251bmFvbnhoLT5hdnludlduZm47DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnYWJ6YmVOd2hRYnhOZm55J109ZmdlX2VyY3lucHIoJy0nLCcnLCRlb251bmFvbnhoLT5hYnpiZU53aFFieE5mbnkpOw0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnY2JmR25ldnMnXT0kZW9udW5hb254aC0+Y2JmR25ldnM7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnZnJldk9udW5hT254aCddPSRlb251bmFvbnhoLT5mcmV2T251bmFPbnhoOw0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2ZyZXZPbmVuYXQnXT12YWdpbnkoJGVvbnVuYW9ueGgtPmZyZXZPbnVuYU9ueGgpOw0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2ZyZXZPbmVuYXRRYnhOZm55J109JGVvbnVuYW9ueGgtPmZyZXZPbmVuYXQ7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnZnJldlZ3dmEnXT0kZW9udW5hb254aC0+ZnJldlZ3dmE7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnZmNyZnZzdnhuZnZZbnZhT25lbmF0J109JGVvbnVuYW9ueGgtPmZjcmZ2c3Z4bmZ2WW52YU9uZW5hdDsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydnbmF0dG55UW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5nbmF0dG55UW5zZ25lUWJ4TmZueTsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydndmNyT25lbmF0J109JGVvbnVuYW9ueGgtPmd2Y3JPbmVuYXQ7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnaHhoZW5hT25lbmF0J109JGVvbnVuYW9ueGgtPmh4aGVuYU9uZW5hdDsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydoZW52bmFPbmVuYXQnXT0kZW9udW5hb254aC0+aGVudm5hT25lbmF0Ow0KDQoNCgkJCQkkbmVnID0gbmVlbmwoKTsNCgkJCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOwkJDQoJCQkJCQkkZGcgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCQ0KCQkJCQkJCUZSWVJQRw0KCQkJCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQkJCQlvcF9iaGdfdXJucXJlX3ZxLA0KCQkJCQkJCQlmcmV2T25lbmF0LA0KCQkJCQkJCQknT1onIE5GIHhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCQkJCVBORlINCgkJCQkJCQkJSlVSQSAoICggay54YnFyUWJ4TmZueSA8PiAyMyApICkgR1VSQQ0KCQkJCQkJCQknMScgUllGUiAnMCcgDQoJCQkJCQkJCVJBUSBORiB4YnFyTmZueU9udW5hT254aCwNCgkJCQkJCQkJJzMnIE5GIHhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJCQkJMCBORiBhdnludk9ubG5lLA0KCQkJCQkJCQkxMDAgTkYgYXZ5bnZTbmZ2eXZnbmYsDQoJCQkJCQkJCTAgTkYgYXZ5bnZGaHFudVF2eWhhbmZ2LA0KCQkJCQkJCQl2ZmFoeXkoIGwuR05FVlNfT1osICcwJyApIE5GIGduZXZzLA0KCQkJCQkJCQkxMDAgTkYgZ25ldnNTbmZ2eXZnbmYsDQoJCQkJCQkJCXZmYWh5eSggd2h6eW51Rm5naG5hLCAwICkgTkYgd2h6eW51Rm5naG5hLA0KCQkJCQkJCQknMScgTkYgeGJxcldyYXZmR25ldnMsDQoJCQkJCQkJCXZmYWh5eSggeGJxckZuZ2huYU9uZW5hdCwgJ0NQUicgKSBORiB4YnFyRm5naG5hT25lbmF0LA0KCQkJCQkJCQlFQkpfQUhaT1JFICggKSBCSVJFICggQkVRUkUgT0wgb3BfYmhnX3FyZ252eV92cSApIE5GIGZyZXZPbnVuYU9ueGggDQoJCQkJCQkJU0VCWiBxb2IuaXZyal9xbmduX29udW5hT254aCBrDQoJCQkJCQkJWVJTRyBXQlZBIGVyc3JlcmFmdl9jYmZfZ25ldnMgbCBCQSBrLmNiZkduZXZzID0gbC5BQlpCRV9VRg0KCQkJCQkJCQlqdXJlciBrLnZxT25lbmF0ID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIGsub3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cQ0KCQkJCQkNCgkJCQkJCSIpOw0KCQkJCQkJDQoJCQkJCQkkZz0wOw0KCQkJCQkJDQoJCQkJCQlzYmVybnB1KCRkZy0+ZXJmaHlnKCkgbmYgJGVnKXsNCgkJCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJCQkkbmVnWyRnXVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZWctPnhicXJOZm55T251bmFPbnhoOw0KCQkJCQkJCSRuZWdbJGddWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWctPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkJCSRuZWdbJGddWyd4YnFyV3JhdmZHbmV2cyddPSRlZy0+eGJxcldyYXZmR25ldnM7DQoJCQkJCQkJJG5lZ1skZ11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWctPnhicXJGbmdobmFPbmVuYXQ7DQoJCQkJCQkJJG5lZ1skZ11bJ2F2eW52T25sbmUnXT0oc3libmcpJGVnLT5hdnludk9ubG5lOw0KCQkJCQkJCSRuZWdbJGddWydhdnludlNuZnZ5dmduZiddPShzeWJuZykkZWctPmF2eW52U25mdnl2Z25mOw0KCQkJCQkJCSRuZWdbJGddWydhdnludkZocW51UXZ5aGFuZnYnXT0oc3libmcpJGVnLT5hdnludkZocW51UXZ5aGFuZnY7DQoJCQkJCQkJJG5lZ1skZ11bJ2ZyZXZPbmVuYXQnXT0kZWctPmZyZXZPbmVuYXQ7DQoJCQkJCQkJJG5lZ1skZ11bJ2ZyZXZPbnVuYU9ueGgnXT12YWdpbnkoJGVnLT5mcmV2T251bmFPbnhoKTsNCgkJCQkJCQkkbmVnWyRnXVsnZ25ldnMnXT0oc3libmcpJGVnLT5nbmV2czsNCgkJCQkJCQkkbmVnWyRnXVsnZ25ldnNTbmZ2eXZnbmYnXT0oc3libmcpJGVnLT5nbmV2c1NuZnZ5dmduZjsNCgkJCQkJCQ0KCQkJCQkJCSRnKys7DQoJCQkJCQl9DQoJCQkJCQkNCgkJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnb251bmFPbnhoR25ldnMnXT0kbmVnOw0KDQoJCQkJCSRvbysrOwkNCgkJCQl9DQoNCgkJCQ0KCQkJJG5lb1skb11bJ29udW5hT254aCddPSRuZV9vbnVuYU9ueGg7DQoNCgkJCQkkbysrOw0KDQoJCQkJfQ0KDQoNCgkJCSRuZWVbJHZdWydvbmVuYXQnXT0kbmVvOw0KDQoJCSRkcnYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLFZGQUhZWShueW56bmdSYWd2Z25mLCAnJykgTkYgbnluem5nUmFndmduZg0KCQkJICAsdmF2ZnZueVJhZ3ZnbmYNCgkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIHhicXJSYWd2Z25mKSBORiB4YnFyUmFndmduZg0KCQkJICAsVkZBSFlZKHhicXJXcmF2Zk5jdiwgJycpIE5GIHhicXJXcmF2Zk5jdg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZlZxcmFndmduZiwgJycpIE5GIHhicXJXcmF2ZlZxcmFndmduZg0KCQkJICAsVkZBSFlZKHhicXJBcnRuZW4sICcnKSBORiB4YnFyQXJ0bmVuDQoJCQkgICxWRkFIWVkoeGJxckZnbmdoZiwgJycpIE5GIHhicXJGZ25naGYNCgkJCSAgLFZGQUhZWShhbnpuUmFndmduZiwgJycpIE5GIGFuem5SYWd2Z25mDQoJCQkgICxWRkFIWVkoYXZvUmFndmduZiwgJycpIE5GIGF2b1JhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhYnpiZVZxcmFndmduZiwgJycpIE5GIGFiemJlVnFyYWd2Z25mDQoJCQkgICxWRkFIWVkoYWJ6YmVWd3ZhUmFndmduZiwgJycpIE5GIGFiemJlVnd2YVJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShnbmF0dG55Vnd2YVJhZ3ZnbmYsICcnKSBORiBnbmF0dG55Vnd2YVJhZ3ZnbmYNCgkJCSAgLGZyZXZSYWd2Z25mDQoJCSAgU0VCWiBxb2IuaXZyal9yYWd2Z25mX29wMjYxIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJQkVRUkUgT0wgZnJldlJhZ3ZnbmYNCg0KCQkiKTsNCg0KCQkkcnY9MDsNCgkJc2Jlcm5wdSgkZHJ2LT5lcmZoeWcoKSBuZiAkZXJ2KXsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ255bnpuZ1JhZ3ZnbmYnXT0kZXJ2LT5ueW56bmdSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxclJhZ3ZnbmYnXT0kZXJ2LT54YnFyUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJXcmF2Zk5jdiddPSRlcnYtPnhicXJXcmF2Zk5jdjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJXcmF2ZlZxcmFndmduZiddPSRlcnYtPnhicXJXcmF2ZlZxcmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJBcnRuZW4nXT0kZXJ2LT54YnFyQXJ0bmVuOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxckZnbmdoZiddPSRlcnYtPnhicXJGZ25naGY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhbnpuUmFndmduZiddPSRlcnYtPmFuem5SYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYXZvUmFndmduZiddPSRlcnYtPmF2b1JhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhYnpiZVZxcmFndmduZiddPSRlcnYtPmFiemJlVnFyYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYWJ6YmVWd3ZhUmFndmduZiddPSRlcnYtPmFiemJlVnd2YVJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydnbmF0dG55Vnd2YVJhZ3ZnbmYnXT0kZXJ2LT5nbmF0dG55Vnd2YVJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydmcmV2UmFndmduZiddPXZhZ2lueSgkZXJ2LT5mcmV2UmFndmduZik7DQoNCgkJJHJ2Kys7DQoJCX0NCgkJDQoJCSRkX3hyem5mbmEgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCQkgICx3aHp5bnVYcnpuZm5hDQoJCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCSAgLGZyZXZYcnpuZm5hDQoJCQkJICAsenJleFhyem5mbmENCgkJCSAgU0VCWiBxb2IuaXZyal9xbmduX3hyem5mbmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhyem5mbmE9MDsNCgkJc2Jlcm5wdSgkZF94cnpuZm5hLT5lcmZoeWcoKSBuZiAkZV94cnpuZm5hKXsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnd2h6eW51WHJ6bmZuYSddPXZhZ2lueSgkZV94cnpuZm5hLT53aHp5bnVYcnpuZm5hKTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsneGJxcldyYXZmWHJ6bmZuYSddPSRlX3hyem5mbmEtPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3pyZXhYcnpuZm5hJ109JGVfeHJ6bmZuYS0+enJleFhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ2ZyZXZYcnpuZm5hJ109dmFnaW55KCRlX3hyem5mbmEtPmZyZXZYcnpuZm5hKTsNCg0KCQkkeHJ6bmZuYSsrOw0KCQl9DQoNCgkJLyogJGRfeGJhZ252YXJlID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZYYmFnbnZhcmUNCgkJCSAgLHhicXJHdmNyWGJhZ252YXJlDQoJCQkgICx4YnFySHhoZW5hWGJhZ252YXJlDQoJCQkgICxhYnpiZVhiYWdudmFyZQ0KCQkJICAsZnJldlhiYWdudmFyZQ0KCQkJU0VCWiBxb2IuZ295X29wX2JoZ194YmFnbnZhcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhiYWdudmFyZT0wOw0KCQlzYmVybnB1KCRkX3hiYWdudmFyZS0+ZXJmaHlnKCkgbmYgJGVfeGJhZ252YXJlKXsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJXcmF2ZlhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxcldyYXZmWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckd2Y3JYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJHdmNyWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckh4aGVuYVhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxckh4aGVuYVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2FiemJlWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT5hYnpiZVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2ZyZXZYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPmZyZXZYYmFnbnZhcmU7DQoNCgkJJHhiYWdudmFyZSsrOw0KCQl9ICovDQoNCg0KCQkvKiAkbmVfY2hhdGhnbmEgPSBuZWVubCgpOw0KCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7CQkNCgkJCSRkZyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJDQoJCQkJRlJZUlBHDQoJCQkJCTEgbmYgdnFDaGF0aGduYSwNCgkJCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCQkJb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJZnJldk9uZW5hdCwNCgkJCQkJJ09aJyBORiB4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQlQTkZSDQoJCQkJCUpVUkEgKCAoIGsueGJxclFieE5mbnkgPD4gMjMgKSApIEdVUkENCgkJCQkJJzEnIFJZRlIgJzAnIA0KCQkJCQlSQVEgTkYgeGJxck5mbnlPbnVuYU9ueGgsDQoJCQkJCSczJyBORiB4YnFyU25mdnl2Z25mR25ldnMsDQoJCQkJCTAgTkYgYXZ5bnZPbmxuZSwNCgkJCQkJMTAwIE5GIGF2eW52U25mdnl2Z25mLA0KCQkJCQkwIE5GIGF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJdmZhaHl5KCBsLkdORVZTX09aLCAnMCcgKSBORiBnbmV2cywNCgkJCQkJMTAwIE5GIGduZXZzU25mdnl2Z25mLA0KCQkJCQl2ZmFoeXkoIHdoenludUZuZ2huYSwgMCApIE5GIHdoenludUZuZ2huYSwNCgkJCQkJJzEnIE5GIHhicXJXcmF2ZkduZXZzLA0KCQkJCQl2ZmFoeXkoIHhicXJGbmdobmFPbmVuYXQsICdDUFInICkgTkYgeGJxckZuZ2huYU9uZW5hdCwNCgkJCQkJRUJKX0FIWk9SRSAoICkgQklSRSAoIEJFUVJFIE9MIG9wX2JoZ19xcmdudnlfdnEgKSBORiBmcmV2T251bmFPbnhoIA0KCQkJCVNFQlogcW9iLml2cmpfcW5nbl9vbnVuYU9ueGggaw0KCQkJCVlSU0cgV0JWQSBlcnNyZXJhZnZfY2JmX2duZXZzIGwgQkEgay5jYmZHbmV2cyA9IGwuQUJaQkVfVUYNCgkJCQkJanVyZXIgay5vcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJDQoJCQkiKTsNCgkJCQ0KCQkJJGM9MDsNCgkJCQ0KCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlYyl7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsndnFDaGF0aGduYSddPXZhZ2lueSgkZWMtPnZxQ2hhdGhnbmEpOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGVjLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJCQkkbmVfY2hhdGhnbmFbJGNdWydhdnludkNoYXRoZ25hJ109JGVjLT5hdnludkNoYXRoZ25hOw0KCQkJCSRjKys7DQoJCQl9ICovDQoNCg0KCQkkZF9xYnhoenJhID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3FieGh6cmFfdnEgbmYgdnFRYnhoenJhDQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICxvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkgICx4YnFyUWJ4aHpyYQ0KCQkJICAsVkZBSFlZKHhicXJTbmZ2eXZnbmYsICcnKSBORiB4YnFyU25mdnl2Z25mDQoJCQkgICx4YnFyVnd2YQ0KCQkJICAsd3JhdmZRYnhoenJhDQoJCQkgICxWRkFIWVkoYW56blNuZnZ5dmduZiwgJycpIE5GIGFuem5TbmZ2eXZnbmYNCgkJCSAgLGFiemJlUWJ4aHpyYQ0KCQkJICAsZnJldlFieGh6cmENCgkJCSAgLGduYXR0bnlRYnhoenJhDQoJCQkgICxoZXlRYnhoenJhDQoJCQkgICx4cmdyZW5hdG5hDQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcWJ4aHpyYSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQliZXFyZSBvbCBmcmV2UWJ4aHpyYQ0KDQoJCSIpOw0KDQoJCSRxYnhoenJhPTA7DQoJCXNiZXJucHUoJGRfcWJ4aHpyYS0+ZXJmaHlnKCkgbmYgJGVfcWJ4aHpyYSl7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ3ZxUWJ4aHpyYSddPSRlX3FieGh6cmEtPnZxUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsneGJxclFieGh6cmEnXT0kZV9xYnhoenJhLT54YnFyUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsneGJxclNuZnZ5dmduZiddPSRlX3FieGh6cmEtPnhicXJTbmZ2eXZnbmY7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2FiemJlUWJ4aHpyYSddPSRlX3FieGh6cmEtPmFiemJlUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnZnJldlFieGh6cmEnXT0kZV9xYnhoenJhLT5mcmV2UWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnZ25hdHRueVFieGh6cmEnXT0kZV9xYnhoenJhLT5nbmF0dG55UWJ4aHpyYTsNCg0KCQkkcWJ4aHpyYSsrOw0KCQl9DQoNCgkJJGRfY3JhdG5hdHhoZyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLCcxJyBuZiB2cUNyYXRuYXR4aGcNCgkJCSAgLHhicXJPcmFxcmVuDQoJCQkgICxhbnpuQ3JhdG5hdHhoZw0KCQkJICAsYWJ6YmVDcmF0bmF0eGhnDQoJCQkgICx4YnFyUG5lbk5hdHhoZw0KCQkJICAsRUJKX0FIWk9SRSgpIEJJUkUgKEJFUVJFIE9MIG9wX2JoZ191cm5xcmVfdnEpIG5mIGZyZXZDcmF0bmF0eGhnDQoJCQkgIFNFQlogcW9iLml2cmpfY3JhdG5hdHhoZyBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkY3JhdG5hdHhoZz0wOw0KCQlzYmVybnB1KCRkX2NyYXRuYXR4aGctPmVyZmh5ZygpIG5mICRlX2NyYXRuYXR4aGcpew0KCQkJdnMoJHhicXJRYnhoenJhID09ICcyNycpew0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsndnFDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+dnFDcmF0bmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxck9yYXFyZW4nXT0kZV9jcmF0bmF0eGhnLT54YnFyT3JhcXJlbjsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2Fuem5DcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YW56bkNyYXRuYXR4aGc7DQoJCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydhYnpiZUNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5hYnpiZUNyYXRuYXR4aGc7DQoJCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWyd4YnFyUG5lbk5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnhicXJQbmVuTmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnZnJldkNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5mcmV2Q3JhdG5hdHhoZzsNCgkJCX0gcnlmcnsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ3ZxQ3JhdG5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnZxQ3JhdG5hdHhoZzsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ3hicXJPcmFxcmVuJ109JGVfY3JhdG5hdHhoZy0+eGJxck9yYXFyZW47DQoJCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydhbnpuQ3JhdG5hdHhoZyddPSRlX2NyYXRuYXR4aGctPmFuem5DcmF0bmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYWJ6YmVDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxclBuZW5OYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT54YnFyUG5lbk5hdHhoZzsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2ZyZXZDcmF0bmF0eGhnJ109dmFnaW55KCRlX2NyYXRuYXR4aGctPmZyZXZDcmF0bmF0eGhnKTsNCgkJCX07DQoJCQkNCgkJJGNyYXRuYXR4aGcrKzsNCgkJfQ0KCQkNCgkJJGRfd256dmFuYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJICBGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCQksdnFXbnp2YW5hDQoJCQkJCSxndmNyX3FieGh6cmENCgkJCQkJLHhicXJXcmF2ZlduenZhbmENCgkJCQkJLGF2eW52V256dmFuYQ0KCQkJCQksYWJ6YmVPY3cNCgkJCQkJLGFiemJlV256dmFuYQ0KCQkJCQksY3Jhd256dmENCgkJCQkJLGduYXR0bnlPY3cNCgkJCQkJLGduYXR0bnlXbnp2YW5hDQoJCQkJCSxnbmF0dG55V25naHVHcnpjYg0KCQkJCQlTRUJaIHFvYi5nb3lfcW5nbl93bnp2YW5hIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkNCgkJCSIpOw0KCQkJCQ0KCQkJJHduenZhbmE9MDsNCgkJCXNiZXJucHUoJGRfd256dmFuYS0+ZXJmaHlnKCkgbmYgJGVfd256dmFuYSl7DQoJCQkJJG5lX3duenZhbmFbJHduenZhbmFdWyd2cVduenZhbmEnXT0kZV93bnp2YW5hLT52cVduenZhbmE7DQoJCQkJJG5lX3duenZhbmFbJHduenZhbmFdWyd4YnFyV3JhdmZXbnp2YW5hJ109JGVfd256dmFuYS0+eGJxcldyYXZmV256dmFuYTsNCgkJCQkkbmVfd256dmFuYVskd256dmFuYV1bJ2F2eW52V256dmFuYSddPShzeWJuZykkZV93bnp2YW5hLT5hdnludlduenZhbmE7DQoJCQkJJG5lX3duenZhbmFbJHduenZhbmFdWydhYnpiZU9jdyddPSRlX3duenZhbmEtPmFiemJlT2N3Ow0KCQkJCSRuZV93bnp2YW5hWyR3bnp2YW5hXVsnYWJ6YmVXbnp2YW5hJ109JGVfd256dmFuYS0+YWJ6YmVXbnp2YW5hOw0KCQkJCSRuZV93bnp2YW5hWyR3bnp2YW5hXVsnY3Jhd256dmEnXT0kZV93bnp2YW5hLT5jcmF3bnp2YTsNCgkJCQkkbmVfd256dmFuYVskd256dmFuYV1bJ2duYXR0bnlPY3cnXT0kZV93bnp2YW5hLT5nbmF0dG55T2N3Ow0KCQkJCSRuZV93bnp2YW5hWyR3bnp2YW5hXVsnZ25hdHRueVduenZhbmEnXT0kZV93bnp2YW5hLT5nbmF0dG55V256dmFuYTsNCgkJCQkkbmVfd256dmFuYVskd256dmFuYV1bJ2duYXR0bnlXbmdodUdyemNiJ109JGVfd256dmFuYS0+Z25hdHRueVduZ2h1R3J6Y2I7DQoNCgkJCSR3bnp2YW5hKys7DQoJCQl9DQoJCQ0KCQkvKiAkZF9vbmF4ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxck9uYXgNCgkJCSAgLGZyZXZPbmF4DQoJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfdXJucXJlIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSRvbmF4PTA7DQoJCXNiZXJucHUoJGRfb25heC0+ZXJmaHlnKCkgbmYgJGVfb25heCl7DQoJCQkkbmVfb25heFskb25heF1bJ3hicXJPbmF4J109JGVfb25heC0+eGJxck9uYXg7DQoJCQkkbmVfb25heFskb25heF1bJ2ZyZXZPbmF4J109JGVfb25heC0+ZnJldk9uYXg7DQoNCgkJJG9uYXgrKzsNCgkJfSAqLw0KCQkNCgkJLyogJGRfeHJmdm5jbmFPbmVuYXQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJICAseGJxcldyYXZmVGhxbmF0DQoJCQkgICxhbnpuQ3ZwDQoJCQkgICxueW56bmcNCgkJCSAgLGFiemJlR3J5Y0N2cA0KCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCSAgLHdoenludVBiYWdudmFyZTQwDQoJCQkgICx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJICAseGJxcldyYXZmQ25lZ0JzDQoJCQkgICxnbmF0dG55Q3hvDQoJCQkgICxqbnhnaEZ2bmNDcmV2eGZuIG5mIGpueGdoRnZuY0NyZXZ4Zm4xDQoJCQkgICxwYmFwbmcoZ25hdHRueUN4bywnRycsIGpueGdoRnZuY0NyZXZ4Zm4sJzowMC4wMDBNJykgbmYgam54Z2hGdm5jQ3Jldnhmbg0KCQkJICAsV3JhdmZPbmVuYXQNCgkJCSAgLFdyYXZmVGhxbmF0DQoJCQkgICxXcmF2ZkNuZWdCcw0KCQkJICAsUG5lbkZnaHNzdmF0DQoJCQkgICx4cmdyZW5hdG5hDQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJIik7DQoNCgkJJHhyZnZuY25hT25lbmF0PTA7DQoJCXNiZXJucHUoJGRfeHJmdm5jbmFPbmVuYXQtPmVyZmh5ZygpIG5mICRlX3hyZnZuY25hT25lbmF0KXsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZPbmVuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmT25lbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZlRocW5hdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZUaHFuYXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYW56bkN2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hbnpuQ3ZwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ255bnpuZyddPSRlX3hyZnZuY25hT25lbmF0LT5ueW56bmc7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYWJ6YmVHcnljQ3ZwJ109JGVfeHJmdm5jbmFPbmVuYXQtPmFiemJlR3J5Y0N2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT55YnhuZnZGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyUG5lbkZnaHNzdmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJQbmVuRmdoc3N2YXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmQ25lZ0JzJ109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2ZkNuZWdCczsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydnbmF0dG55Q3hvJ109JGVfeHJmdm5jbmFPbmVuYXQtPmduYXR0bnlDeG87DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT5qbnhnaEZ2bmNDcmV2eGZuOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTIwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTIwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTQwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTQwOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdCsrOw0KCQl9ICovDQoNCg0KCQkJJG5lZVskdl1bJ3duenZhbmEnXT0kbmVfd256dmFuYTsNCgkJCSRuZWVbJHZdWydjaGF0aGduYSddPSRuZV9jaGF0aGduYTsNCgkJCSRuZWVbJHZdWydyYWd2Z25mJ109JG5lX3JhZ3ZnbmY7DQoJCQkkbmVlWyR2XVsneHJ6bmZuYSddPSRuZV94cnpuZm5hOw0KCQkJJG5lZVskdl1bJ3hiYWdudmFyZSddPSRuZV94YmFnbnZhcmU7DQoJCQkkbmVlWyR2XVsncWJ4aHpyYSddPSRuZV9xYnhoenJhOw0KCQkJJG5lZVskdl1bJ2NyYXRuYXR4aGcnXT0kbmVfY3JhdG5hdHhoZzsNCg0KCQkkdisrOw0KCQl9DQoJDQoNCgkJJG5lZW5sPSAkbmVlWzBdOw0KCQkkcW5nbmFsbj0gd2ZiYV9yYXBicXIoJG5lZW5sKTsNCgkJDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGRywgZ2Vocik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCgkJJHVybnFyZWYgPSBuZWVubCgNCgkJICAgIk5oZ3ViZXZtbmd2YmE6IE9ybmVyZSAkZ2J4cmEiLA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIg0KCQkpOw0KCQkvL3JwdWIgJGdieHJhIC4gIjxvZT4iOyANCgkJLy9pbmVfcWh6YygkdXJucXJlZik7DQoJCS8vcXZyKCk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJCQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHU1ZSWVFGLCAkcW5nbmFsbik7DQoJCS8vcnB1YiAkcW5nbmFsbjsJDQoJCS8vcXZyKCk7DQoNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCgkJDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJDQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KDQoJCSRmZ25naGZfcHJ2Zm4gPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCSRuZmhqID0gdmZmcmcoJGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl0pPyRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdOiduaic7DQoJCXZzKCRuZmhqID09ICduaicpew0KCQkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gPT0gJ0JYJyl7DQoJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWhjcW5nciBnb3lfb3BfYmhnX3VybnFyZSBmcmcgdnFFcmZjYmEgPSAtMSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSIpOw0KCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J0ZoeGZyZiEnICApKTsNCgkJCQ0KCQkJDQoJCX0gcnlmciB7DQoJCQl2cyAodmZmcmcoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10pKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J1RudG55IEZyYXF2YXQhJykpOw0KCQkJfSByeWZyIHsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZicgPT4gIlZhc2Jlem5mdiIsICd6cmZmbnRyJyA9PiAiIEhhcXJlIFpudmFnbmFyYXByIEZyZWlyZSAiLCdxbmduRmduZ2hmJyA9PidTbnZ5cnEnICkgKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCX0NCgkJfSByeWZyIHsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PicwMicgLCd6cmZmbnRyJyA9PiRuZmhqLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScgKSk7CQkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCg0KCX0NCg0KCXNoYXBndmJhIHByeGZnbmdoZl9xbmduX3BydmZuKCl7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IHVybnFyZV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkYWJ6YmVOd2ggPSAodmZmcmcoJF9DQkZHWydhYnpiZU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydhYnpiZU53aCddKSk/JF9DQkZHWydhYnpiZU53aCddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQWJ6YmUgTndoIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRmZ2YgPSAodmZmcmcoJF9DQkZHWydmZ2YnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snZmdmJ10pKT8kX0NCRkdbJ2ZnZiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZmduZ2hmIEd2cW54IFF2Z3J6aHhuYSBQUlZGTiJ9Jyk7DQoJCSRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KCQkkZ2J4cmEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKTsNCgkJDQoJCSRhYnpiZU53aCA9IGZnZV9lcmN5bnByKG5lZW5sKCItIiwiLiIsImtrIiksIG5lZW5sKCIiLCIiKSwgJGFiemJlTndoKTsNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi9mZ25naGYvJGFiemJlTndoIjsNCgkJDQoNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCg0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCS8vcnB1YiAkZ2J4cmE7DQoJCS8vcXZyKCk7DQoJCSAgIA0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19VR0dDVVJOUVJFLCAkdXJucXJlZik7DQoJCS8vc2JlIHFyb2h0IGJheWwhDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xVQkZHLCBzbnlmcik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xDUlJFLCBzbnlmcik7DQoNCgkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCgkJLy9ycHViICRlcmZjOw0KCQkvL3F2cigpOw0KCQkNCgkJJHhicXJFcmZjYmEgPScnOw0KCQkkYWJ6YmVFcmZjYmEgPScnOw0KCQkkZ25hdHRueUVyZmNiYSA9Jyc7DQoJCSRqbnhnaEVyZmNiYSA9Jyc7DQoJCSRoZW52bmExID0nJzsNCgkJJGhlbnZuYTIgPScnOw0KCQkkQ3FzID0nJzsNCgkJCQ0KCQkkZmduZ2hmX3BydmZuID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOwkNCgkJDQoJCXZzICghbmVlbmxfeHJsX3JrdmZnZigicW5nbkZnbmdoZiIsJGZnbmdoZl9wcnZmbikpDQoJCXsNCgkJCXZzKG5lZW5sX3hybF9ya3ZmZ2YoIlJrcHJjZ3ZiYSIsJGZnbmdoZl9wcnZmbikpew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAyJywgJ2ZnbmdoZic9PicwMicgLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScsICd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ1JrcHJjZ3ZiYSddICkpOwkJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnOTknLCAnZmduZ2hmJz0+Jzk5JywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kYWJ6YmVOd2ggLiAiICIgLiAkZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10pKTsJCQ0KCQkJcXZyKCk7DQoJCX0gDQoJCSAgDQoNCgkJJG5maGogPSB2ZmZyZygkZmduZ2hmX3BydmZuWyJSa3ByY2d2YmEiXSk/JGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl06J25qJzsNCgkJDQoJCQ0KCQl2cygkbmZoaiA9PSAnbmonKXsNCgkJCXZzKHBiaGFnKCRmZ25naGZfcHJ2Zm4pID4gMCl7DQoJCQkJDQoJCQkJdnMocGJoYWcoJGZnbmdoZl9wcnZmblsicW5nbkZnbmdoZiJdWzBdKSA+IDApew0KCQkJCQkkYWJ6YmVOd2ggPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bMF1bImFiemJlTndoIl07DQoJCQkJCSR4YnFyQ2ViZnJmID0gJGZnbmdoZl9wcnZmblsicW5nbkZnbmdoZiJdWzBdWyJ4YnFyQ2ViZnJmIl07DQoJCQkJCSRhYnpiZVFuc2duZSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVswXVsiYWJ6YmVRbnNnbmUiXTsNCgkJCQkJJGduYXR0bnlRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bMF1bImduYXR0bnlRbnNnbmUiXTsNCgkJCQkJDQoJCQkJCSRnbmF0dG55UW5zZ25lPXFuZ3JfcGVybmdyKCRnbmF0dG55UW5zZ25lKTsNCgkJCQkJJGduYXR0bnlRbnNnbmU9cW5ncl9zYmV6bmcoJGduYXR0bnlRbnNnbmUsIkwtei1xIik7DQoJCQkJCQ0KCQkJCQkkam54Z2hGZ25naGYgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bMF1bImpueGdoRmduZ2hmIl07DQoJCQkJCSR4cmdyZW5hdG5hID0gJGZnbmdoZl9wcnZmblsicW5nbkZnbmdoZiJdWzBdWyJ4cmdyZW5hdG5hIl07DQoJCQkJCSR4YnFyUWJ4aHpyYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVswXVsieGJxclFieGh6cmEiXTsNCgkJCQkJJGZnbmdoZiA9ICRmZ25naGZfcHJ2Zm5bImZnbmdoZiJdOw0KCQkJCQkNCgkJCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBmZ25naGZfZXJmY2JhIHNlYnogW2dveV9xbmduX2VyZmNiYV0gDQoJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJCW5hcSB4YnFyQ2ViZnJmID0gJyR4YnFyQ2ViZnJmJyANCgkJCQkJCQluYXEgeHJncmVuYXRuYSA9ICckeHJncmVuYXRuYScgDQoJCQkJCQkJbmFxIGpueGdoRmduZ2hmID0gJyRqbnhnaEZnbmdoZicNCgkJCQkJIik7DQoJCQkJCSRmZ25naGZfZXJmY2JhID0gMDsNCgkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJJGZnbmdoZl9lcmZjYmEgPSAkZS0+ZmduZ2hmX2VyZmNiYTsNCgkJCQkJfQ0KCQkJCQl2cygkZmduZ2hmX2VyZmNiYSA+IDApew0KCQkJCQkJDQoJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZmduZ2hmX3BydmZuWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGFiemJlTndoIC4gIiAiIC4gJGZnbmdoZl9wcnZmblsnenJmZm50ciddLCAncW5nbkZnbmdoZicgPT4keHJncmVuYXRuYSkpOwkNCgkJCQkJCXF2cigpOw0KCQkJCQl9DQoJCQkJCQ0KCQkJCX0gcnlmciB2cyhwYmhhZygkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF0pID4gMCl7DQoJCQkJCSRhYnpiZU53aCA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiYWJ6YmVOd2giXTsNCgkJCQkJJHhicXJFcmZjYmEgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bInhicXJFcmZjYmEiXTsNCgkJCQkJJGFiemJlUW5zZ25lID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJhYnpiZVFuc2duZSJdOw0KCQkJCQkkZ25hdHRueVFuc2duZSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiZ25hdHRueVFuc2duZSJdOw0KCQkJCQkNCgkJCQkJJGduYXR0bnlRbnNnbmU9cW5ncl9wZXJuZ3IoJGduYXR0bnlRbnNnbmUpOw0KCQkJCQkkZ25hdHRueVFuc2duZT1xbmdyX3NiZXpuZygkZ25hdHRueVFuc2duZSwiTC16LXEiKTsNCgkJCQkJDQoJCQkJCSRhYnpiZUVyZmNiYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiYWJ6YmVFcmZjYmEiXTsNCgkJCQkJJGduYXR0bnlFcmZjYmEgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImduYXR0bnlFcmZjYmEiXTsNCgkJCQkJJGpueGdoRXJmY2JhID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJqbnhnaEVyZmNiYSJdOw0KCQkJCQkkeHJncmVuYXRuYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsieHJncmVuYXRuYSJdOw0KCQkJCQkkQ3FzID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJDcXMiXTsNCgkJCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBmZ25naGZfZXJmY2JhIHNlYnogW2dveV9xbmduX2VyZmNiYV0gDQoJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJbmFxIHhicXJFcmZjYmEgPSAnJHhicXJFcmZjYmEnIA0KCQkJCQkJbmFxIHhyZ3JlbmF0bmEgPSAnJHhyZ3JlbmF0bmEnIA0KCQkJCQkJbmFxIGpueGdoRXJmY2JhID0gJyRqbnhnaEVyZmNiYScgDQoJCQkJCQluYXEgQ3FzID0gJyRDcXMnDQoJCQkJCSIpOw0KCQkJCQkNCgkJCQkJJGZnbmdoZl9lcmZjYmEgPSAwOw0KCQkJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJCQkkZmduZ2hmX2VyZmNiYSA9ICRlLT5mZ25naGZfZXJmY2JhOw0KCQkJCQl9DQoJCQkJCXZzKCRmZ25naGZfZXJmY2JhID4gMCl7DQoJCQkJCQkNCgkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sICdxbmduRmduZ2hmJyA9PiR4cmdyZW5hdG5hKSk7CQ0KCQkJCQkJcXZyKCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0gcnlmciB7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMicsICdmZ25naGYnPT4nMDInICwnenJmZm50cicgPT4kbmZoaiwncW5nbkZnbmdoZicgPT4nWGJhcnhmdiBncmVjaGdoZiwgRnZ5bnV4bmEgWWJ0dmEgUFJWRk4geHJ6b255diEnICkpOwkJDQoJCQlxdnIoKTsNCgkJCQ0KCQl9DQoNCgkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ109PSdGaHBwcmZmJyl7DQoJCQkNCgkJCXZzKCR4YnFyQ2ViZnJmID09ICcnIHx8ICR4YnFyQ2ViZnJmID09ICcwMDEnKXsNCgkJCQkNCgkJCX0gcnlmcnsNCgkJCQkNCgkJCQkkcW5nbl92YSA9IG5lZW5sKCdvcF9iaGdfdXJucXJlX3ZxJyA9PiAkb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJJ2FiemJlTndoJyA9PiAkYWJ6YmVOd2gsICd4YnFyQ2ViZnJmJyA9PiAkeGJxckNlYmZyZiwNCgkJCQkJJ2FiemJlUW5zZ25lJyA9PiAkYWJ6YmVRbnNnbmUsICdnbmF0dG55UW5zZ25lJyA9PiAkZ25hdHRueVFuc2duZSwNCgkJCQkJJ2pueGdoRmduZ2hmJyA9PiAkam54Z2hGZ25naGYsICd4YnFyUWJ4aHpyYScgPT4gJHhicXJRYnhoenJhLA0KCQkJCQkneGJxckVyZmNiYScgPT4gJHhicXJFcmZjYmEsICdhYnpiZUVyZmNiYScgPT4gJGFiemJlRXJmY2JhLA0KCQkJCQknZ25hdHRueUVyZmNiYScgPT4gJGduYXR0bnlFcmZjYmEsICdqbnhnaEVyZmNiYScgPT4gJGpueGdoRXJmY2JhLA0KCQkJCQknaGVudm5hMScgPT4gJGhlbnZuYTEsICdoZW52bmEyJyA9PiAkaGVudm5hMiwNCgkJCQkJJ0NxcycgPT4gJENxcywgJ3hyZ3JlbmF0bmEnID0+ICR4cmdyZW5hdG5hKTsNCgkJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9xbmduX2VyZmNiYScsICRxbmduX3ZhKTsNCgkJCX07DQoJCQ0KCQkJdnMoJGFiemJlUW5zZ25lID09ICcnIHx8ICR4YnFyQ2ViZnJmID09ICcwMDEnKXsNCgkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQlIQ1FOR1IgZ295X29wX2JoZ191cm5xcmUNCgkJCQkJRlJHIGdveV9vcF9iaGdfdXJucXJlLnZxRXJmY2JhID0gLTY2LA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmFfMSA9IC02NiwNCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLmduYXR0bnlRbnNnbmUgPSBBSFlZDQoJCQkJCUpVUkVSDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS5vcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkiKTsNCgkJCX0gcnlmcnsNCgkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCQlIQ1FOR1IgZ295X29wX2JoZ191cm5xcmUNCgkJCQkJRlJHIGdveV9vcF9iaGdfdXJucXJlLnZxRXJmY2JhID0gZ295X3FuZ25fZXJmY2JhLnZxRXJmY2JhLA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmFfMSA9IGdveV9xbmduX2VyZmNiYS52cUVyZmNiYSwNCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLmFiUW5zZ25lID0gZ295X3FuZ25fZXJmY2JhLmFiemJlUW5zZ25lLA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUuZ25hdHRueVFuc2duZSA9IGdveV9xbmduX2VyZmNiYS5nbmF0dG55UW5zZ25lDQoJCQkJCQkJDQoJCQkJCVNFQloNCgkJCQkJCWdveV9xbmduX2VyZmNiYQ0KCQkJCQkJVkFBUkUgV0JWQSBnb3lfb3BfYmhnX3VybnFyZSBCQSBnb3lfcW5nbl9lcmZjYmEub3BfYmhnX3VybnFyZV92cSA9IGdveV9vcF9iaGdfdXJucXJlLm9wX2JoZ191cm5xcmVfdnEgDQoJCQkJCUpVUkVSDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS5vcF9iaGdfdXJucXJlX3ZxPSAkb3BfYmhnX3VybnFyZV92cSANCgkJCQkJCU5BUSBnb3lfcW5nbl9lcmZjYmEudnFFcmZjYmEgPSAoIEZSWVJQRyBaTksgKCB2cUVyZmNiYSApIFNFQlogZ295X3FuZ25fZXJmY2JhICkNCgkJCQkiKTsNCgkJCX07DQoJCQkNCgkJCQ0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sICdxbmduRmduZ2hmJyA9PiR4cmdyZW5hdG5hICAuICIgTldIOiAiIC4gJGFiemJlTndoICAuICIgQUJaQkUvR05BVFROWSAiIC4gJGFiemJlUW5zZ25lIC4gIi8iIC4gJGduYXR0bnlRbnNnbmUgICAgICApKTsJCQ0KCQkJCXF2cigpOw0KCQl9DQoNCgl9DQoNCgkNCglzaGFwZ3ZiYSBwcnhlcmZjYmFfcW5nbl9wcnZmbigpew0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiB1cm5xcmVfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGFiemJlTndoID0gKHZmZnJnKCRfQ0JGR1snYWJ6YmVOd2gnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snYWJ6YmVOd2gnXSkpPyRfQ0JGR1snYWJ6YmVOd2gnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIEFiemJlIE53aCBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCgkJJGdieHJhID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk7DQoJCQ0KCQkkYWJ6YmVOd2ggPSBmZ2VfZXJjeW5wcihuZWVubCgiLSIsIi4iLCJrayIpLCBuZWVubCgiIiwiIiksICRhYnpiZU53aCk7DQoJCSRoZXkgPSAidWdnY2Y6Ly9uY3ZmLXRqLm9ybnBoeG52LnRiLnZxL2JjcmFuY3YvZmduZ2hmLyRhYnpiZU53aCI7DQoNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCg0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCS8vcnB1YiAkZ2J4cmE7DQoJCS8vcXZyKCk7DQoJCSAgIA0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19VR0dDVVJOUVJFLCAkdXJucXJlZik7DQoJCS8vc2JlIHFyb2h0IGJheWwhDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xVQkZHLCBzbnlmcik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xDUlJFLCBzbnlmcik7DQoNCgkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCgkJLy9ycHViICRlcmZjOw0KCQkvL3F2cigpOw0KCQkNCgkJJHhicXJFcmZjYmEgPScnOw0KCQkkYWJ6YmVFcmZjYmEgPScnOw0KCQkkZ25hdHRueUVyZmNiYSA9Jyc7DQoJCSRqbnhnaEVyZmNiYSA9Jyc7DQoJCSRoZW52bmExID0nJzsNCgkJJGhlbnZuYTIgPScnOw0KCQkkY3FzID0nJzsNCgkJDQoJCSRmZ25naGZfcHJ2Zm4gPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCSRrayA9IHBiaGFnKCRmZ25naGZfcHJ2Zm4pOw0KCQkNCgkJdnMgKCFuZWVubF94cmxfcmt2ZmdmKCJxbmduRmduZ2hmIiwkZmduZ2hmX3BydmZuKSkNCgkJew0KCQkJdnMobmVlbmxfeHJsX3JrdmZnZigiUmtwcmNndmJhIiwkZmduZ2hmX3BydmZuKSl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDInLCAnZmduZ2hmJz0+JzAyJyAsJ3pyZmZudHInID0+JGZnbmdoZl9wcnZmblsnUmtwcmNndmJhJ10sJ3FuZ25GZ25naGYnID0+JGZnbmdoZl9wcnZmblsnUmtwcmNndmJhJ10gKSk7CQkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMicsICdmZ25naGYnPT4nMDInICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gKSk7CQkNCgkJCXF2cigpOw0KCQl9IA0KCQkgIA0KDQoJCSRuZmhqID0gdmZmcmcoJGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl0pPyRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdOiduaic7DQoJCQ0KCQkNCgkJdnMoJG5maGogPT0gJ25qJyl7DQoJCQl2cyhwYmhhZygkZmduZ2hmX3BydmZuKSA+IDApew0KCQ0KCQkJCXZzKHBiaGFnKCRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdKSA+IDApew0KCQkJCQkkYWJ6YmVOd2ggPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsiYWJ6YmVOd2giXTsNCgkJCQkJJHhicXJDZWJmcmYgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsieGJxckNlYmZyZiJdOw0KCQkJCQkkYWJ6YmVRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsiYWJ6YmVRbnNnbmUiXTsNCgkJCQkJJGduYXR0bnlRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsiZ25hdHRueVFuc2duZSJdOw0KCQkJCQkNCgkJCQkJJGduYXR0bnlRbnNnbmU9cW5ncl9wZXJuZ3IoJGduYXR0bnlRbnNnbmUpOw0KCQkJCQkkZ25hdHRueVFuc2duZT1xbmdyX3NiZXpuZygkZ25hdHRueVFuc2duZSwiTC16LXEiKTsNCgkJCQkJDQoJCQkJCSRqbnhnaEZnbmdoZiA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdWyJqbnhnaEZnbmdoZiJdOw0KCQkJCQkkeHJncmVuYXRuYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdWyJ4cmdyZW5hdG5hIl07DQoJCQkJCSR4YnFyUWJ4aHpyYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdWyJ4YnFyUWJ4aHpyYSJdOw0KCQkJCQkkZmduZ2hmID0gJGZnbmdoZl9wcnZmblsiZmduZ2hmIl07DQoNCgkJCQkJJGRrayA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IHFvYi5nb3lfcW5nbl9lcmZjYmEgDQoJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJCW5hcSB4YnFyQ2ViZnJmID0gJyR4YnFyQ2ViZnJmJw0KCQkJCQkJCW5hcSB4cmdyZW5hdG5hID0gJyR4cmdyZW5hdG5hJyANCgkJCQkJCQluYXEgam54Z2hGZ25naGYgPSAnJGpueGdoRmduZ2hmJw0KCQkJCQkiKTsNCgkJCQkJJHBhZyA9IDA7DQoJCQkJCXNiZXJucHUoJGRray0+ZXJmaHlnKCkgbmYgJGVrayl7DQoJCQkJCQkkcGFnID0gJGVray0+cGFnOw0KCQkJCQkJDQoJCQkJCX0NCgkJCQkJCQkJCQkJDQoJCQkJCXZzKCRwYWcgPiAwKXsNCgkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kYWJ6YmVOd2ggLiAiICIgLiAkZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sICdxbmduRmduZ2hmJyA9PiR4cmdyZW5hdG5hKSk7CQ0KCQkJCQkJcXZyKCk7DQoJCQkJCX0gDQoJCQkJCQ0KCQkJCX0gDQoJCQkJDQoJCQkJdnMocGJoYWcoJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdKSA+IDApew0KCQkJCQkNCgkJCQkJJGFiemJlTndoID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJhYnpiZU53aCJdOw0KCQkJCQkkeGJxckVyZmNiYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsieGJxckVyZmNiYSJdOw0KCQkJCQkkYWJ6YmVRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImFiemJlUW5zZ25lIl07DQoJCQkJCSRnbmF0dG55UW5zZ25lID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJnbmF0dG55UW5zZ25lIl07DQoJCQkJCQ0KCQkJCQkkZ25hdHRueVFuc2duZT1xbmdyX3Blcm5ncigkZ25hdHRueVFuc2duZSk7DQoJCQkJCSRnbmF0dG55UW5zZ25lPXFuZ3Jfc2Jlem5nKCRnbmF0dG55UW5zZ25lLCJMLXotcSIpOw0KCQkJCQkNCgkJCQkJJGFiemJlRXJmY2JhID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJhYnpiZUVyZmNiYSJdOw0KCQkJCQkkZ25hdHRueUVyZmNiYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiZ25hdHRueUVyZmNiYSJdOw0KCQkJCQkkam54Z2hFcmZjYmEgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImpueGdoRXJmY2JhIl07DQoJCQkJCSR4cmdyZW5hdG5hID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJ4cmdyZW5hdG5hIl07DQoJCQkJCSRjcXMgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImNxcyJdOw0KCQkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIGZnbmdoZl9lcmZjYmEgc2VieiBbZ295X3FuZ25fZXJmY2JhXSANCgkJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJCW5hcSB4YnFyRXJmY2JhID0gJyR4YnFyRXJmY2JhJyANCgkJCQkJCQluYXEgeHJncmVuYXRuYSA9ICckeHJncmVuYXRuYScgDQoJCQkJCQkJbmFxIGpueGdoRXJmY2JhID0gJyRqbnhnaEVyZmNiYScgDQoJCQkJCQkJbmFxIGNxcyA9ICckY3FzJw0KCQkJCQkiKTsNCgkJCQkJDQoJCQkJCSRmZ25naGZfZXJmY2JhID0gMDsNCgkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJJGZnbmdoZl9lcmZjYmEgPSAkZS0+ZmduZ2hmX2VyZmNiYTsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJdnMoJGZnbmdoZl9lcmZjYmEgPiAwKXsNCgkJCQkJCQ0KCQkJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRhYnpiZU53aCAuICIgIiAuICRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwgJ3FuZ25GZ25naGYnID0+JHhyZ3JlbmF0bmEpKTsJDQoJCQkJCQlxdnIoKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkJDQoJCQl9DQoJCQkNCgkJfSByeWZyIHsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PicwMicgLCd6cmZmbnRyJyA9PiRuZmhqLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScgKSk7CQkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCgkJDQoNCgkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ109PSdGaHBwcmZmJyl7DQoJCQkJDQoJCQl2cygkeGJxckNlYmZyZiA9PSAnJyB8fCAkeGJxckNlYmZyZiA9PSAnMDAxJyl7DQoJCQkJDQoJCQl9IHJ5ZnJ7DQoJCQkJDQoJCQkJJHFuZ25fdmEgPSBuZWVubCgnb3BfYmhnX3VybnFyZV92cScgPT4gJG9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCSdhYnpiZU53aCcgPT4gJGFiemJlTndoLCAneGJxckNlYmZyZicgPT4gJHhicXJDZWJmcmYsDQoJCQkJCSdhYnpiZVFuc2duZScgPT4gJGFiemJlUW5zZ25lLCAnZ25hdHRueVFuc2duZScgPT4gJGduYXR0bnlRbnNnbmUsDQoJCQkJCSdqbnhnaEZnbmdoZicgPT4gJGpueGdoRmduZ2hmLCAneGJxclFieGh6cmEnID0+ICR4YnFyUWJ4aHpyYSwNCgkJCQkJJ3hicXJFcmZjYmEnID0+ICR4YnFyRXJmY2JhLCAnYWJ6YmVFcmZjYmEnID0+ICRhYnpiZUVyZmNiYSwNCgkJCQkJJ2duYXR0bnlFcmZjYmEnID0+ICRnbmF0dG55RXJmY2JhLCAnam54Z2hFcmZjYmEnID0+ICRqbnhnaEVyZmNiYSwNCgkJCQkJJ2hlbnZuYTEnID0+ICRoZW52bmExLCAnaGVudm5hMicgPT4gJGhlbnZuYTIsDQoJCQkJCSdjcXMnID0+ICRjcXMsICd4cmdyZW5hdG5hJyA9PiAkeHJncmVuYXRuYSk7DQoJCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9lcmZjYmEnLCAkcW5nbl92YSk7DQoJCQl9Ow0KDQoJCQl2cygkYWJ6YmVRbnNnbmUgPT0gJycgfHwgJHhicXJDZWJmcmYgPT0gJzAwMScpew0KCQkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJCUhDUU5HUiBnb3lfb3BfYmhnX3VybnFyZQ0KCQkJCQlGUkcgZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmEgPSAtNjYsDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS52cUVyZmNiYV8xID0gLTY2LA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUuZ25hdHRueVFuc2duZSA9IEFIWVkNCgkJCQkJSlVSRVINCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLm9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCSIpOw0KCQkJfSByeWZyew0KCQkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJCUhDUU5HUiBnb3lfb3BfYmhnX3VybnFyZQ0KCQkJCQlGUkcgZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmEgPSBnb3lfcW5nbl9lcmZjYmEudnFFcmZjYmEsDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS52cUVyZmNiYV8xID0gZ295X3FuZ25fZXJmY2JhLnZxRXJmY2JhLA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUuYWJRbnNnbmUgPSBnb3lfcW5nbl9lcmZjYmEuYWJ6YmVRbnNnbmUsDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS5nbmF0dG55UW5zZ25lID0gZ295X3FuZ25fZXJmY2JhLmduYXR0bnlRbnNnbmUNCgkJCQkJCQkNCgkJCQkJU0VCWg0KCQkJCQkJZ295X3FuZ25fZXJmY2JhDQoJCQkJCQlWQUFSRSBXQlZBIGdveV9vcF9iaGdfdXJucXJlIEJBIGdveV9xbmduX2VyZmNiYS5vcF9iaGdfdXJucXJlX3ZxID0gZ295X29wX2JoZ191cm5xcmUub3BfYmhnX3VybnFyZV92cSANCgkJCQkJSlVSRVINCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLm9wX2JoZ191cm5xcmVfdnE9ICRvcF9iaGdfdXJucXJlX3ZxIA0KCQkJCQkJTkFRIGdveV9xbmduX2VyZmNiYS52cUVyZmNiYSA9ICggRlJZUlBHIFpOSyAoIHZxRXJmY2JhICkgU0VCWiBnb3lfcW5nbl9lcmZjYmEgKQ0KCQkJCSIpOw0KCQkJfTsNCgkJCQ0KCQkJDQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwgJ3FuZ25GZ25naGYnID0+JHhyZ3JlbmF0bmEgIC4gIiBOV0g6ICIgLiAkYWJ6YmVOd2ggIC4gIiBBQlpCRS9HTkFUVE5ZICIgLiAkYWJ6YmVRbnNnbmUgLiAiLyIgLiAkZ25hdHRueVFuc2duZSAgICAgICkpOwkJDQoJCQkJcXZyKCk7DQoJCX0NCgkNCgl9IA0KCQ0KCQ0KCXNoYXBndmJhIHByeF9nbmV2c1VmKCl7DQoJCSRndXZmLT55YnR2YV9wcnZmbl9hcmooKTsNCgkJJGdieHJhID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk7DQoJCQ0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9lcmRocmZnX3FyZ252eV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDdnl2dSBHcmV5cm92dSBRbnVoeWggUW5nbiBPbmVuYXQhIn0nKTsNCgkJJGNiZkduZXZzID0gKHZmZnJnKCRfQ0JGR1snY2JmR25ldnMnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snY2JmR25ldnMnXSkpPyRfQ0JGR1snY2JmR25ldnMnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGNiZkduZXZzIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRnbmF0dG55TndoID0gKHZmZnJnKCRfQ0JGR1snZ25hdHRueU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydnbmF0dG55TndoJ10pKT8kX0NCRkdbJ2duYXR0bnlOd2gnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGduYXR0bnlOd2ggR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHhicXJRYnhoenJhID0gKHZmZnJnKCRfQ0JGR1sneGJxclFieGh6cmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxclFieGh6cmEnXSkpPyRfQ0JGR1sneGJxclFieGh6cmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHhicXJRYnhoenJhIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRmcmV2T25lbmF0ID0gKHZmZnJnKCRfQ0JGR1snZnJldk9uZW5hdCddKSAmJiAhcnpjZ2woJF9DQkZHWydmcmV2T25lbmF0J10pKT8kX0NCRkdbJ2ZyZXZPbmVuYXQnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGZyZXZPbmVuYXQgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHhicXJGbmdobmFPbmVuYXQgPSAodmZmcmcoJF9DQkZHWyd4YnFyRm5naG5hT25lbmF0J10pICYmICFyemNnbCgkX0NCRkdbJ3hicXJGbmdobmFPbmVuYXQnXSkpPyRfQ0JGR1sneGJxckZuZ2huYU9uZW5hdCddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgeGJxckZuZ2huYU9uZW5hdCBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkd2h6eW51Rm5naG5hID0gKHZmZnJnKCRfQ0JGR1snd2h6eW51Rm5naG5hJ10pICYmICFyemNnbCgkX0NCRkdbJ3doenludUZuZ2huYSddKSk/JF9DQkZHWyd3aHp5bnVGbmdobmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHdoenludUZuZ2huYSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkc2JvID0gKHZmZnJnKCRfQ0JGR1snc2JvJ10pICYmICFyemNnbCgkX0NCRkdbJ3NibyddKSk/JF9DQkZHWydzYm8nXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIEFDSkMgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJLy8kZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkvLyRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KDQoJCSRoZXkgPSAidWdnY2Y6Ly9uY3ZmLXRqLm9ybnBoeG52LnRiLnZxL2JjcmFuY3YvZ25ldnMtdWY/eGJxclVmPSRjYmZHbmV2cyI7DQoNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCg0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCQkgICANCgkJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJCS8vc2JlIHFyb2h0IGJheWwhDQoJCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCg0KCQkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQkJcGhleV9weWJmcigkcGhleSk7DQoJCQkkZXJmY2JhX25lZT0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkJLy9pbmVfcWh6YygkZXJmY2JhX25lZSk7DQoJCSAgIAkvL3F2cigpOw0KCQkJDQoJCQkkbmZoaiA9IHZmZnJnKCRlcmZjYmFfbmVlWyJSa3ByY2d2YmEiXSk/JGVyZmNiYV9uZWVbIlJrcHJjZ3ZiYSJdOidieCc7DQoJCQl2cygkbmZoaiA9PSAnYngnKXsNCgkJCQl2cyhwYmhhZygkZXJmY2JhX25lZSkgPiAwKXsNCgkJCQkJdnMocGJoYWcoJGVyZmNiYV9uZWVbImNiZkduZXZzIl0pID4gMCl7DQoJCQkJCQlzYmUgKCRrID0gMDsgJGsgPD0gcGJoYWcoJGVyZmNiYV9uZWVbImNiZkduZXZzIl0pOyAkaysrKSB7DQoJCQkJCQkJdnMocGJoYWcoJGVyZmNiYV9uZWVbImNiZkduZXZzIl1bJGtdKSA+IDAgKXsNCgkJCQkJCQkJDQoNCgkJCQkJCQkJdnMgKCRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsieGJxcldyYXZmQ2hhdGhnbmEiXSA9PSAnT1gnKXsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJDQoJCQkJCQkJCQkkeGJxcldyYXZmQ2hhdGhnbmEgPSAkZXJmY2JhX25lZVsiY2JmR25ldnMiXVska11bInhicXJXcmF2ZkNoYXRoZ25hIl07DQoJCQkJCQkJCQkkZ25ldnMgPSAkZXJmY2JhX25lZVsiY2JmR25ldnMiXVska11bImduZXZzIl07DQoJCQkJCQkJCQkNCgkJCQkJCQkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJCQkJCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYmhhZ19jZyBzZWJ6IFtnb3lfcW5nbl9vbmVuYXRHbmV2c10ganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICckb3BfYmhnX3VybnFyZV92cScgbmFxIG9wX2JoZ19xcmdudnlfdnEgPSAnJG9wX2JoZ19xcmdudnlfdnEnIG5hcSBndmNyX3FieGh6cmEgPSAnJHhicXJRYnhoenJhJyBuYXEgeGJxcldyYXZmQ2hhdGhnbmEgPSAnT1gnDQoJCQkJCQkJCQkJIik7DQoJCQkJCQkJCQkJJHBiaGFnX2NnID0gMDsNCgkJCQkJCQkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJCQkJCQkJJHBiaGFnX2NnID0gJGUtPnBiaGFnX2NnOw0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCXZzKCRwYmhhZ19jZyA+IDApew0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsJDQoJCQkJCQkJCQkJCQkkcW5nbl92YSA9IG5lZW5sKCd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEpOw0KCQkJCQkJCQkJCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsJCQ0KCQkJCQkJCQkJCQkJJGZnZiA9ICRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsgDQoJCQkJCQkJCQkJCQlxdnIoKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9IHJ5ZnIgdnMoJHBiaGFnX2NnID09IDApew0KDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsNCgkJCQkJCQkJCQkJCSRxbmduX3ZhID0gbmVlbmwoJ29wX2JoZ191cm5xcmVfdnEnID0+ICRvcF9iaGdfdXJucXJlX3ZxLCAnb3BfYmhnX3FyZ252eV92cScgPT4gJG9wX2JoZ19xcmdudnlfdnEsICd4YnFyV3JhdmZDaGF0aGduYScgPT4gJHhicXJXcmF2ZkNoYXRoZ25hLCAnZ25ldnMnID0+ICRnbmV2cywgJ2d2Y3JfcWJ4aHpyYScgPT4gJHhicXJRYnhoenJhLCAnZnJldk9uZW5hdCcgPT4gJGZyZXZPbmVuYXQsICd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEsICd4YnFyRm5naG5hT25lbmF0JyA9PiAkeGJxckZuZ2huYU9uZW5hdCwgJ3hicXJXcmF2ZkduZXZzJyA9PiAnMScpOw0KCQkJCQkJCQkJCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQ0KCQkJCQkJCQl9CQ0KCQkJCQkJCQkNCgkJCQkJCQkJdnMgKCRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsieGJxcldyYXZmQ2hhdGhnbmEiXSA9PSAnQ0NVJyl7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJJHhicXJXcmF2ZkNoYXRoZ25hID0gJGVyZmNiYV9uZWVbImNiZkduZXZzIl1bJGtdWyJ4YnFyV3JhdmZDaGF0aGduYSJdOw0KCQkJCQkJCQkJJGduZXZzID0gJGVyZmNiYV9uZWVbImNiZkduZXZzIl1bJGtdWyJnbmV2cyJdOw0KCQkJCQkJCQkJDQoJCQkJCQkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQkJCQkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGJoYWdfY2cgc2VieiBbZ295X3FuZ25fb25lbmF0R25ldnNdIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnIG5hcSBvcF9iaGdfcXJnbnZ5X3ZxID0gJyRvcF9iaGdfcXJnbnZ5X3ZxJyBuYXEgZ3Zjcl9xYnhoenJhID0gJyR4YnFyUWJ4aHpyYScgbmFxIHhicXJXcmF2ZkNoYXRoZ25hID0gJ0NDVScNCgkJCQkJCQkJCQkiKTsNCgkJCQkJCQkJCQkkcGJoYWdfY2cgPSAwOw0KCQkJCQkJCQkJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJCQkJCQkJCQkkcGJoYWdfY2cgPSAkZS0+cGJoYWdfY2c7DQoJCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkJdnMoJHBiaGFnX2NnID4gMCl7DQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRlcmZjYmFfbmVlWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGVyZmNiYV9uZWVbJ3pyZmZudHInXSkpOwkNCgkJCQkJCQkJCQkJCSRxbmduX3ZhID0gbmVlbmwoJ3doenludUZuZ2huYScgPT4gJHdoenludUZuZ2huYSk7DQoJCQkJCQkJCQkJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfcXJnbnZ5X3ZxJywgJG9wX2JoZ19xcmdudnlfdnEpOwkJDQoJCQkJCQkJCQkJCQkkZmdmID0gJGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9xbmduX29uZW5hdEduZXZzJywgJHFuZ25fdmEpOyANCgkJCQkJCQkJCQkJCXF2cigpOw0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCX0gcnlmciB2cygkcGJoYWdfY2cgPT0gMCl7DQoNCgkJCQkJCQkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRlcmZjYmFfbmVlWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGVyZmNiYV9uZWVbJ3pyZmZudHInXSkpOw0KCQkJCQkJCQkJCQkJJHFuZ25fdmEgPSBuZWVubCgnb3BfYmhnX3VybnFyZV92cScgPT4gJG9wX2JoZ191cm5xcmVfdnEsICdvcF9iaGdfcXJnbnZ5X3ZxJyA9PiAkb3BfYmhnX3FyZ252eV92cSwgJ3hicXJXcmF2ZkNoYXRoZ25hJyA9PiAkeGJxcldyYXZmQ2hhdGhnbmEsICdnbmV2cycgPT4gJGduZXZzLCAnZ3Zjcl9xYnhoenJhJyA9PiAkeGJxclFieGh6cmEsICdmcmV2T25lbmF0JyA9PiAkZnJldk9uZW5hdCwgJ3doenludUZuZ2huYScgPT4gJHdoenludUZuZ2huYSwgJ3hicXJGbmdobmFPbmVuYXQnID0+ICR4YnFyRm5naG5hT25lbmF0LCAneGJxcldyYXZmR25ldnMnID0+ICcxJyk7DQoJCQkJCQkJCQkJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9xbmduX29uZW5hdEduZXZzJywgJHFuZ25fdmEpOw0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCX0NCgkJCQkJCQkJDQoJCQkJCQkJCX0NCgkJCQkJCQkJDQoJCQkJCQkJCXZzICgkZXJmY2JhX25lZVsiY2JmR25ldnMiXVska11bInhicXJXcmF2ZkNoYXRoZ25hIl0gPT0gJ0NDQScpew0KCQkJCQkJCQkJDQoJCQkJCQkJCQkNCgkJCQkJCQkJCSR4YnFyV3JhdmZDaGF0aGduYSA9ICRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsieGJxcldyYXZmQ2hhdGhnbmEiXTsNCgkJCQkJCQkJCSRnbmV2cyA9ICRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsiZ25ldnMiXTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCQkJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBiaGFnX2NnIHNlYnogW2dveV9xbmduX29uZW5hdEduZXZzXSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJyRvcF9iaGdfdXJucXJlX3ZxJyBuYXEgb3BfYmhnX3FyZ252eV92cSA9ICckb3BfYmhnX3FyZ252eV92cScgbmFxIGd2Y3JfcWJ4aHpyYSA9ICckeGJxclFieGh6cmEnIG5hcSB4YnFyV3JhdmZDaGF0aGduYSA9ICdDQ0EnDQoJCQkJCQkJCQkJIik7DQoJCQkJCQkJCQkJJHBiaGFnX2NnID0gMDsNCgkJCQkJCQkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJCQkJCQkJJHBiaGFnX2NnID0gJGUtPnBiaGFnX2NnOw0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCXZzKCRwYmhhZ19jZyA+IDApew0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsJDQoJCQkJCQkJCQkJCQkkcW5nbl92YSA9IG5lZW5sKCd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEpOw0KCQkJCQkJCQkJCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsJCQ0KCQkJCQkJCQkJCQkJJGZnZiA9ICRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsgDQoJCQkJCQkJCQkJCQlxdnIoKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9IHJ5ZnIgdnMoJHBiaGFnX2NnID09IDApew0KDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsNCgkJCQkJCQkJCQkJCSRxbmduX3ZhID0gbmVlbmwoJ29wX2JoZ191cm5xcmVfdnEnID0+ICRvcF9iaGdfdXJucXJlX3ZxLCAnb3BfYmhnX3FyZ252eV92cScgPT4gJG9wX2JoZ19xcmdudnlfdnEsICd4YnFyV3JhdmZDaGF0aGduYScgPT4gJHhicXJXcmF2ZkNoYXRoZ25hLCAnZ25ldnMnID0+ICRnbmV2cywgJ2d2Y3JfcWJ4aHpyYScgPT4gJHhicXJRYnhoenJhLCAnZnJldk9uZW5hdCcgPT4gJGZyZXZPbmVuYXQsICd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEsICd4YnFyRm5naG5hT25lbmF0JyA9PiAkeGJxckZuZ2huYU9uZW5hdCwgJ3hicXJXcmF2ZkduZXZzJyA9PiAnMScpOw0KCQkJCQkJCQkJCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQ0KCQkJCQkJCQl9CQ0KCQkJCQkJCX0JCQ0KCQkJCQkJfSANCgkJCQkJCQ0KCQkJCQkJDQoJCQkJCX0gDQoJCQkJfQ0KCQkJfSAgcnlmciB7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JzAyJyAsJ3pyZmZudHInID0+J1hiYXJ4ZnYgZ3JlY2hnaGYsIEZ2eW51eG5hIFlidHZhIFBSVkZOIHhyem9ueXYhJyApKTsJCQ0KCQkJCXF2cigpOw0KCQkJCQ0KCQkJfQ0KCQkJDQoJCQlxdnIoKTsNCgkJCQ0KCQkJdnMoJGVyZmNiYV9uZWVbJ2ZnbmdoZiddKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsJCQkJCQ0KCQkJDQoJCQl9DQoJCQ0KCX0gDQoJDQoJDQoJc2hhcGd2YmEgcHJnbnhfZXJmY2JhX3BydmZuKCl7DQoJCSRndXZmLT55YnR2YV9wcnZmbl9hcmooKTsNCgkJJGdieHJhID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk7DQoJCS8vJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCS8vJHZxRXJmY2JhID0gKHZmZnJnKCRfQ0JGR1sndnFFcmZjYmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sndnFFcmZjYmEnXSkpPyRfQ0JGR1sndnFFcmZjYmEnXToiIjsNCgkJJGVyZmNiYSA9ICh2ZmZyZygkX0NCRkdbJ0NxcyddKSAmJiAhcnpjZ2woJF9DQkZHWydDcXMnXSkpPyRfQ0JGR1snQ3FzJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVuenJncmUgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KCQkNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi9xYmpheWJucS1lcmZjYmE/Y25ndT0kZXJmY2JhIjsNCg0KCQkkcGhleSA9IHBoZXlfdmF2ZygkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRVJHSEVBR0VOQUZTUkUsIGdlaHIpOw0KDQoJCSR1cm5xcmVmID0gbmVlbmwoDQoJCSAgICJOaGd1YmV2bW5ndmJhOiBPcm5lcmUgJGdieHJhIiwNCgkJICAgIlBiYWdyYWctR2xjcjogbmNjeXZwbmd2YmEvd2ZiYSINCgkJKTsNCgkJLy9ycHViICR2cUVyZmNiYTsNCgkJLy9xdnIoKTsNCgkJICAgDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCg0KCQkkZXJmYyA9IHBoZXlfcmtycCgkcGhleSk7DQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KCQkvL2luZV9xaHpjKCRlcmZjKTsNCgkJLy9xdnIoKTsNCgkNCg0KCX0gDQoJDQoJc2hhcGd2YmEgeWJucV9nbmV2c1VmKCl7DQoJCXJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHZxIHVybnFyZSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiB2cSBxcmdudnkgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGNiZkduZXZzID0gKHZmZnJnKCRfQ0JGR1snY2JmR25ldnMnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snY2JmR25ldnMnXSkpPyRfQ0JGR1snY2JmR25ldnMnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHZxIHVybnFyZSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmduZ2hmX3BydmZuID0gKHZmZnJnKCRfQ0JGR1snZmduZ2hmX3BydmZuJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnbmdoZl9wcnZmbiddKSk/JF9DQkZHWydmZ25naGZfcHJ2Zm4nXToiIjsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQoJCQ0KCQkNCgkJdnMoJGZnbmdoZl9wcnZmbiA9PSAnTkNDRUJJUlFLJyl7DQoJCQkNCgkJCQ0KCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCSAgICBxcnB5bmVyIEB2cV91cm5xcmUgb3Z0dmFnIA0KCQkJCWZyZyBAdnFfdXJucXJlID0gKGZyeXJwZyBnYmMgMSAgc2VieiBnb3lfcW5nbl9vbmVuYXRHbmV2cyBqdXJlciBvcF9iaGdfcXJnbnZ5X3ZxID0gJG9wX2JoZ19xcmdudnlfdnEgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSApDQoJCQkJDQoJCQkJDQoJCQkiKTsNCgkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDAiLCAncXJmcCcgPT4gIlBuYXByeSBGcmFxdmF0IFFieD8iKSk7CQ0KCQkJcXZyKCk7DQoJCX0gcnlmciB7DQoJCQkNCgkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJcXJ5cmdyIHNlYnogZ295X3FuZ25fb25lbmF0R25ldnMganVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxIG5hcSBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQlWQUZSRUcgVkFHQiBnb3lfcW5nbl9vbmVuYXRHbmV2cyAoDQoJCQkJCW9wX2JoZ19xcmdudnlfdnEsDQoJCQkJCW9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCWd2Y3JfcWJ4aHpyYSwNCgkJCQkJd2h6eW51Rm5naG5hLA0KCQkJCQl4YnFyRm5naG5hT25lbmF0LA0KCQkJCQl4YnFyU25mdnl2Z25mR25ldnMsDQoJCQkJCXhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCQl4YnFyV3JhdmZHbmV2cywNCgkJCQkJYXZ5bnZPbmxuZSwNCgkJCQkJYXZ5bnZTbmZ2eXZnbmYsDQoJCQkJCWF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJZnJldk9uZW5hdCwNCgkJCQkJZ25ldnMsDQoJCQkJCWduZXZzU25mdnl2Z25mLA0KCQkJCQlwZXJuZ3JfcW5nciANCgkJCQkJKSBGUllSUEcNCgkJCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCQkJb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJeGJxclFieGh6cmEsDQoJCQkJCXdoenludUZuZ2huYSwNCgkJCQkJeGJxckZuZ2huYU9uZW5hdCwNCgkJCQkJeGJxclNuZnZ5dmduZkduZXZzLA0KCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJeGJxcldyYXZmR25ldnMsDQoJCQkJCWF2eW52T25sbmUsDQoJCQkJCWF2eW52U25mdnl2Z25mLA0KCQkJCQkwIE5GIGF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJZnJldk9uZW5hdCwNCgkJCQkJZ25ldnMsDQoJCQkJCWduZXZzU25mdnl2Z25mLA0KCQkJCQlUUkdRTkdSKCkNCgkJCQlTRUJaIHFvYi5pdnJqX29uZW5hdEduZXZzX2JoZyANCgkJCQkJSlVSRVIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBvcF9iaGdfcXJnbnZ5X3ZxID0gJG9wX2JoZ19xcmdudnlfdnENCgkJCQkNCg0KCQkJIik7DQoJCQkNCgkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDAiLCAncXJmcCcgPT4gIiBGaHhmcmYuLkduZXZzIFlibnEiKSk7CQ0KCQkJcXZyKCk7DQoJCQkNCgkJfQ0KCQkNCgkJDQogICAgfQ0KCQ0KCXNoYXBndmJhIHBiY2xfcW5nbigpew0KCQlyZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCgkJJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KCQkkZWJ5cl92cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfZWJ5cl92cScpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiB2cSB1cm5xcmUgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGFiemJlTndoID0gKHZmZnJnKCRfQ0JGR1snYWJ6YmVOd2gnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snYWJ6YmVOd2gnXSkpPyRfQ0JGR1snYWJ6YmVOd2gnXToiIjsNCgkJJHhicXJRYnhoenJhID0gKHZmZnJnKCRfQ0JGR1sneGJxclFieGh6cmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxclFieGh6cmEnXSkpPyRfQ0JGR1sneGJxclFieGh6cmEnXToiMTAiOw0KCQkkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCgkJDQoJCSRhYnpiZU53aCA9ICRndXZmLT52YXBfYWJOd2hfZ2VrKCR4YnFyUWJ4aHpyYSk7DQoJCQ0KCQl2cyghdmZmcmcoJGFiemJlTndoKSl7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICIwMCIsICdxcmZwJyA9PiAiQWJ6YmUgTndoIHRudG55IGhhZ2h4IHF2IG9yYWdoeCBmcnV2YXR0biBndnFueCBucW4iKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCXZzKCRmZ25naGYgPT0gJ05DQ0VCSVJRJyl7DQoJCQkNCgkJCQ0KCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlxcnB5bmVyIEB2cV91cm5xcmUgb3Z0dmFnIA0KCQkJCWZyZyBAdnFfdXJucXJlID0gKGZyeXJwZyBnYmMgMSB2cSBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSApDQoJCQkJDQoJCQkiKTsNCgkJCQ0KCQkJLy8kZ3V2Zi0+cW8tPmp1cmVyKCdmaG9wYmFfYmhnX3ZxJywgJGZob3BiYV9iaGdfdnEpOw0KCQkJLy8kemZ0PSRndXZmLT5xby0+aGNxbmdyKCdxZ19maG9wYmFfYmhnJywgbmVlbmwoJ2ZnbmdoZicgPT4gJ0NFQlBSRkZSUScsICdwZXJuZ3JvbCcgPT4gJGhmcmVhbnpyLCAncGVybmdycW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gIjAwIiwgJ3FyZnAnID0+ICJQbmFwcnkgUGJjbCBRbmduPyIpKTsJDQoJCQlxdnIoKTsNCgkJfSByeWZyIHsNCgkJCQ0KCQkJDQoJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCXFycHluZXIgQHZxX3VybnFyZSBvdnR2YWcNCgkJCQl2YWZyZWcgdmFnYiBbcW9iXS5bZ295X29wX2JoZ191cm5xcmVdKCANCgkJCQkJbnluem5nDQoJCQkJCSxuZm55UW5nbg0KCQkJCQksbmZoZW5hZnYNCgkJCQkJLE5maGVuYWZ2X2d2Y3INCgkJCQkJLE9uYXgNCgkJCQkJLG92bmxuQ3JhdGhlbmF0DQoJCQkJCSxvdm5sbkduem9udW5hDQoJCQkJCSxvZWhnYg0KCQkJCQksUG5lbk5hdHhoZw0KCQkJCQksUG5lbk9ubG5lDQoJCQkJCSxQbmVuUW50bmF0DQoJCQkJCSxwdnMNCgkJCQkJLHB2c0VoY3ZudQ0KCQkJCQkscGVybmdyX29sDQoJCQkJCSxwZXJuZ3JfcW5ncg0KCQkJCQkscXZmcHludnpyZQ0KCQkJCQksUmFndmduZg0KCQkJCQksUmFndmduZjENCgkJCQkJLFJhZ3ZnbmYyDQoJCQkJCSxSYWd2Z25mMw0KCQkJCQksUmFndmduZjQNCgkJCQkJLHN5bnRQaGVudQ0KCQkJCQksc3ludFp2dG5mDQoJCQkJCSxzeW50SXENCgkJCQkJLHNibw0KCQkJCQksc2VydnR1Zw0KCQkJCQksdW5ldG5DcmFscmVudW5hDQoJCQkJCSx2cV9nY28NCgkJCQkJLHZxQ3JhdG5hdHhoZw0KCQkJCQksdnFDcmF0dGhhbg0KCQkJCQksdnFFcmZjYmENCgkJCQkJLHZxRXJmY2JhXzENCgkJCQkJLFZhcGJncmV6DQoJCQkJCSx3bm9uZ25hR2dxDQoJCQkJCSxXcmF2ZlJ4ZmNiZQ0KCQkJCQksV3JhdmZYcnpuZm5hDQoJCQkJCSxXcmF2ZkF2eW52DQoJCQkJCSxXcmF2ZkNlYmZycWhlDQoJCQkJCSxXcmF2Zkdjbw0KCQkJCQksd2h6eW51UGJhZ252YXJlDQoJCQkJCSx3aHp5bnVQYmFnbnZhcmUyMA0KCQkJCQksd2h6eW51UGJhZ252YXJlNDANCgkJCQkJLHdoenludVdyYXZmT25lbmF0DQoJCQkJCSx3aHp5bnVYcnpuZm5hDQoJCQkJCSx3aHp5bnVYYmFnbnZhcmUNCgkJCQkJLHdoenludUduYXFuQ3JhdG56bmENCgkJCQkJLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSxYcmFuQ253bngNCgkJCQkJLHhicXJOZmhlbmFmdg0KCQkJCQkseGJxck9uYXgNCgkJCQkJLHhicXJPcmFxcmVuDQoJCQkJCSx4YnFyUG5lbk5hdHhoZw0KCQkJCQkseGJxclBuZW5PbmxuZQ0KCQkJCQkseGJxclBuZW5RbnRuYXQNCgkJCQkJLHhicXJQbmVuRmdoc3N2YXQNCgkJCQkJLHhicXJRYnhoenJhDQoJCQkJCSx4YnFyVGhhbk9uZW5hdA0KCQkJCQkseGJxclZhcGJncmV6DQoJCQkJCSx4YnFyV3JhdmZPbmVuYXQNCgkJCQkJLHhicXJXcmF2ZlJ4ZmNiZQ0KCQkJCQkseGJxcldyYXZmVGhxbmF0DQoJCQkJCSx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSx4YnFyV3JhdmZBdnludg0KCQkJCQkseGJxcldyYXZmQ25lZ0JzDQoJCQkJCSx4YnFyV3JhdmZDZWJmcnFoZQ0KCQkJCQkseGJxcldyYXZmR2NvDQoJCQkJCSx4YnFyWG5hZ2JlDQoJCQkJCSx4YnFyWG5hZ2JlT2JhdHhuZQ0KCQkJCQkseGJxclhuYWdiZVJ4ZmNiZQ0KCQkJCQkseGJxclhuYWdiZVpobmcNCgkJCQkJLHhicXJYbmFnYmVDcmV2eGZuDQoJCQkJCSx4YnFyWG5hZ2JlR2h3aG5hDQoJCQkJCSx4YnFyWG5ncnRiZXZSeGZjYmUNCgkJCQkJLHhicXJYcmFuQ253bngNCgkJCQkJLHhicXJZYnhuZnYNCgkJCQkJLHhicXJZYnhuZnZPbmxuZQ0KCQkJCQkseGJxckFydG5lbkdod2huYQ0KCQkJCQkseGJxckNyeU9iYXR4bmUNCgkJCQkJLHhicXJDcnlSeGZjYmUNCgkJCQkJLHhicXJDcnlaaG5nDQoJCQkJCSx4YnFyQ3J5R2VuYWZ2Zw0KCQkJCQkseGJxckNyeUdod2huYQ0KCQkJCQkseGJxckNyem9ubG5lDQoJCQkJCSx4YnFyR3ZjclVuZXRuDQoJCQkJCSx4YnFyR2NmDQoJCQkJCSx4YnFyR2h3aG5hQ3JhdHZldnpuYQ0KCQkJCQkseGJxckdod2huYUdjbw0KCQkJCQkseGJxcklueWhnbg0KCQkJCQkseGJnbkdncQ0KCQkJCQksWWJ4bmZ2DQoJCQkJCSxZYnhuZnZPbmxuZQ0KCQkJCQkseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJLGFuem5DcmF0bmF0eGhnDQoJCQkJCSxhbnpuQ3ZwDQoJCQkJCSxhbnpuR2dxDQoJCQkJCSxhcWNveg0KCQkJCQksYXJnZ2INCgkJCQkJLGF2eA0KCQkJCQksYXZ5bnZPbmVuYXQNCgkJCQkJLGF2eW52VmFwYmdyZXoNCgkJCQkJLGF2eW52V25mbg0KCQkJCQksYXZ5bnZabnh5YmENCgkJCQkJLGFiUW5zZ25lDQoJCQkJCSxhYnpiZV9veQ0KCQkJCQksYWJ6YmVOd2gNCgkJCQkJLGFiemJlT3AxMQ0KCQkJCQksYWJ6YmVDcmF0bmF0eGhnDQoJCQkJCSxhYnpiZUdyeWNDdnANCgkJCQkJLGNyYXRuYXR4aGcNCgkJCQkJLGNiZk9wMTENCgkJCQkJLGZyZXYNCgkJCQkJLGZyZXZPbmF4DQoJCQkJCSxmcmV2UmFndmduZg0KCQkJCQksZnJldlJhZ3ZnbmYxDQoJCQkJCSxmcmV2UmFndmduZjINCgkJCQkJLGZyZXZSYWd2Z25mMw0KCQkJCQksZnJldlJhZ3ZnbmY0DQoJCQkJCSxmcmV2Q3JhdG5hdHhoZw0KCQkJCQksZmduZ2hmDQoJCQkJCSxmZ25naGZfb3ANCgkJCQkJLGZob2NiZk9wMTENCgkJCQkJLGduYXR0bnlfb3kNCgkJCQkJLGduYXR0bnlOd2gNCgkJCQkJLGduYXR0bnlPcDExDQoJCQkJCSxnbmF0dG55UW5zZ25lDQoJCQkJCSxnbmF0dG55UnhmY2JlDQoJCQkJCSxnbmF0dG55Q3Jldnhmbg0KCQkJCQksZ25hdHRueUN4bw0KCQkJCQksZ25hdHRueUdncQ0KCQkJCQksZ3J6Y25nRmdoc3N2YXQNCgkJCQkJLGd0eU54dXZlT3JleW54aA0KCQkJCQksZ3R5TmpueU9yZXlueGgNCgkJCQkJLGdiZ255UW5hbkZuanZnDQoJCQkJCSxHY2YNCgkJCQkJLEdod2huYUNyYXR2ZXZ6bmENCgkJCQkJLEdod2huYUdjbw0KCQkJCQksaG5hdFpoeG4NCgkJCQkJLGlxDQoJCQkJCSxpYnloenINCgkJCQkJLGpueGdoRnZuY0NyZXZ4Zm4NCgkJCQkpDQoJCQkJZnJ5cnBnIA0KCQkJCQlueW56bmcNCgkJCQkJLG5mbnlRbmduDQoJCQkJCSxuZmhlbmFmdg0KCQkJCQksTmZoZW5hZnZfZ3Zjcg0KCQkJCQksT25heA0KCQkJCQksb3ZubG5DcmF0aGVuYXQNCgkJCQkJLG92bmxuR256b251bmENCgkJCQkJLG9laGdiDQoJCQkJCSxQbmVuTmF0eGhnDQoJCQkJCSxQbmVuT25sbmUNCgkJCQkJLFBuZW5RbnRuYXQNCgkJCQkJLHB2cw0KCQkJCQkscHZzRWhjdm51DQoJCQkJCSwnJGhmcmVhbnpyJw0KCQkJCQksVFJHUU5HUigpDQoJCQkJCSxxdmZweW52enJlDQoJCQkJCSxyYWd2Z25mDQoJCQkJCSxyYWd2Z25mMQ0KCQkJCQkscmFndmduZjINCgkJCQkJLHJhZ3ZnbmYzDQoJCQkJCSxyYWd2Z25mNA0KCQkJCQksc3ludFBoZW51DQoJCQkJCSxzeW50WnZ0bmYNCgkJCQkJLHN5bnRJcQ0KCQkJCQksc2JvDQoJCQkJCSxzZXJ2dHVnDQoJCQkJCSx1bmV0bkNyYWxyZW51bmENCgkJCQkJLHZxX2djbw0KCQkJCQksdnFDcmF0bmF0eGhnDQoJCQkJCSx2cUNyYXR0aGFuDQoJCQkJCSwwDQoJCQkJCSwwDQoJCQkJCSxWYXBiZ3Jleg0KCQkJCQksd25vbmduYUdncQ0KCQkJCQksV3JhdmZSeGZjYmUNCgkJCQkJLFdyYXZmWHJ6bmZuYQ0KCQkJCQksV3JhdmZBdnludg0KCQkJCQksV3JhdmZDZWJmcnFoZQ0KCQkJCQksV3JhdmZHY28NCgkJCQkJLHdoenludVBiYWdudmFyZQ0KCQkJCQksd2h6eW51UGJhZ252YXJlMjANCgkJCQkJLHdoenludVBiYWdudmFyZTQwDQoJCQkJCSx3aHp5bnVXcmF2Zk9uZW5hdA0KCQkJCQksd2h6eW51WHJ6bmZuYQ0KCQkJCQksd2h6eW51WGJhZ252YXJlDQoJCQkJCSx3aHp5bnVHbmFxbkNyYXRuem5hDQoJCQkJCSxYbmdydGJldlJ4ZmNiZQ0KCQkJCQksWHJhbkNud254DQoJCQkJCSx4YnFyTmZoZW5hZnYNCgkJCQkJLHhicXJPbmF4DQoJCQkJCSx4YnFyT3JhcXJlbg0KCQkJCQkseGJxclBuZW5OYXR4aGcNCgkJCQkJLHhicXJQbmVuT25sbmUNCgkJCQkJLHhicXJQbmVuUW50bmF0DQoJCQkJCSx4YnFyUG5lbkZnaHNzdmF0DQoJCQkJCSx4YnFyUWJ4aHpyYQ0KCQkJCQkseGJxclRoYW5PbmVuYXQNCgkJCQkJLHhicXJWYXBiZ3Jleg0KCQkJCQkseGJxcldyYXZmT25lbmF0DQoJCQkJCSx4YnFyV3JhdmZSeGZjYmUNCgkJCQkJLHhicXJXcmF2ZlRocW5hdA0KCQkJCQkseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCQkseGJxcldyYXZmQXZ5bnYNCgkJCQkJLHhicXJXcmF2ZkNuZWdCcw0KCQkJCQkseGJxcldyYXZmQ2ViZnJxaGUNCgkJCQkJLHhicXJXcmF2Zkdjbw0KCQkJCQkseGJxclhuYWdiZQ0KCQkJCQkseGJxclhuYWdiZU9iYXR4bmUNCgkJCQkJLHhicXJYbmFnYmVSeGZjYmUNCgkJCQkJLHhicXJYbmFnYmVaaG5nDQoJCQkJCSx4YnFyWG5hZ2JlQ3Jldnhmbg0KCQkJCQkseGJxclhuYWdiZUdod2huYQ0KCQkJCQkseGJxclhuZ3J0YmV2UnhmY2JlDQoJCQkJCSx4YnFyWHJhbkNud254DQoJCQkJCSx4YnFyWWJ4bmZ2DQoJCQkJCSx4YnFyWWJ4bmZ2T25sbmUNCgkJCQkJLHhicXJBcnRuZW5HaHdobmENCgkJCQkJLHhicXJDcnlPYmF0eG5lDQoJCQkJCSx4YnFyQ3J5UnhmY2JlDQoJCQkJCSx4YnFyQ3J5WmhuZw0KCQkJCQkseGJxckNyeUdlbmFmdmcNCgkJCQkJLHhicXJDcnlHaHdobmENCgkJCQkJLHhicXJDcnpvbmxuZQ0KCQkJCQkseGJxckd2Y3JVbmV0bg0KCQkJCQkseGJxckdjZg0KCQkJCQkseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJLHhicXJHaHdobmFHY28NCgkJCQkJLHhicXJJbnloZ24NCgkJCQkJLHhiZ25HZ3ENCgkJCQkJLFlieG5mdg0KCQkJCQksWWJ4bmZ2T25sbmUNCgkJCQkJLHlieG5mdkZ2bmNDcmV2eGZuDQoJCQkJCSxhbnpuQ3JhdG5hdHhoZw0KCQkJCQksYW56bkN2cA0KCQkJCQksYW56bkdncQ0KCQkJCQksYXFjb3oNCgkJCQkJLGFyZ2diDQoJCQkJCSxhdngNCgkJCQkJLGF2eW52T25lbmF0DQoJCQkJCSxhdnludlZhcGJncmV6DQoJCQkJCSxhdnludlduZm4NCgkJCQkJLGF2eW52Wm54eWJhDQoJCQkJCSwnJw0KCQkJCQksYWJ6YmVfb3kNCgkJCQkJLCckYWJ6YmVOd2gnDQoJCQkJCSxhYnpiZU9wMTENCgkJCQkJLGFiemJlQ3JhdG5hdHhoZw0KCQkJCQksYWJ6YmVHcnljQ3ZwDQoJCQkJCSxjcmF0bmF0eGhnDQoJCQkJCSxjYmZPcDExDQoJCQkJCSxmcmV2DQoJCQkJCSxmcmV2T25heA0KCQkJCQksZnJldlJhZ3ZnbmYNCgkJCQkJLGZyZXZSYWd2Z25mMQ0KCQkJCQksZnJldlJhZ3ZnbmYyDQoJCQkJCSxmcmV2UmFndmduZjMNCgkJCQkJLGZyZXZSYWd2Z25mNA0KCQkJCQksZnJldkNyYXRuYXR4aGcNCgkJCQkJLGZnbmdoZg0KCQkJCQksZmduZ2hmX29wDQoJCQkJCSxmaG9jYmZPcDExDQoJCQkJCSxwYm55cmZwcihnbmF0dG55X295LCBBSFlZKSBuZiBnbmF0dG55X295DQoJCQkJCSxnbmF0dG55TndoDQoJCQkJCSxnbmF0dG55T3AxMQ0KCQkJCQksQUhZWQ0KCQkJCQksZ25hdHRueVJ4ZmNiZQ0KCQkJCQksZ25hdHRueUNyZXZ4Zm4NCgkJCQkJLGduYXR0bnlDeG8NCgkJCQkJLGduYXR0bnlHZ3ENCgkJCQkJLGdyemNuZ0ZnaHNzdmF0DQoJCQkJCSxndHlOeHV2ZU9yZXlueGgNCgkJCQkJLGd0eU5qbnlPcmV5bnhoDQoJCQkJCSxnYmdueVFuYW5Gbmp2Zw0KCQkJCQksR2NmDQoJCQkJCSxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSxHaHdobmFHY28NCgkJCQkJLGhuYXRaaHhuDQoJCQkJCSxpcQ0KCQkJCQksaWJ5aHpyDQoJCQkJCSxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJc2VieiBbcW9iXS5baXZyal9vcF9iaGdfdXJucXJlXQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQkNCgkJCQlmcmcgQHZxX3VybnFyZSA9IGZwYmNyX3ZxcmFndmdsKCkNCgkJCQkNCgkJCQl2YWZyZWcgdmFnYiBnb3lfb3BfYmhnX3FyZ252eSAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLE5mbnlPbnVuYU9ueGgNCgkJCQkJLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkJCSxOZm55T25lbmF0DQoJCQkJCSxuZmhlbmFmdg0KCQkJCQkscG5nbmduYQ0KCQkJCQkscHZzDQoJCQkJCSxwdnNFaGN2bnUNCgkJCQkJLHF2ZnhiYQ0KCQkJCQksc2JvDQoJCQkJCSxzZXJ2dHVnDQoJCQkJCSx1bmV0blJ4ZmNiZQ0KCQkJCQksdW5ldG5DbmdieG5hDQoJCQkJCSx1bmV0bkNyYWxyZW51bmENCgkJCQkJLHVuZXRuQ3JlYnlydW5hDQoJCQkJCSx1bmV0bkZuZ2huYQ0KCQkJCQksdmZ2Q3JlWHJ6bmZuYQ0KCQkJCQksd2h6eW51TmZueU9udW5hT254aA0KCQkJCQksd2h6eW51WHJ6bmZuYQ0KCQkJCQksd2h6eW51Rm5naG5hDQoJCQkJCSxYbmdydGJldk9uZW5hdA0KCQkJCQkseGJxck5mbnlPbnVuYU9ueGgNCgkJCQkJLHhicXJOZm55T25lbmF0DQoJCQkJCSx4YnFyT25lbmF0DQoJCQkJCSx4YnFyUW5yZW51TmZueQ0KCQkJCQkseGJxclFieE5mbnkNCgkJCQkJLHhicXJRYnhoenJhDQoJCQkJCSx4YnFyVGhhbk9uZW5hdA0KCQkJCQkseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCQkseGJxclhuZ3J0YmV2T25lbmF0DQoJCQkJCSx4YnFyWGJhcXZmdk9uZW5hdA0KCQkJCQkseGJxckFydG5lbk5mbnkNCgkJCQkJLHhicXJDcmV1dmdoYXRuYQ0KCQkJCQkseGJxckZuZ2huYU9uZW5hdA0KCQkJCQksenJleA0KCQkJCQksYXFjb3oNCgkJCQkJLEFydG5lbk5mbnlfcWd5DQoJCQkJCSxhcmdnYg0KCQkJCQksYXZ5bnZPbmVuYXQNCgkJCQkJLGF2eW52UW5hbkZuanZnDQoJCQkJCSxhdnludlduZm4NCgkJCQkJLGF2eW52R256b251DQoJCQkJCSxDcmV1dmdoYXRuYV9xZ3kNCgkJCQkJLGNiZkduZXZzDQoJCQkJCSxmcmV2T25lbmF0DQoJCQkJCSxmcmV2UWJ4aHpyYQ0KCQkJCQksZnJldlJhZ3ZnbmYNCgkJCQkJLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJCQksZ3Zjcg0KCQkJCQksaG5hdFpoeG4NCgkJCQkJLGh4aGVuYQ0KCQkJCQksaGVudm5hDQoJCQkJCSxpYnloenINCgkJCQkJLHBlcm5ncl9vbA0KCQkJCQkscGVybmdyX3FuZ3INCgkJCQkpDQoJCQkJZnJ5cnBnDQoJCQkJCUB2cV91cm5xcmUNCgkJCQkJLE5mbnlPbnVuYU9ueGgNCgkJCQkJLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkJCSxOZm55T25lbmF0DQoJCQkJCSxuZmhlbmFmdg0KCQkJCQkscG5nbmduYQ0KCQkJCQkscHZzDQoJCQkJCSxwdnNFaGN2bnUNCgkJCQkJLHF2ZnhiYQ0KCQkJCQksc2JvDQoJCQkJCSxzZXJ2dHVnDQoJCQkJCSx1bmV0blJ4ZmNiZQ0KCQkJCQksdW5ldG5DbmdieG5hDQoJCQkJCSx1bmV0bkNyYWxyZW51bmENCgkJCQkJLHVuZXRuQ3JlYnlydW5hDQoJCQkJCSx1bmV0bkZuZ2huYQ0KCQkJCQksdmZ2Q3JlWHJ6bmZuYQ0KCQkJCQksd2h6eW51TmZueU9udW5hT254aA0KCQkJCQksd2h6eW51WHJ6bmZuYQ0KCQkJCQksd2h6eW51Rm5naG5hDQoJCQkJCSxYbmdydGJldk9uZW5hdA0KCQkJCQkseGJxck5mbnlPbnVuYU9ueGgNCgkJCQkJLHhicXJOZm55T25lbmF0DQoJCQkJCSx4YnFyT25lbmF0DQoJCQkJCSx4YnFyUW5yZW51TmZueQ0KCQkJCQkseGJxclFieE5mbnkNCgkJCQkJLHhicXJRYnhoenJhDQoJCQkJCSx4YnFyVGhhbk9uZW5hdA0KCQkJCQkseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCQkseGJxclhuZ3J0YmV2T25lbmF0DQoJCQkJCSx4YnFyWGJhcXZmdk9uZW5hdA0KCQkJCQkseGJxckFydG5lbk5mbnkNCgkJCQkJLHhicXJDcmV1dmdoYXRuYQ0KCQkJCQkseGJxckZuZ2huYU9uZW5hdA0KCQkJCQksenJleA0KCQkJCQksYXFjb3oNCgkJCQkJLEFydG5lbk5mbnlfcWd5DQoJCQkJCSxhcmdnYg0KCQkJCQksYXZ5bnZPbmVuYXQNCgkJCQkJLGF2eW52UW5hbkZuanZnDQoJCQkJCSxhdnludlduZm4NCgkJCQkJLGF2eW52R256b251DQoJCQkJCSxDcmV1dmdoYXRuYV9xZ3kNCgkJCQkJLGNiZkduZXZzDQoJCQkJCSxmcmV2T25lbmF0DQoJCQkJCSxmcmV2UWJ4aHpyYQ0KCQkJCQksZnJldlJhZ3ZnbmYNCgkJCQkJLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJCQksZ3Zjcg0KCQkJCQksaG5hdFpoeG4NCgkJCQkJLGh4aGVuYQ0KCQkJCQksaGVudm5hDQoJCQkJCSxpYnloenINCgkJCQkJLCckaGZyZWFuenInDQoJCQkJCSxUUkdRTkdSKCkNCgkJCQlzZWJ6IGl2cmpfb3BfYmhnX29uZW5hdA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJCXZhZnJlZyB2YWdiIGdveV9vcF9iaGdfcWJ4aHpyYSAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLHdyYXZmUWJ4aHpyYQ0KCQkJCQkseHJncmVuYXRuYQ0KCQkJCQkseGJxclFieGh6cmENCgkJCQkJLHhicXJTbmZ2eXZnbmYNCgkJCQkJLHhicXJWd3ZhDQoJCQkJCSxhbnpuU25mdnl2Z25mDQoJCQkJCSxhYnpiZVFieGh6cmENCgkJCQkJLGZyZXZRYnhoenJhDQoJCQkJCSxnbmF0dG55UWJ4aHpyYQ0KCQkJCQksaGV5UWJ4aHpyYQ0KCQkJCSAgICAscGVybmdyX29sDQoJCQkJICAgICxwZXJuZ3JfcW5ncg0KCQkJCSkNCgkJCQlmcnlycGcNCgkJCQkJQHZxX3VybnFyZQ0KCQkJCQksd3JhdmZRYnhoenJhDQoJCQkJCSx4cmdyZW5hdG5hDQoJCQkJCSx4YnFyUWJ4aHpyYQ0KCQkJCQkseGJxclNuZnZ5dmduZg0KCQkJCQkseGJxclZ3dmENCgkJCQkJLGFuem5TbmZ2eXZnbmYNCgkJCQkJLGFiemJlUWJ4aHpyYQ0KCQkJCQksZnJldlFieGh6cmENCgkJCQkJLGduYXR0bnlRYnhoenJhDQoJCQkJCSxoZXlRYnhoenJhDQoJCQkJICAgICwnJGhmcmVhbnpyJw0KCQkJCSAgICAsVFJHUU5HUigpDQoJCQkJc2VieiBnb3lfb3BfYmhnX3FieGh6cmENCgkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkNCgkJCQl2YWZyZWcgdmFnYiBnb3lfb3BfYmhnX3hiYWdudmFyZSAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLHhicXJXcmF2ZlhiYWdudmFyZQ0KCQkJCQkseGJxckd2Y3JYYmFnbnZhcmUNCgkJCQkJLHhicXJIeGhlbmFYYmFnbnZhcmUNCgkJCQkJLGFiemJlWGJhZ252YXJlDQoJCQkJCSxmcmV2WGJhZ252YXJlDQoJCQkJCSxwZXJuZ3JfcW5ncg0KCQkJCQkscGVybmdyX29sDQoJCQkJKQ0KCQkJCWZyeXJwZw0KCQkJCQlAdnFfdXJucXJlDQoJCQkJCSx4YnFyV3JhdmZYYmFnbnZhcmUNCgkJCQkJLHhicXJHdmNyWGJhZ252YXJlDQoJCQkJCSx4YnFySHhoZW5hWGJhZ252YXJlDQoJCQkJCSxhYnpiZVhiYWdudmFyZQ0KCQkJCQksZnJldlhiYWdudmFyZSANCgkJCQkgICAgLFRSR1FOR1IoKQ0KCQkJCQksJyRoZnJlYW56cicNCgkJCQlzZWJ6IGdveV9vcF9iaGdfeGJhZ252YXJlDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJDQoJCQkJdmFmcmVnIHZhZ2IgZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkseGJxcldyYXZmVGhxbmF0DQoJCQkJCSxhbnpuQ3ZwDQoJCQkJCSxueW56bmcNCgkJCQkJLGFiemJlR3J5Y0N2cA0KCQkJCQksd2h6eW51UGJhZ252YXJlMjANCgkJCQkJLHdoenludVBiYWdudmFyZTQwDQoJCQkJCSx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJCQkseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkseGJxcldyYXZmQ25lZ0JzDQoJCQkJCSxnbmF0dG55Q3hvDQoJCQkJCSxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSxXcmF2Zk9uZW5hdA0KCQkJCQksV3JhdmZUaHFuYXQNCgkJCQkJLFdyYXZmQ25lZ0JzDQoJCQkJCSxQbmVuRmdoc3N2YXQNCgkJCQkJLHhyZ3JlbmF0bmENCgkJCQkJLHBlcm5ncl9xbmdyDQoJCQkJCSxwZXJuZ3Jfb2wNCgkJCQkpDQoJCQkJZnJ5cnBnDQoJCQkJCUB2cV91cm5xcmUNCgkJCQkJLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkseGJxcldyYXZmVGhxbmF0DQoJCQkJCSxhbnpuQ3ZwDQoJCQkJCSxueW56bmcNCgkJCQkJLGFiemJlR3J5Y0N2cA0KCQkJCQksd2h6eW51UGJhZ252YXJlMjANCgkJCQkJLHdoenludVBiYWdudmFyZTQwDQoJCQkJCSx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJCQkseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkseGJxcldyYXZmQ25lZ0JzDQoJCQkJCSxnbmF0dG55Q3hvDQoJCQkJCSxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSxXcmF2Zk9uZW5hdA0KCQkJCQksV3JhdmZUaHFuYXQNCgkJCQkJLFdyYXZmQ25lZ0JzDQoJCQkJCSxQbmVuRmdoc3N2YXQNCgkJCQkJLHhyZ3JlbmF0bmENCgkJCQkgICAgLFRSR1FOR1IoKQ0KCQkJCQksJyRoZnJlYW56cicNCgkJCQlzZWJ6IGdveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQNCgkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkNCgkJCQl2YWZyZWcgdmFnYiBnb3lfcW5nbl93bnp2YW5hICgNCgkJCQkJb3BfYmhnX3VybnFyZV92cQ0KCQkJCQksZ3Zjcl9xYnhoenJhDQoJCQkJCSxmcmV2UWJ4aHpyYV93bnp2YW5hDQoJCQkJCSxhYnpiZU9jdw0KCQkJCQksZ25hdHRueU9jdw0KCQkJCQkseGJxcldyYXZmV256dmFuYQ0KCQkJCQksV3JhdmZXbnp2YW5hDQoJCQkJCSxhYnpiZVduenZhbmENCgkJCQkJLGduYXR0bnlXbnp2YW5hDQoJCQkJCSxnbmF0dG55V25naHVHcnpjYg0KCQkJCQksY3Jhd256dmENCgkJCQkJLGF2eW52V256dmFuYQ0KCQkJCQkseHJncmVuYXRuYQ0KCQkJCQkscGVybmdyX3FuZ3INCgkJCQkJLHBlcm5ncl9vbA0KCQkJCSkNCgkJCQlmcnlycGcNCgkJCQkJQHZxX3VybnFyZQ0KCQkJCQksZ3Zjcl9xYnhoenJhDQoJCQkJCSxmcmV2UWJ4aHpyYV93bnp2YW5hDQoJCQkJCSxhYnpiZU9jdw0KCQkJCQksZ25hdHRueU9jdw0KCQkJCQkseGJxcldyYXZmV256dmFuYQ0KCQkJCQksV3JhdmZXbnp2YW5hDQoJCQkJCSxhYnpiZVduenZhbmENCgkJCQkJLGduYXR0bnlXbnp2YW5hDQoJCQkJCSxnbmF0dG55V25naHVHcnpjYg0KCQkJCQksY3Jhd256dmENCgkJCQkJLGF2eW52V256dmFuYQ0KCQkJCQkseHJncmVuYXRuYQ0KCQkJCSAgICAsVFJHUU5HUigpDQoJCQkJCSwnJGhmcmVhbnpyJw0KCQkJCXNlYnogZ295X3FuZ25fd256dmFuYQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQ0KDQoJCQkiKTsNCgkJCQ0KCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICIwMCIsICdxcmZwJyA9PiAiIFBiY2wgUW5nbiBGaHhmcmYgbG4hIikpOwkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCgkJCQ0KCQkJDQoJfQ0KCQ0KCQ0KfQ0KCQ0KCQ== ?>
Did this file decode correctly?
Original Code
Pz48P2N1YyB2cyAoICFxcnN2YXJxKCdPTkZSQ05HVScpKSBya3ZnKCdBYiBxdmVycGcgZnBldmNnIG5wcHJmZiBueXlianJxJyk7DQogDQpweW5mZiBQR19waGZnYnpfcmtjYmVnIHJrZ3JhcWYgUFZfUGJhZ2VieXlyZXsNCglzaGFwZ3ZiYSBfX3BiYWZnZWhwZygpDQoJew0KCSANCgkgIGNuZXJhZzo6X19wYmFmZ2VocGcoKTsNCgkJdnMgKCEkZ3V2Zi0+cWtfbmhndS0+dmZfeWJ0dHJxX3ZhKCkpIHsNCgkJCSRndXZmLT5mcmZmdmJhLT5mcmdfc3luZnVxbmduKCdmcmZmX3JrY3ZlcnEnLCAnRmJlZWwgbGJoZSBmcmZmdmJhIHZmIHJrY3ZlciBjeXJuZnIgKGVyKSB5YnR2YS4nKTsgDQogICAgICAgICAgICBlcnF2ZXJwZygnJyk7DQoJCQl1cm5xcmUoJ1VHR0MvMS4xIDQwMSBIYW5oZ3ViZXZtcicpO3F2cigncmtjdmVyJyk7IA0KCQkNCgkJfQ0KDQoJCSAkZ3V2Zi0+eWJucS0+emJxcnkoInpxeV9waGZnYnpfcmtjYmVnIiwgJ3pxeV9waGZnYnpfcmtjYmVnJyk7Ow0KCQkJDQoJfQ0KCQ0KCSAgICBzaGFwZ3ZiYSB2YXFyaygpew0KDQoNCiAgICB9DQoJDQoJc2hhcGd2YmEgdmFwX2FiTndoKCl7DQoJCSR4YnFyUWJ4aHpyYSA9IHZmZnJnKCRfQ0JGR1sneGJxclFieGh6cmEnXSk/JF9DQkZHWyd4YnFyUWJ4aHpyYSddOicwJzsNCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgndmFwZXInID0+ICAkZ3V2Zi0+dmFwX2FiTndoX2dlaygkeGJxclFieGh6cmEpKSk7DQoJfQ0KCQ0KCQ0KDQoJY2hveXZwIHNoYXBndmJhIHZhcF9hYk53aF9nZWsoJHZxX2d2Y3Ipew0KCQkJCSAgDQoJCXZzKCR2cV9ndmNyID09IDI1KXsNCgkJCSR4cmcgPSAnMDAwMDI1JzsNCgkJfSByeWZyIAl2cygkdnFfZ3ZjciA9PSAyNyl7DQoJCQkkeHJnID0gJzAwMDAyNyc7DQoJCX0gcnlmciAJdnMoJHZxX2d2Y3IgPT0gMzApew0KCQkJJHhyZyA9ICcwMDAwMzAnOw0KCQl9IHJ5ZnIgCXZzKCR2cV9ndmNyID09IDQxKXsNCgkJCSR4cmcgPSAnMDAwMDQxJzsNCgkJfSByeWZyIAl2cygkdnFfZ3ZjciA9PSAzMyl7DQoJCQkkeHJnID0gJzAwMDAzMyc7DQoJCX0gcnlmciAJdnMoJHZxX2d2Y3IgPT0gMjYxKXsNCgkJCSR4cmcgPSAnMDAwMjYxJzsNCgkJfSByeWZyIAl2cygkdnFfZ3ZjciA9PSAyNCl7DQoJCQkkeHJnID0gJzAwMDAyNCc7DQoJCX0gcnlmciB7DQoJCQkkeHJnID0gJzAwMDAwMCc7DQoJCX0NCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlxcnB5bmVyIEBlcnQgaW5lcHVuZSg1MCkNCgkJCWZyZyBAZXJ0ID0gKGZyeXJwZyBIRU5WTkEgc2VieiBnb3lfZ25veXIganVyZXIgWFFHTk89NykJOw0KCQkJZnJ5cnBnIEBlcnQgbmYgYWJlcnQNCgkJIik7DQoJCQ0KCQkkYWJfZXJkID0gJzAwMDAwMCc7DQoJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCSRhYl9lcmQgPSAkZS0+YWJlcnQ7DQoJCX0NCgkJDQoJCQ0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCXFycHluZXIgQHhicXJRYnhoenJhIG92dHZhZyA9ICR2cV9ndmNyLCBAYWJ6YmVfZ3Jlbnh1dmUgaW5lcHVuZSg1MCkNCgkJCXFycHluZXIgIEBhYnpiZSBvdnR2YWcNCgkJCWZyZyBAYWJ6YmVfZ3Jlbnh1dmUgPSAoDQoJCQlmcnlycGcgZ2JjIDEgYWJ6YmVOd2ggc2VieiBbZ295X29wX2JoZ191cm5xcmVdDQoJCQlqdXJlciB4YnFyUWJ4aHpyYSA9IEB4YnFyUWJ4aHpyYSAgbmFxIHlyYShhYnpiZU53aCkgPSAyOSBuYXEgIChwbmZyIGp1cmEgZmhvZmdldmF0KGFiemJlTndoLDI0LDYpIEFCRyB5dnhyICclW14wLTldJScgZ3VyYSAnaW55dnEnDQoJCQkJCQkJIHJ5ZnIgJ3ZhaW55dnEnIHJhcSkgID0gJ2lueXZxJw0KCQkJYmVxcmUgb2wgIChldnR1ZyhhYnpiZU53aCw2KSArIGZob2ZnZXZhdChhYnpiZU53aCwgMTQsNCkgKyBmaG9mZ2V2YXQoYWJ6YmVOd2gsIDI0LDYpKSBxcmZwDQoJCQkpDQoNCgkJCXZzKGZyeXJwZyAocG5mciBqdXJhIGZob2ZnZXZhdChAYWJ6YmVfZ3Jlbnh1dmUsMjQsNikgQUJHIHl2eHIgJyVbXjAtOV0lJyBndXJhICdpbnl2cScNCgkJCQkJCQkgcnlmciAndmFpbnl2cScgcmFxKSApICA9ICdpbnl2cScNCgkJCW9ydHZhDQoJCQkJZnJnIEBhYnpiZSA9IFBORkcoZmhvZmdldmF0KEBhYnpiZV9ncmVueHV2ZSwyNCw2KSBuZiBvdnR2YWcgKQ0KCQkJCWZyeXJwZyBAYWJ6YmUgbmYgYWJ6cmUsIEBhYnpiZV9ncmVueHV2ZSBuZiBhYnpiZV9ncmVueHV2ZQ0KCQkJcmFxIHJ5ZnINCgkJCW9ydHZhDQoJCQkgZnJnIEBhYnpiZSA9IDANCgkJCSBmcnlycGcgQGFiemJlIG5mIGFienJlLCBAYWJ6YmVfZ3Jlbnh1dmUgbmYgYWJ6YmVfZ3Jlbnh1dmUNCgkJCXJhcQ0KCQkNCgkJIik7IA0KCQkJDQoJCSRhYnpyZSA9ICcnOw0KCQkkYWJ6YmVfZ3Jlbnh1dmUgPSAiIjsNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJJGFienJlID0gJGUtPmFienJlOw0KCQkJJGFiemJlX2dyZW54dXZlID0gJGUtPmFiemJlX2dyZW54dXZlOw0KCQl9DQoJCQ0KCQkJCQ0KCQkvLyRvaHluYV9ncmVueHV2ZSA9IGZob2ZnZSgiJGFiemJlX2dyZW54dXZlIiwxNiwyKTsNCgkJLy8kb2h5bmFfdmF2ID0gcW5ncigieiIpOw0KCQkkZ251aGFncmVueHV2ZSA9IGZob2ZnZSgiJGFiemJlX2dyZW54dXZlIiwxNCw0KTsNCgkJJGdudWhhX3ZhdiA9IHFuZ3IoIkwiKTsNCgkJLy9ycHViKCRnbnVoYWdyZW54dXZlKTsNCgkJLy9xdnIoKTsNCg0KCQl2cygkYWJ6cmUgPT0gMCl7DQoJCQkvLyR2YXBlciA9IGZjZXZhZ3MoJyUwNHEnLCAxKSAuICIvIiAuICR4cmcgLiAiLyIgLiBxbmdyKCJxekwiKTsgDQoJCQkkdmFwZXIgPSAkeHJnIC4gIi0iIC4gJGFiX2VyZCAuICItIiAuIHFuZ3IoIkx6cSIpIC4gIi0iIC4gZmNldmFncygnJTA2cScsIDEpOyANCgkJfSByeWZyIHsNCgkJCQ0KCQkJdnMoJGdudWhhZ3Jlbnh1dmUgPT0gJGdudWhhX3Zhdil7DQoJCQkJJGhlaGcgPSAkYWJ6cmUgKyAxOw0KCQkJCS8vJHZhcGVyID0gZmNldmFncygnJTA0cScsICRoZWhnKSAuICIvIiAuICR4cmcgLiAiLyIgLiBxbmdyKCJxekwiKTsgDQoJCQkJJHZhcGVyID0gJHhyZyAuICItIiAuICRhYl9lcmQgLiAiLSIgLiBxbmdyKCJMenEiKSAuICItIiAuIGZjZXZhZ3MoJyUwNnEnLCAkaGVoZyk7IA0KCQkJCQ0KCQkJfSByeWZyIHsNCgkJCQkvL3hyZnZhdi4uMDAwOS9DTFovMDEyMDIzDQoJCQkJLy8kdmFwZXIgPSBmY2V2YWdzKCclMDRxJywgMSkgLiAiLyIgLiAkeHJnIC4gIi8iIC4gcW5ncigicXpMIik7IA0KCQkJCSR2YXBlciA9ICR4cmcgLiAiLSIgLiAkYWJfZXJkIC4gIi0iIC4gcW5ncigiTHpxIikgLiAiLSIgLiBmY2V2YWdzKCclMDZxJywgMSk7IA0KCQkJfQ0KCQl9CQ0KCQkNCgkJLy9ycHViICRhYnpiZV9ncmVueHV2ZSgpOw0KCQkvL3F2cigpOw0KDQoJCWVyZ2hlYSAkdmFwZXI7DQoJDQoNCgl9DQoNCiAgICBzaGFwZ3ZiYSBvcDMwKCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wMzAnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDI1KCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wMjUnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDI3KCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wMjcnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDQxKCl7DQoNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaigncGhmZ2J6X3JrY2JlZy9pdnJqX29wNDEnLCRxbmduKTsNCg0KICAgIH0NCgkNCglzaGFwZ3ZiYSBvcDI2MSgpew0KDQogICAgICAgICRxbmduWyduJ10gPSAnJzsNCiAgICAgICAgJGd1dmYtPnlibnEtPml2cmooJ3BoZmdiel9ya2NiZWcvaXZyal9vcDI2MScsJHFuZ24pOw0KDQogICAgfQ0KCQ0KCXNoYXBndmJhIG9wMzMoKXsNCg0KICAgICAgICAkcW5nblsnbiddID0gJyc7DQogICAgICAgICRndXZmLT55Ym5xLT5pdnJqKCdwaGZnYnpfcmtjYmVnL2l2cmpfb3AzMycsJHFuZ24pOw0KDQogICAgfQ0KCQ0KCXNoYXBndmJhIG9wMjQoKXsNCg0KICAgICAgICAkcW5nblsnbiddID0gJyc7DQogICAgICAgICRndXZmLT55Ym5xLT5pdnJqKCdwaGZnYnpfcmtjYmVnL2l2cmpfb3AyNCcsJHFuZ24pOw0KDQogICAgfQ0KCQ0KCXNoYXBndmJhIGVyY2JlZ19xYnBfYmhnKCl7DQoJCQ0KCQkNCiAgICAgICAgJHFuZ25bJ24nXSA9ICcnOw0KICAgICAgICAkZ3V2Zi0+eWJucS0+aXZyaignZXJjYmVnL2l2cmpfZXJjYmVnX3FicF9iaGcnLCRxbmduKTsNCgkJDQoJfQ0KCQ0KCXNoYXBndmJhIGVyY2JlZ19xYnBfYmhnX2Njd3goKXsNCgkJDQoJCQ0KICAgICAgICAkcW5nblsnbiddID0gJyc7DQogICAgICAgICRndXZmLT55Ym5xLT5pdnJqKCdlcmNiZWcvaXZyal9lcmNiZWdfcWJwX2JoZ19jY3d4JywkcW5nbik7DQoJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfeGNjb2MoKXsNCgkJJFhCUVJfWE5BR0JFPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1hOQUdCRSB5dnhyICclJFhCUVJfWE5BR0JFJScgYmUgSEVOVk5BX1hOQUdCRSB5dnhyICclJFhCUVJfWE5BR0JFJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1hOQUdCRV0NCiAgICAgICxbSEVOVk5BX1hOQUdCRV0NCgkJU0VCWiBbZXJzcmVyYWZ2X3huYWdiZV9jbm9ybmFdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2djZigpew0KCQkkWFFfWE5BR0JFPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYUV9YTkFHQkUgeXZ4ciAnJSRYUV9YTkFHQkUlJyBiZSBYQlFSX0dDRiB5dnhyICclJFhRX1hOQUdCRSUnIGJlIEhFTlZOQV9HQ0YgeXZ4ciAnJSRYUV9YTkFHQkUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hRX1hOQUdCRV0NCiAgICAgICxbWEJRUl9HQ0ZdDQogICAgICAsW0hFTlZOQV9HQ0ZdDQoJCVNFQlogW2Vyc3JlcmFmdl9nY2ZdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2NyeW5vaHVuYSgpew0KCQkkWEJRUl9DUllOT0hVTkE9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfQ1JZTk9IVU5BIHl2eHIgJyUkWEJRUl9DUllOT0hVTkElJyBiZSBIRU5WTkFfQ1JZTk9IVU5BIHl2eHIgJyUkWEJRUl9DUllOT0hVTkElJyBiZSBYQlFSX1hOQUdCRSB5dnhyICclJFhCUVJfQ1JZTk9IVU5BJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9YTkFHQkVdDQogICAgICAsW1hCUVJfQ1JZTk9IVU5BXQ0KICAgICAgLFtIRU5WTkFfQ1JZTk9IVU5BXQ0KCQlTRUJaIFtlcnNyZXJhZnZfY3J5bm9odW5hXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl93cmF2ZlJrY2JlZygpew0KCQkkeGJxcj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgeGJxciB5dnhyICclJHhicXIlJyBiZSBoZW52bmEgeXZ4ciAnJSR4YnFyJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFt4YnFyXQ0KICAgICAgLFtoZW52bmFdDQoJCVNFQlogW2Vyc3JlcmFmdl93cmF2Zl9yeGZjYmVdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3huZ3J0YmV2cnhmY2JlKCl7DQoJCSR4YnFyPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiB4YnFyIHl2eHIgJyUkeGJxciUnIGJlIGhlbnZuYSB5dnhyICclJHhicXIlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW3hicXJdDQogICAgICAsW2hlbnZuYV0NCgkJU0VCWiBbZXJzcmVyYWZ2X3huZ3J0YmV2X3J4ZmNiZV0ganVyZXIgJGp1cmVyIG5hcSBnbGNyID0yDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9wbmVuX3FudG5hdCgpew0KCQkkeGJxcj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgeGJxciB5dnhyICclJHhicXIlJyBiZSBoZW52bmEgeXZ4ciAnJSR4YnFyJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFt4YnFyXQ0KICAgICAgLFtoZW52bmFdDQoJCVNFQlogW2Vyc3JlcmFmdl9wbmVuX2NyZXFudG5hdG5hXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9yYWd2Z25mKCl7DQoJCSR4YnFyUmFndmduZj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgeGJxclJhZ3ZnbmYgeXZ4ciAnJSR4YnFyUmFndmduZiUnIGJlIGFuem5SYWd2Z25mIHl2eHIgJyUkeGJxclJhZ3ZnbmYlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbZnJldlJhZ3ZnbmZdDQogICAgICAsW3hicXJSYWd2Z25mXQ0KICAgICAgLFthbnpuUmFndmduZl0NCgkJU0VCWiBbZXJzcmVyYWZ2X3JhZ3ZnbmZdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3JhZ3ZnbmZfY3J6dnl2eCgpew0KCQkkeGJxclJhZ3ZnbmY9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIHhicXJSYWd2Z25mIHl2eHIgJyUkeGJxclJhZ3ZnbmYlJyBiZSBhbnpuUmFndmduZiB5dnhyICclJHhicXJSYWd2Z25mJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW2ZyZXZSYWd2Z25mXQ0KICAgICAgLFt4YnFyUmFndmduZl0NCiAgICAgICxbYW56blJhZ3ZnbmZdDQoJCVNFQlogW2Vyc3JlcmFmdl9yYWd2Z25mXSBqdXJlciAgJGp1cmVyIG5hcSAoZ3ZjclJhZ3ZnbmYgPSAxIGJlIGd2Y3JSYWd2Z25mID0gMiBiZSBndmNyUmFndmduZiA9IDMgYmUgZ3ZjclJhZ3ZnbmYgPSA3KSANCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX25hdHhoZygpew0KCQkkWEJRUl9QTkVOX05BVFhIRz0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9QTkVOX05BVFhIRyB5dnhyICclJFhCUVJfUE5FTl9OQVRYSEclJyBiZSBIRU5WTkFfUE5FTl9OQVRYSEcgeXZ4ciAnJSRYQlFSX1BORU5fTkFUWEhHJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1BORU5fTkFUWEhHXQ0KICAgICAgLFtIRU5WTkFfUE5FTl9OQVRYSEddDQoJCVNFQlogW2Vyc3JlcmFmdl9wbmVuX25hdHhoZ10ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfYXJ0bmVuKCl7DQoJCSRYQlFSX0FSVE5FTj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9BUlRORU4geXZ4ciAnJSRYQlFSX0FSVE5FTiUnIGJlIEhFTlZOQV9BUlRORU4geXZ4ciAnJSRYQlFSX0FSVE5FTiUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCQkJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9BUlRORU5dDQogICAgICAsW0hFTlZOQV9BUlRORU5dDQoJCVNFQlogW2Vyc3JlcmFmdl9hcnRuZW5dIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2lueWhnbigpew0KCQkkWEJRUl9JTllIR049IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfSU5ZSEdOIHl2eHIgJyUkWEJRUl9JTllIR04lJyBiZSBIRU5WTkFfSU5ZSEdOIHl2eHIgJyUkWEJRUl9JTllIR04lJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfSU5ZSEdOXQ0KICAgICAgLFtIRU5WTkFfSU5ZSEdOXQ0KCQlTRUJaIFtlcnNyZXJhZnZfaW55aGduXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9uZm55b25lbmF0KCl7DQoJCSRYQlFSX05GTllfT05FTkFUPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX05GTllfT05FTkFUIHl2eHIgJyUkWEJRUl9ORk5ZX09ORU5BVCUnIGJlIEhFTlZOQV9ORk5ZX09ORU5BVCB5dnhyICclJFhCUVJfTkZOWV9PTkVOQVQlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfTkZOWV9PTkVOQVRdDQogICAgICAsW0hFTlZOQV9ORk5ZX09ORU5BVF0NCgkJU0VCWiBbZXJzcmVyYWZ2X25mbnlfb25lbmF0XSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl92YWlidnByKCl7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfVFJHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX1RSR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9UUkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCgkJDQoJCSRhYnpiZVFieGh6cmE9IHZmZnJnKCRfVFJHWydhYnpiZVFieGh6cmEnXSk/JF9UUkdbJ2FiemJlUWJ4aHpyYSddOicnOw0KCQkkanVyZXIgPSAiICAob3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxICkgIG5hcSAoYWJ6YmVRYnhoenJhIHl2eHIgJyUkYWJ6YmVRYnhoenJhJScpICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW29wX2JoZ19xYnhoenJhX3ZxXQ0KCQkJICAsW29wX2JoZ191cm5xcmVfdnFdDQoJCQkgICxbeGJxclFieGh6cmFdDQoJCQkgICxbYWJ6YmVRYnhoenJhXQ0KCQkJICAsW2duYXR0bnlRYnhoenJhXQ0KCQkJU0VCWiBbZ295X29wX2JoZ19xYnhoenJhXSBqdXJlciAkanVyZXIgbmFxICh4YnFyUWJ4aHpyYSA9ICczODAnKQ0KCQkNCgkJIik7DQoJCQ0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3dyYXZmQXZ5bnYoKXsNCgkJJFhCUVJfV1JBVkZfQVZZTlY9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfV1JBVkZfQVZZTlYgeXZ4ciAnJSRYQlFSX1dSQVZGX0FWWU5WJScgYmUgSEVOVk5BX1dSQVZGX0FWWU5WIHl2eHIgJyUkWEJRUl9XUkFWRl9BVllOViUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCQkJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9XUkFWRl9BVllOVl0NCiAgICAgICxbSEVOVk5BX1dSQVZGX0FWWU5WXQ0KCQlTRUJaIFtlcnNyZXJhZnZfd3JhdmZfYXZ5bnZdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX2d2Y3JVbmV0bigpew0KCQkkWEJRUl9VTkVUTj0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9VTkVUTiB5dnhyICclJFhCUVJfVU5FVE4lJyBiZSBIRU5WTkFfVU5FVE4geXZ4ciAnJSRYQlFSX1VORVROJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1VORVROXQ0KICAgICAgLFtIRU5WTkFfVU5FVE5dDQoJCVNFQlogW2Vyc3JlcmFmdl91bmV0bl0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfbmZoZW5hZnYoKXsNCgkJJFhCUVJfTkZIRU5BRlY9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfTkZIRU5BRlYgeXZ4ciAnJSRYQlFSX05GSEVOQUZWJScgYmUgSEVOVk5BX05GSEVOQUZWIHl2eHIgJyUkWEJRUl9ORkhFTkFGViUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfTkZIRU5BRlZdDQogICAgICAsW0hFTlZOQV9ORkhFTkFGVl0NCgkJU0VCWiBbZXJzcmVyYWZ2X25maGVuYWZ2XSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9jbndueCgpew0KCQkkWEJRUl9YUkFOX0NOV05YPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1hSQU5fQ05XTlggeXZ4ciAnJSRYQlFSX1hSQU5fQ05XTlglJyBiZSBIRU5WTkFfWFJBTl9DTldOWCB5dnhyICclJFhCUVJfWFJBTl9DTldOWCUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfWFJBTl9DTldOWF0NCiAgICAgICxbSEVOVk5BX1hSQU5fQ05XTlhdDQoJCVNFQlogW2Vyc3JlcmFmdl94YnFyX3hyYW5fY253bnhdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3hyem5mbmEoKXsNCgkJJFhCUVJfWFJaTkZOQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9YUlpORk5BIHl2eHIgJyUkWEJRUl9YUlpORk5BJScgYmUgSEVOVk5BX1hSWk5GTkEgeXZ4ciAnJSRYQlFSX1hSWk5GTkElJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1hSWk5GTkFdDQogICAgICAsW0hFTlZOQV9YUlpORk5BXQ0KCQlTRUJaIFtlcnNyZXJhZnZfeHJ6bmZuYV0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfcW5yZW51bmZueSgpew0KCQkkWEJRUl9RTlJFTlU9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfUU5SRU5VIHl2eHIgJyUkWEJRUl9RTlJFTlUlJyBiZSBIRU5WTkFfUU5SRU5VIHl2eHIgJyUkWEJRUl9RTlJFTlUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1FOUkVOVV0NCiAgICAgICxbSEVOVk5BX1FOUkVOVV0NCgkJU0VCWiBbZXJzcmVyYWZ2X3FucmVudV0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3Jfb25heCgpew0KCQkkWEJRUl9PTkFYPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX09OQVggeXZ4ciAnJSRYQlFSX09OQVglJyBiZSBIRU5WTkEgeXZ4ciAnJSRYQlFSX09OQVglJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX09OQVhdDQogICAgICAsW0hFTlZOQV0NCgkJU0VCWiBbZXJzcmVyYWZ2X29uYXhdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3FieGh6cmEoKXsNCgkJJFhCUVJfUUJYSFpSQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9RQlhIWlJBIHl2eHIgJyUkWEJRUl9RQlhIWlJBJScgYmUgSEVOVk5BX1FCWEhaUkEgeXZ4ciAnJSRYQlFSX1FCWEhaUkElJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCglGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1FCWEhaUkFdDQogICAgICAsW0hFTlZOQV9RQlhIWlJBXQ0KCQlTRUJaIFtlcnNyZXJhZnZfcWJ4aHpyYV0ganVyZXIgICRqdXJlcg0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfeWJ4bmZ2X29ubG5lKCl7DQoJCSRYQlFSX1lCWE5GVl9PTkxORT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9ZQlhORlZfT05MTkUgeXZ4ciAnJSRYQlFSX1lCWE5GVl9PTkxORSUnIGJlIEhFTlZOQV9ZQlhORlZfT05MTkUgeXZ4ciAnJSRYQlFSX1lCWE5GVl9PTkxORSUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfWUJYTkZWX09OTE5FXQ0KICAgICAgLFtIRU5WTkFfWUJYTkZWX09OTE5FXQ0KCQlTRUJaIFtlcnNyZXJhZnZfeWJ4bmZ2X29ubG5lXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl95YnhuZnYoKXsNCgkJJFhCUVJfV1JBVkZfR0NPPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1dSQVZGX0dDTyB5dnhyICclJFhCUVJfV1JBVkZfR0NPJScgYmUgSEVOVk5BX1dSQVZGX0dDTyB5dnhyICclJFhCUVJfV1JBVkZfR0NPJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX1dSQVZGX0dDT10NCiAgICAgICxbSEVOVk5BX1dSQVZGX0dDT10NCgkJU0VCWiBbZXJzcmVyYWZ2X3dyYXZmX3lieG5mdl0ganVyZXIgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl9jaGF0aGduYSgpew0KCQkkWEJRUl9DSEFUSEdOQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9DSEFUSEdOQSB5dnhyICclJFhCUVJfQ0hBVEhHTkElJyBiZSBIRU5WTkFfQ0hBVEhHTkEgeXZ4ciAnJSRYQlFSX0NIQVRIR05BJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJRlJZUlBHIFtWUV0NCiAgICAgICxbWEJRUl9DSEFUSEdOQV0NCiAgICAgICxbSEVOVk5BX0NIQVRIR05BXQ0KCQlTRUJaIFtlcnNyZXJhZnZfY2hhdGhnbmFdIGp1cmVyICAkanVyZXINCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJc2hhcGd2YmEgbmhnYnBiemN5cmdyX3dyYXZmV256dmFuYSgpew0KCQkkWEJRUl9XUkFWRl9XTlpWQU5BPSB2ZmZyZygkX1RSR1snYW56cl9mZ25lZ2ZKdmd1J10pPyRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXTonJzsNCgkJJGp1cmVyID0gIiBYQlFSX1dSQVZGX1dOWlZBTkEgeXZ4ciAnJSRYQlFSX1dSQVZGX1dOWlZBTkElJyBiZSBIRU5WTkFfV1JBVkZfV05aVkFOQSB5dnhyICclJFhCUVJfV1JBVkZfV05aVkFOQSUnICAiIDsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQ0KCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfV1JBVkZfV05aVkFOQV0NCiAgICAgICxbSEVOVk5BX1dSQVZGX1dOWlZBTkFdDQoJCVNFQlogW2Vyc3JlcmFmdl93cmF2Zl93bnp2YW5hXSBqdXJlciAgJGp1cmVyDQoJCQ0KCQkiKTsNCgkJJGVmID0gJGQtPmVyZmh5Z19uZWVubCgpOw0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcigkZWYpOw0KCQ0KCQkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5oZ2JwYnpjeXJncl93cmF2ZlhiYWdudmFyZSgpew0KCQkkWEJRUl9XUkFWRl9YQkFHTlZBUkU9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyBiZSBIRU5WTkFfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfV1JBVkZfWEJBR05WQVJFXQ0KICAgICAgLFtIRU5WTkFfV1JBVkZfWEJBR05WQVJFXQ0KCQlTRUJaIFtlcnNyZXJhZnZfd3JhdmZfeGJhZ252YXJlXSBKVVJFUiBWUSA8NA0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3Jfd3JhdmZYYmFnbnZhcmVfMSgpew0KCQkkWEJRUl9XUkFWRl9YQkFHTlZBUkU9IHZmZnJnKCRfVFJHWydhbnpyX2ZnbmVnZkp2Z3UnXSk/JF9UUkdbJ2FuenJfZmduZWdmSnZndSddOicnOw0KCQkkanVyZXIgPSAiIFhCUVJfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyBiZSBIRU5WTkFfV1JBVkZfWEJBR05WQVJFIHl2eHIgJyUkWEJRUl9XUkFWRl9YQkFHTlZBUkUlJyAgIiA7DQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkNCgkJCUZSWVJQRyBbVlFdDQogICAgICAsW1hCUVJfV1JBVkZfWEJBR05WQVJFXQ0KICAgICAgLFtIRU5WTkFfV1JBVkZfWEJBR05WQVJFXQ0KCQlTRUJaIFtlcnNyZXJhZnZfd3JhdmZfeGJhZ252YXJlXSBKVVJFUiBWUSA8NA0KCQkNCgkJIik7DQoJCSRlZiA9ICRkLT5lcmZoeWdfbmVlbmwoKTsNCgkJDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVmKTsNCgkNCgkJCQ0KCX0NCgkNCglzaGFwZ3ZiYSBuaGdicGJ6Y3lyZ3JfZ2h3aG5hQ3JhdHZldnpuYSgpew0KCQkkWEJRUl9HSFdITkFfQ1JBVFZFVlpOQT0gdmZmcmcoJF9UUkdbJ2FuenJfZmduZWdmSnZndSddKT8kX1RSR1snYW56cl9mZ25lZ2ZKdmd1J106Jyc7DQoJCSRqdXJlciA9ICIgWEJRUl9HSFdITkFfQ1JBVFZFVlpOQSB5dnhyICclJFhCUVJfR0hXSE5BX0NSQVRWRVZaTkElJyBiZSBIRU5WTkFfR0hXSE5BX0NSQVRWRVZaTkEgeXZ4ciAnJSRYQlFSX0dIV0hOQV9DUkFUVkVWWk5BJScgICIgOw0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJDQoJCQlGUllSUEcgW1ZRXQ0KICAgICAgLFtYQlFSX0dIV0hOQV9DUkFUVkVWWk5BXQ0KICAgICAgLFtIRU5WTkFfR0hXSE5BX0NSQVRWRVZaTkFdDQoJCVNFQlogW2Vyc3JlcmFmdl9naHdobmFfY3JhdHZldnpuYV0NCgkJDQoJCSIpOw0KCQkkZWYgPSAkZC0+ZXJmaHlnX25lZW5sKCk7DQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlZik7DQoJDQoJCQkNCgl9DQoJDQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3VybnFyZSgpew0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZU53aCA9ICRxbmduWydhYnpiZU53aCddOw0KCQkkeGJxclFieGh6cmEgPSAkcW5nblsneGJxclFieGh6cmEnXTsNCgkJCQ0KICAgICAgICB2cyAoJG9wX2JoZ191cm5xcmVfdnEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICd2cSc9PiAnMCcpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9wX2JoZ191cm5xcmVfdnEpKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9IHJ5ZnIgdnMgKCRvcF9iaGdfdXJucXJlX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfb3BfYmhnX3VybnFyZV0ganVyZXIgYWJ6YmVOd2ggPSAnJGFiemJlTndoJyBuYXEgeGJxclFieGh6cmEgPSAnJHhicXJRYnhoenJhJw0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIEFiemJlIENyYXRud2huYSBndnFueCBvYnlydSBmbnpuISEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXYpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciB4YnFyUWJ4aHpyYSA9ICR4YnFyUWJ4aHpyYSANCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2J10gPSAkZnJldjsNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHksICdnbmF0dG55TndoJyA9PiAkZ3R5LCAnZ25hdHRueVFuc2duZScgPT4gQWh5eSwgJ3N5bnRQaGVudScgPT4gMiwgJ3N5bnRadnRuZicgPT4gMiwgJ3F2ZnB5bnZ6cmUnID0+IDEsICduZm55UW5nbicgPT4gJ0YnLCAneGJxclFieGh6cmEnID0+IDMwLCAnYXZ4JyA9PiAwLCAnaXEnID0+IDAsICd2cUNyYXR0aGFuJyA9PiAxLCAndnFDcmF0bmF0eGhnJyA9PiAxLCAnZnJldkNyYXRuYXR4aGcnID0+IDEsICd3aHp5bnVXcmF2Zk9uZW5hdCcgPT4gMCwgJ3ZxRXJmY2JhJyA9PiAwKSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJJHZhZnJlZ192cSA9ICRndXZmLT5xby0+dmFmcmVnX3ZxKCk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAgICd2cSc9PicwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiR2YWZyZWdfdnEpKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fdXJucXJlX29wMzMoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkkYWJ6YmVOd2ggPSAkcW5nblsnYWJ6YmVOd2gnXTsNCgkJJHhicXJRYnhoenJhID0gJHFuZ25bJ3hicXJRYnhoenJhJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfdXJucXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAndnEnPT4gJzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiRvcF9iaGdfdXJucXJlX3ZxKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3VybnFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ191cm5xcmVdIGp1cmVyIGFiemJlTndoID0gJyRhYnpiZU53aCcgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScNCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBBYnpiZSBDcmF0bndobmEgZ3Zxbnggb2J5cnUgZm56biEhJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2KSBuZiBmcmV2IHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgeGJxclFieGh6cmEgPSAkeGJxclFieGh6cmEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldiddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnZ25hdHRueU53aCcgPT4gJGd0eSwgJ2duYXR0bnlRbnNnbmUnID0+IEFoeXksICdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiAzMywgJ2F2eCcgPT4gMCwgJ2lxJyA9PiAwLCAndnFDcmF0dGhhbicgPT4gMSwgJ3ZxQ3JhdG5hdHhoZycgPT4gMSwgJ2ZyZXZDcmF0bmF0eGhnJyA9PiAxLCAnd2h6eW51V3JhdmZPbmVuYXQnID0+IDAsICdmZ25naGYnID0+ICdRRU5TRycsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyNSgpew0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZU53aCA9ICRxbmduWydhYnpiZU53aCddOw0KCQkkeGJxclFieGh6cmEgPSAkcW5nblsneGJxclFieGh6cmEnXTsNCgkJCQ0KICAgICAgICB2cyAoJG9wX2JoZ191cm5xcmVfdnEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICd2cSc9PiAnMCcpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9wX2JoZ191cm5xcmVfdnEpKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9IHJ5ZnIgdnMgKCRvcF9iaGdfdXJucXJlX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfb3BfYmhnX3VybnFyZV0ganVyZXIgYWJ6YmVOd2ggPSAnJGFiemJlTndoJyBuYXEgeGJxclFieGh6cmEgPSAnJHhicXJRYnhoenJhJw0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIEFiemJlIENyYXRud2huYSBndnFueCBvYnlydSBmbnpuISEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXYpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciB4YnFyUWJ4aHpyYSA9ICR4YnFyUWJ4aHpyYSANCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2J10gPSAkZnJldjsNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHksICdnbmF0dG55TndoJyA9PiAkZ3R5LCAnZ25hdHRueVFuc2duZScgPT4gQWh5eSwgJ3N5bnRQaGVudScgPT4gMiwgJ3N5bnRadnRuZicgPT4gMiwgJ3F2ZnB5bnZ6cmUnID0+IDEsICduZm55UW5nbicgPT4gJ0YnLCAneGJxclFieGh6cmEnID0+IDI1LCAnYXZ4JyA9PiAwLCAnaXEnID0+IDAsICd2cUNyYXR0aGFuJyA9PiAxLCAndnFDcmF0bmF0eGhnJyA9PiAxLCAnZnJldkNyYXRuYXR4aGcnID0+IDEsICd3aHp5bnVXcmF2Zk9uZW5hdCcgPT4gMCwgJ2ZnbmdoZicgPT4gJ1FFTlNHJywgJ2ZnbmdoZl9vcCcgPT4gJ1FFTlNHJykpOw0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfb3BfYmhnX3VybnFyZScsICRxbmduX3ZhKTsNCgkJCSR2YWZyZWdfdnEgPSAkZ3V2Zi0+cW8tPnZhZnJlZ192cSgpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgICAndnEnPT4nMCcpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3VybnFyZV9vcDI3KCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjcsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAnZmduZ2hmJyA9PiAnUUVOU0cnLCAnZmduZ2hmX29wJyA9PiAnUUVOU0cnKSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJJHZhZnJlZ192cSA9ICRndXZmLT5xby0+dmFmcmVnX3ZxKCk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAgICd2cSc9PicwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiR2YWZyZWdfdnEpKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fdXJucXJlX29wNDEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkkYWJ6YmVOd2ggPSAkcW5nblsnYWJ6YmVOd2gnXTsNCgkJJHhicXJRYnhoenJhID0gJHFuZ25bJ3hicXJRYnhoenJhJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfdXJucXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAndnEnPT4gJzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiRvcF9iaGdfdXJucXJlX3ZxKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3VybnFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ191cm5xcmVdIGp1cmVyIGFiemJlTndoID0gJyRhYnpiZU53aCcgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScNCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBBYnpiZSBDcmF0bndobmEgZ3Zxbnggb2J5cnUgZm56biEhJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2KSBuZiBmcmV2IHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgeGJxclFieGh6cmEgPSAkeGJxclFieGh6cmEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldiddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnZ25hdHRueU53aCcgPT4gJGd0eSwgJ2duYXR0bnlRbnNnbmUnID0+IEFoeXksICdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiA0MSwgJ2F2eCcgPT4gMCwgJ2lxJyA9PiAwLCAndnFDcmF0dGhhbicgPT4gMSwgJ3ZxQ3JhdG5hdHhoZycgPT4gMSwgJ2ZyZXZDcmF0bmF0eGhnJyA9PiAxLCAnd2h6eW51V3JhdmZPbmVuYXQnID0+IDAsICdmZ25naGYnID0+ICdRRU5TRycsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyNjEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkkYWJ6YmVOd2ggPSAkcW5nblsnYWJ6YmVOd2gnXTsNCgkJJHhicXJRYnhoenJhID0gJHFuZ25bJ3hicXJRYnhoenJhJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfdXJucXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiAyNjEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3ZxRXJmY2JhJyA9PiAwLCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmLCAndnEnPT4gJzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiRvcF9iaGdfdXJucXJlX3ZxKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3VybnFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ191cm5xcmVdIGp1cmVyIGFiemJlTndoID0gJyRhYnpiZU53aCcgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScNCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBBYnpiZSBDcmF0bndobmEgZ3Zxbnggb2J5cnUgZm56biEhJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2KSBuZiBmcmV2IHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgeGJxclFieGh6cmEgPSAkeGJxclFieGh6cmEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldiddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnZ25hdHRueU53aCcgPT4gJGd0eSwgJ2duYXR0bnlRbnNnbmUnID0+IEFoeXksICdzeW50UGhlbnUnID0+IDIsICdzeW50WnZ0bmYnID0+IDIsICdxdmZweW52enJlJyA9PiAxLCAnbmZueVFuZ24nID0+ICdGJywgJ3hicXJRYnhoenJhJyA9PiAyNjEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDApKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyNV9lKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjUsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjUsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDAsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3AyN19lKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjcsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gMjcsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDAsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl91cm5xcmVfb3A0MV9lKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlTndoID0gJHFuZ25bJ2FiemJlTndoJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3VybnFyZV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gNDEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZiwgJ3ZxJz0+ICcwJykpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3VybnFyZV92cSkpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gcnlmciB2cyAoJG9wX2JoZ191cm5xcmVfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGFnIHNlYnogW2dveV9vcF9iaGdfdXJucXJlXSBqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIG5hcSB4YnFyUWJ4aHpyYSA9ICckeGJxclFieGh6cmEnDQoJCQkiKTsNCgkJCSRwYWcgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRwYWcgPSAkZS0+cGFnOw0KCQkJfQ0KCQkJdnMoJHBhZyA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgQWJ6YmUgQ3JhdG53aG5hIGd2cW54IG9ieXJ1IGZuem4hIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldikgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIHhicXJRYnhoenJhID0gJHhicXJRYnhoenJhIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXYnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSwgJ2duYXR0bnlOd2gnID0+ICRndHksICdnbmF0dG55UW5zZ25lJyA9PiBBaHl5LCAnc3ludFBoZW51JyA9PiAyLCAnc3ludFp2dG5mJyA9PiAyLCAncXZmcHludnpyZScgPT4gMSwgJ25mbnlRbmduJyA9PiAnRicsICd4YnFyUWJ4aHpyYScgPT4gNDEsICdhdngnID0+IDAsICdpcScgPT4gMCwgJ3ZxQ3JhdHRoYW4nID0+IDEsICd2cUNyYXRuYXR4aGcnID0+IDEsICdmcmV2Q3JhdG5hdHhoZycgPT4gMSwgJ3doenludVdyYXZmT25lbmF0JyA9PiAwLCAndnFFcmZjYmEnID0+IDAsICdmZ25naGZfb3AnID0+ICdRRU5TRycpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ191cm5xcmUnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYsICAgJ3ZxJz0+JzAnKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JHZhZnJlZ192cSkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9xYngoKXsJCQ0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOicnOw0KCQkkb3BfYmhnX3FieGh6cmFfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfcWJ4aHpyYV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcWJ4aHpyYV92cSddKSk/JF9DQkZHWydvcF9iaGdfcWJ4aHpyYV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZVFieGh6cmEgPSAkcW5nblsnYWJ6YmVRYnhoenJhJ107DQoJCSR4YnFyUWJ4aHpyYSA9ICRxbmduWyd4YnFyUWJ4aHpyYSddOw0KCQkJDQogICAgICAgIHZzICgkb3BfYmhnX3FieGh6cmFfdnEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ19xYnhoenJhX3ZxJywgJG9wX2JoZ19xYnhoenJhX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcWJ4aHpyYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gIHJ5ZnIgdnMgKCRvcF9iaGdfcWJ4aHpyYV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBhYnEgc2VieiBbZ295X29wX2JoZ19xYnhoenJhXSBqdXJlciBhYnpiZVFieGh6cmEgPSAnJGFiemJlUWJ4aHpyYScgbmFxIHhicXJRYnhoenJhID0gJyR4YnFyUWJ4aHpyYScgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnDQoJCQkiKTsNCgkJCSRhYnEgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRhYnEgPSAkZS0+YWJxOw0KCQkJfQ0KCQkJdnMoJGFicSA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgWm5ucywgQWJ6YmUgcWJ4aHpyYSBmaHFudSBucW4hJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2UWJ4aHpyYSkgbmYgZnJldiBzZWJ6IGdveV9vcF9iaGdfcWJ4aHpyYSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2UWJ4aHpyYSddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5LCAnaGV5UWJ4aHpyYScgPT4gJ0YnKSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfcWJ4aHpyYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3duenZhbmEoKXsJCQ0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAvLyAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBvcF9iaGdfdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR2cVduenZhbmEgPSAodmZmcmcoJF9DQkZHWyd2cVduenZhbmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sndnFXbnp2YW5hJ10pKT8kX0NCRkdbJ3ZxV256dmFuYSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCSRhYnpiZVduenZhbmEgPSAkcW5nblsnYWJ6YmVXbnp2YW5hJ107DQoJCQkNCiAgICAgICAgdnMgKCR2cVduenZhbmEgIT0gJycpew0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ3ZxV256dmFuYScsICR2cVduenZhbmEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X3FuZ25fd256dmFuYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOw0KICAgICAgICAgICAgDQogICAgICAgIH0gIHJ5ZnIgdnMgKCR2cVduenZhbmEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgYWJxIHNlYnogW2dveV9xbmduX3duenZhbmFdIGp1cmVyIGFiemJlV256dmFuYSA9ICckYWJ6YmVXbnp2YW5hJyBuYXEgb3BfYmhnX3VybnFyZV92cSA9ICckb3BfYmhnX3VybnFyZV92cScNCgkJCSIpOw0KCQkJJGFicSA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJGFicSA9ICRlLT5hYnE7DQoJCQl9DQoJCQl2cygkYWJxID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBabm5zLCBBYnpiZSBXbnp2YW5hIGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSkpOw0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl93bnp2YW5hJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fY2hhdGhnbmEoKXsJCQ0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAvLyAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBvcF9iaGdfdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR2cUNoYXRoZ25hID0gKHZmZnJnKCRfQ0JGR1sndnFDaGF0aGduYSddKSAmJiAhcnpjZ2woJF9DQkZHWyd2cUNoYXRoZ25hJ10pKT8kX0NCRkdbJ3ZxQ2hhdGhnbmEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCgkJIA0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7IA0KCQkJDQogICAgICAgIHZzICgkdnFDaGF0aGduYSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcigndnFDaGF0aGduYScsICR2cUNoYXRoZ25hKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9xbmduX2NoYXRoZ25hJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSAgIHJ5ZnIgdnMgKCRvcF9iaGdfd256dmFuYV92cSA9PSAnJyl7DQogICAgICAgICAgIC8qICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIGFicSBzZWJ6IFtnb3lfb3BfYmhnX3duenZhbmFdIGp1cmVyIGFiemJlV256dmFuYSA9ICckYWJ6YmVXbnp2YW5hJyBuYXEgb3BfYmhnX3VybnFyZV92cSA9ICckb3BfYmhnX3VybnFyZV92cScNCgkJCSIpOw0KCQkJJGFicSA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJGFicSA9ICRlLT5hYnE7DQoJCQl9DQoJCQl2cygkYWJxID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBabm5zLCBBYnpiZSBXbnp2YW5hIGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfSAqLw0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCgncGVybmdyX29sJyA9PiAkaGZyZWFuenIsICdwZXJuZ3JfcW5ncicgPT4gJGd0eSkpOw0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9jaGF0aGduYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3hyem5mbmEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQoJCSRvcF9iaGdfeHJ6bmZuYV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ194cnpuZm5hX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ194cnpuZm5hX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ194cnpuZm5hX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGZyZXZYcnpuZm5hID0gJHFuZ25bJ2ZyZXZYcnpuZm5hJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfeHJ6bmZuYV92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3hyem5mbmFfdnEnLCAkb3BfYmhnX3hyem5mbmFfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ194cnpuZm5hJywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSAgcnlmciB2cyAoJG9wX2JoZ194cnpuZm5hX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIGFicSBzZWJ6IFtnb3lfb3BfYmhnX3hyem5mbmFdIGp1cmVyIGZyZXZYcnpuZm5hID0gJyRmcmV2WHJ6bmZuYScgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnDQoJCQkiKTsNCgkJCSRhYnEgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRhYnEgPSAkZS0+YWJxOw0KCQkJfQ0KCQkJdnMoJGFicSA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgWm5ucywgV3JhdmYgWHJ6bmZuYSBndnFueCBvYnlydSBmbnpuIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfeHJ6bmZuYScsICRxbmduX3ZhKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7CQ0KDQogICAgICAgICAgIA0KCQkJcXZyKCk7DQoJCX0NCiAgICB9DQoJDQoJc2hhcGd2YmEgZm5pcl9xbmduX3FneV9ya2MoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IHZxIHVybnFyZSBRdmdyemh4bmEifScpOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBzZXogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsNCgkJJHhicXJPbmVuYXQgPSAkcW5nblsneGJxck9uZW5hdCddOw0KCQkvKiBpbmVfcWh6YygkcW5nbik7DQoJCXF2cigpOyAqLwkNCgkJDQoJCSRkX3ByeF9mZ25naGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCWZyeXJwZyBmZ25naGYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxCQkNCgkJIik7DQoJCSRmZ25naGYgPSAnQ1JBUVZBVCc7DQoJCXNiZXJucHUoJGRfcHJ4X2ZnbmdoZi0+ZXJmaHlnKCkgbmYgJGVfcHJ4X2ZnbmdoZil7DQoJCQkNCgkJCSRmZ25naGYgPSAkZV9wcnhfZmduZ2hmLT5mZ25naGY7DQoJCQkNCgkJfQ0KCQl2cygkZmduZ2hmID09ICdOQ0NFQklSJyl7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICIwMiIsICdxcmZwJyA9PiAiIFpubnMuLkZnbmdoZiBmaHFudSBuY2NlYmlyISIpKTsJDQoJCQlxdnIoKTsNCgkJfQ0KCQkNCgkJJGtra2sgPSAkcW5nblsnd2h6eW51V3JhdmZPbmVuYXQnXTsNCgkJDQogICAgICAgIHZzICgkb3BfYmhnX3FyZ252eV92cSAhPSAnJyl7DQoJCQkNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ29wX2JoZ191cm5xcmVfdnEnPT4kb3BfYmhnX3VybnFyZV92cSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcXJnbnZ5JywgJHFuZ25fdmEpOw0KCQkJCQkNCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihzYm8pIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJdnMoJGZ6ICE9IDApew0KCQkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnc2JvJyA9PiAkZnopICk7DQoJCQkNCgkJCX0NCg0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihhcmdnYikgbmYgZnpmX2FyZyBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnpfYXJnID0gMDsNCgkJCXNiZXJucHUoJGRrLT5lcmZoeWcoKSBuZiAkZWspew0KCQkJCSRmel9hcmcgID0gJGVrLT5memZfYXJnOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ2FyZ2diJyA9PiAkZnpfYXJnKSApOyANCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgIA0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3FyZ252eV92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3FyZ252eV92cSA9PSAnJyl7DQogICAgICAgICAgICAvKiAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ19xcmdudnldIGp1cmVyIHhicXJPbmVuYXQgPSAnJHhicXJPbmVuYXQnIG5hcSBvcF9iaGdfdXJucXJlX3ZxID0kb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIFhicXIgb25lbmF0IGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJICovDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXZPbmVuYXQpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldk9uZW5hdCddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkvL2luZV9xaHpjKCRxbmduX3ZhKTsNCgkJCS8vcXZyKCk7DQoJCQkNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ19xcmdudnknLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeiAoc2JvKSBuZiBmemYgc2VieiBnb3lfb3BfYmhnX3FyZ252eQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ3NibycgPT4gJGZ6KSApOw0KCQkJDQoJCQkkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KGFyZ2diKSBuZiBmemZfYXJnIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmel9hcmcgPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6X2FyZyAgPSAkZWstPmZ6Zl9hcmc7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnYXJnZ2InID0+ICRmel9hcmcpICk7IA0KCQkJDQoJCQkkZGtwID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBmemYgc2VieiBnb3lfb3BfYmhnX3FyZ252eQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJIik7DQoJCQkkZXAgPSAwOw0KCQkJc2Jlcm5wdSgkZGtwLT5lcmZoeWcoKSBuZiAkZWtwKXsNCgkJCQkkZXAgID0gJGVrcC0+cGZ6ZjsNCgkJCX0NCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsIG5lZW5sKCd3aHp5bnVXcmF2Zk9uZW5hdCcgPT4gJGVwKSApOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4sICd2cSc9PiR2YWZyZWdfdnEsICdlcCc9PiRlcCkpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9xZ3lfeWJwKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCB2cSB1cm5xcmUgUXZncnpoeG5hIn0nKTsNCgkJJG9wX2JoZ19xcmdudnlfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogc2V6IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCg0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7DQoJCSR4YnFyT25lbmF0ID0gJHFuZ25bJ3hicXJPbmVuYXQnXTsNCgkJLyogaW5lX3FoemMoJHFuZ24pOw0KCQlxdnIoKTsgKi8JDQoJCQ0KCQkkZF9wcnhfZmduZ2hmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlmcnlycGcgZmduZ2hmIHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cT0kb3BfYmhnX3VybnFyZV92cQkJDQoJCSIpOw0KCQkkZmduZ2hmID0gJ0NSQVFWQVQnOw0KCQlzYmVybnB1KCRkX3ByeF9mZ25naGYtPmVyZmh5ZygpIG5mICRlX3ByeF9mZ25naGYpew0KCQkJDQoJCQkkZmduZ2hmID0gJGVfcHJ4X2ZnbmdoZi0+ZmduZ2hmOw0KCQkJDQoJCX0NCgkJdnMoJGZnbmdoZiA9PSAnTkNDRUJJUicpew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDIiLCAncXJmcCcgPT4gIiBabm5zLi5GZ25naGYgZmhxbnUgbmNjZWJpciEiKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCSRra2trID0gJHFuZ25bJ3doenludVdyYXZmT25lbmF0J107DQoJCQ0KICAgICAgICB2cyAoJG9wX2JoZ19xcmdudnlfdnEgIT0gJycpew0KCQkJDQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdvcF9iaGdfdXJucXJlX3ZxJz0+JG9wX2JoZ191cm5xcmVfdnEsICd6YnF2c2xfb2wnID0+ICRoZnJlYW56ciwgJ3picXZzbF9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkNCgkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ19xcmdudnlfdnEnLCAkb3BfYmhnX3FyZ252eV92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3FyZ252eScsICRxbmduX3ZhKTsNCgkJCQkJDQoJCQkNCgkJCSRkayA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBmaHoodmZhaHl5KHVuZXRuQ3JhbHJlbnVuYSwwKSkgbmYgZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQl2cygkZnogIT0gMCl7DQoJCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3VybnFyZScsIG5lZW5sKCd1bmV0bkNyYWxyZW51bmEnID0+ICRmeikgKTsNCgkJCQ0KCQkJfQ0KCQkJDQoJCQkkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHZmYWh5eShwdnMsMCkpIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJdnMoJGZ6ICE9IDApew0KCQkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgncHZzJyA9PiAkZnopICk7DQoJCQkNCgkJCX0NCg0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihhcmdnYikgbmYgZnpmX2FyZyBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnpfYXJnID0gMDsNCgkJCXNiZXJucHUoJGRrLT5lcmZoeWcoKSBuZiAkZWspew0KCQkJCSRmel9hcmcgID0gJGVrLT5memZfYXJnOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ2FyZ2diJyA9PiAkZnpfYXJnKSApOyANCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgIA0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kb3BfYmhnX3FyZ252eV92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb3BfYmhnX3FyZ252eV92cSA9PSAnJyl7DQogICAgICAgICAgICAvKiAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYWcgc2VieiBbZ295X29wX2JoZ19xcmdudnldIGp1cmVyIHhicXJPbmVuYXQgPSAnJHhicXJPbmVuYXQnIG5hcSBvcF9iaGdfdXJucXJlX3ZxID0kb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIFhicXIgb25lbmF0IGZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfSAqLw0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXZPbmVuYXQpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldk9uZW5hdCddID0gJGZyZXY7DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkvL2luZV9xaHpjKCRxbmduX3ZhKTsNCgkJCS8vcXZyKCk7DQoJCQkNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ19xcmdudnknLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeih2ZmFoeXkodW5ldG5DcmFscmVudW5hLDApKSBuZiBmemYgc2VieiBnb3lfb3BfYmhnX3FyZ252eQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ3VuZXRuQ3JhbHJlbnVuYScgPT4gJGZ6KSApOw0KCQkJDQoJCQkkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHZmYWh5eShwdnMsMCkpIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnogPSAwOw0KCQkJc2Jlcm5wdSgkZGstPmVyZmh5ZygpIG5mICRlayl7DQoJCQkJJGZ6ICA9ICRlay0+ZnpmOw0KCQkJfQ0KCQkJdnMoJGZ6ICE9IDApew0KCQkJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7DQoJCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgncHZzJyA9PiAkZnopICk7DQoJCQkNCgkJCX0NCgkJCQ0KCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIGZoeihhcmdnYikgbmYgZnpmX2FyZyBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkkZnpfYXJnID0gMDsNCgkJCXNiZXJucHUoJGRrLT5lcmZoeWcoKSBuZiAkZWspew0KCQkJCSRmel9hcmcgID0gJGVrLT5memZfYXJnOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfdXJucXJlJywgbmVlbmwoJ2FyZ2diJyA9PiAkZnpfYXJnKSApOyANCgkJCQ0KCQkJJGRrcCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkNCgkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkNCgkJCSIpOw0KCQkJJGVwID0gMDsNCgkJCXNiZXJucHUoJGRrcC0+ZXJmaHlnKCkgbmYgJGVrcCl7DQoJCQkJJGVwICA9ICRla3AtPnBmemY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnd2h6eW51V3JhdmZPbmVuYXQnID0+ICRlcCkgKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxLCAnZXAnPT4kZXApKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25feGJhZ252YXJlKCl7DQogICAgICAgIHJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KCQkkb3BfYmhnX3hiYWdudmFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ194YmFnbnZhcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3hiYWdudmFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfeGJhZ252YXJlX3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJJGFiemJlWGJhZ252YXJlID0gJHFuZ25bJ2FiemJlWGJhZ252YXJlJ107DQoJCQkNCiAgICAgICAgdnMgKCRvcF9iaGdfeGJhZ252YXJlX3ZxICE9ICcnKXsNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCAnemJxdnNsX29sJyA9PiAkaGZyZWFuenIsICd6YnF2c2xfcW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfeGJhZ252YXJlX3ZxJywgJG9wX2JoZ194YmFnbnZhcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ194YmFnbnZhcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9ICByeWZyIHZzICgkb3BfYmhnX3hiYWdudmFyZV92cSA9PSAnJyl7DQogICAgICAgICAgICAkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBhYnEgc2VieiBbZ295X29wX2JoZ194YmFnbnZhcmVdIGp1cmVyIGFiemJlWGJhZ252YXJlID0gJyRhYnpiZVhiYWdudmFyZScgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnDQoJCQkiKTsNCgkJCSRhYnEgPSAwOw0KCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCSRhYnEgPSAkZS0+YWJxOw0KCQkJfQ0KCQkJdnMoJGFicSA+IDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzA2JywgJ3FyZnAnID0+ICcgWm5ucywgQWJ6YmUgeGJhZ252YXJlIGd2cW54IG9ieXJ1IGZuem4hJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHkpKTsNCgkJCSR6ZnQgPSAkZ3V2Zi0+cW8tPnZhZnJlZygnZ295X29wX2JoZ194YmFnbnZhcmUnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9vbmVuYXRHbmV2cygpew0KCQkNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IG9wX2JoZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJLy8kZ3Zjcl9xYnhoenJhID0gKHZmZnJnKCRfQ0JGR1snZ3Zjcl9xYnhoenJhJ10pICYmICFyemNnbCgkX0NCRkdbJ2d2Y3JfcWJ4aHpyYSddKSk/JF9DQkZHWydndmNyX3FieGh6cmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGd2Y3IgcWJ4aHpyYSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkb25lbmF0R25ldnNfdnEgPSAodmZmcmcoJF9DQkZHWydvbmVuYXRHbmV2c192cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvbmVuYXRHbmV2c192cSddKSk/JF9DQkZHWydvbmVuYXRHbmV2c192cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCiAgICAgICAgJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KICAgICAgICAkbmVlID0gbmVlbmwoKTsNCiAgICAgICAgJG5lZSA9IChuZWVubCkkcW5nbl9zZXo7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KICAgICAgICAkZGZnZXZhdCA9ICcnOw0KCQkNCgkJJGFuem4gPSBuZWVubCgpOw0KCQkkaW55aHIgPSBuZWVubCgpOw0KCQkkdiA9IDA7DQoJCXNiZXJucHUgKCRuZWUgbmYgJGUpew0KCQkJJGFuem5bXSA9ICRlWydhbnpyJ107DQoJCQkkaW55aHJbXSA9ICRlWydpbnlociddOw0KCQkJJHYrKzsNCgkJfQ0KCQkgDQoJCSRxbmduID0gbmVlbmxfcGJ6b3ZhcigkYW56biwgJGlueWhyKTsgDQoJCQkNCiAgICAgICAgdnMgKCRvbmVuYXRHbmV2c192cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb25lbmF0R25ldnNfdnEnLCAkb25lbmF0R25ldnNfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X3FuZ25fb25lbmF0R25ldnMnLCAkcW5nbl92YSk7DQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQkNCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBIQ1FOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsNCiAgICAgICAgICAgIA0KICAgICAgICB9ICByeWZyIHZzICgkb25lbmF0R25ldnNfdnEgPT0gJycpew0KICAgICAgICAgICAgJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgcGJoYWcoKikgbmYgYWJxIHNlYnogW2dveV9xbmduX29uZW5hdEduZXZzXSBqdXJlciBmcmV2T25lbmF0ID0gJyRmcmV2T25lbmF0Jw0KCQkJIik7DQoJCQkkYWJxID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkYWJxID0gJGUtPmFicTsNCgkJCX0NCgkJCXZzKCRhYnEgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIEFiemJlIHFieGh6cmEgZmhxbnUgbnFuIScpKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkNCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9xbmduX29uZW5hdEduZXZzJywgJHFuZ25fdmEpOw0KDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0NCgkJCSRmZ2ZuID0gJzAwJzsNCgkJCSR6ZnRuID0gJHpmdCAuICcgUU5HTiBQRVJOR1JRJzsNCgkJCXZzICgkZmdmbiAhPSAxKXsNCgkJCQkkZmduZ2hmID0gJzA2JzsNCgkJCQkkemZ0ID0gJGZnZm47DQoJCQl9DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2ZuLCAncXJmcCcgPT4gJHpmdG4pKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fZnZuY09uZW5hdCgpew0KCQkNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IG9wX2JoZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxJ106Jyc7DQogICAgICAgICRxbmduX3NleiA9ICh2ZmZyZygkX0NCRkdbJ3FuZ25fc2V6J10pICYmICFyemNnbCgkX0NCRkdbJ3FuZ25fc2V6J10pKT8kX0NCRkdbJ3FuZ25fc2V6J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoJCSANCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOyANCgkJCQ0KICAgICAgICB2cyAoJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSAhPSAnJyl7DQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxJywgJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfYmhnX3hyZnZuY25hT25lbmF0JywgJHFuZ25fdmEpOw0KCQkJDQoJCQl2cyggISR6ZnQgKQ0KCQkJew0KCQkJICAgJHJlZUFiICAgPSAkZ3V2Zi0+cW8tPl9yZWViZV9haHpvcmUoKTsNCgkJCSAgICRyZWVacmZmID0gJGd1dmYtPnFvLT5fcmVlYmVfenJmZm50cigpOw0KCQkJICAgcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkcmVlQWIsICdxcmZwJyA9PiAkcmVlWnJmZikpOw0KCQkJICAgcXZyKCk7CQkNCgkJCX0JDQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gSENRTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSAgcnlmciB2cyAoJG9wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSA9PSAnJyl7DQogICAgICAgICAgICANCgkJCSRxbmduX3ZhID0gbmVlbmxfenJldHIoJHFuZ24sIG5lZW5sKCdwZXJuZ3Jfb2wnID0+ICRoZnJlYW56ciwgJ3Blcm5ncl9xbmdyJyA9PiAkZ3R5KSk7DQoJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQnLCAkcW5nbl92YSk7DQoNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICAkcmVlQWIgICA9ICRndXZmLT5xby0+X3JlZWJlX2Foem9yZSgpOw0KCQkJICAgJHJlZVpyZmYgPSAkZ3V2Zi0+cW8tPl9yZWViZV96cmZmbnRyKCk7DQoJCQkgICBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRyZWVBYiwgJ3FyZnAnID0+ICRyZWVacmZmKSk7DQoJCQkgICBxdnIoKTsJCQ0KCQkJfQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIFBFUk5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0bikpOwkNCg0KICAgICAgICAgICANCgkJCXF2cigpOw0KCQl9DQogICAgfQ0KCQ0KCXNoYXBndmJhIGZuaXJfcW5nbl9uZm55X29udW5hT254aCgpew0KICAgICAgICByZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCiAgICAgICAgJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggdnEgdXJucXJlIFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IHZxIHFyZ252eSBRdmdyemh4bmEifScpOw0KCQkkb3BfdmFfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfdmFfcXJnbnZ5X3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF92YV9xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IHZxIHZhIHFyZ252eSBRdmdyemh4bmEifScpOw0KCQkkb251bmFPbnhoX3ZxID0gKHZmZnJnKCRfQ0JGR1snb251bmFPbnhoX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29udW5hT254aF92cSddKSk/JF9DQkZHWydvbnVuYU9ueGhfdnEnXTonJzsNCiAgICAgICAgJHFuZ25fc2V6ID0gKHZmZnJnKCRfQ0JGR1sncW5nbl9zZXonXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sncW5nbl9zZXonXSkpPyRfQ0JGR1sncW5nbl9zZXonXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IHNleiBHdnFueCBRdmdyemh4bmEifScpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkbmVlID0gKG5lZW5sKSRxbmduX3NlejsNCiAgICAgICAgJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQogICAgICAgICRkZmdldmF0ID0gJyc7DQoJCQ0KCQkkYW56biA9IG5lZW5sKCk7DQoJCSRpbnlociA9IG5lZW5sKCk7DQoJCSR2ID0gMDsNCgkJc2Jlcm5wdSAoJG5lZSBuZiAkZSl7DQoJCQkkYW56bltdID0gJGVbJ2FuenInXTsNCgkJCSRpbnlocltdID0gJGVbJ2lueWhyJ107DQoJCQkkdisrOw0KCQl9DQoNCgkJJHFuZ24gPSBuZWVubF9wYnpvdmFyKCRhbnpuLCAkaW55aHIpOw0KCQkkeGJxck5mbnlPbnVuYU9ueGggPSAkcW5nblsneGJxck5mbnlPbnVuYU9ueGgnXTsNCgkJLyogaW5lX3FoemMoJHFuZ24pOw0KCQlxdnIoKTsgKi8JDQoJCQ0KCQkkZF9wcnhfZmduZ2hmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlmcnlycGcgZmduZ2hmIHNlYnogZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cT0kb3BfYmhnX3VybnFyZV92cQkJDQoJCSIpOw0KCQkkZmduZ2hmID0gJ1FFTlNHJzsNCgkJc2Jlcm5wdSgkZF9wcnhfZmduZ2hmLT5lcmZoeWcoKSBuZiAkZV9wcnhfZmduZ2hmKXsNCgkJCQ0KCQkJJGZnbmdoZiA9ICRlX3ByeF9mZ25naGYtPmZnbmdoZjsNCgkJCQ0KCQl9DQoJCXZzKCRmZ25naGYgPT0gJ05DQ0VCSVInKXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gIjAyIiwgJ3FyZnAnID0+ICIgWm5ucy4uRmduZ2hmIGZocW51IG5jY2ViaXIhIikpOwkNCgkJCXF2cigpOw0KCQl9DQoJCQ0KCQkka2trayA9ICRxbmduWyd3aHp5bnVOZm55T251bmFPbnhoJ107DQoJCQ0KICAgICAgICB2cyAoJG9udW5hT254aF92cSAhPSAnJyl7DQoJCQkNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ29wX2JoZ19xcmdudnlfdnEnPT4kb3BfYmhnX3FyZ252eV92cSwgJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb251bmFPbnhoX3ZxJywgJG9udW5hT254aF92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkJCQ0KCQkJDQoJCQkvKiAkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHNibykgbmYgZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnc2JvJyA9PiAkZnopICk7ICovDQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICANCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9udW5hT254aF92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb251bmFPbnhoX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfcW5nbl9vbnVuYU9ueGhdIGp1cmVyIHhicXJOZm55T251bmFPbnhoID0gJyR4YnFyTmZueU9udW5hT254aCcgbmFxIG9wX3ZhX3FyZ252eV92cSA9JG9wX3ZhX3FyZ252eV92cSBuYXEgb3BfYmhnX3FyZ252eV92cSA9JG9wX2JoZ19xcmdudnlfdnENCgkJCSIpOw0KCQkJJHBhZyA9IDA7DQoJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJJHBhZyA9ICRlLT5wYWc7DQoJCQl9DQoJCQl2cygkcGFnID4gMCl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDYnLCAncXJmcCcgPT4gJyBabm5zLCBYYnFyIE9udW5hIE9ueGggTmZueSBRYnggdmF2LCBGaHFudSBucW4hJykpOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQ0KCQkJJGRmID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHpuayhmcmV2T25lbmF0KSBuZiBmcmV2IHNlYnogZ295X3FuZ25fb251bmFPbnhoIGp1cmVyIG9wX2JoZ19xcmdudnlfdnEgPSAkb3BfYmhnX3FyZ252eV92cSANCgkJCSIpOw0KCQkJJGZyZXYgPSAwOw0KCQkJc2Jlcm5wdSgkZGYtPmVyZmh5ZygpIG5mICRlZil7DQoJCQkJJGZyZXYgPSAodmFnKSRlZi0+ZnJldisxOw0KCQkJfSANCgkJCSRxbmduWydmcmV2T25lbmF0J10gPSAkZnJldjsNCgkJCQ0KCQkJJHFuZ25fdmEgPSBuZWVubF96cmV0cigkcW5nbiwgbmVlbmwoJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHkpKTsNCgkJCS8vaW5lX3FoemMoJHFuZ25fdmEpOw0KCQkJLy9xdnIoKTsNCgkJCQ0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KLyogCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeihzYm8pIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5DQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ19xcmdudnknLCBuZWVubCgnc2JvJyA9PiAkZnopICk7DQoJCQkNCgkJCSAqLw0KCQkJJGRrcCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwZnpmIHNlYnogZ295X3FuZ25fb251bmFPbnhoDQoJCQkJanVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRlcCA9IDA7DQoJCQlzYmVybnB1KCRka3AtPmVyZmh5ZygpIG5mICRla3Apew0KCQkJCSRlcCAgPSAkZWtwLT5wZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcXJnbnZ5JywgbmVlbmwoJ3doenludU5mbnlPbnVuYU9ueGgnID0+ICRlcCkgKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxLCAnZXAnPT4kZXApKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBmbmlyX3FuZ25fbmZueV9vbnVuYU9ueGgyNjEoKXsNCiAgICAgICAgcmVlYmVfZXJjYmVndmF0KFJfTllZIF4gKFJfQUJHVlBSIHwgUl9KTkVBVkFUKSk7DQogICAgICAgICRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IDEgR3ZxbnggdnEgdXJucXJlIFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IDIgR3ZxbnggdnEgcXJnbnZ5IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyT25lbmF0ID0gKHZmZnJnKCRfQ0JGR1sneGJxck9uZW5hdCddKSAmJiAhcnpjZ2woJF9DQkZHWyd4YnFyT25lbmF0J10pKT8kX0NCRkdbJ3hicXJPbmVuYXQnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IDMgR3ZxbnggdnEgdmEgcXJnbnZ5IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyUWJ4TmZueSA9ICh2ZmZyZygkX0NCRkdbJ3hicXJRYnhOZm55J10pICYmICFyemNnbCgkX0NCRkdbJ3hicXJRYnhOZm55J10pKT8kX0NCRkdbJ3hicXJRYnhOZm55J106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiA0IEd2cW54IHZxIHZhIHFyZ252eSBRdmdyemh4bmEifScpOw0KCQkkb3BfdmFfcXJnbnZ5X3ZxX25mbnkgPSAodmZmcmcoJF9DQkZHWydvcF92YV9xcmdudnlfdnFfbmZueSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF92YV9xcmdudnlfdnFfbmZueSddKSk/JF9DQkZHWydvcF92YV9xcmdudnlfdnFfbmZueSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggdnEgdmEgcXJnbnZ5IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvbnVuYU9ueGhfdnEgPSAodmZmcmcoJF9DQkZHWydvbnVuYU9ueGhfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb251bmFPbnhoX3ZxJ10pKT8kX0NCRkdbJ29udW5hT254aF92cSddOicnOw0KICAgICAgICAkcW5nbl9zZXogPSAodmZmcmcoJF9DQkZHWydxbmduX3NleiddKSAmJiAhcnpjZ2woJF9DQkZHWydxbmduX3NleiddKSk/JF9DQkZHWydxbmduX3NleiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogc2V6IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQogICAgICAgICRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRuZWUgPSAobmVlbmwpJHFuZ25fc2V6Ow0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCiAgICAgICAgJGRmZ2V2YXQgPSAnJzsNCgkJDQoJCSRhbnpuID0gbmVlbmwoKTsNCgkJJGlueWhyID0gbmVlbmwoKTsNCgkJJHYgPSAwOw0KCQlzYmVybnB1ICgkbmVlIG5mICRlKXsNCgkJCSRhbnpuW10gPSAkZVsnYW56ciddOw0KCQkJJGlueWhyW10gPSAkZVsnaW55aHInXTsNCgkJCSR2Kys7DQoJCX0NCg0KCQkkcW5nbiA9IG5lZW5sX3Biem92YXIoJGFuem4sICRpbnlocik7DQoJCSR4YnFyTmZueU9udW5hT254aCA9ICRxbmduWyd4YnFyTmZueU9udW5hT254aCddOw0KCQkvKiBpbmVfcWh6YygkcW5nbik7DQoJCXF2cigpOyAqLwkNCgkJDQoJCSRkX3ByeF9mZ25naGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCWZyeXJwZyBmZ25naGYgc2VieiBnb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxCQkNCgkJIik7DQoJCSRmZ25naGYgPSAnUUVOU0cnOw0KCQlzYmVybnB1KCRkX3ByeF9mZ25naGYtPmVyZmh5ZygpIG5mICRlX3ByeF9mZ25naGYpew0KCQkJDQoJCQkkZmduZ2hmID0gJGVfcHJ4X2ZnbmdoZi0+ZmduZ2hmOw0KCQkJDQoJCX0NCgkJdnMoJGZnbmdoZiA9PSAnTkNDRUJJUicpew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDIiLCAncXJmcCcgPT4gIiBabm5zLi5GZ25naGYgZmhxbnUgbmNjZWJpciEiKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCSRra2trID0gJHFuZ25bJ3doenludU5mbnlPbnVuYU9ueGgnXTsNCgkJDQogICAgICAgIHZzICgkb251bmFPbnhoX3ZxICE9ICcnKXsNCgkJCQ0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3picXZzbF9vbCcgPT4gJGhmcmVhbnpyLCAnemJxdnNsX3FuZ3InID0+ICRndHkpKTsNCgkJCQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb251bmFPbnhoX3ZxJywgJG9udW5hT254aF92cSk7DQoJCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkJCQ0KCQkJDQoJCQkvKiAkZGsgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgZmh6KHNibykgbmYgZnpmIHNlYnogZ295X29wX2JoZ19xcmdudnkgDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgnc2JvJyA9PiAkZnopICk7ICovDQoJCQkNCgkJCXZzKCAhJHpmdCApDQoJCQl7DQoJCQkgICANCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9CQ0KCQkJJGZnZm4gPSAnMDAnOw0KCQkJJHpmdG4gPSAkemZ0IC4gJyBRTkdOIEhDUU5HUlEnOw0KCQkJdnMgKCRmZ2ZuICE9IDEpew0KCQkJCSRmZ25naGYgPSAnMDYnOw0KCQkJCSR6ZnQgPSAkZmdmbjsNCgkJCX0NCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZm4sICdxcmZwJyA9PiAkemZ0biwgJ3ZxJz0+JG9udW5hT254aF92cSwgJ2VwJz0+JGtra2sgKSk7DQogICAgICAgICAgICANCiAgICAgICAgfSByeWZyIHZzICgkb251bmFPbnhoX3ZxID09ICcnKXsNCiAgICAgICAgICAgICRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IFtnb3lfcW5nbl9vbnVuYU9ueGhdIGp1cmVyIHhicXJPbmVuYXQgPSAnJHhicXJPbmVuYXQnIG5hcSBvcF92YV9xcmdudnlfdnFfbmZueSA9JG9wX3ZhX3FyZ252eV92cV9uZm55IG5hcSBvcF9iaGdfcXJnbnZ5X3ZxID0kb3BfYmhnX3FyZ252eV92cSBuYXEgeGJxclFieE5mbnkgPSR4YnFyUWJ4TmZueQ0KCQkJIik7DQoJCQkkcGFnID0gMDsNCgkJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCQkkcGFnID0gJGUtPnBhZzsNCgkJCX0NCgkJCXZzKCRwYWcgPiAwKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwNicsICdxcmZwJyA9PiAnIFpubnMsIFhicXIgT251bmEgT254aCBOZm55IFFieCB2YXYsIEZocW51IG5xbiEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQkJDQoJCQkkZGYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgem5rKGZyZXZPbmVuYXQpIG5mIGZyZXYgc2VieiBnb3lfcW5nbl9vbnVuYU9ueGgganVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxIA0KCQkJIik7DQoJCQkkZnJldiA9IDA7DQoJCQlzYmVybnB1KCRkZi0+ZXJmaHlnKCkgbmYgJGVmKXsNCgkJCQkkZnJldiA9ICh2YWcpJGVmLT5mcmV2KzE7DQoJCQl9IA0KCQkJJHFuZ25bJ2ZyZXZPbmVuYXQnXSA9ICRmcmV2Ow0KCQkJDQoJCQkkcW5nbl92YSA9IG5lZW5sX3pyZXRyKCRxbmduLCBuZWVubCggJ3Blcm5ncl9vbCcgPT4gJGhmcmVhbnpyLCAncGVybmdyX3FuZ3InID0+ICRndHkpKTsNCgkJCS8vaW5lX3FoemMoJHFuZ25fdmEpOw0KCQkJLy9xdnIoKTsNCgkJCQ0KCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbnVuYU9ueGgnLCAkcW5nbl92YSk7DQoJCQkkdmFmcmVnX3ZxID0gJGd1dmYtPnFvLT52YWZyZWdfdnEoKTsNCgkJCQ0KLyogCQkJJGRrID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJZnJ5cnBnIGZoeihzYm8pIG5mIGZ6ZiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5DQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRmeiA9IDA7DQoJCQlzYmVybnB1KCRkay0+ZXJmaHlnKCkgbmYgJGVrKXsNCgkJCQkkZnogID0gJGVrLT5memY7DQoJCQl9DQoJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ19xcmdudnknLCBuZWVubCgnc2JvJyA9PiAkZnopICk7DQoJCQkNCgkJCSAqLw0KCQkJJGRrcCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwZnpmIHNlYnogZ295X3FuZ25fb251bmFPbnhoDQoJCQkJanVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJDQoJCQkiKTsNCgkJCSRlcCA9IDA7DQoJCQlzYmVybnB1KCRka3AtPmVyZmh5ZygpIG5mICRla3Apew0KCQkJCSRlcCAgPSAkZWtwLT5wZnpmOw0KCQkJfQ0KCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsNCgkJCSR6ZnQ9JGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9vcF9iaGdfcXJnbnZ5JywgbmVlbmwoJ3doenludU5mbnlPbnVuYU9ueGgnID0+ICRlcCkgKTsNCgkJCQ0KCQkJdnMoICEkemZ0ICkNCgkJCXsNCgkJCSAgICRyZWVBYiAgID0gJGd1dmYtPnFvLT5fcmVlYmVfYWh6b3JlKCk7DQoJCQkgICAkcmVlWnJmZiA9ICRndXZmLT5xby0+X3JlZWJlX3pyZmZudHIoKTsNCgkJCSAgIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJHJlZUFiLCAncXJmcCcgPT4gJHJlZVpyZmYpKTsNCgkJCSAgIHF2cigpOwkJDQoJCQl9DQoJCQkkZmdmbiA9ICcwMCc7DQoJCQkkemZ0biA9ICR6ZnQgLiAnIFFOR04gUEVSTkdSUSc7DQoJCQl2cyAoJGZnZm4gIT0gMSl7DQoJCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkJJHpmdCA9ICRmZ2ZuOw0KCQkJfQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmbiwgJ3FyZnAnID0+ICR6ZnRuLCAndnEnPT4kdmFmcmVnX3ZxLCAnZXAnPT4kZXApKTsJDQoNCiAgICAgICAgICAgDQoJCQlxdnIoKTsNCgkJfQ0KICAgIH0NCgkNCglzaGFwZ3ZiYSBjZWJmcmZfZ2JfcHJ2Zm4oKXsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZXJkaHJmZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGZnZiA9ICh2ZmZyZygkX0NCRkdbJ2ZnZiddKSAmJiAhcnpjZ2woJF9DQkZHWydmZ2YnXSkpPyRfQ0JGR1snZmdmJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRkPSRndXZmLT5xby0+ZGhyZWwoIg0KCQkJZnJ5cnBnICogc2VieiBnb3lfb3BfdmFfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkiKTsJCQ0KCQl2cygkZC0+YWh6X2ViamYoKSA9PSAwKXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ3FyZnAnID0+ICcgem5ucywgUW5nbiBndnFueCBvdmZuIHF2IENlYmZyZiEnKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCXZzKCRmZ2YgPT0gJ1FFTlNHJyl7DQoJCQkkZD0kZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlmcnlycGcgKiBzZWJ6IGdveV9vcF92YV9xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCXZzKCRkLT5haHpfZWJqZigpID4gMTAwMDAwMDApew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAxJywgJ3FyZnAnID0+ICcgRmhxbnUgTnFuIFFuZ24gcWJ4IGJoZyEnKSk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQl9DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOw0KCQkkemZ0PSRndXZmLT5xby0+aGNxbmdyKCdnb3lfb3BfdmFfdXJucXJlJywgbmVlbmwoJ2ZnbmdoZicgPT4gJGZnZikpOwkNCgkJDQoJCXZzKCR6ZnQpew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAncXJmcCcgPT4gJyBIY3FuZ3JxJykpOwkNCgkJCXF2cigpOw0KCQl9IHJ5ZnIgew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDEnLCAncXJmcCcgPT4gJ05xbiBSZWViZScpKTsJCQ0KCQkJcXZyKCk7CQ0KCQl9DQoJCQ0KCQkNCgkJDQoJfQ0KCQ0KCXNoYXBndmJhIG5jY2ViaXJfcW5nbl91cm5xcmUoKXsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnpyZ3JlIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRmZ2YgPSAodmZmcmcoJF9DQkZHWydmZ2YnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snZmdmJ10pKT8kX0NCRkdbJ2ZnZiddOicnOw0KCQkNCgkJJGQ9JGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlmcnlycGcgKiBzZWJ6IGdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkiKTsJCQ0KCQl2cygkZC0+YWh6X2ViamYoKSA9PSAwKXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ3FyZnAnID0+ICcgUW5nbiBPbmVuYXQgWm5mdnUgWGJmYmF0JykpOwkNCgkJCXF2cigpOw0KCQl9DQoJCQ0KCQkNCgkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3VybnFyZV92cScsICRvcF9iaGdfdXJucXJlX3ZxKTsNCgkJJHpmdD0kZ3V2Zi0+cW8tPmhjcW5ncignZ295X29wX2JoZ191cm5xcmUnLCBuZWVubCgndnFFcmZjYmEnID0+ICRmZ2YpKTsJDQoJCQ0KCQl2cygkemZ0KXsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ3FyZnAnID0+ICcgUW5nbiBScXZzbnBnIEZoeGZyZiEnKSk7CQ0KCQkJcXZyKCk7DQoJCX0gcnlmciB7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMScsICdxcmZwJyA9PiAnTnFuIFJlZWJlJykpOwkJDQoJCQlxdnIoKTsJDQoJCX0NCgkJDQoJCQ0KCQkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fdXJucXJlKCl7DQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX2JoZ191cm5xcmVfdnEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J3FyZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCSR4YnFycWJ4ID0gdmZmcmcoJF9DQkZHWyd4YnFycWJ4J10pPyRfQ0JGR1sneGJxcnFieCddOicnOw0KCQl2cygkZTEwayA9PSAnWEJRUlFCWEhaUkEnKXsNCgkJCSRqdXJlciA9ICIgeGJxclFieGh6cmE9JyR4YnFycWJ4ICciOw0KCQkJDQoJCX0NCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3VybnFyZSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3VybnFyZV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyduZm55UW5nbiddPSRlYmotPm5mbnlRbmduOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyduZmhlbmFmdiddPSRlYmotPm5maGVuYWZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvdm5sbkNyYXRoZW5hdCddPSRlYmotPm92bmxuQ3JhdGhlbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvdm5sbkduem9udW5hJ109JGViai0+b3ZubG5HbnpvbnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb2VoZ2InXT0kZWJqLT5vZWhnYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzJ109JGViai0+cHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwdnNFaGN2bnUnXT0kZWJqLT5wdnNFaGN2bnU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3F2ZnB5bnZ6cmUnXT0kZWJqLT5xdmZweW52enJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzeW50UGhlbnUnXT0kZWJqLT5zeW50UGhlbnU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3N5bnRadnRuZiddPSRlYmotPnN5bnRadnRuZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnc2JvJ109JGViai0+c2JvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzZXJ2dHVnJ109JGViai0+c2VydnR1ZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5DcmFscmVudW5hJ109JGViai0+dW5ldG5DcmFscmVudW5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd2cUNyYXR0aGFuJ109JGViai0+dnFDcmF0dGhhbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFDcmF0bmF0eGhnJ109JGViai0+dnFDcmF0bmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3bm9uZ25hR2dxJ109JGViai0+d25vbmduYUdncTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51WGJhZ252YXJlJ109JGViai0+d2h6eW51WGJhZ252YXJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZoZW5hZnYnXT0kZWJqLT54YnFyTmZoZW5hZnY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJQbmVuT25sbmUnXT0kZWJqLT54YnFyUG5lbk9ubG5lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lblFudG5hdCddPSRlYmotPnhicXJQbmVuUW50bmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyVmFwYmdyZXonXT0kZWJqLT54YnFyVmFwYmdyZXo7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkNlYmZycWhlJ109JGViai0+eGJxcldyYXZmQ2ViZnJxaGU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlJ4ZmNiZSddPSRlYmotPnhicXJXcmF2ZlJ4ZmNiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQXZ5bnYnXT0kZWJqLT54YnFyV3JhdmZBdnludjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmR2NvJ109JGViai0+eGJxcldyYXZmR2NvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5hZ2JlJ109JGViai0+eGJxclhuYWdiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZVJ4ZmNiZSddPSRlYmotPnhicXJYbmFnYmVSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmFnYmVaaG5nJ109JGViai0+eGJxclhuYWdiZVpobmc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmFnYmVDcmV2eGZuJ109JGViai0+eGJxclhuYWdiZUNyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmdydGJldlJ4ZmNiZSddPSRlYmotPnhicXJYbmdydGJldlJ4ZmNiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhyYW5DbndueCddPSRlYmotPnhicXJYcmFuQ253bng7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJZYnhuZnYnXT0kZWJqLT54YnFyWWJ4bmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyQXJ0bmVuR2h3aG5hJ109JGViai0+eGJxckFydG5lbkdod2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckNyeU9iYXR4bmUnXT0kZWJqLT54YnFyQ3J5T2JhdHhuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckNyeVJ4ZmNiZSddPSRlYmotPnhicXJDcnlSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJDcnlaaG5nJ109JGViai0+eGJxckNyeVpobmc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJDcnlHaHdobmEnXT0kZWJqLT54YnFyQ3J5R2h3aG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyQ3J6b25sbmUnXT0kZWJqLT54YnFyQ3J6b25sbmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJHdmNyVW5ldG4nXT0kZWJqLT54YnFyR3ZjclVuZXRuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR2h3aG5hQ3JhdHZldnpuYSddPSRlYmotPnhicXJHaHdobmFDcmF0dmV2em5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR2NmJ109JGViai0+eGJxckdjZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcklueWhnbiddPSRlYmotPnhicXJJbnloZ247DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hiZ25HZ3EnXT0kZWJqLT54YmduR2dxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydSYWd2Z25mJ109JGViai0+UmFndmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjEnXT0kZWJqLT5SYWd2Z25mMTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjInXT0kZWJqLT5SYWd2Z25mMjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjMnXT0kZWJqLT5SYWd2Z25mMzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUmFndmduZjQnXT0kZWJqLT5SYWd2Z25mNDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYW56bkdncSddPSRlYmotPmFuem5HZ3E7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FxY296J109JGViai0+YXFjb3o7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25lbmF0J109JGViai0+YXZ5bnZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52Wm54eWJhJ109JGViai0+YXZ5bnZabnh5YmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52V25mbiddPSRlYmotPmF2eW52V25mbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaG5hdFpoeG4nXT0kZWJqLT5obmF0Wmh4bjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVPcDExJ109JGViai0+YWJ6YmVPcDExOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldiddPSRlYmotPmZyZXY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mJ109JGViai0+ZnJldlJhZ3ZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mMSddPSRlYmotPmZyZXZSYWd2Z25mMTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlJhZ3ZnbmYyJ109JGViai0+ZnJldlJhZ3ZnbmYyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2UmFndmduZjMnXT0kZWJqLT5mcmV2UmFndmduZjM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mNCddPSRlYmotPmZyZXZSYWd2Z25mNDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZmhvY2JmT3AxMSddPSRlYmotPmZob2NiZk9wMTE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZnbmdoZiddPSRlYmotPmZnbmdoZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZmduZ2hmX29wJ109JGViai0+ZmduZ2hmX29wOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydncnpjbmdGZ2hzc3ZhdCddPSRlYmotPmdyemNuZ0ZnaHNzdmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3R5Tnh1dmVPcmV5bnhoJ109JGViai0+Z3R5Tnh1dmVPcmV5bnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndHlOam55T3JleW54aCddPSRlYmotPmd0eU5qbnlPcmV5bnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55T3AxMSddPSRlYmotPmduYXR0bnlPcDExOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UW5zZ25lJ109JGViai0+Z25hdHRueVFuc2duZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVJ4ZmNiZSddPSRlYmotPmduYXR0bnlSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlDcmV2eGZuJ109JGViai0+Z25hdHRueUNyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlHZ3EnXT0kZWJqLT5nbmF0dG55R2dxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnYmdueVFuYW5Gbmp2ZyddPSRlYmotPmdiZ255UW5hbkZuanZnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT3JhcXJlbiddPSRlYmotPnhicXJPcmFxcmVuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydpYnloenInXT0kZWJqLT5pYnloenI7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2Fuem5DcmF0bmF0eGhnJ109JGViai0+YW56bkNyYXRuYXR4aGc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eCddPSRlYmotPmF2eDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVDcmF0bmF0eGhnJ109JGViai0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYlFuc2duZSddPSRlYmotPmFiUW5zZ25lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lbk5hdHhoZyddPSRlYmotPnhicXJQbmVuTmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2Q3JhdG5hdHhoZyddPSRlYmotPmZyZXZDcmF0bmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT25heCddPSRlYmotPnhicXJPbmF4Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25heCddPSRlYmotPmZyZXZPbmF4Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmUnXT0kZWJqLT53aHp5bnVQYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludVhyem5mbmEnXT0kZWJqLT53aHp5bnVYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5hZ2JlR2h3aG5hJ109JGViai0+eGJxclhuYWdiZUdod2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2Zk9uZW5hdCddPSRlYmotPnhicXJXcmF2Zk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmVGhxbmF0J109JGViai0+eGJxcldyYXZmVGhxbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR2h3aG5hR2NvJ109JGViai0+eGJxckdod2huYUdjbzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYW56bkN2cCddPSRlYmotPmFuem5DdnA7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ255bnpuZyddPSRlYmotPm55bnpuZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVHcnljQ3ZwJ109JGViai0+YWJ6YmVHcnljQ3ZwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlYmotPndoenludVBiYWdudmFyZTIwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlYmotPndoenludVBiYWdudmFyZTQwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVXcmF2Zk9uZW5hdCddPSRlYmotPndoenludVdyYXZmT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlYmotPnlieG5mdkZ2bmNDcmV2eGZuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lbkZnaHNzdmF0J109JGViai0+eGJxclBuZW5GZ2hzc3ZhdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ25lZ0JzJ109JGViai0+eGJxcldyYXZmQ25lZ0JzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55Q3hvJ109JGViai0+Z25hdHRueUN4bzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaXEnXT0kZWJqLT5pcTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlYmotPmpueGdoRnZuY0NyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmR2NvJ109JGViai0+V3JhdmZHY287DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0dod2huYUdjbyddPSRlYmotPkdod2huYUdjbzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnR2h3aG5hQ3JhdHZldnpuYSddPSRlYmotPkdod2huYUNyYXR2ZXZ6bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1BuZW5OYXR4aGcnXT0kZWJqLT5QbmVuTmF0eGhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydYcmFuQ253bngnXT0kZWJqLT5YcmFuQ253bng7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ05maGVuYWZ2X2d2Y3InXT0kZWJqLT5OZmhlbmFmdl9ndmNyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydPbmF4J109JGViai0+T25heDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnWWJ4bmZ2J109JGViai0+WWJ4bmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydHY2YnXT0kZWJqLT5HY2Y7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1BuZW5PbmxuZSddPSRlYmotPlBuZW5PbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUG5lblFudG5hdCddPSRlYmotPlBuZW5RbnRuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1huZ3J0YmV2UnhmY2JlJ109JGViai0+WG5ncnRiZXZSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmUnhmY2JlJ109JGViai0+V3JhdmZSeGZjYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJZYnhuZnZPbmxuZSddPSRlYmotPnhicXJZYnhuZnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnWWJ4bmZ2T25sbmUnXT0kZWJqLT5ZYnhuZnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnV3JhdmZYcnpuZm5hJ109JGViai0+V3JhdmZYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydWYXBiZ3JleiddPSRlYmotPlZhcGJncmV6Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwZXJuZ3JfcW5nciddPSRlYmotPnBlcm5ncl9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwZXJuZ3Jfb2wnXT0kZWJqLT5wZXJuZ3Jfb2w7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3picXZzbF9xbmdyJ109JGViai0+emJxdnNsX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3picXZzbF9vbCddPSRlYmotPnpicXZzbF9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFFcmZjYmEnXT0kZWJqLT52cUVyZmNiYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFFcmZjYmFfMSddPSRlYmotPnZxRXJmY2JhXzE7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCgkNCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9xYngoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX2JoZ19xYnhoenJhX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOidxcmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVlFCWCcpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfdXJucXJlX3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3FieCgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3FieF9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xYnhoenJhX3ZxJ109JGViai0+b3BfYmhnX3FieGh6cmFfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mJ109JGViai0+eGJxclNuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclZ3dmEnXT0kZWJqLT54YnFyVnd2YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVRYnhoenJhJ109JGViai0+YWJ6YmVRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2UWJ4aHpyYSddPSRlYmotPmZyZXZRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UWJ4aHpyYSddPSRlYmotPmduYXR0bnlRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3cmF2ZlFieGh6cmEnXT0kZWJqLT53cmF2ZlFieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2hleVFieGh6cmEnXT0kZWJqLT5oZXlRYnhoenJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4cmdyZW5hdG5hJ109JGViai0+eHJncmVuYXRuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl95YnRmKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfdXJucXJlX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOidxcmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVllCVEYnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3VybnFyZV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl95YnRmKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25feWJ0Zl9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCQkkZXJmY2JhcHItPmViamZbJHZdWyd2cUVyZmNiYSddPSRlYmotPnZxRXJmY2JhOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfdXJucXJlX3ZxJ109JGViai0+b3BfdmFfdXJucXJlX3ZxOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3VybnFyZV92cSddPSRlYmotPm9wX2JoZ191cm5xcmVfdnE7DQoJCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hyZ3JlbmF0bmEnXT0kZWJqLT54cmdyZW5hdG5hOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVRbnNnbmUnXT0kZWJqLT5hYnpiZVFuc2duZTsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlRbnNnbmUnXT0kZWJqLT5nbmF0dG55UW5zZ25lOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVFcmZjYmEnXT0kZWJqLT5hYnpiZUVyZmNiYTsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlFcmZjYmEnXT0kZWJqLT5nbmF0dG55RXJmY2JhOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnam54Z2hFcmZjYmEnXT0kZWJqLT5qbnhnaEVyZmNiYTsNCgkJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2hlbnZuYTEnXT0kZWJqLT5oZW52bmExOw0KCQkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hMiddPSRlYmotPmhlbnZuYTI7DQoJCQkkZXJmY2JhcHItPmViamZbJHZdWydDcXMnXT0kZWJqLT5DcXM7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl93bnp2YW5hKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOid2cVduenZhbmEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J25mcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkkdXFlX3ZxayA9IHZmZnJnKCRfQ0JGR1sndXFlX3ZxayddKT8kX0NCRkdbJ3VxZV92cWsnXTonJzsNCgkJdnMoJGUxMGsgPT0gJ1BORVZXWlZBTkEnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3VybnFyZV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl93bnp2YW5hKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fd256dmFuYV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxV256dmFuYSddPSRlYmotPnZxV256dmFuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3VybnFyZV92cSddPSRlYmotPm9wX2JoZ191cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX3ZhX3VybnFyZV92cSddPSRlYmotPm9wX3ZhX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVPY3cnXT0kZWJqLT5hYnpiZU9jdzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueU9jdyddPSRlYmotPmduYXR0bnlPY3c7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlduenZhbmEnXT0kZWJqLT54YnFyV3JhdmZXbnp2YW5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZlduenZhbmEnXT0kZWJqLT5XcmF2ZlduenZhbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlV256dmFuYSddPSRlYmotPmFiemJlV256dmFuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVduenZhbmEnXT0kZWJqLT5nbmF0dG55V256dmFuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVduZ2h1R3J6Y2InXT0kZWJqLT5nbmF0dG55V25naHVHcnpjYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY3Jhd256dmEnXT0kZWJqLT5jcmF3bnp2YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZXbnp2YW5hJ109JGViai0+YXZ5bnZXbnp2YW5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4cmdyZW5hdG5hJ109JGViai0+eHJncmVuYXRuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2d2Y3JfcWJ4aHpyYSddPSRlYmotPmd2Y3JfcWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlFieGh6cmFfd256dmFuYSddPSRlYmotPmZyZXZRYnhoenJhX3duenZhbmE7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9jaGF0aGduYSgpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTondnFDaGF0aGduYSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXTonbmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVkNIQVRIR05BJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fY2hhdGhnbmEoJHl2enZnLCRmZ25lZywkZnZxaywkZmJlcSwgJGp1cmVyKTsNCiAgICAgICAgJHBiaGFnID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9jaGF0aGduYV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxQ2hhdGhnbmEnXT0kZWJqLT52cUNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfdXJucXJlX3ZxJ109JGViai0+b3BfdmFfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyX3FieGh6cmEnXT0kZWJqLT5ndmNyX3FieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZRYnhoenJhX2NoYXRoZ25hJ109JGViai0+ZnJldlFieGh6cmFfY2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYmotPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnU25mdnl2Z25mR25ldnMnXT0kZWJqLT5TbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWJqLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnV3JhdmZDaGF0aGduYSddPSRlYmotPldyYXZmQ2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52Q2hhdGhnbmEnXT0kZWJqLT5hdnludkNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydRVk9OTE5FJ109JGViai0+UVZPTkxORTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUVZHTkFUVEhBVF9DUlpSRVZBR05VJ109JGViai0+UVZHTkFUVEhBVF9DUlpSRVZBR05VOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydRVkdOQVRUSFVYTkEnXT0kZWJqLT5RVkdOQVRUSFVYTkE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ09SRVhOWU4nXT0kZWJqLT5PUkVYTllOOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydRVk9ST05GWE5BJ109JGViai0+UVZPUk9ORlhOQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnR1ZRTlhfUVZDSEFUSEcnXT0kZWJqLT5HVlFOWF9RVkNIQVRIRzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnRkhRTlVfUVZZSEFORlYnXT0kZWJqLT5GSFFOVV9RVllIQU5GVjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnUVZXTlpWQVhOQSddPSRlYmotPlFWV05aVkFYTkE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1FWR0hBUU4nXT0kZWJqLT5RVkdIQVFOOw0KDQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl94cnpuZm5hKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfeHJ6bmZuYV92cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXTonbmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVlhSWk5GTkEnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3VybnFyZV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl94cnpuZm5hKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25feHJ6bmZuYV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ194cnpuZm5hX3ZxJ109JGViai0+b3BfYmhnX3hyem5mbmFfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVYcnpuZm5hJ109JGViai0+d2h6eW51WHJ6bmZuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYV94cnpuZiddPSRlYmotPnhicXJXcmF2Zlhyem5mbmFfeHJ6bmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhYcnpuZm5hJ109JGViai0+enJleFhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZYcnpuZm5hJ109JGViai0+ZnJldlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25feGJhZ252YXJlKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfeGJhZ252YXJlX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWQ1JHVicpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfdXJucXJlX3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3hiYWdudmFyZSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX3hiYWdudmFyZV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyR3ZjclhiYWdudmFyZSddPSRlYmotPnhicXJHdmNyWGJhZ252YXJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFySHhoZW5hWGJhZ252YXJlJ109JGViai0+eGJxckh4aGVuYVhiYWdudmFyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVYYmFnbnZhcmUnXT0kZWJqLT5hYnpiZVhiYWdudmFyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlhiYWdudmFyZSddPSRlYmotPmZyZXZYYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlhiYWdudmFyZSddPSRlYmotPnhicXJXcmF2ZlhiYWdudmFyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3hiYWdudmFyZV92cSddPSRlYmotPm9wX2JoZ194YmFnbnZhcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmWGJhZ252YXJlJ109JGViai0+V3JhdmZYYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0d2Y3JYYmFnbnZhcmUnXT0kZWJqLT5HdmNyWGJhZ252YXJlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydIeGhlbmFYYmFnbnZhcmUnXT0kZWJqLT5IeGhlbmFYYmFnbnZhcmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb25lbmF0KCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfcXJnbnZ5X3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOidORlAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWT05FTkFUJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0KCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0X3BhZygkanVyZXIpOw0KDQogICAgICAgIHZzKCAkcGJoYWcgPiAwICkgeyAkZ2JnbnlfY250cmYgPSBwcnZ5KCRwYmhhZy8keXZ6dmcpOyB9IHJ5ZnIgeyAkZ2JnbnlfY250cmYgPSAwOyB9DQogICAgICAgIHZzICgkY250ciA+ICRnYmdueV9jbnRyZikgJGNudHI9JGdiZ255X2NudHJmOw0KICAgICAgICAvL2luZV9xaHpjKCRlcnBiZXFmKTsgcXZyKCk7DQogICAgICAgICRlcmZjYmFwci0+Y250ciA9ICRjbnRyOw0KICAgICAgICAkZXJmY2JhcHItPmdiZ255ID0gJGdiZ255X2NudHJmOw0KICAgICAgICAkZXJmY2JhcHItPmVycGJlcWYgPSAgJHBiaGFnOw0KICAgICAgICAkdj0wOw0KICAgICAgICBzYmVybnB1KCRlcnBiZXFmIG5mICRlYmopIHsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyduZmhlbmFmdiddPSRlYmotPm5maGVuYWZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwdnMnXT0kZWJqLT5wdnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2c0VoY3ZudSddPSRlYmotPnB2c0VoY3ZudTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncXZmeGJhJ109JGViai0+cXZmeGJhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzYm8nXT0kZWJqLT5zYm87DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3NlcnZ0dWcnXT0kZWJqLT5zZXJ2dHVnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0blJ4ZmNiZSddPSRlYmotPnVuZXRuUnhmY2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNuZ2J4bmEnXT0kZWJqLT51bmV0bkNuZ2J4bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuRm5naG5hJ109JGViai0+dW5ldG5GbmdobmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JhbHJlbnVuYSddPSRlYmotPnVuZXRuQ3JhbHJlbnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndmZ2Q3JlWHJ6bmZuYSddPSRlYmotPnZmdkNyZVhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJOZm55T25lbmF0J109JGViai0+eGJxck5mbnlPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludU5mbnlPbnVuYU9ueGgnXT0kZWJqLT53aHp5bnVOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVYcnpuZm5hJ109JGViai0+d2h6eW51WHJ6bmZuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9udW5hT254aCddPSRlYmotPnhicXJOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT25lbmF0J109JGViai0+eGJxck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFucmVudU5mbnknXT0kZWJqLT54YnFyUW5yZW51TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieE5mbnknXT0kZWJqLT54YnFyUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclRoYW5PbmVuYXQnXT0kZWJqLT54YnFyVGhhbk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmdydGJldk9uZW5hdCddPSRlYmotPnhicXJYbmdydGJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhiYXF2ZnZPbmVuYXQnXT0kZWJqLT54YnFyWGJhcXZmdk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckFydG5lbk5mbnknXT0kZWJqLT54YnFyQXJ0bmVuTmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckNyZXV2Z2hhdG5hJ109JGViai0+eGJxckNyZXV2Z2hhdG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyRm5naG5hT25lbmF0J109JGViai0+eGJxckZuZ2huYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnenJleCddPSRlYmotPnpyZXg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FxY296J109JGViai0+YXFjb3o7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25lbmF0J109JGViai0+YXZ5bnZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52UW5hbkZuanZnJ109JGViai0+YXZ5bnZRbmFuRm5qdmc7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52V25mbiddPSRlYmotPmF2eW52V25mbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZHbnpvbnUnXT0kZWJqLT5hdnludkduem9udTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9uZW5hdCddPSRlYmotPmZyZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlYmotPmZjcmZ2c3Z4bmZ2WW52YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3ZjciddPSRlYmotPmd2Y3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2huYXRaaHhuJ109JGViai0+aG5hdFpoeG47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2h4aGVuYSddPSRlYmotPmh4aGVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hJ109JGViai0+aGVudm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydpYnloenInXT0kZWJqLT5pYnloenI7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZRYnhoenJhJ109JGViai0+ZnJldlFieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZSYWd2Z25mJ109JGViai0+ZnJldlJhZ3ZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3BuZ25nbmEnXT0kZWJqLT5wbmduZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydBcnRuZW5OZm55X3FneSddPSRlYmotPkFydG5lbk5mbnlfcWd5Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoX3FneSddPSRlYmotPk5mbnlPbnVuYU9ueGhfcWd5Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydYbmdydGJldk9uZW5hdCddPSRlYmotPlhuZ3J0YmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydDcmV1dmdoYXRuYV9xZ3knXT0kZWJqLT5DcmV1dmdoYXRuYV9xZ3k7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ05mbnlPbmVuYXQnXT0kZWJqLT5OZm55T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoJ109JGViai0+TmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5SeGZjYmUnXT0kZWJqLT51bmV0blJ4ZmNiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRHbmV2cygpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonb25lbmF0R25ldnNfdnEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J25mcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkkdXFlX3ZxayA9IHZmZnJnKCRfQ0JGR1sndXFlX3ZxayddKT8kX0NCRkdbJ3VxZV92cWsnXTonJzsNCgkJdnMoJGUxMGsgPT0gJ1BORVZHTkVWUycpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfcXJnbnZ5X3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29uZW5hdEduZXZzKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0R25ldnNfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbmVuYXRHbmV2c192cSddPSRlYmotPm9uZW5hdEduZXZzX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfdXJucXJlX3ZxJ109JGViai0+b3BfdmFfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV9xcmdudnlfdnEnXT0kZWJqLT5vcF92YV9xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyX3FieGh6cmEnXT0kZWJqLT5ndmNyX3FieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmR25ldnMnXT0kZWJqLT5XcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVGbmdobmEnXT0kZWJqLT53aHp5bnVGbmdobmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1NuZnZ5dmduZkduZXZzJ109JGViai0+U25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYmotPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckZuZ2huYU9uZW5hdCddPSRlYmotPnhicXJGbmdobmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGViai0+eGJxcldyYXZmQ2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25sbmUnXT0kZWJqLT5hdnludk9ubG5lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludlNuZnZ5dmduZiddPSRlYmotPmF2eW52U25mdnl2Z25mOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludkZocW51UXZ5aGFuZnYnXT0kZWJqLT5hdnludkZocW51UXZ5aGFuZnY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXQnXT0kZWJqLT5mcmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2cyddPSRlYmotPmduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2c1NuZnZ5dmduZiddPSRlYmotPmduZXZzU25mdnl2Z25mOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkNoYXRoZ25hJ109JGViai0+V3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRHbmV2c19vcDMwKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvbmVuYXRHbmV2c192cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXTonbmZwJzsgLy8gdHJnIGd1ciBxdmVycGd2YmENCgkJDQoJCXZzKCEkZnZxaykgJGZ2cWsgPTE7DQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVkdORVZTJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ19xcmdudnlfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0R25ldnNfb3AzMCgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29uZW5hdEduZXZzX29wMzBfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbmVuYXRHbmV2c192cSddPSRlYmotPm9uZW5hdEduZXZzX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2d2Y3JfcWJ4aHpyYSddPSRlYmotPmd2Y3JfcWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51X29wYmhnJ109JGViai0+cHZzRWhjdm51X29wYmhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkduZXZzJ109JGViai0+V3JhdmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWJqLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1NuZnZ5dmduZkduZXZzJ109JGViai0+U25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZDaGF0aGduYSddPSRlYmotPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkNoYXRoZ25hJ109JGViai0+V3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnMnXT0kZWJqLT5nbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3onXT0kZWJqLT5vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3onXT0kZWJqLT5DaGF0aGduYV9vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3pfcHZzJ109JGViai0+Q2hhdGhnbmFfb3pfcHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludl9jaGF0aGduYSddPSRlYmotPmF2eW52X2NoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludk9ubG5lJ109JGViai0+YXZ5bnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3JuWm5maHhfb3BiaGcnXT0kZWJqLT5vcm5abmZoeF9vcGJoZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZGaHFudVF2eWhhbmZ2J109JGViai0+YXZ5bnZGaHFudVF2eWhhbmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0J109JGViai0+ZnJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnNTbmZ2eXZnbmYnXT0kZWJqLT5nbmV2c1NuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRHbmV2c19vcF9iaGcoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29uZW5hdEduZXZzX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCSRxZ3lfdnFrID0gdmZmcmcoJF9DQkZHWydxZ3lfdnFrJ10pPyRfQ0JGR1sncWd5X3ZxayddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVkdORVZTQkhHJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3FyZ252eV92cT0kcWd5X3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbmVuYXRHbmV2c19vcF9iaGcoJHl2enZnLCRmZ25lZywkZnZxaywkZmJlcSwgJGp1cmVyKTsNCiAgICAgICAgJHBiaGFnID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbmVuYXRHbmV2c19vcF9iaGdfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbmVuYXRHbmV2c192cSddPSRlYmotPm9uZW5hdEduZXZzX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2d2Y3JfcWJ4aHpyYSddPSRlYmotPmd2Y3JfcWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51X29wYmhnJ109JGViai0+cHZzRWhjdm51X29wYmhnOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkduZXZzJ109JGViai0+V3JhdmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWJqLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1NuZnZ5dmduZkduZXZzJ109JGViai0+U25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZDaGF0aGduYSddPSRlYmotPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydXcmF2ZkNoYXRoZ25hJ109JGViai0+V3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnMnXT0kZWJqLT5nbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3onXT0kZWJqLT5vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3onXT0kZWJqLT5DaGF0aGduYV9vejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnQ2hhdGhnbmFfb3pfcHZzJ109JGViai0+Q2hhdGhnbmFfb3pfcHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludl9jaGF0aGduYSddPSRlYmotPmF2eW52X2NoYXRoZ25hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludk9ubG5lJ109JGViai0+YXZ5bnZPbmxuZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3JuWm5maHhfb3BiaGcnXT0kZWJqLT5vcm5abmZoeF9vcGJoZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZGaHFudVF2eWhhbmZ2J109JGViai0+YXZ5bnZGaHFudVF2eWhhbmZ2Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0J109JGViai0+ZnJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnNTbmZ2eXZnbmYnXT0kZWJqLT5nbmV2c1NuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX3FuZ3InXT0kZWJqLT5wZXJuZ3JfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGVybmdyX29sJ109JGViai0+cGVybmdyX29sOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfcW5nciddPSRlYmotPnpicXZzbF9xbmdyOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6YnF2c2xfb2wnXT0kZWJqLT56YnF2c2xfb2w7DQoJCSR2Kys7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCQ0KCX0NCgkNCglzaGFwZ3ZiYSBnb3lfcW5nbl9vbmVuYXRGdm5jKCl7DQoJCQ0KCQkkZXJmY2JhcHI9IGFyaiBGZ3FQeW5mZjsNCiAgICAgICAgJGZybmVwdSA9IHZmZnJnKCRfQ0JGR1snX2ZybmVwdSddKT8kX0NCRkdbJ19mcm5lcHUnXTpzbnlmcjsNCiAgICAgICAgJGZybmVwdVN2cnlxID0gdmZmcmcoJF9DQkZHWydmcm5lcHVTdnJ5cSddKT8kX0NCRkdbJ2ZybmVwdVN2cnlxJ106Jyc7DQogICAgICAgICRmcm5lcHVGZ2V2YXQgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdUZnZXZhdCddKT8kX0NCRkdbJ2ZybmVwdUZnZXZhdCddOicnOw0KICAgICAgICAkc3Z5Z3JlZiA9ICB2ZmZyZygkX0NCRkdbJ3N2eWdyZWYnXSk/JF9DQkZHWydzdnlncmVmJ106Jyc7DQoNCiAgICAgICAgJGNudHIgPSB2ZmZyZygkX0NCRkdbJ2NudHInXSk/JF9DQkZHWydjbnRyJ106MTsgLy8gdHJnIGd1ciBlcmRocmZncnEgY250cg0KICAgICAgICAkeXZ6dmcgPSB2ZmZyZygkX0NCRkdbJ2ViamYnXSk/JF9DQkZHWydlYmpmJ106MTA7IC8vIHRyZyB1Ymogem5hbCBlYmpmIGpyIGpuYWcgZ2IgdW5pciB2YWdiIGd1ciB0ZXZxDQogICAgICAgICRmdnFrID0gdmZmcmcoJF9DQkZHWydmdnFrJ10pPyRfQ0JGR1snZnZxayddOidvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnOyAvLyB0cmcgdmFxcmsgZWJqIC0gdi5yLiBoZnJlIHB5dnB4IGdiIGZiZWcNCiAgICAgICAgJGZiZXEgPSB2ZmZyZygkX0NCRkdbJ2ZiZXEnXSk/JF9DQkZHWydmYmVxJ106J25mcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkkdXFlX3ZxayA9IHZmZnJnKCRfQ0JGR1sndXFlX3ZxayddKT8kX0NCRkdbJ3VxZV92cWsnXTonJzsNCgkJdnMoJGUxMGsgPT0gJ1BORVZGVk5DJyl7DQoJCQkkanVyZXIgPSAiIG9wX2JoZ191cm5xcmVfdnE9JHVxZV92cWsgIjsNCgkJCQ0KCQl9CQ0KCQkNCgkJdnMgKCRmcm5lcHUpew0KCQkgICAgDQoJCQl2cyAoIXJ6Y2dsKCRzdnlncmVmKSl7DQoJCQkJJG5lZW5sID0gd2ZiYV9xcnBicXIoJHN2eWdyZWYpOw0KCQkJCXNiZXJucHUoJG5lZW5sLT5laHlyZiBuZiAkbmVlPT4keCl7DQoJCQkJCSRmcm5lcHVGZ2V2YXQgPSAkeC0+cW5nbjsNCgkJCQkJJGp1cmVyIC49ICIgbmFxICIgLiAkeC0+c3ZyeXEgLiAiIHl2eHIgICclIi4kZnJuZXB1RmdldmF0LiIlJyI7IA0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X3FuZ25fb25lbmF0RnZuYygkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29uZW5hdEZ2bmNfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnXT0kZWJqLT5vcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZPbmVuYXQnXT0kZWJqLT54YnFyV3JhdmZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZlRocW5hdCddPSRlYmotPnhicXJXcmF2ZlRocW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYW56bkN2cCddPSRlYmotPmFuem5DdnA7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ255bnpuZyddPSRlYmotPm55bnpuZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVHcnljQ3ZwJ109JGViai0+YWJ6YmVHcnljQ3ZwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlYmotPndoenludVBiYWdudmFyZTIwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlYmotPndoenludVBiYWdudmFyZTQwOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlYmotPnlieG5mdkZ2bmNDcmV2eGZuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyUG5lbkZnaHNzdmF0J109JGViai0+eGJxclBuZW5GZ2hzc3ZhdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ25lZ0JzJ109JGViai0+eGJxcldyYXZmQ25lZ0JzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55Q3hvJ109JGViai0+Z25hdHRueUN4bzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlYmotPmpueGdoRnZuY0NyZXZ4Zm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmT25lbmF0J109JGViai0+V3JhdmZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmVGhxbmF0J109JGViai0+V3JhdmZUaHFuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1dyYXZmQ25lZ0JzJ109JGViai0+V3JhdmZDbmVnQnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1BuZW5GZ2hzc3ZhdCddPSRlYmotPlBuZW5GZ2hzc3ZhdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneHJncmVuYXRuYSddPSRlYmotPnhyZ3JlbmF0bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb251bmFvbnhoX25mbnkoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX3ZhX3FyZ252eV92cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXToncXJmcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkJCQ0KCQkkdnFfdXJucXJlPXZmZnJnKCRfQ0JGR1sndnFfdXJucXJlJ10pPyRfQ0JGR1sndnFfdXJucXJlJ106MDsNCgkJDQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQkkeGJxclFieE5mbnkgPSB2ZmZyZygkX0NCRkdbJ3hicXJRYnhOZm55J10pPyRfQ0JGR1sneGJxclFieE5mbnknXTonJzsNCgkJJHhicXJvbmVuYXQgPSB2ZmZyZygkX0NCRkdbJ3hicXJvbmVuYXQnXSk/JF9DQkZHWyd4YnFyb25lbmF0J106Jyc7DQoJCSRvcF92YV9xcmdudnlfdnEgPSB2ZmZyZygkX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddKT8kX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVk9ORU5BVF9ORk5ZJyl7DQoJCQkvLyRqdXJlciA9ICJ4YnFyT25lbmF0ID0nJHhicXJvbmVuYXQnIjsNCgkJCQ0KCQl9DQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55X3BhZygkanVyZXIpOw0KDQogICAgICAgIHZzKCAkcGJoYWcgPiAwICkgeyAkZ2JnbnlfY250cmYgPSBwcnZ5KCRwYmhhZy8keXZ6dmcpOyB9IHJ5ZnIgeyAkZ2JnbnlfY250cmYgPSAwOyB9DQogICAgICAgIHZzICgkY250ciA+ICRnYmdueV9jbnRyZikgJGNudHI9JGdiZ255X2NudHJmOw0KICAgICAgICAvL2luZV9xaHpjKCRlcnBiZXFmKTsgcXZyKCk7DQogICAgICAgICRlcmZjYmFwci0+Y250ciA9ICRjbnRyOw0KICAgICAgICAkZXJmY2JhcHItPmdiZ255ID0gJGdiZ255X2NudHJmOw0KICAgICAgICAkZXJmY2JhcHItPmVycGJlcWYgPSAgJHBiaGFnOw0KICAgICAgICAkdj0wOw0KICAgICAgICBzYmVybnB1KCRlcnBiZXFmIG5mICRlYmopIHsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfcXJnbnZ5X3ZxJ109JGViai0+b3BfdmFfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV91cm5xcmVfdnEnXT0kZWJqLT5vcF92YV91cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFPbmVuYXQnXT0kZWJqLT52cU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnbmZoZW5hZnYnXT0kZWJqLT5uZmhlbmFmdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncG5nbmduYSddPSRlYmotPnBuZ25nbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2cyddPSRlYmotPnB2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51J109JGViai0+cHZzRWhjdm51Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzZXJ2dHVnJ109JGViai0+c2VydnR1ZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnc2JvJ109JGViai0+c2JvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0blJ4ZmNiZSddPSRlYmotPnVuZXRuUnhmY2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkZuZ2huYSddPSRlYmotPnVuZXRuRm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0kZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndmZ2Q3JlWHJ6bmZuYSddPSRlYmotPnZmdkNyZVhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludVhyem5mbmEnXT0kZWJqLT53aHp5bnVYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9uZW5hdCddPSRlYmotPnhicXJOZm55T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T25lbmF0J109JGViai0+TmZueU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckFydG5lbk5mbnknXT0kZWJqLT54YnFyQXJ0bmVuTmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9udW5hT254aCddPSRlYmotPnhicXJOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoJ109JGViai0+TmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhOZm55J109JGViai0+eGJxclFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0hFTlZOQV9RQlhIWlJBX0NOT1JOQSddPSRlYmotPkhFTlZOQV9RQlhIWlJBX0NOT1JOQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhPbmVuYXQnXT0kZWJqLT56cmV4T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhcWNveiddPSRlYmotPmFxY296Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZU53aFFieE5mbnknXT0kZWJqLT5hYnpiZU53aFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlYmotPmFiemJlUW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aCddPSRlYmotPmZyZXZPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXQnXT0kZWJqLT5mcmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0UWJ4TmZueSddPSRlYmotPmZyZXZPbmVuYXRRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2Vnd2YSddPSRlYmotPmZyZXZWd3ZhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmY3JmdnN2eG5mdlludmFPbmVuYXQnXT0kZWJqLT5mY3JmdnN2eG5mdlludmFPbmVuYXQ7DQoJCS8vJGVyZmNiYXByLT5lYmpmWyR2XVsnZmduZ2hmJ109JGViai0+ZmduZ2hmOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UW5zZ25lUWJ4TmZueSddPSRlYmotPmduYXR0bnlRbnNnbmVRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55TndoUWJ4TmZueSddPSRlYmotPmduYXR0bnlOd2hRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyT25lbmF0J109JGViai0+Z3Zjck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaHhoZW5hT25lbmF0J109JGViai0+aHhoZW5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydoZW52bmFPbmVuYXQnXT0kZWJqLT5oZW52bmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmdydGJldk9uZW5hdCddPSRlYmotPnhicXJYbmdydGJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnWG5ncnRiZXZPbmVuYXQnXT0kZWJqLT5YbmdydGJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXJnZ2InXT0kZWJqLT5hcmdnYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFXbnp2YW5hJ109JGViai0+dnFXbnp2YW5hOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb251bmFvbnhoX25mbnlfdmEoKXsNCgkJDQoJCSRlcmZjYmFwcj0gYXJqIEZncVB5bmZmOw0KICAgICAgICAkZnJuZXB1ID0gdmZmcmcoJF9DQkZHWydfZnJuZXB1J10pPyRfQ0JGR1snX2ZybmVwdSddOnNueWZyOw0KICAgICAgICAkZnJuZXB1U3ZyeXEgPSB2ZmZyZygkX0NCRkdbJ2ZybmVwdVN2cnlxJ10pPyRfQ0JGR1snZnJuZXB1U3ZyeXEnXTonJzsNCiAgICAgICAgJGZybmVwdUZnZXZhdCA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1RmdldmF0J10pPyRfQ0JGR1snZnJuZXB1RmdldmF0J106Jyc7DQogICAgICAgICRzdnlncmVmID0gIHZmZnJnKCRfQ0JGR1snc3Z5Z3JlZiddKT8kX0NCRkdbJ3N2eWdyZWYnXTonJzsNCg0KICAgICAgICAkY250ciA9IHZmZnJnKCRfQ0JGR1snY250ciddKT8kX0NCRkdbJ2NudHInXToxOyAvLyB0cmcgZ3VyIGVyZGhyZmdycSBjbnRyDQogICAgICAgICR5dnp2ZyA9IHZmZnJnKCRfQ0JGR1snZWJqZiddKT8kX0NCRkdbJ2ViamYnXToxMDsgLy8gdHJnIHViaiB6bmFsIGViamYganIgam5hZyBnYiB1bmlyIHZhZ2IgZ3VyIHRldnENCiAgICAgICAgJGZ2cWsgPSB2ZmZyZygkX0NCRkdbJ2Z2cWsnXSk/JF9DQkZHWydmdnFrJ106J29wX3ZhX3FyZ252eV92cSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXToncXJmcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkJCQ0KCQkkdnFfdXJucXJlPXZmZnJnKCRfQ0JGR1sndnFfdXJucXJlJ10pPyRfQ0JGR1sndnFfdXJucXJlJ106MDsNCgkJDQoJCQ0KCQkkanVyZXIgPSAiIDE9MSAgIjsNCgkJJGUxMGsgPSB2ZmZyZygkX0NCRkdbJ2UxMGsnXSk/JF9DQkZHWydlMTBrJ106Jyc7DQoJCSR1cWVfdnFrID0gdmZmcmcoJF9DQkZHWyd1cWVfdnFrJ10pPyRfQ0JGR1sndXFlX3ZxayddOicnOw0KCQkkeGJxclFieE5mbnkgPSB2ZmZyZygkX0NCRkdbJ3hicXJRYnhOZm55J10pPyRfQ0JGR1sneGJxclFieE5mbnknXTonJzsNCgkJJHhicXJvbmVuYXQgPSB2ZmZyZygkX0NCRkdbJ3hicXJvbmVuYXQnXSk/JF9DQkZHWyd4YnFyb25lbmF0J106Jyc7DQoJCSRvcF92YV9xcmdudnlfdnEgPSB2ZmZyZygkX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddKT8kX0NCRkdbJ29wX3ZhX3FyZ252eV92cSddOicnOw0KCQl2cygkZTEwayA9PSAnUE5FVk9ORU5BVF9WQScpew0KCQkJIyRqdXJlciA9ICJ4YnFyT25lbmF0ID0nJHhicXJvbmVuYXQnIjsNCgkJCQ0KCQl9DQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55X3BhZygkanVyZXIpOw0KDQogICAgICAgIHZzKCAkcGJoYWcgPiAwICkgeyAkZ2JnbnlfY250cmYgPSBwcnZ5KCRwYmhhZy8keXZ6dmcpOyB9IHJ5ZnIgeyAkZ2JnbnlfY250cmYgPSAwOyB9DQogICAgICAgIHZzICgkY250ciA+ICRnYmdueV9jbnRyZikgJGNudHI9JGdiZ255X2NudHJmOw0KICAgICAgICAvL2luZV9xaHpjKCRlcnBiZXFmKTsgcXZyKCk7DQogICAgICAgICRlcmZjYmFwci0+Y250ciA9ICRjbnRyOw0KICAgICAgICAkZXJmY2JhcHItPmdiZ255ID0gJGdiZ255X2NudHJmOw0KICAgICAgICAkZXJmY2JhcHItPmVycGJlcWYgPSAgJHBiaGFnOw0KICAgICAgICAkdj0wOw0KICAgICAgICBzYmVybnB1KCRlcnBiZXFmIG5mICRlYmopIHsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfcXJnbnZ5X3ZxJ109JGViai0+b3BfdmFfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV91cm5xcmVfdnEnXT0kZWJqLT5vcF92YV91cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFPbmVuYXQnXT0kZWJqLT52cU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnbmZoZW5hZnYnXT0kZWJqLT5uZmhlbmFmdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncG5nbmduYSddPSRlYmotPnBuZ25nbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2cyddPSRlYmotPnB2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51J109JGViai0+cHZzRWhjdm51Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydzZXJ2dHVnJ109JGViai0+c2VydnR1ZzsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnc2JvJ109JGViai0+c2JvOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0blJ4ZmNiZSddPSRlYmotPnVuZXRuUnhmY2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkZuZ2huYSddPSRlYmotPnVuZXRuRm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0kZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndmZ2Q3JlWHJ6bmZuYSddPSRlYmotPnZmdkNyZVhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludVhyem5mbmEnXT0kZWJqLT53aHp5bnVYcnpuZm5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9uZW5hdCddPSRlYmotPnhicXJOZm55T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T25lbmF0J109JGViai0+TmZueU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckFydG5lbk5mbnknXT0kZWJqLT54YnFyQXJ0bmVuTmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmWHJ6bmZuYSddPSRlYmotPnhicXJXcmF2Zlhyem5mbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWJqLT54YnFyRm5naG5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyTmZueU9udW5hT254aCddPSRlYmotPnhicXJOZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydOZm55T251bmFPbnhoJ109JGViai0+TmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhOZm55J109JGViai0+eGJxclFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0hFTlZOQV9RQlhIWlJBX0NOT1JOQSddPSRlYmotPkhFTlZOQV9RQlhIWlJBX0NOT1JOQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhPbmVuYXQnXT0kZWJqLT56cmV4T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhcWNveiddPSRlYmotPmFxY296Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZU53aFFieE5mbnknXT0kZWJqLT5hYnpiZU53aFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlYmotPmFiemJlUW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aCddPSRlYmotPmZyZXZPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXQnXT0kZWJqLT5mcmV2T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0UWJ4TmZueSddPSRlYmotPmZyZXZPbmVuYXRRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2Vnd2YSddPSRlYmotPmZyZXZWd3ZhOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmY3JmdnN2eG5mdlludmFPbmVuYXQnXT0kZWJqLT5mY3JmdnN2eG5mdlludmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZnbmdoZiddPSRlYmotPmZnbmdoZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVFuc2duZVFieE5mbnknXT0kZWJqLT5nbmF0dG55UW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueU53aFFieE5mbnknXT0kZWJqLT5nbmF0dG55TndoUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3Zjck9uZW5hdCddPSRlYmotPmd2Y3JPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2h4aGVuYU9uZW5hdCddPSRlYmotPmh4aGVuYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hT25lbmF0J109JGViai0+aGVudm5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5ncnRiZXZPbmVuYXQnXT0kZWJqLT54YnFyWG5ncnRiZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ1huZ3J0YmV2T25lbmF0J109JGViai0+WG5ncnRiZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxV256dmFuYSddPSRlYmotPnZxV256dmFuYTsNCgkJJHYrKzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlcmZjYmFwcik7DQoJDQoJfQ0KCQ0KCXNoYXBndmJhIGdveV9xbmduX29udW5hb254aF9uZm55b3AyNSgpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonb251bmFPbnhoX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWT05VTkFORk5BT1AyNScpew0KCQkJJGp1cmVyID0gIiBvcF9iaGdfcXJnbnZ5X3ZxPSR1cWVfdnFrICI7DQoJCQkNCgkJfQkNCgkJDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQkkZmduZWcgPSAkeXZ6dmcqJGNudHIgLSAkeXZ6dmc7DQogICAgICAgIHZzICgkZmduZWc8MCkgJGZnbmVnPTA7DQoNCiAgICAgICAgJGVycGJlcWYgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55b3AyNSgkeXZ6dmcsJGZnbmVnLCRmdnFrLCRmYmVxLCAkanVyZXIpOw0KICAgICAgICAkcGJoYWcgPSAkZ3V2Zi0+enF5X3BoZmdiel9ya2NiZWctPnpxeV9xbmduX29udW5hb254aF9uZm55b3AyNV9wYWcoJGp1cmVyKTsNCg0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCiAgICAgICAgc2Jlcm5wdSgkZXJwYmVxZiBuZiAkZWJqKSB7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29udW5hT254aF92cSddPSRlYmotPm9udW5hT254aF92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ191cm5xcmVfdnEnXT0kZWJqLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV9xcmdudnlfdnEnXT0kZWJqLT5vcF92YV9xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX3ZhX3VybnFyZV92cSddPSRlYmotPm9wX3ZhX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndnFPbmVuYXQnXT0kZWJqLT52cU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzJ109JGViai0+cHZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydwdnNFaGN2bnUnXT0kZWJqLT5wdnNFaGN2bnU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JhbHJlbnVuYSddPSRlYmotPnVuZXRuQ3JhbHJlbnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5DcmVieXJ1bmEnXT0kZWJqLT51bmV0bkNyZWJ5cnVuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnd2h6eW51Rm5naG5hJ109JGViai0+d2h6eW51Rm5naG5hOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyRm5naG5hT25lbmF0J109JGViai0+eGJxckZuZ2huYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZWJqLT54YnFyTmZueU9udW5hT254aDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhOZm55J109JGViai0+eGJxclFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ0hFTlZOQV9RQlhIWlJBJ109JGViai0+SEVOVk5BX1FCWEhaUkE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJYbmFnYmUnXT0kZWJqLT54YnFyWG5hZ2JlOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd6cmV4T25lbmF0J109JGViai0+enJleE9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXFjb3onXT0kZWJqLT5hcWNvejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVOd2hRYnhOZm55J109JGViai0+YWJ6YmVOd2hRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZVFuc2duZVFieE5mbnknXT0kZWJqLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2NiZkduZXZzJ109JGViai0+Y2JmR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbnVuYU9ueGgnXT0kZWJqLT5mcmV2T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydmcmV2T25lbmF0J109JGViai0+ZnJldk9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9uZW5hdFFieE5mbnknXT0kZWJqLT5mcmV2T25lbmF0UWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldlZ3dmEnXT0kZWJqLT5mcmV2Vnd2YTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZmNyZnZzdnhuZnZZbnZhT25lbmF0J109JGViai0+ZmNyZnZzdnhuZnZZbnZhT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55UW5zZ25lUWJ4TmZueSddPSRlYmotPmduYXR0bnlRbnNnbmVRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55TndoUWJ4TmZueSddPSRlYmotPmduYXR0bnlOd2hRYnhOZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydndmNyT25lbmF0J109JGViai0+Z3Zjck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaHhoZW5hT25lbmF0J109JGViai0+aHhoZW5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydoZW52bmFPbmVuYXQnXT0kZWJqLT5oZW52bmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkduZXZzJ109JGViai0+eGJxcldyYXZmR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYUduZXZzJ109JGViai0+d2h6eW51Rm5naG5hR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYmotPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWJqLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXJnZ2InXT0kZWJqLT5hcmdnYjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXZ5bnZPbmxuZSddPSRlYmotPmF2eW52T25sbmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52U25mdnl2Z25mJ109JGViai0+YXZ5bnZTbmZ2eXZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52RmhxbnVRdnloYW5mdiddPSRlYmotPmF2eW52RmhxbnVRdnloYW5mdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aEduZXZzJ109JGViai0+ZnJldk9udW5hT254aEduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2cyddPSRlYmotPmduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmV2c1NuZnZ5dmduZiddPSRlYmotPmduZXZzU25mdnl2Z25mOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X3FuZ25fb251bmFvbnhoX25mbnlvcDI2MSgpew0KCQkNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonb251bmFPbnhoX3ZxJzsgLy8gdHJnIHZhcXJrIGViaiAtIHYuci4gaGZyZSBweXZweCBnYiBmYmVnDQogICAgICAgICRmYmVxID0gdmZmcmcoJF9DQkZHWydmYmVxJ10pPyRfQ0JGR1snZmJlcSddOiduZnAnOyAvLyB0cmcgZ3VyIHF2ZXJwZ3ZiYQ0KCQkNCgkJdnMoISRmdnFrKSAkZnZxayA9MTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICAiOw0KCQkkZTEwayA9IHZmZnJnKCRfQ0JGR1snZTEwayddKT8kX0NCRkdbJ2UxMGsnXTonJzsNCgkJJHVxZV92cWsgPSB2ZmZyZygkX0NCRkdbJ3VxZV92cWsnXSk/JF9DQkZHWyd1cWVfdnFrJ106Jyc7DQoJCXZzKCRlMTBrID09ICdQTkVWT05VTkFORk5BT1AyNjEnKXsNCgkJCSRqdXJlciA9ICIgb3BfYmhnX3FyZ252eV92cT0kdXFlX3ZxayAiOw0KCQkJDQoJCX0JDQoJCQ0KCQl2cyAoJGZybmVwdSl7DQoJCSAgICANCgkJCXZzICghcnpjZ2woJHN2eWdyZWYpKXsNCgkJCQkkbmVlbmwgPSB3ZmJhX3FycGJxcigkc3Z5Z3JlZik7DQoJCQkJc2Jlcm5wdSgkbmVlbmwtPmVoeXJmIG5mICRuZWU9PiR4KXsNCgkJCQkJJGZybmVwdUZnZXZhdCA9ICR4LT5xbmduOw0KCQkJCQkkanVyZXIgLj0gIiBuYXEgIiAuICR4LT5zdnJ5cSAuICIgeXZ4ciAgJyUiLiRmcm5lcHVGZ2V2YXQuIiUnIjsgDQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJJGZnbmVnID0gJHl2enZnKiRjbnRyIC0gJHl2enZnOw0KICAgICAgICB2cyAoJGZnbmVnPDApICRmZ25lZz0wOw0KDQogICAgICAgICRlcnBiZXFmID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueW9wMjUoJHl2enZnLCRmZ25lZywkZnZxaywkZmJlcSwgJGp1cmVyKTsNCiAgICAgICAgJHBiaGFnID0gJGd1dmYtPnpxeV9waGZnYnpfcmtjYmVnLT56cXlfcW5nbl9vbnVuYW9ueGhfbmZueW9wMjVfcGFnKCRqdXJlcik7DQoNCiAgICAgICAgdnMoICRwYmhhZyA+IDAgKSB7ICRnYmdueV9jbnRyZiA9IHBydnkoJHBiaGFnLyR5dnp2Zyk7IH0gcnlmciB7ICRnYmdueV9jbnRyZiA9IDA7IH0NCiAgICAgICAgdnMgKCRjbnRyID4gJGdiZ255X2NudHJmKSAkY250cj0kZ2JnbnlfY250cmY7DQogICAgICAgIC8vaW5lX3FoemMoJGVycGJlcWYpOyBxdnIoKTsNCiAgICAgICAgJGVyZmNiYXByLT5jbnRyID0gJGNudHI7DQogICAgICAgICRlcmZjYmFwci0+Z2JnbnkgPSAkZ2JnbnlfY250cmY7DQogICAgICAgICRlcmZjYmFwci0+ZXJwYmVxZiA9ICAkcGJoYWc7DQogICAgICAgICR2PTA7DQogICAgICAgIHNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvbnVuYU9ueGhfdnEnXT0kZWJqLT5vbnVuYU9ueGhfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xcmdudnlfdnEnXT0kZWJqLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfdmFfcXJnbnZ5X3ZxJ109JGViai0+b3BfdmFfcXJnbnZ5X3ZxOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV9xcmdudnlfdnFfbmZueSddPSRlYmotPm9wX3ZhX3FyZ252eV92cV9uZm55Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF92YV91cm5xcmVfdnEnXT0kZWJqLT5vcF92YV91cm5xcmVfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX3ZhX3VybnFyZV92cV9uZm55J109JGViai0+b3BfdmFfdXJucXJlX3ZxX25mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3ZxT25lbmF0J109JGViai0+dnFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3B2cyddPSRlYmotPnB2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncHZzRWhjdm51J109JGViai0+cHZzRWhjdm51Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0kZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuRm5naG5hJ109JGViai0+dW5ldG5GbmdobmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3VuZXRuQ3JlYnlydW5hJ109JGViai0+dW5ldG5DcmVieXJ1bmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckZuZ2huYU9uZW5hdCddPSRlYmotPnhicXJGbmdobmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJOZm55T251bmFPbnhoJ109JGViai0+eGJxck5mbnlPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ05mbnlPbnVuYU9ueGgnXT0kZWJqLT5OZm55T251bmFPbnhoOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyT25lbmF0J109JGViai0+eGJxck9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclFieE5mbnknXT0kZWJqLT54YnFyUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnSEVOVk5BX1FCWEhaUkEnXT0kZWJqLT5IRU5WTkFfUUJYSFpSQTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3pyZXhPbmVuYXQnXT0kZWJqLT56cmV4T25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhcWNveiddPSRlYmotPmFxY296Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZU53aFFieE5mbnknXT0kZWJqLT5hYnpiZU53aFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlYmotPmFiemJlUW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY2JmR25ldnMnXT0kZWJqLT5jYmZHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9udW5hT254aCddPSRlYmotPmZyZXZPbnVuYU9ueGg7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbnVuYU9ueGhHbmV2cyddPSRlYmotPmZyZXZPbnVuYU9ueGhHbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZnJldk9uZW5hdCddPSRlYmotPmZyZXZPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZPbmVuYXRRYnhOZm55J109JGViai0+ZnJldk9uZW5hdFFieE5mbnk7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZyZXZWd3ZhJ109JGViai0+ZnJldlZ3dmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2ZjcmZ2c3Z4bmZ2WW52YU9uZW5hdCddPSRlYmotPmZjcmZ2c3Z4bmZ2WW52YU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueVFuc2duZVFieE5mbnknXT0kZWJqLT5nbmF0dG55UW5zZ25lUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25hdHRueU53aFFieE5mbnknXT0kZWJqLT5nbmF0dG55TndoUWJ4TmZueTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ3Zjck9uZW5hdCddPSRlYmotPmd2Y3JPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2h4aGVuYU9uZW5hdCddPSRlYmotPmh4aGVuYU9uZW5hdDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnaGVudm5hT25lbmF0J109JGViai0+aGVudm5hT25lbmF0Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyV3JhdmZHbmV2cyddPSRlYmotPnhicXJXcmF2ZkduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd3aHp5bnVGbmdobmFHbmV2cyddPSRlYmotPndoenludUZuZ2huYUduZXZzOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWJqLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGViai0+eGJxcldyYXZmQ2hhdGhnbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FyZ2diJ109JGViai0+YXJnZ2I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52T25sbmUnXT0kZWJqLT5hdnludk9ubG5lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhdnludlduZm4nXT0kZWJqLT5hdnludlduZm47DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52U25mdnl2Z25mJ109JGViai0+YXZ5bnZTbmZ2eXZnbmY7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2F2eW52RmhxbnVRdnloYW5mdiddPSRlYmotPmF2eW52RmhxbnVRdnloYW5mdjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnMnXT0kZWJqLT5nbmV2czsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ25ldnNTbmZ2eXZnbmYnXT0kZWJqLT5nbmV2c1NuZnZ5dmduZjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncG5nbmduYSddPSRlYmotPnBuZ25nbmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9xbmdyJ109JGViai0+cGVybmdyX3FuZ3I7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3Blcm5ncl9vbCddPSRlYmotPnBlcm5ncl9vbDsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX3FuZ3InXT0kZWJqLT56YnF2c2xfcW5ncjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnemJxdnNsX29sJ109JGViai0+emJxdnNsX29sOw0KCQkkdisrOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgkNCgl9DQoJDQoJc2hhcGd2YmEgZ295X2VyY2JlZ19xYnBfYmhnKCl7DQoJCWZyZmZ2YmFfZmduZWcoKTsNCgkJJGVyZmNiYXByPSBhcmogRmdxUHluZmY7DQogICAgICAgICRmcm5lcHUgPSB2ZmZyZygkX0NCRkdbJ19mcm5lcHUnXSk/JF9DQkZHWydfZnJuZXB1J106c255ZnI7DQogICAgICAgICRmcm5lcHVTdnJ5cSA9IHZmZnJnKCRfQ0JGR1snZnJuZXB1U3ZyeXEnXSk/JF9DQkZHWydmcm5lcHVTdnJ5cSddOicnOw0KICAgICAgICAkZnJuZXB1RmdldmF0ID0gdmZmcmcoJF9DQkZHWydmcm5lcHVGZ2V2YXQnXSk/JF9DQkZHWydmcm5lcHVGZ2V2YXQnXTonJzsNCiAgICAgICAgJHN2eWdyZWYgPSAgdmZmcmcoJF9DQkZHWydzdnlncmVmJ10pPyRfQ0JGR1snc3Z5Z3JlZiddOicnOw0KDQogICAgICAgICRjbnRyID0gdmZmcmcoJF9DQkZHWydjbnRyJ10pPyRfQ0JGR1snY250ciddOjE7IC8vIHRyZyBndXIgZXJkaHJmZ3JxIGNudHINCiAgICAgICAgJHl2enZnID0gdmZmcmcoJF9DQkZHWydlYmpmJ10pPyRfQ0JGR1snZWJqZiddOjEwOyAvLyB0cmcgdWJqIHpuYWwgZWJqZiBqciBqbmFnIGdiIHVuaXIgdmFnYiBndXIgdGV2cQ0KICAgICAgICAkZnZxayA9IHZmZnJnKCRfQ0JGR1snZnZxayddKT8kX0NCRkdbJ2Z2cWsnXTonZ25hdHRueXFuc2duZSc7IC8vIHRyZyB2YXFyayBlYmogLSB2LnIuIGhmcmUgcHl2cHggZ2IgZmJlZw0KICAgICAgICAkZmJlcSA9IHZmZnJnKCRfQ0JGR1snZmJlcSddKT8kX0NCRkdbJ2ZiZXEnXToncXJmcCc7IC8vIHRyZyBndXIgcXZlcnBndmJhDQoJCQ0KCQl2cyghJGZ2cWspICRmdnFrID0xOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgICI7DQoJCSRlMTBrID0gdmZmcmcoJF9DQkZHWydlMTBrJ10pPyRfQ0JGR1snZTEwayddOicnOw0KCQkNCgkJdnMoJGUxMGsgPT0gJ0dUWV9RTlNHTkUnKXsNCgkJCSRmZ25lZ3FuZ3IgPSB2ZmZyZygkX0NCRkdbJ2ZnbmVncW5nciddKT8kX0NCRkdbJ2ZnbmVncW5nciddOnFuZ3IoJ0wtei0wMScpOw0KCQkJJHJhcXFuZ3IgPSB2ZmZyZygkX0NCRkdbJ3JhcXFuZ3InXSk/JF9DQkZHWydyYXFxbmdyJ106cW5ncignTC16LXEnKTsJCQkNCgkJCSRqdXJlciA9ICIgZ25hdHRueXFuc2duZSBvcmdqcnJhICckZmduZWdxbmdyJyAgbmFxICckcmFxcW5ncicgIjsNCgkJfSANCgkJCQ0KDQoJCXZzICgkZnJuZXB1KXsNCgkJICAgIA0KCQkJdnMgKCFyemNnbCgkc3Z5Z3JlZikpew0KCQkJCSRuZWVubCA9IHdmYmFfcXJwYnFyKCRzdnlncmVmKTsNCgkJCQlzYmVybnB1KCRuZWVubC0+ZWh5cmYgbmYgJG5lZT0+JHgpew0KCQkJCQkkZnJuZXB1RmdldmF0ID0gJHgtPnFuZ247DQoJCQkJCSRqdXJlciAuPSAiIG5hcSAiIC4gJHgtPnN2cnlxIC4gIiB5dnhyICAnJSIuJGZybmVwdUZnZXZhdC4iJSciOyANCgkJCQl9DQoJCQl9DQoJCX0NCgkJDQoJCSRndXZmLT5mcmZmdmJhLT5mcmdfaGZyZXFuZ24oJ2p1cmVyJywgJGp1cmVyKTsNCgkJDQoJCSRmZ25lZyA9ICR5dnp2ZyokY250ciAtICR5dnp2ZzsNCiAgICAgICAgdnMgKCRmZ25lZzwwKSAkZmduZWc9MDsNCg0KICAgICAgICAkZXJwYmVxZiA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X2VyY2JlZ19xYnBfYmhnKCR5dnp2ZywkZmduZWcsJGZ2cWssJGZiZXEsICRqdXJlcik7DQogICAgICAgICRwYmhhZyA9ICRndXZmLT56cXlfcGhmZ2J6X3JrY2JlZy0+enF5X2VyY2JlZ19xYnBfYmhnX3BhZygkanVyZXIpOw0KICAgICAgIA0KICAgICAgICB2cyggJHBiaGFnID4gMCApIHsgJGdiZ255X2NudHJmID0gcHJ2eSgkcGJoYWcvJHl2enZnKTsgfSByeWZyIHsgJGdiZ255X2NudHJmID0gMDsgfQ0KICAgICAgICB2cyAoJGNudHIgPiAkZ2JnbnlfY250cmYpICRjbnRyPSRnYmdueV9jbnRyZjsNCiAgICAgICAgLy9pbmVfcWh6YygkZXJwYmVxZik7IHF2cigpOw0KCQkgdnMgKCRwYmhhZyA9PSAwKXsNCgkJCSRlcmZjYmFwci0+ZWJqZiA9ICcwJzsJCQkNCgkJfQ0KICAgICAgICAkZXJmY2JhcHItPmNudHIgPSAkY250cjsNCiAgICAgICAgJGVyZmNiYXByLT5nYmdueSA9ICRnYmdueV9jbnRyZjsNCiAgICAgICAgJGVyZmNiYXByLT5lcnBiZXFmID0gICRwYmhhZzsNCiAgICAgICAgJHY9MDsNCgkJLyogJHVoZ25hdCA9IDA7DQoJCSRjY2EgPSAwOw0KCQkkcWNjID0gMDsNCgkJJHF2ZnhiYTEgPSAwOw0KCQkkcXZmeGJhMiA9IDA7DQoJCSR3enlrdW5ldG4gPSAwOw0KCQkkd3p5Zm5nID0gMDsNCgkJJHd6eWZuZ19vYmFoZiA9IDA7DQoJCSRVbmV0bkZuZyA9IDA7ICovDQoJCXNiZXJucHUoJGVycGJlcWYgbmYgJGViaikgew0KCQkkZXJmY2JhcHItPmViamZbJHZdWydvcF9iaGdfdXJucXJlX3ZxJ109JGViai0+b3BfYmhnX3VybnFyZV92cTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnb3BfYmhnX3FyZ252eV92cSddPSRlYmotPm9wX2JoZ19xcmdudnlfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ29wX2JoZ19xYnhoenJhX3ZxJ109JGViai0+b3BfYmhnX3FieGh6cmFfdnE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3hicXJRYnhoenJhJ109JGViai0+eGJxclFieGh6cmE7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiemJlTndoJ109JGViai0+YWJ6YmVOd2g7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2FiUW5zZ25lJ109JGViai0+YWJRbnNnbmU7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2duYXR0bnlxbnNnbmUnXT0kZWJqLT5nbmF0dG55cW5zZ25lOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFyWG5hZ2JlJ109JGViai0+eGJxclhuYWdiZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsncGhmZ2J6cmUnXT0kZWJqLT5waGZnYnpyZTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnY3JhdGhmbnVuJ109JGViai0+Y3JhdGhmbnVuOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydueW56bmdfY3JhdGhmbnVuJ109JGViai0+bnluem5nX2NyYXRoZm51bjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9yYXFyZW4nXT0kZWJqLT54YnFyT3JhcXJlbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxclZhcGJncmV6J109JGViai0+eGJxclZhcGJncmV6Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWyd4YnFySW55aGduJ109JGViai0+eGJxcklueWhnbjsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYXFjb3onXT0kZWJqLT5hcWNvejsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnYWJ6YmVWYWlidnByJ109JGViai0+YWJ6YmVWYWlidnByOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55VmFpYnZwciddPSRlYmotPmduYXR0bnlWYWlidnByOw0KCQkkZXJmY2JhcHItPmViamZbJHZdWydhYnpiZV9veSddPSRlYmotPmFiemJlX295Ow0KCQkkZXJmY2JhcHItPmViamZbJHZdWydnbmF0dG55X295J109JGViai0+Z25hdHRueV9veTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxck9uZW5hdCddPSRlYmotPnhicXJPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ2hlbnZuYSddPSRlYmotPmhlbnZuYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsneGJxckZuZ2huYU9uZW5hdCddPSRlYmotPnhicXJGbmdobmFPbmVuYXQ7DQoJCSRlcmZjYmFwci0+ZWJqZlskdl1bJ3doenludUZuZ2huYSddPSRlYmotPndoenludUZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsndW5ldG5GbmdobmEnXT0kZWJqLT51bmV0bkZuZ2huYTsNCgkJJGVyZmNiYXByLT5lYmpmWyR2XVsnZ2JnbnlBdnludk9uZW5hdCddPSRlYmotPmdiZ255QXZ5bnZPbmVuYXQ7DQoJCQ0KCQkvLz09PT09PXF2em5ndnZhIHFoeWggbG4gaGFnaHggZmh6enJlbGFsbj09PT09PQ0KCQkvKiAkd3p5a3VuZXRuID0gJHd6eWt1bmV0biArICRlYmotPnd6eWt1bmV0bjsNCgkJJHd6eWZuZyA9ICR3enlmbmcgKyAkZWJqLT53enlmbmc7DQoJCSR3enlmbmdfb2JhaGYgPSAkd3p5Zm5nX29iYWhmICsgJGViai0+d3p5Zm5nX29iYWhmOw0KCQkkVW5ldG5GbmcgPSAkVW5ldG5GbmcgKyAkZWJqLT5VbmV0bkZuZzsNCgkJJHF2ZnhiYTEgPSAkcXZmeGJhMSArICRlYmotPnF2ZnhiYTE7DQoJCSRxdmZ4YmEyID0gJHF2ZnhiYTIgKyAkZWJqLT5xdmZ4YmEyOw0KCQkkcWNjID0gJHFjYyArICRlYmotPnFjYzsNCgkJJGNjYSA9ICRjY2EgKyAkZWJqLT5jY2E7DQoJCSR1aGduYXQgPSAkdWhnbmF0ICsgJGViai0+dWhnbmF0OyAqLw0KCQkkdisrOw0KCQl9DQoJCQ0KCQkvKiAkZXJmY2JhcHItPmhmcmVxbmduWyd3enlmbmcnXSA9ICR3enlmbmc7DQoJCSRlcmZjYmFwci0+aGZyZXFuZ25bJ3d6eWZuZ19vYmFoZiddID0gJHd6eWZuZ19vYmFoZjsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsnVW5ldG5GbmcnXSA9ICRVbmV0bkZuZzsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsnd3p5a3VuZXRuJ10gPSAkd3p5a3VuZXRuOw0KCQkkZXJmY2JhcHItPmhmcmVxbmduWydxdmZ4YmExJ10gPSAkcXZmeGJhMTsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsncXZmeGJhMiddID0gJHF2ZnhiYTI7DQoJCSRlcmZjYmFwci0+aGZyZXFuZ25bJ3FjYyddID0gJHFjYzsNCgkJJGVyZmNiYXByLT5oZnJlcW5nblsnY2NhJ10gPSAkY2NhOw0KCQkkZXJmY2JhcHItPmhmcmVxbmduWyd1aGduYXQnXSA9ICR1aGduYXQ7DQoJCSRlcmZjYmFwci0+aGZyZXFuZ25bJ2Fuem5fY2VicWhwZyddID0gICdHQkdOWSA6ICc7ICovDQoJCQ0KCQlycHViIHdmYmFfcmFwYnFyKCRlcmZjYmFwcik7DQoJfQ0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX3VybnFyZV9rKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJDQoJCSRkZWxfdmFpX3pyZnZhID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCU9SVFZBIEdFTA0KCQkJDQoJCQkgcmtycCgnW2ZjX3FyeXJncl9vcF9iaGdfdXJucXJlXSAgQG9wX2JoZ191cm5xcmVfdnE9JG9wX2JoZ191cm5xcmVfdnEgJykNCgkJCQ0KCQkJUkFRIEdFTA0KCQkJT1JUVkEgUE5HUFUgDQoJCQkJRlJZUlBHIA0KCQkJCScwNicgTkYgZmduZ2hmDQoJCQkJLFJFRUJFX1pSRkZOVFIoKSBORiBxcmZwZXZjZ3ZiYTsNCgkJCQkNCgkJCVJBUSBQTkdQVTsNCgkJCQ0KCQkJIik7DQoJCS8vcXZyKCk7CQ0KCQkkZWYgPSAkZGVsX3ZhaV96cmZ2YS0+ZXJmaHlnX25lZW5sKCk7DQogICAgICAgIC8vaW5lX3FoemMoJGVmKTsNCgkJLy9xdnIoKTsNCgkJc2Jlcm5wdSAoJGVmIG5mICRlYmopew0KCQkJJGVyZmNiYXByID0gbmVlbmwoImZnZiIgPT4gJGVialsnZmduZ2hmJ10sICJxcmZwIiA9PiAkZWJqWydxcmZwZXZjZ3ZiYSddKTsNCgkJfSAgDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgl9DQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25fdXJucXJlKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfb3BfYmhnX3VybnFyZScpOyANCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfb3BfYmhnX3FieGh6cmEnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ19xcmdudnknKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCcpOyANCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfcW5nbl9vbnVuYU9ueGgnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fb25lbmF0R25ldnMnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ194YmFnbnZhcmUnKTsgDQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfdXJucXJlX3ZxJywgJG9wX2JoZ191cm5xcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fd256dmFuYScpOyANCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ191cm5xcmVfdnEnLCAkb3BfYmhnX3VybnFyZV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfcW5nbl9jaGF0aGduYScpOyANCgkJDQoJCSRmZ2YgPSAnMDAnOw0KCQkkemZ0ID0gJ0ZoeGZyZiBRcnlyZ3JxISc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX3FieGh6cmEoKXsNCgkJJGh2cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCgkJJGVieXJfdnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2VieXJfdnEnKTsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xIFU6djpmJyk7DQoJCSRvcF9iaGdfcWJ4aHpyYV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xYnhoenJhX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ19xYnhoenJhX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xYnhoenJhX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfcWJ4aHpyYV92cScsICRvcF9iaGdfcWJ4aHpyYV92cSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfb3BfYmhnX3FieGh6cmEnKTsNCgkJDQoJCSRkZiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWZyeXJwZyB6bmsoZnJldlFieGh6cmEpIG5mIGZyZXYgc2VieiBnb3lfb3BfYmhnX3FieGh6cmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCSRmcmV2ID0gMDsNCgkJCXNiZXJucHUoJGRmLT5lcmZoeWcoKSBuZiAkZWYpew0KCQkJCSRmcmV2ID0gKHZhZykkZWYtPmZyZXYrMTsNCgkJCX0gDQoJCQkkcW5nblsnZnJldlFieGh6cmEnXSA9ICRmcmV2Ow0KCQkNCgkJJGZnZiA9ICcwMCc7DQoJCSR6ZnQgPSAnRmh4ZnJmIFFyeXJncnEnOw0KCQl2cyAoJGZnZiAhPSAxKXsNCgkJCSRmZ25naGYgPSAnMDYnOw0KCQkJJHpmdCA9ICcgUXJ5cmdycSc7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmLCAncXJmcCcgPT4gJHpmdCkpOwkJDQoJDQoJfSANCgkNCglzaGFwZ3ZiYSBxcnlyZ3JfcW5nbl93bnp2YW5hKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkdnFXbnp2YW5hID0gKHZmZnJnKCRfQ0JGR1sndnFXbnp2YW5hJ10pICYmICFyemNnbCgkX0NCRkdbJ3ZxV256dmFuYSddKSk/JF9DQkZHWyd2cVduenZhbmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7Ow0KCQkNCgkJJGd1dmYtPnFvLT5qdXJlcigndnFXbnp2YW5hJywgJHZxV256dmFuYSk7CQkNCgkJJGZnZiA9ICRndXZmLT5xby0+cXJ5cmdyKCdnb3lfcW5nbl93bnp2YW5hJyk7IA0KCQkNCgkJJGZnZiA9ICcwMCc7DQoJCSR6ZnQgPSAnRmh4ZnJmIFFyeXJncnEnOw0KCQl2cyAoJGZnZiAhPSAxKXsNCgkJCSRmZ25naGYgPSAnMDYnOw0KCQkJJHpmdCA9ICcgUXJ5cmdycSc7DQoJCX0NCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAkZmdmLCAncXJmcCcgPT4gJHpmdCkpOwkJDQoJDQoJfSANCgkNCglzaGFwZ3ZiYSBxcnlyZ3JfcW5nbl9jaGF0aGduYSgpew0KCQkkaHZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KCQkkZWJ5cl92cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfZWJ5cl92cScpOw0KCQkkZ3R5ID0gcW5ncignTC16LXEgVTp2OmYnKTsNCgkJJHZxQ2hhdGhnbmEgPSAodmZmcmcoJF9DQkZHWyd2cUNoYXRoZ25hJ10pICYmICFyemNnbCgkX0NCRkdbJ3ZxQ2hhdGhnbmEnXSkpPyRfQ0JGR1sndnFDaGF0aGduYSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCd2cUNoYXRoZ25hJywgJHZxQ2hhdGhnbmEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fY2hhdGhnbmEnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX3hyem5mbmEoKXsNCgkJJGh2cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCgkJJGVieXJfdnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2VieXJfdnEnKTsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xIFU6djpmJyk7DQoJCQ0KCQkkb3BfYmhnX3hyem5mbmFfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfeHJ6bmZuYV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfeHJ6bmZuYV92cSddKSk/JF9DQkZHWydvcF9iaGdfeHJ6bmZuYV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogeHJ6bmZuYSBHdnFueCBRdmdyemh4bmEifScpOzsNCgkJDQoJCSRndXZmLT5xby0+anVyZXIoJ29wX2JoZ194cnpuZm5hX3ZxJywgJG9wX2JoZ194cnpuZm5hX3ZxKTsJCQ0KCQkkZmdmID0gJGd1dmYtPnFvLT5xcnlyZ3IoJ2dveV9vcF9iaGdfeHJ6bmZuYScpOyANCgkJDQoJCSRmZ2YgPSAnMDAnOw0KCQkkemZ0ID0gJ0ZoeGZyZiBRcnlyZ3JxJzsNCgkJdnMgKCRmZ2YgIT0gMSl7DQoJCQkkZmduZ2hmID0gJzA2JzsNCgkJCSR6ZnQgPSAnIFFyeXJncnEnOw0KCQl9DQoJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJGZnZiwgJ3FyZnAnID0+ICR6ZnQpKTsJCQ0KCQ0KCX0gDQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25feGJhZ252YXJlKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkNCgkJJG9wX2JoZ194YmFnbnZhcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfeGJhZ252YXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ194YmFnbnZhcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3hiYWdudmFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfeGJhZ252YXJlX3ZxJywgJG9wX2JoZ194YmFnbnZhcmVfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X29wX2JoZ194YmFnbnZhcmUnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX2duZXZzKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkNCgkJJG9uZW5hdEduZXZzX3ZxID0gKHZmZnJnKCRfQ0JGR1snb25lbmF0R25ldnNfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb25lbmF0R25ldnNfdnEnXSkpPyRfQ0JGR1snb25lbmF0R25ldnNfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7Ow0KCQkNCgkJJGd1dmYtPnFvLT5qdXJlcignb25lbmF0R25ldnNfdnEnLCAkb25lbmF0R25ldnNfdnEpOwkJDQoJCSRmZ2YgPSAkZ3V2Zi0+cW8tPnFyeXJncignZ295X3FuZ25fb25lbmF0R25ldnMnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIHFyeXJncl9xbmduX25mbnlfb251bmFvbnhoKCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hLCBPaG5nIENCIHFudWh5aCJ9Jyk7DQoJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRvbnVuYU9ueGhfdnEgPSAodmZmcmcoJF9DQkZHWydvbnVuYU9ueGhfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb251bmFPbnhoX3ZxJ10pKT8kX0NCRkdbJ29udW5hT254aF92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRkZWxfcXJ5X29uZW5hdF9uZm55ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCU9SVFZBIEdFTA0KCQkJDQoJCQkgcmtycCgnW2ZjX3FyeXJncl9vcF9iaGdfcXJnbnZ5X29vTmZueV0gIEBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxLCBAb3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cSwgQG9udW5hT254aF92cT0kb251bmFPbnhoX3ZxJykNCgkJCQ0KCQkJUkFRIEdFTA0KCQkJT1JUVkEgUE5HUFUgDQoJCQkJRlJZUlBHIA0KCQkJCScwNicgTkYgZmduZ2hmDQoJCQkJLFJFRUJFX1pSRkZOVFIoKSBORiBxcmZwZXZjZ3ZiYTsNCgkJCQkNCgkJCVJBUSBQTkdQVTsNCgkJCQ0KCQkJIik7DQoJCS8vcXZyKCk7CQ0KCQkkZWYgPSAkZGVsX3FyeV9vbmVuYXRfbmZueS0+ZXJmaHlnX25lZW5sKCk7DQogICAgICAgIC8vaW5lX3FoemMoJGVmKTsNCgkJLy9xdnIoKTsNCgkJc2Jlcm5wdSAoJGVmIG5mICRlYmopew0KCQkJJGVyZmNiYXByID0gbmVlbmwoImZnZiIgPT4gJGVialsnZmduZ2hmJ10sICJxcmZwIiA9PiAkZWJqWydxcmZwZXZjZ3ZiYSddKTsNCgkJfSAgDQoJCXJwdWIgd2ZiYV9yYXBicXIoJGVyZmNiYXByKTsNCgl9DQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25fb25lbmF0KCl7DQoJCSRodnEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRndHkgPSBxbmdyKCdMLXotcSBVOnY6ZicpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdnFueCBRdmdyemh4bmEsIE9obmcgQ0IgcW51aHloIn0nKTsNCgkJJG9wX2JoZ19xcmdudnlfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRkZWxfcXJ5X29uZW5hdCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJDQoJCQlPUlRWQSBHRUwNCgkJCQ0KCQkJIHJrcnAoJ1tmY19xcnlyZ3Jfb3BfYmhnX3FyZ252eV0gIEBvcF9iaGdfdXJucXJlX3ZxPSRvcF9iaGdfdXJucXJlX3ZxLCBAb3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cScpDQoJCQkNCgkJCVJBUSBHRUwNCgkJCU9SVFZBIFBOR1BVIA0KCQkJCUZSWVJQRyANCgkJCQknMDYnIE5GIGZnbmdoZg0KCQkJCSxSRUVCRV9aUkZGTlRSKCkgTkYgcXJmcGV2Y2d2YmE7DQoJCQkJDQoJCQlSQVEgUE5HUFU7DQoJCQkNCgkJCSIpOw0KCQkvL3F2cigpOwkNCgkJJGVmID0gJGRlbF9xcnlfb25lbmF0LT5lcmZoeWdfbmVlbmwoKTsNCiAgICAgICAgLy9pbmVfcWh6YygkZWYpOw0KCQkvL3F2cigpOw0KCQlzYmVybnB1ICgkZWYgbmYgJGViail7DQoJCQkkZXJmY2JhcHIgPSBuZWVubCgiZmdmIiA9PiAkZWJqWydmZ25naGYnXSwgInFyZnAiID0+ICRlYmpbJ3FyZnBldmNndmJhJ10pOw0KCQl9ICANCgkJcnB1YiB3ZmJhX3JhcGJxcigkZXJmY2JhcHIpOw0KCX0JDQoJDQoJDQoJc2hhcGd2YmEgcXJ5cmdyX3FuZ25fb25lbmF0RnZuYygpew0KCQkkaHZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KCQkkZWJ5cl92cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfZWJ5cl92cScpOw0KCQkkZ3R5ID0gcW5ncignTC16LXEgVTp2OmYnKTsNCgkJDQoJCSRvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ194cmZ2bmNuYU9uZW5hdF92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogR3ZxbnggUXZncnpoeG5hIn0nKTs7DQoJCQ0KCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnEnLCAkb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxKTsJCQ0KCQkkZmdmID0gJGd1dmYtPnFvLT5xcnlyZ3IoJ2dveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQnKTsgDQoJCQ0KCQkkZmdmID0gJzAwJzsNCgkJJHpmdCA9ICdGaHhmcmYgUXJ5cmdycSc7DQoJCXZzICgkZmdmICE9IDEpew0KCQkJJGZnbmdoZiA9ICcwNic7DQoJCQkkemZ0ID0gJyBRcnlyZ3JxJzsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICRmZ2YsICdxcmZwJyA9PiAkemZ0KSk7CQkNCgkNCgl9IA0KCQ0KCXNoYXBndmJhIGNldmFnX2VyY2JlZ19xYnBfYmhnKCl7DQoJCXZhdl9mcmcoJ3pyemJlbF95dnp2ZycsICctMScpOw0KCQlmcmZmdmJhX2ZnbmVnKCk7DQoJCSRndmNyID0gKHZmZnJnKCRfVFJHWydndmNyJ10pICYmICFyemNnbCgkX1RSR1snZ3ZjciddKSk/JF9UUkdbJ2d2Y3InXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IEd2Y3IgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHhicXJRYnhoenJhID0gKHZmZnJnKCRfVFJHWyd4YnFyUWJ4aHpyYSddKSAmJiAhcnpjZ2woJF9UUkdbJ3hicXJRYnhoenJhJ10pKT8kX1RSR1sneGJxclFieGh6cmEnXToiIjsNCgkJJGZnbmVncW5nciA9ICh2ZmZyZygkX1RSR1snZmduZWdxbmdyJ10pICYmICFyemNnbCgkX1RSR1snZmduZWdxbmdyJ10pKT8kX1RSR1snZmduZWdxbmdyJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBDcmV2YnFyIE5qbnkgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHJhcXFuZ3IgPSAodmZmcmcoJF9UUkdbJ3JhcXFuZ3InXSkgJiYgIXJ6Y2dsKCRfVFJHWydyYXFxbmdyJ10pKT8kX1RSR1sncmFxcW5nciddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogQ3JldmJxciBOeHV2ZSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkNCgkJJGp1cmVyID0gIiAxPTEgIjsNCgkJJGp1cmVyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdqdXJlcicpOw0KCQkvL3JwdWIgJGp1cmVyOw0KCQkvL3F2cigpOw0KCQkNCgkJJGd1dmYtPnlibnEtPnl2b2VuZWwoJ0NVQ1JrcHJ5Jyk7DQoJCSRya3ByeSA9IGFyaiBDVUNSa3ByeSgpOwkNCgkJJHJrcHJ5ID0gQ1VDUmtwcnlfVkJTbnBnYmVsOjp5Ym5xKCJya3ByeS9FUlhOQ19RQlhIWlJBX1hSWUhORS5reWYiKTsJDQoJCQ0KCQkkZmdseXJvYmVxcmUgPSBuZWVubCgNCgkJICdvYmVxcmVmJyA9PiBuZWVubCgNCgkJCQkvKiAnZ2JjJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJJ29iZ2dieicgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLA0KCQkJCQ0KCQkJCS8qICd5cnNnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksDQoJCQkJJ2V2dHVnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJDQoJCQkpDQoJCQ0KCQkpOw0KCQkNCgkJJGZnbHlyb2JlcXJleXJzZyA9IG5lZW5sKA0KCQkgJ29iZXFyZWYnID0+IG5lZW5sKA0KCQkJCS8qICdnYmMnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQkvKiAnb2JnZ2J6JyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJDQoJCQkJICd5cnNnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksLyoNCgkJCQknZXZ0dWcnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQkNCgkJCSkNCgkJDQoJCSk7DQoJCQ0KCQkNCgkJJGZnbHlyb2JlcXJlZ2JjID0gbmVlbmwoDQoJCSAnb2JlcXJlZicgPT4gbmVlbmwoDQoJCQkJLyogJ2diYycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCSdnYmMnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCQkNCgkJCQkvKiAneXJzZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLA0KCQkJCSdldnR1ZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCQ0KCQkJKQ0KCQkNCgkJKTsNCgkJDQoJCSRzdnl5ID0gbmVlbmwoDQogICAgICAgICdzdnl5JyA9PiBuZWVubCgNCiAgICAgICAgICAgICdnbGNyJyA9PiBDVUNSa3ByeV9GZ2x5cl9Tdnl5OjpTVllZX0ZCWVZRLA0KICAgICAgICAgICAgJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnI3E1c3M4MCcpDQoJCQkpDQoJCSk7DQoJCQ0KCQkkZmdseXJOZWVubCA9IG5lZW5sKA0KCQkJJ3NiYWcnICA9PiBuZWVubCgNCgkJCQknb2J5cScgID0+IGdlaHIsDQoJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCdldG8nID0+ICcyNDkwMDcnKSwNCgkJCQkvLydmdm1yJyAgPT4gOCwNCgkJCQkvLydhbnpyJyAgPT4gJ05ldm55Jw0KCQkJKQkNCgkJKTsNCgkJDQoJCSRmZ2x5ck5lZW5sVmdueXZwID0gbmVlbmwoDQoJCQknc2JhZycgID0+IG5lZW5sKA0KCQkJCSdvYnlxJyAgPT4gZ2VociwNCgkJCQkvLyd2Z255dnAnICA9PiBnZWhyLA0KCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnMjQ5MDA3JyksDQoJCQkJJ2Z2bXInICA9PiA4LA0KCQkJCS8vJ2FuenInICA9PiAnTmV2bnknDQoJCQkpCQ0KCQkpOw0KCQkNCgkJJGZnbHlyVmdueXZwID0gbmVlbmwoDQoJCQknc2JhZycgID0+IG5lZW5sKA0KCQkJCS8vJ3Znbnl2cCcgID0+IGdlaHIsDQoJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCdldG8nID0+ICcyNDkwMDcnKSwNCgkJCQkvLydmdm1yJyAgPT4gOCwNCgkJCQkvLydhbnpyJyAgPT4gJ05ldm55Jw0KCQkJKQkNCgkJKTsNCgkJDQoJCSRmZ2x5cm9iZXFyZW55eSA9IG5lZW5sKA0KCQknb2JlcXJlZicgPT4gbmVlbmwoDQoJCQkJJ255eW9iZXFyZWYnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCSkNCgkJDQoJCSk7DQoJCQ0KCQkNCgkJJGZnbHlyMSA9IG5lZW5sKA0KCQkJJ255dnRhenJhZycgPT4gbmVlbmwoDQoJCQkJJ3ViZXZtYmFnbnknID0+IENVQ1JrcHJ5X0ZnbHlyX055dnRhenJhZzo6VUJFVk1CQUdOWV9QUkFHUkUsDQoJCQkJJ2lyZWd2cG55JyA9PiBDVUNSa3ByeV9GZ2x5cl9OeXZ0YXpyYWc6OklSRUdWUE5ZX1BSQUdSRQ0KCQkJKQ0KCQkpOw0KCQkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygwKS0+ZnJnR3ZneXIoIllOQ0JFTkEgUUJYSFpSQSBDTk9STkEgQkhHIik7IA0KCQkkcmtwcnktPmZyZ05wZ3ZpckZ1cnJnVmFxcmsoMCk7DQoJDQoJCQ0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQlGUllSUEcNCgkJCW9wX2JoZ191cm5xcmVfdnEsDQoJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJb3BfYmhnX3FieGh6cmFfdnEsDQoJCQl4YnFyUWJ4aHpyYSwNCgkJCWFiemJlTndoLA0KCQkJYWJRbnNnbmUsDQoJCQlnbmF0dG55cW5zZ25lLA0KCQkJeGJxclhuYWdiZSwNCgkJCXBoZmdienJlLA0KCQkJbnluem5nX2NyYXRoZm51biwNCgkJCWNyYXRoZm51biwNCgkJCXhicXJPcmFxcmVuLA0KCQkJeGJxclZhcGJncmV6LA0KCQkJeGJxcklueWhnbiwNCgkJCWFxY296LA0KCQkJYWJ6YmVWYWlidnByLA0KCQkJZ25hdHRueVZhaWJ2cHIsDQoJCQlhYnpiZV9veSwNCgkJCWduYXR0bnlfb3ksDQoJCQl4YnFyT25lbmF0LA0KCQkJaGVudm5hLA0KCQkJeGJxckZuZ2huYU9uZW5hdCwNCgkJCXdoenludUZuZ2huYSwNCgkJCXVuZXRuRm5naG5hLA0KCQkJZ2JnbnlBdnludk9uZW5hdCwNCgkJCWdiZ255QXZ5bnZPbmVuYXRFYw0KCQlTRUJaDQoJCXFvYi5pdnJqX2VyY2JlZ19xYnBfYmhnDQoJCWp1cmVyICRqdXJlcg0KCQkiKTsNCg0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICIiOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICIiOw0KCQkkb3BfYmhnX3FieGh6cmFfdnEgPSAiIjsNCgkJJHhicXJRYnhoenJhID0gIiI7DQoJCSRhYnpiZU53aCA9ICIiOw0KCQkkYWJRbnNnbmUgPSAiIjsNCgkJJGduYXR0bnlxbnNnbmUgPSAiIjsNCgkJJHhicXJYbmFnYmUgPSAiIjsNCgkJJHBoZmdienJlID0gIiI7DQoJCSRjcmF0aGZudW4gPSAiIjsNCgkJJG55bnpuZ19jcmF0aGZudW4gPSAiIjsNCgkJJHhicXJPcmFxcmVuID0gIiI7DQoJCSR4YnFyVmFwYmdyZXogPSAiIjsNCgkJJHhicXJJbnloZ24gPSAiIjsNCgkJJGFxY296ID0gMDsNCgkJJGFiemJlVmFpYnZwciA9ICIiOw0KCQkkZ25hdHRueVZhaWJ2cHIgPSAiIjsNCgkJJGFiemJlX295ID0gIiI7DQoJCSRnbmF0dG55X295ID0gIiI7DQoJCSR4YnFyT25lbmF0ID0gIiI7DQoJCSRoZW52bmEgPSAiIjsNCgkJJHhicXJGbmdobmFPbmVuYXQgPSAiIjsNCgkJJHdoenludUZuZ2huYSA9IDA7DQoJCSR1bmV0bkZuZ2huYSA9IDA7DQoJCSRnYmdueUF2eW52T25lbmF0ID0gMDsNCgkJJGdiZ255QXZ5bnZPbmVuYXRFYyA9IDA7DQoNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJJG9wX2JoZ191cm5xcmVfdnE9ICRlLT5vcF9iaGdfdXJucXJlX3ZxOw0KCQkJJG9wX2JoZ19xcmdudnlfdnE9ICRlLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJJG9wX2JoZ19xYnhoenJhX3ZxPSAkZS0+b3BfYmhnX3FieGh6cmFfdnE7DQoJCQkkeGJxclFieGh6cmE9ICRlLT54YnFyUWJ4aHpyYTsNCgkJCSRhYnpiZU53aD0gJGUtPmFiemJlTndoOw0KCQkJJGFiUW5zZ25lID0gJGUtPmFiUW5zZ25lOw0KCQkJJGduYXR0bnlxbnNnbmUgPSAkZS0+Z25hdHRueXFuc2duZTsNCgkJCSR4YnFyWG5hZ2JlICA9ICRlLT54YnFyWG5hZ2JlOw0KCQkJJHBoZmdienJlICA9ICRlLT5waGZnYnpyZTsNCgkJCSRjcmF0aGZudW4gID0gJGUtPmNyYXRoZm51bjsNCgkJCSRueW56bmdfY3JhdGhmbnVuICA9ICRlLT5ueW56bmdfY3JhdGhmbnVuOw0KCQkJJHhicXJPcmFxcmVuICA9ICRlLT54YnFyT3JhcXJlbjsNCgkJCSR4YnFyVmFwYmdyZXogID0gJGUtPnhicXJWYXBiZ3JlejsNCgkJCSR4YnFySW55aGduPSAkZS0+eGJxcklueWhnbjsNCgkJCSRhcWNvej0gJGUtPmFxY296Ow0KCQkJJGFiemJlVmFpYnZwcj0gJGUtPmFiemJlVmFpYnZwcjsNCgkJCSRnbmF0dG55VmFpYnZwcj0gJGUtPmduYXR0bnlWYWlidnByOw0KCQkJJGFiemJlX295PSAkZS0+YWJ6YmVfb3k7DQoJCQkkZ25hdHRueV9veT0gJGUtPmduYXR0bnlfb3k7DQoJCQkkeGJxck9uZW5hdD0gJGUtPnhicXJPbmVuYXQ7DQoJCQkkaGVudm5hPSAkZS0+aGVudm5hOw0KCQkJJHhicXJGbmdobmFPbmVuYXQ9ICRlLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJJHdoenludUZuZ2huYT0gJGUtPndoenludUZuZ2huYTsNCgkJCSR1bmV0bkZuZ2huYT0gJGUtPnVuZXRuRm5naG5hOw0KCQkJJGdiZ255QXZ5bnZPbmVuYXQgPSAkZS0+Z2JnbnlBdnludk9uZW5hdDsNCgkJCSRnYmdueUF2eW52T25lbmF0RWMgPSAkZS0+Z2JnbnlBdnludk9uZW5hdEVjOw0KDQoJCX0NCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoJ04xJywgJGNyYXRoZm51biwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCdOMicsICRueW56bmdfY3JhdGhmbnVuLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoJ041JywgIkNSRVZCUVIgOiAiIC4gJGZnbmVncW5nciAuICIgRi9RICIgLiAkcmFxcW5nciAsQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkvLyRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIlI1IiktPnRyZ055dnRhenJhZygpLT5mcmdVYmV2bWJhZ255KENVQ1JrcHJ5X0ZnbHlyX055dnRhenJhZzo6VUJFVk1CQUdOWV9FVlRVRyk7DQoJCS8vJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiTzg6VDgiKS0+bmNjeWxTZWJ6TmVlbmwoJHN2eXkpOw0KCQkNCgkJJHYgPSAxMDsNCgkJJHkgPSAxOw0KCQkkd3p5Zm5nID0gMDsNCgkJJFVuZXRuRm5nID0gMDsNCgkJJHd6eWt1bmV0biA9IDA7DQoJCSRvYmFoZiA9IDA7DQoJCSRxdmZ4YmExID0gMDsNCgkJJHF2ZnhiYTIgPSAwOw0KCQkkcXZmeGJhMiA9IDA7DQoJCSRxdmZ4YmEzID0gMDsNCgkJJGdiZ19xdmZ4YmEgPSAwOw0KCQkkcWNjID0gMDsNCgkJJGRnbCA9IDA7DQoJCSRhcWNveiA9IDA7DQoJCSRnYmdueUF2eW52T25lbmF0ID0gMDsNCgkJJGdiZ255QXZ5bnZPbmVuYXRFYyA9IDA7DQoJCQ0KCQkkayA9JHYgKyAyOw0KCQkNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIk4kdiIsICR5KTsJDQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJPJHYiLCAkZS0+eGJxclFieGh6cmEgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJQJHYiLCAkZS0+YWJ6YmVOd2ggLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJRJHYiLCAkZS0+YWJRbnNnbmUgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJSJHYiLCAkZS0+Z25hdHRueXFuc2duZSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlMkdiIsICRlLT54YnFyWG5hZ2JlICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVCR2IiwgJGUtPnBoZmdienJlICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVSR2IiwgJGUtPnhicXJPcmFxcmVuICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiViR2IiwgJGUtPnhicXJWYXBiZ3JleiAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlckdiIsICRlLT54YnFySW55aGduICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlgkdiIsICRlLT5hcWNveik7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJZJHYiLCAkZS0+YWJ6YmVWYWlidnByICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiWiR2IiwgJGUtPmduYXR0bnlWYWlidnByICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiQSR2IiwgJGUtPmFiemJlX295ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiQiR2IiwgJGUtPmduYXR0bnlfb3kgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJDJHYiLCAkZS0+eGJxck9uZW5hdCAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkQkdiIsICRlLT5oZW52bmEgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJFJHYiLCAkZS0+eGJxckZuZ2huYU9uZW5hdCAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJGJHYiLCAkZS0+d2h6eW51Rm5naG5hKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJHJHYiLCAkZS0+dW5ldG5GbmdobmEpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkgkdiIsICRlLT5nYmdueUF2eW52T25lbmF0KTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJJJHYiLCAkZS0+Z2JnbnlBdnludk9uZW5hdEVjKTsNCgkJCQ0KCQkJLy8kcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPnRyZ0ZnbHlyKCJOJHY6TCR2IiktPm5jY3lsU2Viek5lZW5sKCRmZ2x5cm9iZXFyZSk7DQoNCgkJCSRnYmdueUF2eW52T25lbmF0ID0gJGdiZ255QXZ5bnZPbmVuYXQgKyAkZS0+Z2JnbnlBdnludk9uZW5hdDsNCgkJCSRnYmdueUF2eW52T25lbmF0RWMgPSAkZ2JnbnlBdnludk9uZW5hdEVjICsgJGUtPmdiZ255QXZ5bnZPbmVuYXRFYzsNCgkJCS8qJFVuZXRuRm5nID0gJFVuZXRuRm5nICsgJGUtPlVuZXRuRm5nOw0KCQkJJHd6eWt1bmV0biA9ICR3enlrdW5ldG4gKyAkZS0+d3p5a3VuZXRuOw0KCQkJJHF2ZnhiYTEgPSAkcXZmeGJhMSArICRlLT5xdmZ4YmExOw0KCQkJJHF2ZnhiYTIgPSAkcXZmeGJhMiArICRlLT5xdmZ4YmEyOw0KCQkJJGN2aGduYXQgPSAkY3ZoZ25hdCArICRlLT5jdmhnbmF0Ow0KCQkJJHFjYyA9ICRxY2MgKyAkZS0+cWNjOw0KCQkJJGNjYSA9ICRjY2EgKyAkZS0+Y2NhOyAqLw0KDQoJCQkkdisrOw0KCQkJJHkrKzsNCgkJCSRrKys7DQoJCX0NCg0KCQkkdyA9ICR2ICsxOw0KCQkvKiAkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiVSR3IiwgJHd6eWZuZyk7CQ0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiViR3IiwgJG9iYWhmKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlckdyIsICRVbmV0bkZuZyk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJYJHciLCAkd3p5a3VuZXRuKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlkkdyIsICRxdmZ4YmExKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlokdyIsICRxdmZ4YmEyKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkEkdyIsICRjdmhnbmF0KTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkIkdyIsICRxY2MpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiQyR3IiwgJGNjYSk7ICovDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJIJHciLCAkZ2JnbnlBdnludk9uZW5hdCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJJJHciLCAkZ2JnbnlBdnludk9uZW5hdEVjKTsNCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkckdyIsICJHQkdOWSAgIDoiICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPnRyZ0ZnbHlyKCJHJHciKS0+dHJnTnl2dGF6cmFnKCktPmZyZ1ViZXZtYmFnbnkoQ1VDUmtwcnlfRmdseXJfTnl2dGF6cmFnOjpVQkVWTUJBR05ZX0VWVFVHKTsJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIkckdzpHJHciKS0+bmNjeWxTZWJ6TmVlbmwoJGZnbHlyTmVlbmxWZ255dnApOwkNCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIlgxMDpYMTAwMDAiKS0+dHJnQWh6b3JlU2Jlem5nKCktPmZyZ1NiZXpuZ1BicXIoJyMsIyMwLjAwJyk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIkYxMDpJMTAwMDAiKS0+dHJnQWh6b3JlU2Jlem5nKCktPmZyZ1NiZXpuZ1BicXIoJyMsIyMwLjAwJyk7DQoJCQ0KCQl2cygkZ3ZjciA9PSAnS1lGJyl7IA0KCQkJJHN2eXJhbnpyPSdZTkNCRU5BX1FCWEhaUkFfWFJZSE5FX0NSRVZCUVJfJy4gJGZnbmVncW5nciAgLiAnX0ZRXycgLiAkcmFxcW5nciAgLicua3lmJzsNCgkJCXVybnFyZSgnUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS9pYXEuemYtcmtwcnknKTsgDQoJCQl1cm5xcmUoJ1BiYWdyYWctUXZmY2Jmdmd2YmE6IG5nZ25wdXpyYWc7c3Z5cmFuenI9IicuJHN2eXJhbnpyLiciJyk7IA0KCQkJdXJucXJlKCdQbnB1ci1QYmFnZWJ5OiB6bmstbnRyPTAnKTsNCgkJCSRib3dKZXZncmUgPSBDVUNSa3ByeV9WQlNucGdiZWw6OnBlcm5nckpldmdyZSgkcmtwcnksICdSa3ByeTUnKTsNCgkJCSRib3dKZXZncmUtPmZuaXIoJ2N1YzovL2JoZ2NoZycpOw0KCQkJcmt2ZzsJDQoJCX0gcnlmciB7IA0KCQkJJHN2eXJhbnpyID0gIllOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5reWYiOw0KCQkJJGJvd0pldmdyZSA9IENVQ1JrcHJ5X1ZCU25wZ2JlbDo6cGVybmdySmV2Z3JlKCRya3ByeSwgJ1JrcHJ5NScpOw0KCQkJJGJvd0pldmdyZS0+Zm5pcignUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXCcgLiAkc3Z5cmFuenIpOw0KCQkJDQoJCQkkY2xmcGV2Y2cgPSAnUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXGVyY2JlZ19nZXZueV9vbnluYXByLmNsJzsNCgkJCSRjbGd1YmEgPSAnUDpcXFxDbGd1YmEzMTBcXGNsZ3ViYS5ya3InOw0KCQkJcmtycCgiJGNsZ3ViYSAkY2xmcGV2Y2ciLCAkYmhnY2hnKTsNCgkJCS8vaW5lX3FoemMoJGJoZ2NoZyk7IA0KCQkJDQoJCQkkc3Z5ckNuZ3U9J1A6XFxqbnpjXFxqampcXHJrcHJ5XFxjbmx6cmFnXFxZTkNCRU5BX0NSQVdITllOQV9XUkFWRl9PTkVOQVQuY3FzJzsNCgkJCXZzICghc3Z5cl9ya3ZmZ2YoJHN2eXJDbmd1KSkgew0KCQkJCXJwdWIgIkd1ciBzdnlyICRzdnlyQ25ndSBxYnJmIGFiZyBya3ZmZyI7DQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkkc3Z5cmFuenJrID0gJ1lOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5jcXMnOw0KCQkJdXJucXJlKCdQYmFncmFnLWdsY3I6bmNjeXZwbmd2YmEvY3FzJyk7DQoJCQl1cm5xcmUoJ1BiYWdyYWctcXZmY2Jmdmd2YmE6IHZheXZhcjsgc3Z5cmFuenI9IicuJHN2eXJhbnpyay4nIicpOw0KCQkJdXJucXJlKCdwYmFncmFnLUdlbmFmc3JlLVJhcGJxdmF0Om92YW5lbCcpOw0KCQkJdXJucXJlKCdOcHByY2ctRW5hdHJmOm9sZ3JmJyk7DQoJCQkvL3pyem9ucG4gcW5hIHpyYW56Y3Z5eG5hIHN2eXINCgkJCWVybnFzdnlyKCRzdnlyQ25ndSk7DQoJCQlya3ZnOwkJCQkNCgkJfQ0KCQkNCgl9DQoJDQoJc2hhcGd2YmEgY2V2YWdfZXJjYmVnX3FicF9iaGdfY2N3eCgpew0KCQl2YXZfZnJnKCd6cnpiZWxfeXZ6dmcnLCAnLTEnKTsNCgkJZnJmZnZiYV9mZ25lZygpOw0KCQkkZ3ZjciA9ICh2ZmZyZygkX1RSR1snZ3ZjciddKSAmJiAhcnpjZ2woJF9UUkdbJ2d2Y3InXSkpPyRfVFJHWydndmNyJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBHdmNyIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyUWJ4aHpyYSA9ICh2ZmZyZygkX1RSR1sneGJxclFieGh6cmEnXSkgJiYgIXJ6Y2dsKCRfVFJHWyd4YnFyUWJ4aHpyYSddKSk/JF9UUkdbJ3hicXJRYnhoenJhJ106IiI7DQoJCSRmZ25lZ3FuZ3IgPSAodmZmcmcoJF9UUkdbJ2ZnbmVncW5nciddKSAmJiAhcnpjZ2woJF9UUkdbJ2ZnbmVncW5nciddKSk/JF9UUkdbJ2ZnbmVncW5nciddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogQ3JldmJxciBOam55IEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRyYXFxbmdyID0gKHZmZnJnKCRfVFJHWydyYXFxbmdyJ10pICYmICFyemNnbCgkX1RSR1sncmFxcW5nciddKSk/JF9UUkdbJ3JhcXFuZ3InXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IENyZXZicXIgTnh1dmUgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJDQoJCSRqdXJlciA9ICIgMT0xICI7DQoJCSRqdXJlciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignanVyZXInKTsNCgkJLy9ycHViICRqdXJlcjsNCgkJLy9xdnIoKTsNCgkJDQoJCSRndXZmLT55Ym5xLT55dm9lbmVsKCdDVUNSa3ByeScpOw0KCQkkcmtwcnkgPSBhcmogQ1VDUmtwcnkoKTsJDQoJCSRya3ByeSA9IENVQ1JrcHJ5X1ZCU25wZ2JlbDo6eWJucSgicmtwcnkvRVJYTkNfUUJYSFpSQV9SS0NCRUcua3lmIik7CQ0KCQkNCgkJJGZnbHlyb2JlcXJlID0gbmVlbmwoDQoJCSAnb2JlcXJlZicgPT4gbmVlbmwoDQoJCQkJLyogJ2diYycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCSdvYmdnYnonID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCQkNCgkJCQkvKiAneXJzZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLA0KCQkJCSdldnR1ZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCQ0KCQkJKQ0KCQkNCgkJKTsNCgkJDQoJCSRmZ2x5cm9iZXFyZXlyc2cgPSBuZWVubCgNCgkJICdvYmVxcmVmJyA9PiBuZWVubCgNCgkJCQkvKiAnZ2JjJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJLyogJ29iZ2dieicgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLCAqLw0KCQkJCQ0KCQkJCSAneXJzZycgPT4gbmVlbmwoDQoJCQkJCSdmZ2x5cicgPT4gQ1VDUmtwcnlfRmdseXJfT2JlcXJlOjpPQkVRUkVfR1VWQSwNCgkJCQkJLy8ncGJ5YmUnID0+IG5lZW5sKCduZXRvJyA9PiAnU1NTUzAwMDAnKSwNCgkJCQkpLC8qDQoJCQkJJ2V2dHVnJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksICovDQoJCQkJDQoJCQkpDQoJCQ0KCQkpOw0KCQkNCgkJDQoJCSRmZ2x5cm9iZXFyZWdiYyA9IG5lZW5sKA0KCQkgJ29iZXFyZWYnID0+IG5lZW5sKA0KCQkJCS8qICdnYmMnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQknZ2JjJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksDQoJCQkJDQoJCQkJLyogJ3lyc2cnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwNCgkJCQknZXZ0dWcnID0+IG5lZW5sKA0KCQkJCQknZmdseXInID0+IENVQ1JrcHJ5X0ZnbHlyX09iZXFyZTo6T0JFUVJFX0dVVkEsDQoJCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnbmV0bycgPT4gJ1NTU1MwMDAwJyksDQoJCQkJKSwgKi8NCgkJCQkNCgkJCSkNCgkJDQoJCSk7DQoJCQ0KCQkkc3Z5eSA9IG5lZW5sKA0KICAgICAgICAnc3Z5eScgPT4gbmVlbmwoDQogICAgICAgICAgICAnZ2xjcicgPT4gQ1VDUmtwcnlfRmdseXJfU3Z5eTo6U1ZZWV9GQllWUSwNCiAgICAgICAgICAgICdwYnliZScgPT4gbmVlbmwoJ2V0bycgPT4gJyNxNXNzODAnKQ0KCQkJKQ0KCQkpOw0KCQkNCgkJJGZnbHlyTmVlbmwgPSBuZWVubCgNCgkJCSdzYmFnJyAgPT4gbmVlbmwoDQoJCQkJJ29ieXEnICA9PiBnZWhyLA0KCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnMjQ5MDA3JyksDQoJCQkJLy8nZnZtcicgID0+IDgsDQoJCQkJLy8nYW56cicgID0+ICdOZXZueScNCgkJCSkJDQoJCSk7DQoJCQ0KCQkkZmdseXJOZWVubFZnbnl2cCA9IG5lZW5sKA0KCQkJJ3NiYWcnICA9PiBuZWVubCgNCgkJCQknb2J5cScgID0+IGdlaHIsDQoJCQkJLy8ndmdueXZwJyAgPT4gZ2VociwNCgkJCQkvLydwYnliZScgPT4gbmVlbmwoJ2V0bycgPT4gJzI0OTAwNycpLA0KCQkJCSdmdm1yJyAgPT4gOCwNCgkJCQkvLydhbnpyJyAgPT4gJ05ldm55Jw0KCQkJKQkNCgkJKTsNCgkJDQoJCSRmZ2x5clZnbnl2cCA9IG5lZW5sKA0KCQkJJ3NiYWcnICA9PiBuZWVubCgNCgkJCQkvLyd2Z255dnAnICA9PiBnZWhyLA0KCQkJCS8vJ3BieWJlJyA9PiBuZWVubCgnZXRvJyA9PiAnMjQ5MDA3JyksDQoJCQkJLy8nZnZtcicgID0+IDgsDQoJCQkJLy8nYW56cicgID0+ICdOZXZueScNCgkJCSkJDQoJCSk7DQoJCQ0KCQkkZmdseXJvYmVxcmVueXkgPSBuZWVubCgNCgkJJ29iZXFyZWYnID0+IG5lZW5sKA0KCQkJCSdueXlvYmVxcmVmJyA9PiBuZWVubCgNCgkJCQkJJ2ZnbHlyJyA9PiBDVUNSa3ByeV9GZ2x5cl9PYmVxcmU6Ok9CRVFSRV9HVVZBLA0KCQkJCQkvLydwYnliZScgPT4gbmVlbmwoJ25ldG8nID0+ICdTU1NTMDAwMCcpLA0KCQkJCSksDQoJCQkpDQoJCQ0KCQkpOw0KCQkNCgkJDQoJCSRmZ2x5cjEgPSBuZWVubCgNCgkJCSdueXZ0YXpyYWcnID0+IG5lZW5sKA0KCQkJCSd1YmV2bWJhZ255JyA9PiBDVUNSa3ByeV9GZ2x5cl9OeXZ0YXpyYWc6OlVCRVZNQkFHTllfUFJBR1JFLA0KCQkJCSdpcmVndnBueScgPT4gQ1VDUmtwcnlfRmdseXJfTnl2dGF6cmFnOjpJUkVHVlBOWV9QUkFHUkUNCgkJCSkNCgkJKTsNCgkJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoMCktPmZyZ0d2Z3lyKCJFUlhOQyBRQlhIWlJBIFJLQ0JFRyIpOyANCgkJJHJrcHJ5LT5mcmdOcGd2aXJGdXJyZ1ZhcXJrKDApOw0KCQ0KCQkNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJRlJZUlBHDQoJCQlvcF9iaGdfdXJucXJlX3ZxLA0KCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCW9wX2JoZ19xYnhoenJhX3ZxLA0KCQkJeGJxclFieGh6cmEsDQoJCQlhYnpiZU53aCwNCgkJCWFiUW5zZ25lLA0KCQkJZ25hdHRueXFuc2duZSwNCgkJCXhicXJYbmFnYmUsDQoJCQlwaGZnYnpyZSwNCgkJCW55bnpuZ19jcmF0aGZudW4sDQoJCQljcmF0aGZudW4sDQoJCQl4YnFyT3JhcXJlbiwNCgkJCXhicXJWYXBiZ3JleiwNCgkJCXhicXJJbnloZ24sDQoJCQlhcWNveiwNCgkJCWFiemJlVmFpYnZwciwNCgkJCWduYXR0bnlWYWlidnByLA0KCQkJYWJ6YmVfb3ksDQoJCQlnbmF0dG55X295LA0KCQkJeGJxck9uZW5hdCwNCgkJCWhlbnZuYSwNCgkJCXhicXJGbmdobmFPbmVuYXQsDQoJCQl3aHp5bnVGbmdobmEsDQoJCQl1bmV0bkZuZ2huYSwNCgkJCWdiZ255QXZ5bnZPbmVuYXQsDQoJCQlnYmdueUF2eW52T25lbmF0RWMNCgkJU0VCWg0KCQlxb2IuaXZyal9lcmNiZWdfcWJwX2JoZw0KCQlqdXJlciAkanVyZXINCgkJIik7DQoNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAiIjsNCgkJJG9wX2JoZ19xcmdudnlfdnEgPSAiIjsNCgkJJG9wX2JoZ19xYnhoenJhX3ZxID0gIiI7DQoJCSR4YnFyUWJ4aHpyYSA9ICIiOw0KCQkkYWJ6YmVOd2ggPSAiIjsNCgkJJGFiUW5zZ25lID0gIiI7DQoJCSRnbmF0dG55cW5zZ25lID0gIiI7DQoJCSR4YnFyWG5hZ2JlID0gIiI7DQoJCSRwaGZnYnpyZSA9ICIiOw0KCQkkY3JhdGhmbnVuID0gIiI7DQoJCSRueW56bmdfY3JhdGhmbnVuID0gIiI7DQoJCSR4YnFyT3JhcXJlbiA9ICIiOw0KCQkkeGJxclZhcGJncmV6ID0gIiI7DQoJCSR4YnFySW55aGduID0gIiI7DQoJCSRhcWNveiA9IDA7DQoJCSRhYnpiZVZhaWJ2cHIgPSAiIjsNCgkJJGduYXR0bnlWYWlidnByID0gIiI7DQoJCSRhYnpiZV9veSA9ICIiOw0KCQkkZ25hdHRueV9veSA9ICIiOw0KCQkkeGJxck9uZW5hdCA9ICIiOw0KCQkkaGVudm5hID0gIiI7DQoJCSR4YnFyRm5naG5hT25lbmF0ID0gIiI7DQoJCSR3aHp5bnVGbmdobmEgPSAwOw0KCQkkdW5ldG5GbmdobmEgPSAwOw0KCQkkZ2JnbnlBdnludk9uZW5hdCA9IDA7DQoJCSRnYmdueUF2eW52T25lbmF0RWMgPSAwOw0KDQoJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCSRvcF9iaGdfdXJucXJlX3ZxPSAkZS0+b3BfYmhnX3VybnFyZV92cTsNCgkJCSRvcF9iaGdfcXJnbnZ5X3ZxPSAkZS0+b3BfYmhnX3FyZ252eV92cTsNCgkJCSRvcF9iaGdfcWJ4aHpyYV92cT0gJGUtPm9wX2JoZ19xYnhoenJhX3ZxOw0KCQkJJHhicXJRYnhoenJhPSAkZS0+eGJxclFieGh6cmE7DQoJCQkkYWJ6YmVOd2g9ICRlLT5hYnpiZU53aDsNCgkJCSRhYlFuc2duZSA9ICRlLT5hYlFuc2duZTsNCgkJCSRnbmF0dG55cW5zZ25lID0gJGUtPmduYXR0bnlxbnNnbmU7DQoJCQkkeGJxclhuYWdiZSAgPSAkZS0+eGJxclhuYWdiZTsNCgkJCSRwaGZnYnpyZSAgPSAkZS0+cGhmZ2J6cmU7DQoJCQkkY3JhdGhmbnVuICA9ICRlLT5jcmF0aGZudW47DQoJCQkkbnluem5nX2NyYXRoZm51biAgPSAkZS0+bnluem5nX2NyYXRoZm51bjsNCgkJCSR4YnFyT3JhcXJlbiAgPSAkZS0+eGJxck9yYXFyZW47DQoJCQkkeGJxclZhcGJncmV6ICA9ICRlLT54YnFyVmFwYmdyZXo7DQoJCQkkeGJxcklueWhnbj0gJGUtPnhicXJJbnloZ247DQoJCQkkYXFjb3o9ICRlLT5hcWNvejsNCgkJCSRhYnpiZVZhaWJ2cHI9ICRlLT5hYnpiZVZhaWJ2cHI7DQoJCQkkZ25hdHRueVZhaWJ2cHI9ICRlLT5nbmF0dG55VmFpYnZwcjsNCgkJCSRhYnpiZV9veT0gJGUtPmFiemJlX295Ow0KCQkJJGduYXR0bnlfb3k9ICRlLT5nbmF0dG55X295Ow0KCQkJJHhicXJPbmVuYXQ9ICRlLT54YnFyT25lbmF0Ow0KCQkJJGhlbnZuYT0gJGUtPmhlbnZuYTsNCgkJCSR4YnFyRm5naG5hT25lbmF0PSAkZS0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCSR3aHp5bnVGbmdobmE9ICRlLT53aHp5bnVGbmdobmE7DQoJCQkkdW5ldG5GbmdobmE9ICRlLT51bmV0bkZuZ2huYTsNCgkJCSRnYmdueUF2eW52T25lbmF0ID0gJGUtPmdiZ255QXZ5bnZPbmVuYXQ7DQoJCQkkZ2JnbnlBdnludk9uZW5hdEVjID0gJGUtPmdiZ255QXZ5bnZPbmVuYXRFYzsNCg0KCQl9DQoJCQ0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCdOMScsICJDRyBRSEdOIE5FR1VOIEZSWU5FTkYiLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoJ04yJywgZmdlZ2JoY2NyZSgiV3kuIE9uZ2hhaGF0dG55IFZhcW51IFZWIEFiLjQ4LCBFSi5FUS0yOSwgWnJhdHRyZSwgWHJwLiBPbmFxaGF0IFh2cWh5IiksIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygnTjUnLCAiQ1JFVkJRUiA6ICIgLiAkZmduZWdxbmdyIC4gIiBGL1EgIiAuICRyYXFxbmdyICxDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCS8vJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiUjUiKS0+dHJnTnl2dGF6cmFnKCktPmZyZ1ViZXZtYmFnbnkoQ1VDUmtwcnlfRmdseXJfTnl2dGF6cmFnOjpVQkVWTUJBR05ZX0VWVFVHKTsNCgkJLy8kcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPnRyZ0ZnbHlyKCJPODpUOCIpLT5uY2N5bFNlYnpOZWVubCgkc3Z5eSk7DQoJCQ0KCQkkdiA9IDEwOw0KCQkkeSA9IDE7DQoJCSR3enlmbmcgPSAwOw0KCQkkVW5ldG5GbmcgPSAwOw0KCQkkd3p5a3VuZXRuID0gMDsNCgkJJG9iYWhmID0gMDsNCgkJJHF2ZnhiYTEgPSAwOw0KCQkkcXZmeGJhMiA9IDA7DQoJCSRxdmZ4YmEyID0gMDsNCgkJJHF2ZnhiYTMgPSAwOw0KCQkkZ2JnX3F2ZnhiYSA9IDA7DQoJCSRxY2MgPSAwOw0KCQkkZGdsID0gMDsNCgkJJGFxY296ID0gMDsNCgkJJGdiZ255QXZ5bnZPbmVuYXQgPSAwOw0KCQkkZ2JnbnlBdnludk9uZW5hdEVjID0gMDsNCgkJDQoJCSRrID0kdiArIDI7DQoJCQ0KCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiTiR2IiwgJHkpOwkNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIk8kdiIsICRlLT54YnFyUWJ4aHpyYSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlAkdiIsICRlLT5hYnpiZU53aCAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlEkdiIsICRlLT5hYlFuc2duZSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlIkdiIsICRlLT5nbmF0dG55cW5zZ25lICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiUyR2IiwgJGUtPnhicXJYbmFnYmUgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJUJHYiLCAkZS0+Y3JhdGhmbnVuICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVSR2IiwgJGUtPm55bnpuZ19jcmF0aGZudW4gLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJWJHYiLCAkZS0+eGJxclZhcGJncmV6ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiVyR2IiwgJGUtPnhicXJJbnloZ24gLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiWCR2IiwgJGUtPmFxY296KTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIlkkdiIsICRlLT5hYnpiZVZhaWJ2cHIgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJaJHYiLCAkZS0+Z25hdHRueVZhaWJ2cHIgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJBJHYiLCAkZS0+YWJ6YmVfb3kgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnloclJrY3l2cHZnKCJCJHYiLCAkZS0+Z25hdHRueV9veSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkMkdiIsICRlLT54YnFyT25lbmF0ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiRCR2IiwgJGUtPmhlbnZuYSAsIENVQ1JrcHJ5X1ByeXlfUW5nbkdsY3I6OkdMQ1JfRkdFVkFUKTsNCgkJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyUmtjeXZwdmcoIkUkdiIsICRlLT54YnFyRm5naG5hT25lbmF0ICwgQ1VDUmtwcnlfUHJ5eV9RbmduR2xjcjo6R0xDUl9GR0VWQVQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkYkdiIsICRlLT53aHp5bnVGbmdobmEpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkckdiIsICRlLT51bmV0bkZuZ2huYSk7DQoJCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiSCR2IiwgJGUtPmdiZ255QXZ5bnZPbmVuYXQpOw0KCQkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkkkdiIsICRlLT5nYmdueUF2eW52T25lbmF0RWMpOw0KCQkJDQoJCQkvLyRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIk4kdjpMJHYiKS0+bmNjeWxTZWJ6TmVlbmwoJGZnbHlyb2JlcXJlKTsNCg0KCQkJJGdiZ255QXZ5bnZPbmVuYXQgPSAkZ2JnbnlBdnludk9uZW5hdCArICRlLT5nYmdueUF2eW52T25lbmF0Ow0KCQkJJGdiZ255QXZ5bnZPbmVuYXRFYyA9ICRnYmdueUF2eW52T25lbmF0RWMgKyAkZS0+Z2JnbnlBdnludk9uZW5hdEVjOw0KCQkJLyokVW5ldG5GbmcgPSAkVW5ldG5GbmcgKyAkZS0+VW5ldG5Gbmc7DQoJCQkkd3p5a3VuZXRuID0gJHd6eWt1bmV0biArICRlLT53enlrdW5ldG47DQoJCQkkcXZmeGJhMSA9ICRxdmZ4YmExICsgJGUtPnF2ZnhiYTE7DQoJCQkkcXZmeGJhMiA9ICRxdmZ4YmEyICsgJGUtPnF2ZnhiYTI7DQoJCQkkY3ZoZ25hdCA9ICRjdmhnbmF0ICsgJGUtPmN2aGduYXQ7DQoJCQkkcWNjID0gJHFjYyArICRlLT5xY2M7DQoJCQkkY2NhID0gJGNjYSArICRlLT5jY2E7ICovDQoNCgkJCSR2Kys7DQoJCQkkeSsrOw0KCQkJJGsrKzsNCgkJfQ0KDQoJCSR3ID0gJHYgKzE7DQoJCS8qICRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJVJHciLCAkd3p5Zm5nKTsJDQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJWJHciLCAkb2JhaGYpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiVyR3IiwgJFVuZXRuRm5nKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIlgkdyIsICR3enlrdW5ldG4pOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiWSR3IiwgJHF2ZnhiYTEpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiWiR3IiwgJHF2ZnhiYTIpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiQSR3IiwgJGN2aGduYXQpOw0KCQkkcmtwcnktPnRyZ05wZ3ZpckZ1cnJnKCktPmZyZ1ByeXlJbnlocigiQiR3IiwgJHFjYyk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+ZnJnUHJ5eUlueWhyKCJDJHciLCAkY2NhKTsgKi8NCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkgkdyIsICRnYmdueUF2eW52T25lbmF0KTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHIoIkkkdyIsICRnYmdueUF2eW52T25lbmF0RWMpOw0KCQkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT5mcmdQcnl5SW55aHJSa2N5dnB2ZygiRyR3IiwgIkdCR05ZICAgOiIgLCBDVUNSa3ByeV9Qcnl5X1FuZ25HbGNyOjpHTENSX0ZHRVZBVCk7DQoJCSRya3ByeS0+dHJnTnBndmlyRnVycmcoKS0+dHJnRmdseXIoIkckdyIpLT50cmdOeXZ0YXpyYWcoKS0+ZnJnVWJldm1iYWdueShDVUNSa3ByeV9GZ2x5cl9OeXZ0YXpyYWc6OlVCRVZNQkFHTllfRVZUVUcpOwkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiRyR3OkckdyIpLT5uY2N5bFNlYnpOZWVubCgkZmdseXJOZWVubFZnbnl2cCk7CQ0KCQkNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiWDEwOlgxMDAwMCIpLT50cmdBaHpvcmVTYmV6bmcoKS0+ZnJnU2Jlem5nUGJxcignIywjIzAuMDAnKTsNCgkJJHJrcHJ5LT50cmdOcGd2aXJGdXJyZygpLT50cmdGZ2x5cigiRjEwOkkxMDAwMCIpLT50cmdBaHpvcmVTYmV6bmcoKS0+ZnJnU2Jlem5nUGJxcignIywjIzAuMDAnKTsNCgkJDQoJCXZzKCRndmNyID09ICdLWUYnKXsgDQoJCQkkc3Z5cmFuenI9J0VSWE5DX1FCWEhaUkFfUktDQkVHX0NSRVZCUVJfJy4gJGZnbmVncW5nciAgLiAnX0ZRXycgLiAkcmFxcW5nciAgLicua3lmJzsNCgkJCXVybnFyZSgnUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS9pYXEuemYtcmtwcnknKTsgDQoJCQl1cm5xcmUoJ1BiYWdyYWctUXZmY2Jmdmd2YmE6IG5nZ25wdXpyYWc7c3Z5cmFuenI9IicuJHN2eXJhbnpyLiciJyk7IA0KCQkJdXJucXJlKCdQbnB1ci1QYmFnZWJ5OiB6bmstbnRyPTAnKTsNCgkJCSRib3dKZXZncmUgPSBDVUNSa3ByeV9WQlNucGdiZWw6OnBlcm5nckpldmdyZSgkcmtwcnksICdSa3ByeTUnKTsNCgkJCSRib3dKZXZncmUtPmZuaXIoJ2N1YzovL2JoZ2NoZycpOw0KCQkJcmt2ZzsJDQoJCX0gcnlmciB7IA0KCQkJJHN2eXJhbnpyID0gIllOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5reWYiOw0KCQkJJGJvd0pldmdyZSA9IENVQ1JrcHJ5X1ZCU25wZ2JlbDo6cGVybmdySmV2Z3JlKCRya3ByeSwgJ1JrcHJ5NScpOw0KCQkJJGJvd0pldmdyZS0+Zm5pcignUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXCcgLiAkc3Z5cmFuenIpOw0KCQkJDQoJCQkkY2xmcGV2Y2cgPSAnUDpcXGpuemNcXGpqalxccmtwcnlcXGNubHpyYWdcXGVyY2JlZ19nZXZueV9vbnluYXByLmNsJzsNCgkJCSRjbGd1YmEgPSAnUDpcXFxDbGd1YmEzMTBcXGNsZ3ViYS5ya3InOw0KCQkJcmtycCgiJGNsZ3ViYSAkY2xmcGV2Y2ciLCAkYmhnY2hnKTsNCgkJCS8vaW5lX3FoemMoJGJoZ2NoZyk7IA0KCQkJDQoJCQkkc3Z5ckNuZ3U9J1A6XFxqbnpjXFxqampcXHJrcHJ5XFxjbmx6cmFnXFxZTkNCRU5BX0NSQVdITllOQV9XUkFWRl9PTkVOQVQuY3FzJzsNCgkJCXZzICghc3Z5cl9ya3ZmZ2YoJHN2eXJDbmd1KSkgew0KCQkJCXJwdWIgIkd1ciBzdnlyICRzdnlyQ25ndSBxYnJmIGFiZyBya3ZmZyI7DQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkkc3Z5cmFuenJrID0gJ1lOQ0JFTkFfQ1JBV0hOWU5BX1dSQVZGX09ORU5BVC5jcXMnOw0KCQkJdXJucXJlKCdQYmFncmFnLWdsY3I6bmNjeXZwbmd2YmEvY3FzJyk7DQoJCQl1cm5xcmUoJ1BiYWdyYWctcXZmY2Jmdmd2YmE6IHZheXZhcjsgc3Z5cmFuenI9IicuJHN2eXJhbnpyay4nIicpOw0KCQkJdXJucXJlKCdwYmFncmFnLUdlbmFmc3JlLVJhcGJxdmF0Om92YW5lbCcpOw0KCQkJdXJucXJlKCdOcHByY2ctRW5hdHJmOm9sZ3JmJyk7DQoJCQkvL3pyem9ucG4gcW5hIHpyYW56Y3Z5eG5hIHN2eXINCgkJCWVybnFzdnlyKCRzdnlyQ25ndSk7DQoJCQlya3ZnOwkJCQkNCgkJfQ0KCQkNCgl9DQoJDQoJc2hhcGd2YmEgdHJnX3hoZWZfaygpew0KCQkvLyRWUV9VUk5RUkUgPSAodmZmcmcoJF9DQkZHWydlVlEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snZVZRJ10pKT8kX0NCRkdbJ2VWUSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRYQlFSX0lOWUhHTiA9ICh2ZmZyZygkX0NCRkdbJ3hicXJJbnloZ24nXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxcklueWhnbiddKSk/JF9DQkZHWyd4YnFySW55aGduJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDdnl2dSBHcmV5cm92dSBRbnVoeWggUW5nbiBPbmVuYXQhIn0nKTsNCgkJJEdOQVRUTllfTldIID0gKHZmZnJnKCRfQ0JGR1snZ25hdHRueU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydnbmF0dG55TndoJ10pKT8kX0NCRkdbJ2duYXR0bnlOd2gnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGd0eSBndnFueCBxdmdyemh4bmEhIn0nKTsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiICANCgkJCWZyeXJwZyBbcW9iXS5bc194aGVmXSgnJFhCUVJfSU5ZSEdOJywnJEdOQVRUTllfTldIJykgIG5mIGFxY296IA0KCQkNCgkJIik7DQoJCSRhcWNveiA9ICcwJzsNCgkJc2Jlcm5wdSAoJGQtPmVyZmh5ZygpIG5mICRlKXsNCgkJCSRhcWNveiA9ICRlLT5hcWNvejsNCgkJfQ0KCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRYQlFSX0lOWUhHTiwnenJmZm50cic9PiRhcWNveiwncW5nbkZnbmdoZic9PiRHTkFUVE5ZX05XSCAgKSk7DQoJfQ0KCQ0KCXNoYXBndmJhIHRyZ194aGVmKCl7CQ0KCQkkZ3V2Zi0+eWJ0dmFfcHJ2Zm5fYXJqKCk7DQoJCSRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KDQoJCSRYQlFSX0lOWUhHTiA9ICh2ZmZyZygkX0NCRkdbJ3hicXJJbnloZ24nXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxcklueWhnbiddKSk/JF9DQkZHWyd4YnFySW55aGduJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDdnl2dSBHcmV5cm92dSBRbnVoeWggUW5nbiBPbmVuYXQhIn0nKTsNCgkJJEdOQVRUTllfTldIID0gKHZmZnJnKCRfQ0JGR1snZ25hdHRueU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydnbmF0dG55TndoJ10pKT8kX0NCRkdbJ2duYXR0bnlOd2gnXToiIjsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xJyk7DQoNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi94aGVmLyRYQlFSX0lOWUhHTiI7DQoJCQ0KCQkvLyBycHViKCRYQlFSX0lOWUhHTik7DQoJCS8vIHF2cigpOw0KDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19IRVksICRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19FUkdIRUFHRU5BRlNSRSwgZ2Vocik7DQoNCgkJJHVybnFyZWYgPSBuZWVubCgNCgkJICAgIk5oZ3ViZXZtbmd2YmE6IE9ybmVyZSAkZ2J4cmEiLA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIg0KCQkpOw0KCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfVUdHQ1VSTlFSRSwgJHVybnFyZWYpOw0KCQkvL3NiZSBxcm9odCBiYXlsIQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMQ1JSRSwgc255ZnIpOw0KDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJcGhleV9weWJmcigkcGhleSk7DQoJCQ0KCQkkZXJmaHlnID0gd2ZiYV9xcnBicXIoJGVyZmMsZ2Vocik7DQoJCQ0KCQkvLyBjZXZhZ19lKCRlcmZoeWcpOw0KCQkNCgkJJGZnbmdoZiA9ICJTbnZ5cnEiOw0KCQkkeGhlZiA9IDA7DQoJCQ0KCQl2cyh2ZmZyZygkZXJmaHlnWyd6cmZmbnRyJ10pKXsNCgkJCSRmZ25naGYgPSAkZXJmaHlnWyd6cmZmbnRyJ107DQoJCQ0KCQkJdnModmZmcmcoJGVyZmh5Z1sncW5nbiddKSl7DQoJCQkJJHhoZWYgPSAkZXJmaHlnWydxbmduJ11bMF1bJ2F2eW52WGhlZiddOw0KCQkJfQ0KCQkNCgkJfQ0KCQkNCgkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4kWEJRUl9JTllIR04sJ3pyZmZudHInPT4keGhlZiwncW5nbkZnbmdoZic9PiRHTkFUVE5ZX05XSCAgKSk7DQoJfSANCg0KCXNoYXBndmJhIHlidHZhX3BydmZuX2Fyaigpew0KCQkvL2ZyZmZ2YmFfZmduZWcoKTsNCgkJJGhmcmVhbnpyID0gInl2eXZyZiI7DQoJCSRjbmZmamJlcSA9ICJDdmdmMDUyMDIxIjsNCg0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9heXItYm5oZ3UvaTEvaGZyZS95YnR2YSI7DQoJCQ0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIiwNCgkJKTsNCgkJJHFuZ24gPSB3ZmJhX3JhcGJxcihuZWVubCgnaGZyZWFuenInPT4kaGZyZWFuenIsICdjbmZmamJlcSc9PiRjbmZmamJlcSkpOw0KCS8vCXJwdWIgJHFuZ247DQoJLy8JcXZyKCk7DQoJCQ0KCQkkcGhleSA9IHBoZXlfdmF2ZygkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGRywgZ2Vocik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCgkJLy92YXYgdXJucXJlYWxuDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJLy9xdnh2ZXZ6IHF2ZnZhdg0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHU1ZSWVFGLCAkcW5nbik7DQoNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCg0KCQkkZXJmYyA9IHBoZXlfcmtycCgkcGhleSk7DQoJCS8vZXJmYyB1bmZ2eSBxbmV2IGZyZWlyZQ0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCgkJDQoJCQ0KCQkkbmVlID0gbmVlbmwoKTsNCgkJJG5lZSA9IHdmYmFfcXJwYnFyKCRlcmZjLCBnZWhyKTsNCgkJDQoJCS8vIHZzIChuZWVubF94cmxfcmt2ZmdmKCJSa3ByY2d2YmEiLCRuZWUpKQ0KCQkgIC8vIHsNCgkJCS8vIHJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+J1Zhc2Jlem5mdjonLCd6cmZmbnRyJyA9PiRuZWVbJ1JrcHJjZ3ZiYSddKSk7CQ0KCQkJLy8gcXZyKCk7DQoJCSAgLy8gfQ0KCQkgIA0KCQkkZ3V2Zi0+ZnJmZnZiYS0+ZnJnX2hmcmVxbmduKCdmX2dieHJhJywgJG5lZVsidmdyeiJdWyJucHByZmZfZ2J4cmEiXSk7DQoJCQ0KCQkkZXJmY2JhX3lidHZhID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkNCgkJDQoJCS8vIHZzKCRlcmZjYmFfeWJ0dmFbJ2ZnbmdoZiddKXsNCgkJDQoJCQkvLyBycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRlcmZjYmFfeWJ0dmFbJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZXJmY2JhX3lidHZhWyd6cmZmbnRyJ10pKTsJDQoJCS8vIH0NCg0KCX0gDQoJDQoJc2hhcGd2YmEgeWJ0dmFfcHJ2Zm4oKXsNCgkJLy8kaGZyZWFuenIgPSAieXZ5dnJmIjsNCgkJLy8kY25mZmpiZXEgPSAiQ3ZnZjA1MjAyMSI7DQoJCWZyZmZ2YmFfZmduZWcoKTsNCgkJJGhmcmVhbnpyID0gKHZmZnJnKCRfQ0JGR1snaGZyZWFuenInXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snaGZyZWFuenInXSkpPyRfQ0JGR1snaGZyZWFuenInXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGhmcmVhbnpyIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRjbmZmamJlcSA9ICh2ZmZyZygkX0NCRkdbJ2NuZmZqYmVxJ10pICYmICFyemNnbCgkX0NCRkdbJ2NuZmZqYmVxJ10pKT8kX0NCRkdbJ2NuZmZqYmVxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBDbmZmamJlcSBHdnFueCBRdmdyemh4bmEifScpOw0KDQoJCS8vJGhleSA9ICJ1Z2djZjovL2F5cnVoby54cnpyYXhyaC50Yi52cS9uaGd1LW56amYvaTEvaGZyZS95YnR2YSI7DQoJCSRoZXkgPSAidWdnY2Y6Ly9uY3ZmLXRqLm9ybnBoeG52LnRiLnZxL2F5ci1ibmhndS9pMS9oZnJlL3lidHZhIjsNCgkJDQoJCSR1cm5xcmVmID0gbmVlbmwoDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiLA0KCQkpOw0KCQkkcW5nbiA9IHdmYmFfcmFwYnFyKG5lZW5sKCdoZnJlYW56cic9PiRoZnJlYW56ciwgJ2NuZmZqYmVxJz0+JGNuZmZqYmVxKSk7DQoJLy8JcnB1YiAkcW5nbjsNCgkvLwlxdnIoKTsNCgkJDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19IRVksICRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHLCBnZWhyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRVJHSEVBR0VOQUZTUkUsIGdlaHIpOw0KCQkvL3ZhdiB1cm5xcmVhbG4NCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfVUdHQ1VSTlFSRSwgJHVybnFyZWYpOw0KCQkvL3F2eHZldnogcXZmdmF2DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0NCRkdTVlJZUUYsICRxbmduKTsNCg0KCQkvL3NiZSBxcm9odCBiYXlsIQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMQ1JSRSwgc255ZnIpOw0KDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJLy9lcmZjIHVuZnZ5IHFuZXYgZnJlaXJlDQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KCQkNCgkJDQoJCSRuZWUgPSBuZWVubCgpOw0KCQkkbmVlID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkNCgkJdnMgKG5lZW5sX3hybF9ya3ZmZ2YoIlJrcHJjZ3ZiYSIsJG5lZSkpDQoJCSAgew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4nVmFzYmV6bmZ2OicsJ3pyZmZudHInID0+JG5lZVsnUmtwcmNndmJhJ10pKTsJDQoJCQlxdnIoKTsNCgkJICB9DQoJCSAgDQoJCSRndXZmLT5mcmZmdmJhLT5mcmdfaGZyZXFuZ24oJ2ZfZ2J4cmEnLCAkbmVlWyJ2Z3J6Il1bIm5wcHJmZl9nYnhyYSJdKTsNCgkJDQoJCSRlcmZjYmFfeWJ0dmEgPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCQ0KCQkNCgkJdnMoJGVyZmNiYV95YnR2YVsnZmduZ2hmJ10pew0KCQkNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+JGVyZmNiYV95YnR2YVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfeWJ0dmFbJ3pyZmZudHInXSkpOwkNCgkJfQ0KCQ0KDQoJfSANCgkNCglzaGFwZ3ZiYSB4dmV2el9xbmduX2diX3BydmZuX3JrYygpew0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9lcmRocmZnX3FyZ252eV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkvLyRnYnhyYSA9ICh2ZmZyZygkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkgJiYgIXJ6Y2dsKCRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpKSk/JGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk6cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsgDQoJCSRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KCQkNCgkJLy8kaGV5ID0gInVnZ2NmOi8vYXlydWhvLnhyenJheHJoLnRiLnZxL2JjcmFuY3YvcWJwaHpyYWciOw0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCgkJDQoJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJIEZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLG5mbnlRbmduDQoJCQkJCSAgLHBuZmcobmZoZW5hZnYgbmYgcXJwdnpueSgxOCwyKSkgbmYgbmZoZW5hZnYNCgkJCQkJICAsb3ZubG5DcmF0aGVuYXQNCgkJCQkJICAsb3ZubG5HbnpvbnVuYQ0KCQkJCQkgICxwbmZnKG9laGdiIG5mIHFycHZ6bnkoMTgsNCkpIG5mIG9laGdiDQoJCQkJCSAgLHBuZmcocHZzIG5mIHFycHZ6bnkoMTgsMikpIG5mIHB2cw0KCQkJCQkgICxwdnNFaGN2bnUNCgkJCQkJICAsJzEnIG5mIHF2ZnB5bnZ6cmUNCgkJCQkJICAsJzInIG5mIHN5bnRQaGVudQ0KCQkJCQkgICwnMicgbmYgc3ludFp2dG5mDQoJCQkJCSAgLHN5bnRJcQ0KCQkJCQkgICxwbmZnKHNibyBuZiBxcnB2em55KDE4LDIpKSBuZiBzYm8NCgkJCQkJICAscG5mZyhzZXJ2dHVnIG5mIHFycHZ6bnkoMTgsMikpIG5mIHNlcnZ0dWcNCgkJCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIGZyZXZSYWd2Z25mKSBORiB2cUNyYXR0aGFuDQoJCQkJCSAgLHZxQ3JhdG5hdHhoZw0KCQkJCQkgICx3bm9uZ25hR2dxDQoJCQkJCSAgLHdoenludVhiYWdudmFyZQ0KCQkJCQkgICx3aHp5bnVHbmFxbkNyYXRuem5hDQoJCQkJCSAgLHhicXJOZmhlbmFmdg0KCQkJCQkgICx4YnFyUG5lbk9ubG5lDQoJCQkJCSAgLHhicXJQbmVuUW50bmF0DQoJCQkJCSAgLHhicXJRYnhoenJhDQoJCQkJCSAgLHhicXJWYXBiZ3Jleg0KCQkJCQkgICxWRkFIWVkoeGJxcldyYXZmQ2ViZnJxaGUsICcnKSBORiB4YnFyV3JhdmZDZWJmcnFoZQ0KCQkJCQkgICx4YnFyV3JhdmZSeGZjYmUNCgkJCQkJICAsdmZhaHl5KHhicXJXcmF2ZkF2eW52LCcnKSBuZiB4YnFyV3JhdmZBdnludg0KCQkJCQkgICx4YnFyV3JhdmZHY28NCgkJCQkJICAseGJxclhuYWdiZQ0KCQkJCQkgICx4YnFyWG5hZ2JlT2JhdHhuZQ0KCQkJCQkgICx4YnFyWG5hZ2JlUnhmY2JlDQoJCQkJCSAgLHhicXJYbmFnYmUgbmYgeGJxclhuYWdiZVpobmcNCgkJCQkJICAseGJxclhuYWdiZUNyZXZ4Zm4NCgkJCQkJICAseGJxclhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLHhicXJYcmFuQ253bngNCgkJCQkJICAseGJxcllieG5mdg0KCQkJCQkgICx4YnFyWWJ4bmZ2T25sbmUNCgkJCQkJICAsWWJ4bmZ2T25sbmUNCgkJCQkJICAseGJxckFydG5lbkdod2huYQ0KCQkJCQkgICx4YnFyQ3J5T2JhdHhuZQ0KCQkJCQkgICx4YnFyQ3J5UnhmY2JlDQoJCQkJCSAgLHhicXJDcnlaaG5nDQoJCQkJCSAgLHhicXJDcnlHZW5hZnZnDQoJCQkJCSAgLHhicXJDcnlHaHdobmENCgkJCQkJICAseGJxckNyem9ubG5lDQoJCQkJCSAgLHhicXJHdmNyVW5ldG4NCgkJCQkJICAseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAseGJxckdjZg0KCQkJCQkgICx4YnFySW55aGduDQoJCQkJCSAgLHhiZ25HZ3ENCgkJCQkJICAsUmFndmduZg0KCQkJCQkgICxSYWd2Z25mMQ0KCQkJCQkgICxSYWd2Z25mMg0KCQkJCQkgICxSYWd2Z25mMw0KCQkJCQkgICxSYWd2Z25mNA0KCQkJCQkgICxhbnpuR2dxDQoJCQkJCSAgLHBuZmcoYXFjb3ogbmYgcXJwdnpueSgxOCw0KSkgbmYgYXFjb3oNCgkJCQkJICAscG5mZyhhcmdnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBhcmdnYg0KCQkJCQkgICxhdnludk9uZW5hdA0KCQkJCQkgICxhdnludlZhcGJncmV6DQoJCQkJCSAgLHBuZmcoYXZ5bnZabnh5YmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgYXZ5bnZabnh5YmENCgkJCQkJICAsYXZ5bnZXbmZuDQoJCQkJCSAgLGhuYXRaaHhuDQoJCQkJCSAgLEVSQ1lOUFIoYWJ6YmVOd2gsICctJywgJycpIE5GIGFiemJlTndoDQoJCQkJCSAgLGFiemJlT3AxMQ0KCQkJCQkgICxWRkFIWVkoY2JmT3AxMSwgJycpIE5GIGNiZk9wMTENCgkJCQkJICAsY3JhdG5hdHhoZw0KCQkJCQkgICxmcmV2DQoJCQkJCSAgLGZyZXZSYWd2Z25mDQoJCQkJCSAgLGZyZXZSYWd2Z25mMQ0KCQkJCQkgICxmcmV2UmFndmduZjINCgkJCQkJICAsZnJldlJhZ3ZnbmYzDQoJCQkJCSAgLGZyZXZSYWd2Z25mNA0KCQkJCQkgICxWRkFIWVkoZmhvY2JmT3AxMSwgJycpIE5GIGZob2NiZk9wMTENCgkJCQkJICAsZmduZ2hmDQoJCQkJCSAgLGdyemNuZ0ZnaHNzdmF0DQoJCQkJCSAgLGduYXR0bnlOd2gNCgkJCQkJICAsZ3R5Tnh1dmVPcmV5bnhoDQoJCQkJCSAgLGd0eU5qbnlPcmV5bnhoDQoJCQkJCSAgLGduYXR0bnlPcDExDQoJCQkJCSAgLGduYXR0bnlRbnNnbmUNCgkJCQkJICAsZ25hdHRueVJ4ZmNiZQ0KCQkJCQkgICxnbmF0dG55Q3Jldnhmbg0KCQkJCQkgICxnbmF0dG55R2dxDQoJCQkJCSAgLHBuZmcoZ2JnbnlRbmFuRm5qdmcgbmYgcXJwdnpueSgxOCwyKSkgbmYgZ2JnbnlRbmFuRm5qdmcNCgkJCQkJICAseGJxck9yYXFyZW4NCgkJCQkJICAsaWJ5aHpyDQoJCQkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkJCSAgLGF2eA0KCQkJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCQkJICAsYWJRbnNnbmUNCgkJCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCQkJICAsZnJldkNyYXRuYXR4aGcNCgkJCQkJICAseGJxck9uYXgNCgkJCQkJICAsZnJldk9uYXgNCgkJCQkJICAsd2h6eW51UGJhZ252YXJlDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxclhuYWdiZUdod2huYQ0KCQkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZUaHFuYXQNCgkJCQkJICAseGJxckdod2huYUdjbw0KCQkJCQkgICxhbnpuQ3ZwDQoJCQkJCSAgLG55bnpuZw0KCQkJCQkgICxhYnpiZUdyeWNDdnANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlNDANCgkJCQkJICAsd2h6eW51V3JhdmZPbmVuYXQNCgkJCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkgICx4YnFyV3JhdmZDbmVnQnMNCgkJCQkJICAsZ25hdHRueUN4bw0KCQkJCQkgICxpcQ0KCQkJCQkgICxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSAgLFdyYXZmR2NvDQoJCQkJCSAgLEdod2huYUdjbw0KCQkJCQkgICxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSAgLFBuZW5OYXR4aGcNCgkJCQkJICAsWHJhbkNud254DQoJCQkJCSAgLE5maGVuYWZ2X2d2Y3INCgkJCQkJICAsT25heA0KCQkJCQkgICxZYnhuZnYNCgkJCQkJICAsR2NmDQoJCQkJCSAgLFBuZW5PbmxuZQ0KCQkJCQkgICxQbmVuUW50bmF0DQoJCQkJCSAgLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLFdyYXZmUnhmY2JlDQoJCQkJCSAgLFdyYXZmQXZ5bnYNCgkJCQkJICAsV3JhdmZYcnpuZm5hDQoJCQkJCSAgLFdyYXZmQ2ViZnJxaGUNCgkJCQkJICAsVmFwYmdyZXoNCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJG5lZSA9IG5lZW5sKCk7DQoJCSRuZW8gPSBuZWVubCgpOw0KCQkkbmVvcSA9IG5lZW5sKCk7DQoJCSRuZWcgPSBuZWVubCgpOw0KCQkkbmVpcSA9IG5lZW5sKCk7DQoJCSRuZWZ4ID0gbmVlbmwoKTsNCgkJJG5lb2MgPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZiA9IG5lZW5sKCk7DQoJCSRuZV9yYWd2Z25mX2NyenZ5dnggPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZl9jcnpvcnl2ID0gbmVlbmwoKTsNCgkJJG5lX3JhZ3ZnbmZfY3JhcmV2em4gPSBuZWVubCgpOw0KCQkkbmVfeHJ6bmZuYSA9IG5lZW5sKCk7DQoJCSRuZV94YmFnbnZhcmUgPSBuZWVubCgpOw0KCQkkbmVfcWJ4aHpyYSA9IG5lZW5sKCk7DQoJCSRuZV9jcmF0bmF0eGhnID0gbmVlbmwoKTsNCgkJJG5lX29uYXggPSBuZWVubCgpOw0KCQkkbmVfeHJmdm5jbmFPbmVuYXQgPSBuZWVubCgpOw0KCQkkdj0wOw0KDQoNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGViaikgew0KCQkJJG5lZVskdl1bJ25mbnlRbmduJ109JGViai0+bmZueVFuZ247DQoJCQkkbmVlWyR2XVsnbmZoZW5hZnYnXT0oc3libmcpJGViai0+bmZoZW5hZnY7DQoJCQkkbmVlWyR2XVsnb2VoZ2InXT0oc3libmcpJGViai0+b2VoZ2I7DQoJCQkkbmVlWyR2XVsncHZzJ109KHN5Ym5nKSRlYmotPnB2czsNCgkJCSRuZWVbJHZdWydxdmZweW52enJlJ109JGViai0+cXZmcHludnpyZTsNCgkJCSRuZWVbJHZdWydzeW50UGhlbnUnXT0kZWJqLT5zeW50UGhlbnU7DQoJCQkkbmVlWyR2XVsnc3ludFp2dG5mJ109JGViai0+c3ludFp2dG5mOw0KCQkJJG5lZVskdl1bJ3NibyddPShzeWJuZykkZWJqLT5zYm87DQoJCQkkbmVlWyR2XVsnc2VydnR1ZyddPShzeWJuZykkZWJqLT5zZXJ2dHVnOw0KCQkJJG5lZVskdl1bJ3ZxQ3JhdHRoYW4nXT0kZWJqLT52cUNyYXR0aGFuOw0KCQkJJG5lZVskdl1bJ3dub25nbmFHZ3EnXT0kZWJqLT53bm9uZ25hR2dxOw0KCQkJJG5lZVskdl1bJ3doenludVhiYWdudmFyZSddPSRlYmotPndoenludVhiYWdudmFyZTsNCgkJCSRuZWVbJHZdWyd4YnFyTmZoZW5hZnYnXT0kZWJqLT54YnFyTmZoZW5hZnY7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5PbmxuZSddPSRlYmotPnhicXJQbmVuT25sbmU7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5RbnRuYXQnXT0kZWJqLT54YnFyUG5lblFudG5hdDsNCgkJCSRuZWVbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkJJG5lZVskdl1bJ3hicXJWYXBiZ3JleiddPSRlYmotPnhicXJWYXBiZ3JlejsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQXZ5bnYnXT0kZWJqLT54YnFyV3JhdmZBdnludjsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZDZWJmcnFoZSddPSRlYmotPnhicXJXcmF2ZkNlYmZycWhlOw0KCQkJJG5lZVskdl1bJ3hicXJYbmFnYmUnXT0kZWJqLT54YnFyWG5hZ2JlOw0KCQkJJG5lZVskdl1bJ3hicXJYbmFnYmVSeGZjYmUnXT0kZWJqLT54YnFyWG5hZ2JlUnhmY2JlOw0KCQkJJG5lZVskdl1bJ3hicXJYbmFnYmVaaG5nJ109JGViai0+eGJxclhuYWdiZVpobmc7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZUNyZXZ4Zm4nXT0kZWJqLT54YnFyWG5hZ2JlQ3JldnhmbjsNCgkJCSRuZWVbJHZdWyd4YnFyWG5ncnRiZXZSeGZjYmUnXT0kZWJqLT54YnFyWG5ncnRiZXZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcllieG5mdiddPSRlYmotPnhicXJZYnhuZnY7DQoJCQkkbmVlWyR2XVsneGJxckFydG5lbkdod2huYSddPSRlYmotPnhicXJBcnRuZW5HaHdobmE7DQoJCQkkbmVlWyR2XVsneGJxckNyeU9iYXR4bmUnXT0kZWJqLT54YnFyQ3J5T2JhdHhuZTsNCgkJCSRuZWVbJHZdWyd4YnFyQ3J5UnhmY2JlJ109JGViai0+eGJxckNyeVJ4ZmNiZTsNCgkJCSRuZWVbJHZdWyd4YnFyQ3J5WmhuZyddPSRlYmotPnhicXJDcnlaaG5nOw0KCQkJJG5lZVskdl1bJ3hicXJDcnlHaHdobmEnXT0kZWJqLT54YnFyQ3J5R2h3aG5hOw0KCQkJJG5lZVskdl1bJ3hicXJDcnpvbmxuZSddPSRlYmotPnhicXJDcnpvbmxuZTsNCgkJCSRuZWVbJHZdWyd4YnFyR2NmJ109JGViai0+eGJxckdjZjsNCgkJCSRuZWVbJHZdWyd4YnFySW55aGduJ109JGViai0+eGJxcklueWhnbjsNCgkJCSRuZWVbJHZdWyd4YmduR2dxJ109JGViai0+eGJnbkdncTsNCgkJCSRuZWVbJHZdWydhbnpuR2dxJ109JGViai0+YW56bkdncTsNCgkJCSRuZWVbJHZdWydhcWNveiddPShzeWJuZykkZWJqLT5hcWNvejsNCgkJCSRuZWVbJHZdWydhcmdnYiddPShzeWJuZykkZWJqLT5hcmdnYjsNCgkJCSRuZWVbJHZdWydhdnludlpueHliYSddPShzeWJuZykkZWJqLT5hdnludlpueHliYTsNCgkJCSRuZWVbJHZdWydhYnpiZU53aCddPSRlYmotPmFiemJlTndoOw0KCQkJJG5lZVskdl1bJ2FiemJlT3AxMSddPSRlYmotPmFiemJlT3AxMTsNCgkJCSRuZWVbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJCSRuZWVbJHZdWydmcmV2J109JGViai0+ZnJldjsNCgkJCSRuZWVbJHZdWydmaG9jYmZPcDExJ109JGViai0+ZmhvY2JmT3AxMTsNCgkJCSRuZWVbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJCSRuZWVbJHZdWydnbmF0dG55T3AxMSddPSRlYmotPmduYXR0bnlPcDExOw0KCQkJJG5lZVskdl1bJ2duYXR0bnlSeGZjYmUnXT0kZWJqLT5nbmF0dG55UnhmY2JlOw0KCQkJJG5lZVskdl1bJ2duYXR0bnlDcmV2eGZuJ109JGViai0+Z25hdHRueUNyZXZ4Zm47DQoJCQkkbmVlWyR2XVsnZ25hdHRueUdncSddPSRlYmotPmduYXR0bnlHZ3E7DQoJCQkkbmVlWyR2XVsnZ2JnbnlRbmFuRm5qdmcnXT0oc3libmcpJGViai0+Z2JnbnlRbmFuRm5qdmc7DQoNCgkJCSRkbyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJRlJZUlBHIG9wX2JoZ19xcmdudnlfdnENCgkJCSAgLHZxT25lbmF0DQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICxuZmhlbmFmdg0KCQkJICAsb2VoZ2INCgkJCSAgLHB2cw0KCQkJICAscHZzRWhjdm51DQoJCQkgICxxdmZ4YmENCgkJCSAgLHNibw0KCQkJICAsc2VydnR1Zw0KCQkJICAsdW5ldG5SeGZjYmUNCgkJCSAgLHVuZXRuQ25nYnhuYQ0KCQkJICAscG5mZyh1bmV0bkNyZWJ5cnVuYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkNyZWJ5cnVuYQ0KCQkJICAscG5mZyh1bmV0bkZuZ2huYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkZuZ2huYQ0KCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkgICx2ZnZDcmVYcnpuZm5hDQoJCQkgICx4YnFyTmZueU9uZW5hdA0KCQkJICAsd2h6eW51TmZueU9udW5hT254aA0KCQkJICAsd2h6eW51WHJ6bmZuYQ0KCQkJICAsd2h6eW51Rm5naG5hDQoJCQkgICx4YnFyTmZueU9udW5hT254aA0KCQkJICAseGJxck9uZW5hdA0KCQkJICAseGJxclFucmVudU5mbnkNCgkJCSAgLHhicXJRYnhoenJhDQoJCQkgICx4YnFyUWJ4TmZueQ0KCQkJICAseGJxclRoYW5PbmVuYXQNCgkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCSAgLHhicXJYbmdydGJldk9uZW5hdA0KCQkJICAseGJxclhiYXF2ZnZPbmVuYXQNCgkJCSAgLHhicXJBcnRuZW5OZm55DQoJCQkgICx4YnFyQ3JldXZnaGF0bmENCgkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCSAgLHpyZXgNCgkJCSAgLGFxY296DQoJCQkgICxhcmdnYg0KCQkJICAscG5mZyhhdnludk9uZW5hdCBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludk9uZW5hdA0KCQkJICAscG5mZyhhdnludlFuYW5Gbmp2ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludlFuYW5Gbmp2Zw0KCQkJICAsYXZ5bnZXbmZuDQoJCQkgICxhdnludkduem9udQ0KCQkJICAsY2JmR25ldnMNCgkJCSAgLGZyZXZPbmVuYXQNCgkJCSAgLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJICAsZ3Zjcg0KCQkJICAsaG5hdFpoeG4NCgkJCSAgLGh4aGVuYQ0KCQkJICAsaGVudm5hDQoJCQkgICxpYnloenINCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxmcmV2UmFndmduZg0KCQkJICAscG5nbmduYQ0KCQkJICAsQXJ0bmVuTmZueV9xZ3kNCgkJCSAgLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkgICxDcmV1dmdoYXRuYV9xZ3kNCgkJCSAgLFhuZ3J0YmV2T25lbmF0DQoJCQkgICxOZm55T25lbmF0DQoJCQkgICxOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVPbnVuYU9ueGgNCgkJCSAgLHdoenludVF2eXJ4bmd4bmENCgkJCSAgLHdoenludUN2Z25QaHhudg0KCQkJICAsd2h6eW51RXJueXZmbmZ2DQoJCQkgICx4bmNuZnZnbmZGdnl2YXFyZQ0KCQkJICAsYXZ5bnZRcml2Zm4NCgkJCSAgLFZGQUhZWShhdnludk9uZW5hdElxLDApIE5GIGF2eW52T25lbmF0SXENCgkJCSAgLGNyZWFsbmdubmFZbmVnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZJcSwgJycpIE5GIHhicXJXcmF2ZklxDQoJCQkgICxmcmV2Vnd2YQ0KCQkJICAsZ25ldnNQaHhudg0KCQkJICAsQ3JldXZnaGF0bmENCgkJCSAgLFhyYW5DbndueA0KCQkJICAsdXdyUGh4bnYNCgkJCSAgLGZyZXZPbmVuYXRRYnhOZm55DQoJCQkgICxmcmV2T25lbmF0IE5GIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkgYmVxcmUgb2wgb3BfYmhnX3FyZ252eV92cQ0KCQkJIik7DQoJCQkNCgkJCSRvPTA7DQoJCQlzYmVybnB1KCRkby0+ZXJmaHlnKCkgbmYgJGVvKXsNCgkJCQkkbmVvWyRvXVsncHZzJ109KHN5Ym5nKSRlby0+cHZzOw0KCQkJCSRuZW9bJG9dWydwdnNFaGN2bnUnXT0oc3libmcpJGVvLT5wdnNFaGN2bnU7DQoJCQkJJG5lb1skb11bJ3NibyddPShzeWJuZykkZW8tPnNibzsNCgkJCQkkbmVvWyRvXVsndW5ldG5SeGZjYmUnXT0oc3libmcpJGVvLT51bmV0blJ4ZmNiZTsNCgkJCQkkbmVvWyRvXVsndW5ldG5DbmdieG5hJ109KHN5Ym5nKSRlby0+dW5ldG5DbmdieG5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JlYnlydW5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkZuZ2huYSddPShzeWJuZykkZW8tPnVuZXRuRm5naG5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVYcnpuZm5hJ109JGVvLT53aHp5bnVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvLT53aHp5bnVGbmdobmE7DQoJCQkJJG5lb1skb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvLT54YnFyTmZueU9udW5hT254aDsNCgkJCQkkbmVvWyRvXVsneGJxck9uZW5hdCddPSRlby0+eGJxck9uZW5hdDsNCgkJCQkkbmVvWyRvXVsneGJxclFucmVudU5mbnknXT0kZW8tPnhicXJRbnJlbnVOZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUWJ4aHpyYSddPSRlby0+eGJxclFieGh6cmE7DQoJCQkJJG5lb1skb11bJ3hicXJXcmF2Zlhyem5mbmEnXT0kZW8tPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3hicXJBcnRuZW5OZm55J109JGVvLT54YnFyQXJ0bmVuTmZueTsNCgkJCQkkbmVvWyRvXVsneGJxckZuZ2huYU9uZW5hdCddPSRlby0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkkbmVvWyRvXVsnenJleCddPSRlby0+enJleDsNCgkJCQkkbmVvWyRvXVsnYXFjb3onXT0oc3libmcpJGVvLT5hcWNvejsNCgkJCQkkbmVvWyRvXVsnYXJnZ2InXT0oc3libmcpJGVvLT5hcmdnYjsNCgkJCQkkbmVvWyRvXVsnYXZ5bnZPbmVuYXQnXT0oc3libmcpJGVvLT5hdnludk9uZW5hdDsNCgkJCQkkbmVvWyRvXVsnYXZ5bnZRbmFuRm5qdmcnXT0oc3libmcpJGVvLT5hdnludlFuYW5Gbmp2ZzsNCgkJCQkkbmVvWyRvXVsnY2JmR25ldnMnXT0kZW8tPmNiZkduZXZzOw0KCQkJCSRuZW9bJG9dWydmcmV2T25lbmF0J109JGVvLT5mcmV2T25lbmF0Ow0KCQkJCSRuZW9bJG9dWydmY3JmdnN2eG5mdlludmEnXT0kZW8tPmZjcmZ2c3Z4bmZ2WW52YTsNCgkJCQkkbmVvWyRvXVsnZ3ZjciddPSRlby0+Z3ZjcjsNCgkJCQkkbmVvWyRvXVsnaHhoZW5hJ109JGVvLT5oeGhlbmE7DQoJCQkJJG5lb1skb11bJ2hlbnZuYSddPSRlby0+aGVudm5hOw0KCQkJCSRuZW9bJG9dWydpYnloenInXT0oc3libmcpJGVvLT5pYnloenI7DQoNCgkJCQkkbmVvYyA9IG5lZW5sKCk7DQoJCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7DQoJCQkJJGRvcSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyANCgkJCQkJb3BfYmhnX3FyZ252eV92cQ0KCQkJCQksJzEnIE5GIGZyZXZRYnhoenJhDQoNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIG9wX2JoZ19xcmdudnlfdnEgPSAkb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb3E9MDsNCgkJCQlzYmVybnB1KCRkb3EtPmVyZmh5ZygpIG5mICRlb3Epew0KCQkJCQkkbmVvcVskb3FdWydmcmV2UWJ4aHpyYSddPSRlb3EtPmZyZXZRYnhoenJhOw0KCQkJCQkNCgkJCQkkb3ErKzsNCgkJCQl9DQoJCQkJDQoJCQkJJG5lb2MgPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkb2MgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgIG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxmcmV2T25lbmF0DQoJCQkJCSAgLGZyZXZPbmVuYXQgbmYgZnJldk9uZW5hdENyenZ5dngNCgkJCQkJICAsMiBuZiBmcmV2UmFndmduZg0KCQkJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoNCgkJCQkiKTsNCg0KCQkJCSRvYz0wOw0KCQkJCXNiZXJucHUoJGRvYy0+ZXJmaHlnKCkgbmYgJGVvYyl7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZPbmVuYXQnXT0kZW9jLT5mcmV2T25lbmF0Ow0KCQkJCQkkbmVvY1skb2NdWydmcmV2T25lbmF0Q3J6dnl2eCddPSRlb2MtPmZyZXZPbmVuYXRDcnp2eXZ4Ow0KCQkJCQkkbmVvY1skb2NdWydmcmV2UmFndmduZiddPSRlb2MtPmZyZXZSYWd2Z25mOw0KDQoJCQkJJG9jKys7DQoJCQkJfQ0KCQkJCQ0KCQkJCSRuZWcgPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkZyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyBrLm9uZW5hdEduZXZzX3ZxDQoJCQkJCSAgLGsub3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxrLm9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsay5ndmNyX3FieGh6cmENCgkJCQkJICAsay54YnFyV3JhdmZHbmV2cw0KCQkJCQkgICxrLndoenludUZuZ2huYQ0KCQkJCQkgICxrLnhicXJTbmZ2eXZnbmZHbmV2cw0KCQkJCQkgICxrLnhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAsay54YnFyV3JhdmZDaGF0aGduYQ0KCQkJCQkgICxwbmZnKGsuYXZ5bnZPbmxuZSBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludk9ubG5lDQoJCQkJCSAgLGsuYXZ5bnZTbmZ2eXZnbmYNCgkJCQkJICAsay5hdnludkZocW51UXZ5aGFuZnYNCgkJCQkJICAsay5mcmV2T25lbmF0DQoJCQkJCSAgLGsuZ25ldnMNCgkJCQkJICAsay5nbmV2c1NuZnZ5dmduZg0KCQkJCQkgIFNFQlogZ295X3FuZ25fb25lbmF0R25ldnMgIGsNCgkJCQkJanVyZXIgay5vcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIGsub3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkZz0wOw0KDQoJCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlZyl7DQoJCQkJCSRuZWdbJGddWyd3aHp5bnVGbmdobmEnXT12YWdpbnkoJGVnLT53aHp5bnVGbmdobmEpOw0KCQkJCQkkbmVnWyRnXVsneGJxclNuZnZ5dmduZkduZXZzJ109JGVnLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCQkJCSRuZWdbJGddWyd4YnFyV3JhdmZDaGF0aGduYSddPSRlZy0+eGJxcldyYXZmQ2hhdGhnbmE7DQoJCQkJCSRuZWdbJGddWyd4YnFyV3JhdmZHbmV2cyddPSRlZy0+eGJxcldyYXZmR25ldnM7DQoJCQkJCSRuZWdbJGddWydhdnludk9ubG5lJ109KHN5Ym5nKSRlZy0+YXZ5bnZPbmxuZTsNCgkJCQkJJG5lZ1skZ11bJ2F2eW52U25mdnl2Z25mJ109KHN5Ym5nKSRlZy0+YXZ5bnZTbmZ2eXZnbmY7DQoJCQkJCSRuZWdbJGddWydmcmV2T25lbmF0J109JGVnLT5mcmV2T25lbmF0Ow0KCQkJCQkkbmVnWyRnXVsnZ25ldnMnXT0oc3libmcpJGVnLT5nbmV2czsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzU25mdnl2Z25mJ109KHN5Ym5nKSRlZy0+Z25ldnNTbmZ2eXZnbmY7DQoNCgkJCQkkZysrOw0KCQkJCX0NCg0KCQkJCQkkbmVvWyRvXVsnb25lbmF0UWJ4aHpyYSddPSRuZW9xOw0KCQkJCQkkbmVvWyRvXVsnb25lbmF0Q3J6dnl2eCddPSRuZW9jOw0KCQkJCQkkbmVvWyRvXVsnb25lbmF0R25ldnMnXT0kbmVnOwkJCQkNCg0KCQkJCSRvKys7DQoNCgkJCQl9DQoNCg0KCQkJJG5lZVskdl1bJ29uZW5hdCddPSRuZW87DQoNCgkJJGRydiA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsbnluem5nUmFndmduZg0KCQkJICAsdmF2ZnZueVJhZ3ZnbmYNCgkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIHhicXJSYWd2Z25mKSBORiB4YnFyUmFndmduZg0KCQkJICAseGJxcldyYXZmTmN2DQoJCQkgICx4YnFyV3JhdmZWcXJhZ3ZnbmYNCgkJCSAgLHhicXJBcnRuZW4NCgkJCSAgLHhicXJGZ25naGYNCgkJCSAgLGFuem5SYWd2Z25mDQoJCQkgICxhdm9SYWd2Z25mDQoJCQkgICxhYnpiZVZxcmFndmduZg0KCQkJICAsYWJ6YmVWd3ZhUmFndmduZg0KCQkJICAsZ25hdHRueVZ3dmFSYWd2Z25mDQoJCQkgIC0tLEVCSl9BSFpPUkUoKSBCSVJFIChCRVFSRSBPTCB4YnFyUmFndmduZikgbmYgZnJldlJhZ3ZnbmYNCgkJCSAgLGZyZXZSYWd2Z25mDQoJCSAgU0VCWiBxb2IuaXZyal9yYWd2Z25mX3JrY19jY3d4IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgeGJxclJhZ3ZnbmYgPD4gMyANCgkJCUJFUVJFIE9MIGZyZXZSYWd2Z25mDQoNCgkJIik7DQoNCgkJJHJ2PTA7DQoJCXNiZXJucHUoJGRydi0+ZXJmaHlnKCkgbmYgJGVydil7DQoJCQkkbmVfcmFndmduZlskcnZdWydueW56bmdSYWd2Z25mJ109JGVydi0+bnluem5nUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJSYWd2Z25mJ109JGVydi0+eGJxclJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyV3JhdmZWcXJhZ3ZnbmYnXT0kZXJ2LT54YnFyV3JhdmZWcXJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyQXJ0bmVuJ109JGVydi0+eGJxckFydG5lbjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJGZ25naGYnXT0kZXJ2LT54YnFyRmduZ2hmOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYW56blJhZ3ZnbmYnXT0kZXJ2LT5hbnpuUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2F2b1JhZ3ZnbmYnXT0kZXJ2LT5hdm9SYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYWJ6YmVWcXJhZ3ZnbmYnXT0kZXJ2LT5hYnpiZVZxcmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2ZyZXZSYWd2Z25mJ109dmFnaW55KCRlcnYtPmZyZXZSYWd2Z25mKTsNCg0KCQkkcnYrKzsNCgkJfQ0KCQkNCgkJJGRfeHJ6bmZuYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxclFieGh6cmENCgkJCSAgLHdoenludVhyem5mbmENCgkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCSAgLGZyZXZYcnpuZm5hDQoJCQkgICx6cmV4WHJ6bmZuYQ0KCQkJICBTRUJaIHFvYi5pdnJqX3FuZ25feHJ6bmZuYV9hcmoganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhyem5mbmE9MDsNCgkJc2Jlcm5wdSgkZF94cnpuZm5hLT5lcmZoeWcoKSBuZiAkZV94cnpuZm5hKXsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnd2h6eW51WHJ6bmZuYSddPXZhZ2lueSgkZV94cnpuZm5hLT53aHp5bnVYcnpuZm5hKTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsneGJxcldyYXZmWHJ6bmZuYSddPSRlX3hyem5mbmEtPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3pyZXhYcnpuZm5hJ109JGVfeHJ6bmZuYS0+enJleFhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ2ZyZXZYcnpuZm5hJ109dmFnaW55KCRlX3hyem5mbmEtPmZyZXZYcnpuZm5hKTsNCg0KCQkkeHJ6bmZuYSsrOw0KCQl9DQoNCgkJJGRfeGJhZ252YXJlID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZYYmFnbnZhcmUNCgkJCSAgLHhicXJHdmNyWGJhZ252YXJlDQoJCQkgICx4YnFySHhoZW5hWGJhZ252YXJlDQoJCQkgICxhYnpiZVhiYWdudmFyZQ0KCQkJICAsZnJldlhiYWdudmFyZQ0KCQkJU0VCWiBxb2IuZ295X29wX2JoZ194YmFnbnZhcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhiYWdudmFyZT0wOw0KCQlzYmVybnB1KCRkX3hiYWdudmFyZS0+ZXJmaHlnKCkgbmYgJGVfeGJhZ252YXJlKXsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJXcmF2ZlhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxcldyYXZmWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckd2Y3JYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJHdmNyWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckh4aGVuYVhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxckh4aGVuYVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2FiemJlWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT5hYnpiZVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2ZyZXZYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPmZyZXZYYmFnbnZhcmU7DQoNCgkJJHhiYWdudmFyZSsrOw0KCQl9DQoNCgkJJGRfcWJ4aHpyYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ19xYnhoenJhX3ZxIG5mIHZxUWJ4aHpyYQ0KCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsb3BfYmhnX3FyZ252eV92cQ0KCQkJICAseGJxclFieGh6cmENCgkJCSAgLFZGQUhZWSh4YnFyU25mdnl2Z25mLCAnJykgTkYgeGJxclNuZnZ5dmduZg0KCQkJICAseGJxclZ3dmENCgkJCSAgLHdyYXZmUWJ4aHpyYQ0KCQkJICAsVkZBSFlZKGFuem5TbmZ2eXZnbmYsICcnKSBORiBhbnpuU25mdnl2Z25mDQoJCQkgICxhYnpiZVFieGh6cmENCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxnbmF0dG55UWJ4aHpyYQ0KCQkJICAsaGV5UWJ4aHpyYQ0KCQkJICAseHJncmVuYXRuYQ0KCQkJICAscGVybmdyX3FuZ3INCgkJCSAgLHBlcm5ncl9vbA0KCQkJICAsemJxdnNsX3FuZ3INCgkJCSAgLHpicXZzbF9vbA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FieGh6cmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJYmVxcmUgb2wgZnJldlFieGh6cmENCg0KCQkiKTsNCg0KCQkkcWJ4aHpyYT0wOw0KCQlzYmVybnB1KCRkX3FieGh6cmEtPmVyZmh5ZygpIG5mICRlX3FieGh6cmEpew0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd2cVFieGh6cmEnXT0kZV9xYnhoenJhLT52cVFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ3hicXJRYnhoenJhJ109JGVfcWJ4aHpyYS0+eGJxclFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2FiemJlUWJ4aHpyYSddPSRlX3FieGh6cmEtPmFiemJlUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnZnJldlFieGh6cmEnXT12YWdpbnkoJGVfcWJ4aHpyYS0+ZnJldlFieGh6cmEpOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydnbmF0dG55UWJ4aHpyYSddPSRlX3FieGh6cmEtPmduYXR0bnlRYnhoenJhOw0KDQoJCSRxYnhoenJhKys7DQoJCX0NCg0KCQkkZF9jcmF0bmF0eGhnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxck9yYXFyZW4NCgkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCSAgLHhicXJQbmVuTmF0eGhnDQoJCQkgICxFQkpfQUhaT1JFKCkgQklSRSAoQkVRUkUgT0wgb3BfYmhnX3VybnFyZV92cSkgbmYgZnJldkNyYXRuYXR4aGcNCgkJCSAgU0VCWiBxb2IuaXZyal9jcmF0bmF0eGhnIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSRjcmF0bmF0eGhnPTA7DQoJCXNiZXJucHUoJGRfY3JhdG5hdHhoZy0+ZXJmaHlnKCkgbmYgJGVfY3JhdG5hdHhoZyl7DQoJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ3hicXJPcmFxcmVuJ109JGVfY3JhdG5hdHhoZy0+eGJxck9yYXFyZW47DQoJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2Fuem5DcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YW56bkNyYXRuYXR4aGc7DQoJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2FiemJlQ3JhdG5hdHhoZyddPSRlX2NyYXRuYXR4aGctPmFiemJlQ3JhdG5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxclBuZW5OYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT54YnFyUG5lbk5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnZnJldkNyYXRuYXR4aGcnXT12YWdpbnkoJGVfY3JhdG5hdHhoZy0+ZnJldkNyYXRuYXR4aGcpOw0KDQoJCSRjcmF0bmF0eGhnKys7DQoJCX0NCgkJDQoJCSRkX29uYXggPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyT25heA0KCQkJICAsMSBuZiBmcmV2T25heA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkb25heD0wOw0KCQlzYmVybnB1KCRkX29uYXgtPmVyZmh5ZygpIG5mICRlX29uYXgpew0KCQkJJG5lX29uYXhbJG9uYXhdWyd4YnFyT25heCddPSRlX29uYXgtPnhicXJPbmF4Ow0KCQkJJG5lX29uYXhbJG9uYXhdWydmcmV2T25heCddPSRlX29uYXgtPmZyZXZPbmF4Ow0KDQoJCSRvbmF4Kys7DQoJCX0NCgkJDQoJCSRkX3hyZnZuY25hT25lbmF0ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxDQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZPbmVuYXQNCgkJCSAgLHhicXJXcmF2ZlRocW5hdA0KCQkJICAsYW56bkN2cA0KCQkJICAsbnluem5nDQoJCQkgICxhYnpiZUdyeWNDdnANCgkJCSAgLHdoenludVBiYWdudmFyZTIwDQoJCQkgICx3aHp5bnVQYmFnbnZhcmU0MA0KCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCSAgLHhicXJQbmVuRmdoc3N2YXQNCgkJCSAgLHhicXJXcmF2ZkNuZWdCcw0KCQkJICAsZ25hdHRueUN4bw0KCQkJICAsam54Z2hGdm5jQ3JldnhmbiBuZiBqbnhnaEZ2bmNDcmV2eGZuMQ0KCQkJICAscGJhcG5nKGduYXR0bnlDeG8sJ0cnLCBqbnhnaEZ2bmNDcmV2eGZuLCc6MDAuMDAwTScpIG5mIGpueGdoRnZuY0NyZXZ4Zm4NCgkJCSAgLFdyYXZmT25lbmF0DQoJCQkgICxXcmF2ZlRocW5hdA0KCQkJICAsV3JhdmZDbmVnQnMNCgkJCSAgLFBuZW5GZ2hzc3ZhdA0KCQkJICAseHJncmVuYXRuYQ0KCQkJICAscGVybmdyX3FuZ3INCgkJCSAgLHBlcm5ncl9vbA0KCQkJICAsemJxdnNsX3FuZ3INCgkJCSAgLHpicXZzbF9vbA0KCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJCSIpOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdD0wOw0KCQlzYmVybnB1KCRkX3hyZnZuY25hT25lbmF0LT5lcmZoeWcoKSBuZiAkZV94cmZ2bmNuYU9uZW5hdCl7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmT25lbmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2Zk9uZW5hdDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZUaHFuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmVGhxbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2Fuem5DdnAnXT0kZV94cmZ2bmNuYU9uZW5hdC0+YW56bkN2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydueW56bmcnXT0kZV94cmZ2bmNuYU9uZW5hdC0+bnluem5nOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2FiemJlR3J5Y0N2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hYnpiZUdyeWNDdnA7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneWJ4bmZ2RnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+eWJ4bmZ2RnZuY0NyZXZ4Zm47DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxclBuZW5GZ2hzc3ZhdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyUG5lbkZnaHNzdmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZkNuZWdCcyddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZDbmVnQnM7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnZ25hdHRueUN4byddPSRlX3hyZnZuY25hT25lbmF0LT5nbmF0dG55Q3hvOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2pueGdoRnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+am54Z2hGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmUyMDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmU0MDsNCg0KCQkkeHJmdm5jbmFPbmVuYXQrKzsNCgkJfQ0KDQoJCQkkbmVlWyR2XVsncmFndmduZiddPSRuZV9yYWd2Z25mOw0KCQkJJG5lZVskdl1bJ3hyem5mbmEnXT0kbmVfeHJ6bmZuYTsNCgkJCSRuZWVbJHZdWyd4YmFnbnZhcmUnXT0kbmVfeGJhZ252YXJlOw0KCQkJJG5lZVskdl1bJ3FieGh6cmEnXT0kbmVfcWJ4aHpyYTsNCgkJCSRuZWVbJHZdWydjcmF0bmF0eGhnJ109JG5lX2NyYXRuYXR4aGc7DQoJCQkkbmVlWyR2XVsnb25heFFyaXZmbiddPSRuZV9vbmF4Ow0KCQkJJG5lZVskdl1bJ3hyZnZuY25hT25lbmF0J109JG5lX3hyZnZuY25hT25lbmF0Ow0KDQoJCSR2Kys7DQoJCX0NCgkNCg0KCQkkbmVlbmw9ICRuZWVbMF07DQoJCSRxbmduYWxuPSB3ZmJhX3JhcGJxcigkbmVlbmwpOw0KCQkNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19IRVksICRoZXkpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHLCBnZWhyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRVJHSEVBR0VOQUZTUkUsIGdlaHIpOw0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCS8vcnB1YiAkZ2J4cmEgLiAiPG9lPiI7IA0KCQkvL2luZV9xaHpjKCR1cm5xcmVmKTsNCgkJLy9xdnIoKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfVUdHQ1VSTlFSRSwgJHVybnFyZWYpOw0KCQkJDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0NCRkdTVlJZUUYsICRxbmduYWxuKTsNCgkJLy9ycHViICRxbmduYWxuOwkNCgkJLy9xdnIoKTsNCg0KCQkvL3NiZSBxcm9odCBiYXlsIQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMQ1JSRSwgc255ZnIpOw0KCQkNCgkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQkNCgkJcGhleV9weWJmcigkcGhleSk7DQoNCgkJJGZnbmdoZl9wcnZmbiA9IHdmYmFfcXJwYnFyKCRlcmZjLCBnZWhyKTsNCgkJJG5maGogPSB2ZmZyZygkZmduZ2hmX3BydmZuWyJSa3ByY2d2YmEiXSk/JGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl06J25qJzsNCgkJdnMoJG5maGogPT0gJ25qJyl7DQoJCQl2cygkZmduZ2hmX3BydmZuWydmZ25naGYnXSA9PSAnQlgnKXsNCgkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQloY3FuZ3IgZ295X29wX2JoZ191cm5xcmUgZnJnIHZxRXJmY2JhID0gLTEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkiKTsNCgkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4kZmduZ2hmX3BydmZuWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGZnbmdoZl9wcnZmblsnenJmZm50ciddLCdxbmduRmduZ2hmJyA9PidGaHhmcmYhJyAgKSk7DQoJCQkNCgkJCQ0KCQl9IHJ5ZnIgew0KCQkJdnMgKHZmZnJnKCRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddKSl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnPT4kZmduZ2hmX3BydmZuWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGZnbmdoZl9wcnZmblsnenJmZm50ciddLCdxbmduRmduZ2hmJyA9PidUbnRueSBGcmFxdmF0IScpKTsNCgkJCX0gcnlmciB7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCdmZ25naGYnID0+ICJWYXNiZXpuZnYiLCAnenJmZm50cicgPT4gIiBIYXFyZSBabnZhZ25hcmFwciBGcmVpcmUgIiwncW5nbkZnbmdoZicgPT4nU252eXJxJyApICk7CQ0KCQkJCXF2cigpOw0KCQkJfQ0KCQl9DQoJCX0gcnlmciB7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4nMDInICwnenJmZm50cicgPT4kbmZoaiwncW5nbkZnbmdoZicgPT4nWGJhcnhmdiBncmVjaGdoZiwgRnZ5bnV4bmEgWWJ0dmEgUFJWRk4geHJ6b255diEnICkpOwkJDQoJCQlxdnIoKTsNCgkJCQ0KCQl9DQoNCg0KCX0NCgkNCglzaGFwZ3ZiYSB4dmV2el9xbmduX2diX3BydmZuX2djbygpew0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9lcmRocmZnX3FyZ252eV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkvLyRnYnhyYSA9ICh2ZmZyZygkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkgJiYgIXJ6Y2dsKCRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpKSk/JGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk6cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsgDQoJCSRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KCQkNCgkJLy8kaGV5ID0gInVnZ2NmOi8vYXlydWhvLnhyenJheHJoLnRiLnZxL2JjcmFuY3YvcWJwaHpyYWciOw0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCg0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCSBGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxuZm55UW5nbg0KCQkJCQkgICxwbmZnKG5maGVuYWZ2IG5mIHFycHZ6bnkoMTgsMikpIG5mIG5maGVuYWZ2DQoJCQkJCSAgLG92bmxuQ3JhdGhlbmF0DQoJCQkJCSAgLG92bmxuR256b251bmENCgkJCQkJICAscG5mZyhvZWhnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBvZWhnYg0KCQkJCQkgICxwbmZnKHB2cyBuZiBxcnB2em55KDE4LDIpKSBuZiBwdnMNCgkJCQkJICAscHZzRWhjdm51DQoJCQkJCSAgLCcxJyBuZiBxdmZweW52enJlDQoJCQkJCSAgLCcyJyBuZiBzeW50UGhlbnUNCgkJCQkJICAsJzInIG5mIHN5bnRadnRuZg0KCQkJCQkgICxzeW50SXENCgkJCQkJICAscG5mZyhzYm8gbmYgcXJwdnpueSgxOCwyKSkgbmYgc2JvDQoJCQkJCSAgLHBuZmcoc2VydnR1ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBzZXJ2dHVnDQoJCQkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJCQkgICxQQkFJUkVHKElORVBVTkUoMTApLCBmcmV2UmFndmduZikgTkYgdnFDcmF0dGhhbg0KCQkJCQkgICx2cUNyYXRuYXR4aGcNCgkJCQkJICAsd25vbmduYUdncQ0KCQkJCQkgICx3aHp5bnVYYmFnbnZhcmUNCgkJCQkJICAsd2h6eW51R25hcW5DcmF0bnpuYSANCgkJCQkJICAseGJxck5maGVuYWZ2DQoJCQkJCSAgLHhicXJQbmVuT25sbmUNCgkJCQkJICAseGJxclBuZW5RbnRuYXQNCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclZhcGJncmV6DQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZDZWJmcnFoZSwgJycpIE5GIHhicXJXcmF2ZkNlYmZycWhlDQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZSeGZjYmUsICcnKSBORiB4YnFyV3JhdmZSeGZjYmUNCgkJCQkJICAseGJxcldyYXZmQXZ5bnYNCgkJCQkJICAsdmZhaHl5KHhicXJXcmF2ZkdjbywnJykgbmYgeGJxcldyYXZmR2NvIA0KCQkJCQkgICx4YnFyWG5hZ2JlDQoJCQkJCSAgLHhicXJYbmFnYmVPYmF0eG5lDQoJCQkJCSAgLHhicXJYbmFnYmVSeGZjYmUNCgkJCQkJICAseGJxclhuYWdiZSBuZiB4YnFyWG5hZ2JlWmhuZyANCgkJCQkJICAseGJxclhuYWdiZUNyZXZ4Zm4NCgkJCQkJICAseGJxclhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLHhicXJYcmFuQ253bngNCgkJCQkJICAseGJxcllieG5mdg0KCQkJCQkgICwnNCcgbmYgeGJxcllieG5mdk9ubG5lDQoJCQkJCSAgLFlieG5mdk9ubG5lDQoJCQkJCSAgLHhicXJBcnRuZW5HaHdobmENCgkJCQkJICAseGJxckNyeU9iYXR4bmUgDQoJCQkJCSAgLHhicXJDcnlSeGZjYmUNCgkJCQkJICAseGJxckNyeVpobmcNCgkJCQkJICAseGJxckNyeUdlbmFmdmcNCgkJCQkJICAseGJxckNyeUdod2huYQ0KCQkJCQkgICxWRkFIWVkoeGJxckNyem9ubG5lLCAnJykgTkYgeGJxckNyem9ubG5lDQoJCQkJCSAgLHhicXJHdmNyVW5ldG4NCgkJCQkJICAseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAseGJxckdjZg0KCQkJCQkgICx4YnFySW55aGduDQoJCQkJCSAgLHhiZ25HZ3ENCgkJCQkJICAsUmFndmduZg0KCQkJCQkgICxSYWd2Z25mMQ0KCQkJCQkgICxSYWd2Z25mMg0KCQkJCQkgICxSYWd2Z25mMw0KCQkJCQkgICxSYWd2Z25mNA0KCQkJCQkgICxhbnpuR2dxDQoJCQkJCSAgLHBuZmcoYXFjb3ogbmYgcXJwdnpueSgxOCw0KSkgbmYgYXFjb3oNCgkJCQkJICAscG5mZyhhcmdnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBhcmdnYg0KCQkJCQkgICxhdnludk9uZW5hdA0KCQkJCQkgICxhdnludlZhcGJncmV6DQoJCQkJCSAgLHBuZmcoYXZ5bnZabnh5YmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgYXZ5bnZabnh5YmENCgkJCQkJICAsYXZ5bnZXbmZuDQoJCQkJCSAgLGhuYXRaaHhuDQoJCQkJCSAgLEVSQ1lOUFIoYWJ6YmVOd2gsICctJywgJycpIE5GIGFiemJlTndoDQoJCQkJCSAgLGFiemJlT3AxMQ0KCQkJCQkgICxWRkFIWVkoY2JmT3AxMSwgJycpIE5GIGNiZk9wMTENCgkJCQkJICAsY3JhdG5hdHhoZw0KCQkJCQkgICxmcmV2DQoJCQkJCSAgLGZyZXZSYWd2Z25mDQoJCQkJCSAgLGZyZXZSYWd2Z25mMQ0KCQkJCQkgICxmcmV2UmFndmduZjINCgkJCQkJICAsZnJldlJhZ3ZnbmYzDQoJCQkJCSAgLGZyZXZSYWd2Z25mNA0KCQkJCQkgICxWRkFIWVkoZmhvY2JmT3AxMSwgJycpIE5GIGZob2NiZk9wMTENCgkJCQkJICAsZmduZ2hmDQoJCQkJCSAgLGdyemNuZ0ZnaHNzdmF0DQoJCQkJCSAgLGduYXR0bnlOd2gNCgkJCQkJICAsZ3R5Tnh1dmVPcmV5bnhoDQoJCQkJCSAgLGd0eU5qbnlPcmV5bnhoDQoJCQkJCSAgLGduYXR0bnlPcDExDQoJCQkJCSAgLGduYXR0bnlRbnNnbmUNCgkJCQkJICAsZ25hdHRueVJ4ZmNiZQ0KCQkJCQkgICxnbmF0dG55Q3Jldnhmbg0KCQkJCQkgICxnbmF0dG55R2dxDQoJCQkJCSAgLHBuZmcoZ2JnbnlRbmFuRm5qdmcgbmYgcXJwdnpueSgxOCwyKSkgbmYgZ2JnbnlRbmFuRm5qdmcNCgkJCQkJICAseGJxck9yYXFyZW4NCgkJCQkJICAsJ1l2eXZyZicgTkYgaGZyZUNiZWdueQ0KCQkJCQkgICxpYnloenINCgkJCQkJICAsYW56bkNyYXRuYXR4aGcNCgkJCQkJICAsYXZ4DQoJCQkJCSAgLGFiemJlQ3JhdG5hdHhoZw0KCQkJCQkgICxhYlFuc2duZQ0KCQkJCQkgICx4YnFyUG5lbk5hdHhoZw0KCQkJCQkgICxmcmV2Q3JhdG5hdHhoZw0KCQkJCQkgICx4YnFyT25heA0KCQkJCQkgICxmcmV2T25heA0KCQkJCQkgICx3aHp5bnVQYmFnbnZhcmUNCgkJCQkJICAsd2h6eW51WHJ6bmZuYQ0KCQkJCQkgICx4YnFyWG5hZ2JlR2h3aG5hDQoJCQkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCQkJICAseGJxcldyYXZmT25lbmF0DQoJCQkJCSAgLHhicXJXcmF2ZlRocW5hdA0KCQkJCQkgICx4YnFyR2h3aG5hR2NvDQoJCQkJCSAgLGFuem5DdnANCgkJCQkJICAsbnluem5nDQoJCQkJCSAgLGFiemJlR3J5Y0N2cA0KCQkJCQkgICx3aHp5bnVQYmFnbnZhcmUyMA0KCQkJCQkgICx3aHp5bnVQYmFnbnZhcmU0MA0KCQkJCQkgICx3aHp5bnVXcmF2Zk9uZW5hdA0KCQkJCQkgICx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJCQkgICx4YnFyUG5lbkZnaHNzdmF0DQoJCQkJCSAgLHhicXJXcmF2ZkNuZWdCcw0KCQkJCQkgICxnbmF0dG55Q3hvDQoJCQkJCSAgLGlxDQoJCQkJCSAgLGpueGdoRnZuY0NyZXZ4Zm4NCgkJCQkJICAsV3JhdmZHY28NCgkJCQkJICAsR2h3aG5hR2NvDQoJCQkJCSAgLEdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAsUG5lbk5hdHhoZw0KCQkJCQkgICxYcmFuQ253bngNCgkJCQkJICAsTmZoZW5hZnZfZ3Zjcg0KCQkJCQkgICxPbmF4DQoJCQkJCSAgLFlieG5mdg0KCQkJCQkgICxHY2YNCgkJCQkJICAsUG5lbk9ubG5lDQoJCQkJCSAgLFBuZW5RbnRuYXQNCgkJCQkJICAsWG5ncnRiZXZSeGZjYmUNCgkJCQkJICAsV3JhdmZSeGZjYmUNCgkJCQkJICAsV3JhdmZBdnludg0KCQkJCQkgICxXcmF2Zlhyem5mbmENCgkJCQkJICAsV3JhdmZDZWJmcnFoZQ0KCQkJCQkgICxWYXBiZ3Jleg0KCQkJCQkgICxwZXJuZ3JfcW5ncg0KCQkJCQkgICxwZXJuZ3Jfb2wNCgkJCQkJICAsemJxdnNsX3FuZ3INCgkJCQkJICAsemJxdnNsX29sDQoJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkbmVlID0gbmVlbmwoKTsNCgkJJG5lbyA9IG5lZW5sKCk7DQoJCSRuZW9xID0gbmVlbmwoKTsNCgkJJG5lZyA9IG5lZW5sKCk7DQoJCSRuZWlxID0gbmVlbmwoKTsNCgkJJG5lZnggPSBuZWVubCgpOw0KCQkkbmVvYyA9IG5lZW5sKCk7DQoJCSRuZW9udW5hb254aCA9IG5lZW5sKCk7DQoJCSRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCSRuZV9yYWd2Z25mID0gbmVlbmwoKTsNCgkJJG5lX3hyem5mbmEgPSBuZWVubCgpOw0KCQkkbmVfeGJhZ252YXJlID0gbmVlbmwoKTsNCgkJJG5lX3FieGh6cmEgPSBuZWVubCgpOw0KCQkkbmVfY3JhdG5hdHhoZyA9IG5lZW5sKCk7DQoJCSRuZV9vbmF4ID0gbmVlbmwoKTsNCgkJJG5lX3hyZnZuY25hT25lbmF0ID0gbmVlbmwoKTsNCgkJJHY9MDsNCg0KCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZWJqKSB7DQoJCQkkbmVlWyR2XVsnbmZueVFuZ24nXT0kZWJqLT5uZm55UW5nbjsNCgkJCSRuZWVbJHZdWyduZmhlbmFmdiddPShzeWJuZykkZWJqLT5uZmhlbmFmdjsNCgkJCSRuZWVbJHZdWydvdm5sbkNyYXRoZW5hdCddPShzeWJuZykkZWJqLT5vdm5sbkNyYXRoZW5hdDsNCgkJCSRuZWVbJHZdWydvdm5sbkduem9udW5hJ109KHN5Ym5nKSRlYmotPm92bmxuR256b251bmE7DQoJCQkkbmVlWyR2XVsnb2VoZ2InXT0oc3libmcpJGViai0+b2VoZ2I7DQoJCQkkbmVlWyR2XVsncHZzJ109KHN5Ym5nKSRlYmotPnB2czsNCgkJCSRuZWVbJHZdWydxdmZweW52enJlJ109JGViai0+cXZmcHludnpyZTsNCgkJCSRuZWVbJHZdWydzeW50UGhlbnUnXT0kZWJqLT5zeW50UGhlbnU7DQoJCQkkbmVlWyR2XVsnc3ludFp2dG5mJ109JGViai0+c3ludFp2dG5mOw0KCQkJJG5lZVskdl1bJ3NibyddPShzeWJuZykkZWJqLT5zYm87DQoJCQkkbmVlWyR2XVsnc2VydnR1ZyddPShzeWJuZykkZWJqLT5zZXJ2dHVnOw0KCQkJJG5lZVskdl1bJ3VuZXRuQ3JhbHJlbnVuYSddPShzeWJuZykkZWJqLT51bmV0bkNyYWxyZW51bmE7DQoJCQkkbmVlWyR2XVsndnFDcmF0dGhhbiddPSRlYmotPnZxQ3JhdHRoYW47DQoJCQkkbmVlWyR2XVsnd25vbmduYUdncSddPSRlYmotPndub25nbmFHZ3E7DQoJCQkkbmVlWyR2XVsnd2h6eW51WGJhZ252YXJlJ109dmFnaW55KCRlYmotPndoenludVhiYWdudmFyZSk7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5PbmxuZSddPSRlYmotPnhicXJQbmVuT25sbmU7DQoJCQkkbmVlWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQ2ViZnJxaGUnXT0kZWJqLT54YnFyV3JhdmZDZWJmcnFoZTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZHY28nXT0kZWJqLT54YnFyV3JhdmZHY287DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZVpobmcnXT0kZWJqLT54YnFyWG5hZ2JlWmhuZzsNCgkJCSRuZWVbJHZdWyd4YnFyWWJ4bmZ2T25sbmUnXT0kZWJqLT54YnFyWWJ4bmZ2T25sbmU7DQoJCQkkbmVlWyR2XVsneGJxckNyem9ubG5lJ109JGViai0+eGJxckNyem9ubG5lOw0KCQkJJG5lZVskdl1bJ3hicXJHaHdobmFDcmF0dmV2em5hJ109JGViai0+eGJxckdod2huYUNyYXR2ZXZ6bmE7DQoJCQkkbmVlWyR2XVsneGJxcklueWhnbiddPSRlYmotPnhicXJJbnloZ247DQoJCQkkbmVlWyR2XVsneGJnbkdncSddPSRlYmotPnhiZ25HZ3E7DQoJCQkkbmVlWyR2XVsnYW56bkdncSddPSRlYmotPmFuem5HZ3E7DQoJCQkkbmVlWyR2XVsnYXFjb3onXT0oc3libmcpJGViai0+YXFjb3o7DQoJCQkkbmVlWyR2XVsnYXJnZ2InXT0oc3libmcpJGViai0+YXJnZ2I7DQoJCQkkbmVlWyR2XVsnYXZ5bnZPbmVuYXQnXT0oc3libmcpJGViai0+YXZ5bnZPbmVuYXQ7DQoJCQkkbmVlWyR2XVsnYXZ5bnZabnh5YmEnXT0oc3libmcpJGViai0+YXZ5bnZabnh5YmE7DQoJCQkkbmVlWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJCSRuZWVbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJCSRuZWVbJHZdWydmcmV2J109JGViai0+ZnJldjsNCgkJCSRuZWVbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJCSRuZWVbJHZdWydnbmF0dG55R2dxJ109JGViai0+Z25hdHRueUdncTsNCgkJCSRuZWVbJHZdWydoZnJlQ2JlZ255J109JGViai0+aGZyZUNiZWdueTsNCgkJCSRuZWVbJHZdWydpYnloenInXT0oc3libmcpJGViai0+aWJ5aHpyOw0KDQoJCQkkZG8gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCUZSWVJQRyBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkgICx2cU9uZW5hdA0KCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsbmZoZW5hZnYNCgkJCSAgLG9laGdiDQoJCQkgICxwdnMNCgkJCSAgLHB2c0VoY3ZudQ0KCQkJICAscXZmeGJhDQoJCQkgICxzYm8NCgkJCSAgLHNlcnZ0dWcNCgkJCSAgLHVuZXRuUnhmY2JlDQoJCQkgICx1bmV0bkNuZ2J4bmENCgkJCSAgLHBuZmcodW5ldG5DcmVieXJ1bmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5DcmVieXJ1bmENCgkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJICAsdmZ2Q3JlWHJ6bmZuYQ0KCQkJICAseGJxck5mbnlPbmVuYXQNCgkJCSAgLHdoenludU5mbnlPbnVuYU9ueGgNCgkJCSAgLHdoenludVhyem5mbmENCgkJCSAgLHdoenludUZuZ2huYSANCgkJCSAgLHhicXJOZm55T251bmFPbnhoDQoJCQkgICx4YnFyT25lbmF0DQoJCQkgICx4YnFyUW5yZW51TmZueQ0KCQkJICAseGJxclFieGh6cmEgDQoJCQkgICx2ZmFoeXkoeGJxclFieE5mbnksJycpIG5mIHhicXJRYnhOZm55DQoJCQkgICx2ZmFoeXkoeGJxclRoYW5PbmVuYXQsICcnKSBuZiB4YnFyVGhhbk9uZW5hdA0KCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJICAsdmZhaHl5KHhicXJYbmdydGJldk9uZW5hdCwgJycpIG5mIHhicXJYbmdydGJldk9uZW5hdA0KCQkJICAseGJxclhiYXF2ZnZPbmVuYXQNCgkJCSAgLHhicXJBcnRuZW5OZm55DQoJCQkgICx2ZmFoeXkoeGJxckNyZXV2Z2hhdG5hLCcnKSBuZiB4YnFyQ3JldXZnaGF0bmENCgkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCSAgLHpyZXgNCgkJCSAgLGFxY296DQoJCQkgICxhcmdnYg0KCQkJICAscG5mZyhhdnludk9uZW5hdCBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludk9uZW5hdA0KCQkJICAscG5mZyhhdnludlFuYW5Gbmp2ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBhdnludlFuYW5Gbmp2Zw0KCQkJICAsYXZ5bnZXbmZuDQoJCQkgICxhdnludkduem9udQ0KCQkJICAsY2JmR25ldnMNCgkJCSAgLGZyZXZPbmVuYXQNCgkJCSAgLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJICAsZ3Zjcg0KCQkJICAsaG5hdFpoeG4NCgkJCSAgLGh4aGVuYQ0KCQkJICAsaGVudm5hDQoJCQkgICxpYnloenINCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxmcmV2UmFndmduZg0KCQkJICAscG5nbmduYQ0KCQkJICAsQXJ0bmVuTmZueV9xZ3kNCgkJCSAgLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkgICxDcmV1dmdoYXRuYV9xZ3kNCgkJCSAgLFhuZ3J0YmV2T25lbmF0DQoJCQkgICxOZm55T25lbmF0DQoJCQkgICxOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVPbnVuYU9ueGgNCgkJCSAgLHdoenludVF2eXJ4bmd4bmENCgkJCSAgLHdoenludUN2Z25QaHhudg0KCQkJICAsd2h6eW51RXJueXZmbmZ2DQoJCQkgICx4bmNuZnZnbmZGdnl2YXFyZQ0KCQkJICAsYXZ5bnZRcml2Zm4NCgkJCSAgLFZGQUhZWShhdnludk9uZW5hdElxLDApIE5GIGF2eW52T25lbmF0SXENCgkJCSAgLGNyZWFsbmdubmFZbmVnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZJcSwgJycpIE5GIHhicXJXcmF2ZklxDQoJCQkgICxmcmV2Vnd2YQ0KCQkJICAsZ25ldnNQaHhudg0KCQkJICAsQ3JldXZnaGF0bmENCgkJCSAgLFhyYW5DbndueA0KCQkJICAsdXdyUGh4bnYNCgkJCSAgLGZyZXZPbmVuYXRRYnhOZm55DQoJCQkgICxmcmV2T25lbmF0IE5GIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkgYmVxcmUgb2wgb3BfYmhnX3FyZ252eV92cQ0KCQkJIik7DQoJCQkNCgkJCSRvPTA7DQoJCQlzYmVybnB1KCRkby0+ZXJmaHlnKCkgbmYgJGVvKXsNCgkJCQkkbmVvWyRvXVsnb2VoZ2InXT0oc3libmcpJGVvLT5vZWhnYjsNCgkJCQkkbmVvWyRvXVsncHZzJ109KHN5Ym5nKSRlby0+cHZzOw0KCQkJCSRuZW9bJG9dWydwdnNFaGN2bnUnXT0oc3libmcpJGVvLT5wdnNFaGN2bnU7DQoJCQkJJG5lb1skb11bJ3F2ZnhiYSddPShzeWJuZykkZW8tPnF2ZnhiYTsNCgkJCQkkbmVvWyRvXVsnc2VydnR1ZyddPShzeWJuZykkZW8tPnNlcnZ0dWc7DQoJCQkJJG5lb1skb11bJ3NibyddPShzeWJuZykkZW8tPnNibzsNCgkJCQkkbmVvWyRvXVsndW5ldG5SeGZjYmUnXT0oc3libmcpJGVvLT51bmV0blJ4ZmNiZTsNCgkJCQkkbmVvWyRvXVsndW5ldG5DbmdieG5hJ109KHN5Ym5nKSRlby0+dW5ldG5DbmdieG5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JlYnlydW5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvLT51bmV0bkNyYWxyZW51bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuRm5naG5hJ109KHN5Ym5nKSRlby0+dW5ldG5GbmdobmE7DQoJCQkJJG5lb1skb11bJ3ZmdkNyZVhyem5mbmEnXT0oc3libmcpJGVvLT52ZnZDcmVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVYcnpuZm5hJ109JGVvLT53aHp5bnVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvLT53aHp5bnVGbmdobmE7DQoJCQkJJG5lb1skb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvLT54YnFyTmZueU9udW5hT254aDsNCgkJCQkkbmVvWyRvXVsneGJxck9uZW5hdCddPSRlby0+eGJxck9uZW5hdDsNCgkJCQkkbmVvWyRvXVsneGJxclFucmVudU5mbnknXT0kZW8tPnhicXJRbnJlbnVOZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUWJ4aHpyYSddPSRlby0+eGJxclFieGh6cmE7DQoJCQkJJG5lb1skb11bJ3hicXJRYnhOZm55J109JGVvLT54YnFyUWJ4TmZueTsNCgkJCQkkbmVvWyRvXVsneGJxclRoYW5PbmVuYXQnXT0kZW8tPnhicXJUaGFuT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyV3JhdmZYcnpuZm5hJ109JGVvLT54YnFyV3JhdmZYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd4YnFyWG5ncnRiZXZPbmVuYXQnXT0kZW8tPnhicXJYbmdydGJldk9uZW5hdDsNCgkJCQkkbmVvWyRvXVsneGJxclhiYXF2ZnZPbmVuYXQnXT0kZW8tPnhicXJYYmFxdmZ2T25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyQXJ0bmVuTmZueSddPSRlby0+eGJxckFydG5lbk5mbnk7DQoJCQkJJG5lb1skb11bJ3hicXJDcmV1dmdoYXRuYSddPSRlby0+eGJxckNyZXV2Z2hhdG5hOw0KCQkJCSRuZW9bJG9dWyd4YnFyRm5naG5hT25lbmF0J109JGVvLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd6cmV4J109JGVvLT56cmV4Ow0KCQkJCSRuZW9bJG9dWydhcWNveiddPShzeWJuZykkZW8tPmFxY296Ow0KCQkJCSRuZW9bJG9dWydhcmdnYiddPShzeWJuZykkZW8tPmFyZ2diOw0KCQkJCSRuZW9bJG9dWydhdnludk9uZW5hdCddPShzeWJuZykkZW8tPmF2eW52T25lbmF0Ow0KCQkJCSRuZW9bJG9dWydhdnludlFuYW5Gbmp2ZyddPShzeWJuZykkZW8tPmF2eW52UW5hbkZuanZnOw0KCQkJCSRuZW9bJG9dWydjYmZHbmV2cyddPSRlby0+Y2JmR25ldnM7DQoJCQkJJG5lb1skb11bJ2ZyZXZPbmVuYXQnXT0kZW8tPmZyZXZPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlby0+ZmNyZnZzdnhuZnZZbnZhOw0KCQkJCSRuZW9bJG9dWydndmNyJ109JGVvLT5ndmNyOw0KCQkJCSRuZW9bJG9dWydoeGhlbmEnXT0kZW8tPmh4aGVuYTsNCgkJCQkkbmVvWyRvXVsnaGVudm5hJ109JGVvLT5oZW52bmE7DQoJCQkJJG5lb1skb11bJ2lieWh6ciddPShzeWJuZykkZW8tPmlieWh6cjsNCg0KCQkJCSRkb3EgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgDQoJCQkJCW9wX2JoZ19xcmdudnlfdnENCgkJCQkJLGZyZXZRYnhoenJhDQoNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJCSIpOw0KDQoJCQkJJG9xPTA7DQoJCQkJc2Jlcm5wdSgkZG9xLT5lcmZoeWcoKSBuZiAkZW9xKXsNCgkJCQkJJG5lb3FbJG9xXVsnZnJldlFieGh6cmEnXT0kZW9xLT5mcmV2UWJ4aHpyYTsNCgkJCQkJDQoJCQkJJG9xKys7DQoJCQkJfQ0KCQkJCQ0KCQkJCSRkb2MgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgIG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxmcmV2T25lbmF0DQoJCQkJCSAgLGZyZXZPbmVuYXQgbmYgZnJldk9uZW5hdENyenZ5dngNCgkJCQkJICAsMiBuZiBmcmV2UmFndmduZg0KCQkJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb2M9MDsNCgkJCQlzYmVybnB1KCRkb2MtPmVyZmh5ZygpIG5mICRlb2Mpew0KCQkJCQkkbmVvY1skb2NdWydmcmV2T25lbmF0J109JGVvYy0+ZnJldk9uZW5hdDsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldk9uZW5hdENyenZ5dngnXT0kZW9jLT5mcmV2T25lbmF0Q3J6dnl2eDsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldlJhZ3ZnbmYnXT0kZW9jLT5mcmV2UmFndmduZjsNCg0KCQkJCSRvYysrOw0KCQkJCX0NCgkJCQkNCgkJCQkkbmVnID0gbmVlbmwoKTsNCgkJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsNCgkJCQkkZGcgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgay5vbmVuYXRHbmV2c192cQ0KCQkJCQkgICxrLm9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsay5vcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJCSAgLGsuZ3Zjcl9xYnhoenJhDQoJCQkJCSAgLGsueGJxcldyYXZmR25ldnMNCgkJCQkJICAsay53aHp5bnVGbmdobmENCgkJCQkJICAsay54YnFyU25mdnl2Z25mR25ldnMNCgkJCQkJICAsay54YnFyRm5naG5hT25lbmF0DQoJCQkJCSAgLGsueGJxcldyYXZmQ2hhdGhnbmENCgkJCQkJICAscG5mZyhrLmF2eW52T25sbmUgbmYgcXJwdnpueSgxOCwyKSkgbmYgYXZ5bnZPbmxuZQ0KCQkJCQkgICxrLmF2eW52U25mdnl2Z25mDQoJCQkJCSAgLGsuYXZ5bnZGaHFudVF2eWhhbmZ2DQoJCQkJCSAgLGsuZnJldk9uZW5hdA0KCQkJCQkgICxrLmduZXZzDQoJCQkJCSAgLGsuZ25ldnNTbmZ2eXZnbmYNCgkJCQkJICBTRUJaIGdveV9xbmduX29uZW5hdEduZXZzICBrDQoJCQkJCWp1cmVyIGsub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBrLm9wX2JoZ19xcmdudnlfdnE9JG9wX2JoZ19xcmdudnlfdnENCg0KCQkJCSIpOw0KDQoJCQkJJGc9MDsNCg0KCQkJCXNiZXJucHUoJGRnLT5lcmZoeWcoKSBuZiAkZWcpew0KCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJJG5lZ1skZ11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlZy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmR25ldnMnXT0kZWctPnhicXJXcmF2ZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsnYXZ5bnZPbmxuZSddPShzeWJuZykkZWctPmF2eW52T25sbmU7DQoJCQkJCSRuZWdbJGddWydhdnludlNuZnZ5dmduZiddPShzeWJuZykkZWctPmF2eW52U25mdnl2Z25mOw0KCQkJCQkkbmVnWyRnXVsnZnJldk9uZW5hdCddPSRlZy0+ZnJldk9uZW5hdDsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+Z25ldnM7DQoJCQkJCSRuZWdbJGddWydnbmV2c1NuZnZ5dmduZiddPShzeWJuZykkZWctPmduZXZzU25mdnl2Z25mOw0KDQoJCQkJJGcrKzsNCgkJCQl9DQoNCgkJCQkkbmVvbnVuYW9ueGggPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkb28gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgb251bmFPbnhoX3ZxDQoJCQkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxvcF92YV9xcmdudnlfdnENCgkJCQkJICAsb3BfdmFfdXJucXJlX3ZxDQoJCQkJCSAgLG9wX2JoZ191cm5xcmVfdnFfbmZueQ0KCQkJCQkgICxvcF92YV91cm5xcmVfdnFfbmZueQ0KCQkJCQkgICxvcF9iaGdfcXJnbnZ5X3ZxX25mbnkNCgkJCQkJICAsb3BfdmFfcXJnbnZ5X3ZxX25mbnkNCgkJCQkJICAsdnFPbmVuYXQNCgkJCQkJICAsdnFXbnp2YW5hDQoJCQkJCSAgLHB2cw0KCQkJCQkgICxwdnNFaGN2bnUNCgkJCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCQkJICAsdW5ldG5DcmVieXJ1bmENCgkJCQkJICAsd2h6eW51Rm5naG5hDQoJCQkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAseGJxck5mbnlPbnVuYU9ueGgNCgkJCQkJICAsTmZueU9udW5hT254aA0KCQkJCQkgICx4YnFyT25lbmF0DQoJCQkJCSAgLHhicXJPbmVuYXROZm55DQoJCQkJCSAgLHhicXJRYnhoenJhDQoJCQkJCSAgLHhicXJRYnhOZm55DQoJCQkJCSAgLEhFTlZOQV9RQlhIWlJBDQoJCQkJCSAgLHhicXJYbmFnYmUNCgkJCQkJICAsenJleE9uZW5hdA0KCQkJCQkgICxhcWNveg0KCQkJCQkgICxhYnpiZU53aFFieE5mbnkNCgkJCQkJICAsYWJ6YmVRbnNnbmVRYnhOZm55DQoJCQkJCSAgLGNiZkduZXZzDQoJCQkJCSAgLGZyZXZPbnVuYU9ueGgNCgkJCQkJICAsZnJldk9udW5hT254aEduZXZzDQoJCQkJCSAgLGZyZXZPbmVuYXQNCgkJCQkJICAsZnJldk9uZW5hdFFieE5mbnkNCgkJCQkJICAsZnJldlZ3dmENCgkJCQkJICAsZmNyZnZzdnhuZnZZbnZhT25lbmF0DQoJCQkJCSAgLGduYXR0bnlRbnNnbmVRYnhOZm55DQoJCQkJCSAgLGduYXR0bnlOd2hRYnhOZm55DQoJCQkJCSAgLFZGQUhZWShndmNyT25lbmF0LCcnKSBORiBndmNyT25lbmF0DQoJCQkJCSAgLFZGQUhZWShoeGhlbmFPbmVuYXQsJycpIE5GIGh4aGVuYU9uZW5hdA0KCQkJCQkgICxoZW52bmFPbmVuYXQNCgkJCQkJICAseGJxcldyYXZmR25ldnMNCgkJCQkJICAsd2h6eW51Rm5naG5hR25ldnMNCgkJCQkJICAseGJxclNuZnZ5dmduZkduZXZzDQoJCQkJCSAgLHhicXJXcmF2ZkNoYXRoZ25hDQoJCQkJCSAgLGFyZ2diDQoJCQkJCSAgLGF2eW52T25sbmUNCgkJCQkJICAsYXZ5bnZXbmZuDQoJCQkJCSAgLGF2eW52U25mdnl2Z25mDQoJCQkJCSAgLGF2eW52RmhxbnVRdnloYW5mdg0KCQkJCQkgICxnbmV2cw0KCQkJCQkgICxnbmV2c1NuZnZ5dmduZg0KCQkJCQkgICxwbmduZ25hDQoJCQkJCSAgLHBlcm5ncl9xbmdyDQoJCQkJCSAgLHBlcm5ncl9vbA0KCQkJCQkgICx6YnF2c2xfcW5ncg0KCQkJCQkgICx6YnF2c2xfb2wNCgkJCQkgIFNFQlogcW9iLmdveV9xbmduX29udW5hT254aA0KCQkJCQlqdXJlciBnb3lfcW5nbl9vbnVuYU9ueGgub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBnb3lfcW5nbl9vbnVuYU9ueGgub3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb289MDsNCg0KCQkJCXNiZXJucHUoJGRvby0+ZXJmaHlnKCkgbmYgJGVvbnVuYW9ueGgpew0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZnJldk9uZW5hdCddPXZhZ2lueSgkZW9udW5hb254aC0+ZnJldk9uZW5hdCk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydjYmZHbmV2cyddPSRlb251bmFvbnhoLT5jYmZHbmV2czsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2hlbnZuYU9uZW5hdCddPSRlb251bmFvbnhoLT5oZW52bmFPbmVuYXQ7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkZuZ2huYSddPShzeWJuZykkZW9udW5hb254aC0+dW5ldG5GbmdobmE7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPndoenludUZuZ2huYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZW9udW5hb254aC0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3B2cyddPShzeWJuZykkZW9udW5hb254aC0+cHZzOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsncHZzRWhjdm51J109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnNFaGN2bnU7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3VuZXRuQ3JlYnlydW5hJ109KHN5Ym5nKSRlb251bmFvbnhoLT51bmV0bkNyZWJ5cnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPnhicXJOZm55T251bmFPbnhoOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxck9uZW5hdCddPSRlb251bmFvbnhoLT54YnFyT25lbmF0Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxclFieE5mbnknXT0kZW9udW5hb254aC0+eGJxclFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd4YnFyUWJ4aHpyYSddPSRlb251bmFvbnhoLT54YnFyUWJ4aHpyYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJYbmFnYmUnXT0kZW9udW5hb254aC0+eGJxclhuYWdiZTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FxY296J109KHN5Ym5nKSRlb251bmFvbnhoLT5hcWNvejsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FyZ2diJ109KHN5Ym5nKSRlb251bmFvbnhoLT5hcmdnYjsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2F2eW52V25mbiddPShzeWJuZykkZW9udW5hb254aC0+YXZ5bnZXbmZuOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnYWJ6YmVOd2hRYnhOZm55J109JGVvbnVuYW9ueGgtPmFiemJlTndoUWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPmZyZXZPbnVuYU9ueGg7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T25lbmF0UWJ4TmZueSddPSRlb251bmFvbnhoLT5mcmV2T25lbmF0UWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2ZyZXZWd3ZhJ109JGVvbnVuYW9ueGgtPmZyZXZWd3ZhOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZ25hdHRueVFuc2duZVFieE5mbnknXT0kZW9udW5hb254aC0+Z25hdHRueVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydndmNyT25lbmF0J109JGVvbnVuYW9ueGgtPmd2Y3JPbmVuYXQ7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydoeGhlbmFPbmVuYXQnXT0kZW9udW5hb254aC0+aHhoZW5hT25lbmF0Ow0KDQoJCQkJJG9vKys7DQoJCQkJfQ0KDQoJCQkJCS8vJG5lb1skdl1bJ29uZW5hdFFieGh6cmEnXT0kbmVvcTsNCgkJCQkJLy8kbmVvWyR2XVsnb25lbmF0Q3J6dnl2eCddPSRuZW9jOw0KCQkJCQkkbmVvWyRvXVsnb25lbmF0R25ldnMnXT0kbmVnOw0KCQkJCQkkbmVvWyRvXVsnb251bmFPbnhoJ109JG5lb251bmFvbnhoOw0KDQoJCQkJJG8rKzsNCg0KCQkJCX0NCg0KDQoJCQkkbmVlWyR2XVsnb25lbmF0J109JG5lbzsNCg0KCQkkZHJ2ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICxWRkFIWVkobnluem5nUmFndmduZiwgJycpIE5GIG55bnpuZ1JhZ3ZnbmYNCgkJCSAgLHZhdmZ2bnlSYWd2Z25mDQoJCQkgICxQQkFJUkVHKElORVBVTkUoMTApLCB4YnFyUmFndmduZikgTkYgeGJxclJhZ3ZnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZOY3YsICcwMicpIE5GIHhicXJXcmF2Zk5jdg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZlZxcmFndmduZiwgJzUnKSBORiB4YnFyV3JhdmZWcXJhZ3ZnbmYNCgkJCSAgLFZGQUhZWSh4YnFyQXJ0bmVuLCAnJykgTkYgeGJxckFydG5lbg0KCQkJICAsVkZBSFlZKHhicXJGZ25naGYsICczJykgTkYgeGJxckZnbmdoZg0KCQkJICAsVkZBSFlZKGFuem5SYWd2Z25mLCAnJykgTkYgYW56blJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhdm9SYWd2Z25mLCAnJykgTkYgYXZvUmFndmduZg0KCQkJICAsVkZBSFlZKGFiemJlVnFyYWd2Z25mLCAnJykgTkYgYWJ6YmVWcXJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhYnpiZVZ3dmFSYWd2Z25mLCAnJykgTkYgYWJ6YmVWd3ZhUmFndmduZg0KCQkJICAsVkZBSFlZKGduYXR0bnlWd3ZhUmFndmduZiwgJycpIE5GIGduYXR0bnlWd3ZhUmFndmduZg0KCQkJICAsZnJldlJhZ3ZnbmYNCgkJICBTRUJaIHFvYi5pdnJqX3JhZ3ZnbmZfcmtjIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgeGJxclJhZ3ZnbmYgPD4gMiANCgkJCUJFUVJFIE9MIGZyZXZSYWd2Z25mDQoNCgkJIik7DQoNCgkJJHJ2PTA7DQoJCXNiZXJucHUoJGRydi0+ZXJmaHlnKCkgbmYgJGVydil7DQoJCQkkbmVfcmFndmduZlskcnZdWydueW56bmdSYWd2Z25mJ109JGVydi0+bnluem5nUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJSYWd2Z25mJ109JGVydi0+eGJxclJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyV3JhdmZOY3YnXT0kZXJ2LT54YnFyV3JhdmZOY3Y7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyV3JhdmZWcXJhZ3ZnbmYnXT0kZXJ2LT54YnFyV3JhdmZWcXJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyQXJ0bmVuJ109JGVydi0+eGJxckFydG5lbjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJGZ25naGYnXT0kZXJ2LT54YnFyRmduZ2hmOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYW56blJhZ3ZnbmYnXT0kZXJ2LT5hbnpuUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2F2b1JhZ3ZnbmYnXT0kZXJ2LT5hdm9SYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYWJ6YmVWcXJhZ3ZnbmYnXT0kZXJ2LT5hYnpiZVZxcmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2FiemJlVnd2YVJhZ3ZnbmYnXT0kZXJ2LT5hYnpiZVZ3dmFSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnZ25hdHRueVZ3dmFSYWd2Z25mJ109JGVydi0+Z25hdHRueVZ3dmFSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnZnJldlJhZ3ZnbmYnXT12YWdpbnkoJGVydi0+ZnJldlJhZ3ZnbmYpOw0KDQoJCSRydisrOw0KCQl9DQoJCQ0KCQkkZF94cnpuZm5hID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkJICAsd2h6eW51WHJ6bmZuYQ0KCQkJCSAgLHhicXJXcmF2Zlhyem5mbmENCgkJCQkgICxmcmV2WHJ6bmZuYQ0KCQkJCSAgLHpyZXhYcnpuZm5hDQoJCQkgIFNFQlogcW9iLml2cmpfcW5nbl94cnpuZm5hIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSR4cnpuZm5hPTA7DQoJCXNiZXJucHUoJGRfeHJ6bmZuYS0+ZXJmaHlnKCkgbmYgJGVfeHJ6bmZuYSl7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3doenludVhyem5mbmEnXT12YWdpbnkoJGVfeHJ6bmZuYS0+d2h6eW51WHJ6bmZuYSk7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3hicXJXcmF2Zlhyem5mbmEnXT0kZV94cnpuZm5hLT54YnFyV3JhdmZYcnpuZm5hOw0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWyd6cmV4WHJ6bmZuYSddPSRlX3hyem5mbmEtPnpyZXhYcnpuZm5hOw0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWydmcmV2WHJ6bmZuYSddPXZhZ2lueSgkZV94cnpuZm5hLT5mcmV2WHJ6bmZuYSk7DQoNCgkJJHhyem5mbmErKzsNCgkJfQ0KDQoJCSRkX3hiYWdudmFyZSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxcldyYXZmWGJhZ252YXJlDQoJCQkgICx4YnFyR3ZjclhiYWdudmFyZQ0KCQkJICAseGJxckh4aGVuYVhiYWdudmFyZQ0KCQkJICAsYWJ6YmVYYmFnbnZhcmUNCgkJCSAgLGZyZXZYYmFnbnZhcmUNCgkJCVNFQlogcW9iLmdveV9vcF9iaGdfeGJhZ252YXJlIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSR4YmFnbnZhcmU9MDsNCgkJc2Jlcm5wdSgkZF94YmFnbnZhcmUtPmVyZmh5ZygpIG5mICRlX3hiYWdudmFyZSl7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWyd4YnFyV3JhdmZYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJXcmF2ZlhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJHdmNyWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT54YnFyR3ZjclhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJIeGhlbmFYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJIeGhlbmFYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWydhYnpiZVhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+YWJ6YmVYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWydmcmV2WGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT5mcmV2WGJhZ252YXJlOw0KDQoJCSR4YmFnbnZhcmUrKzsNCgkJfQ0KDQoJCSRkX3FieGh6cmEgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfcWJ4aHpyYV92cSBuZiB2cVFieGh6cmENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCSAgLHhicXJRYnhoenJhDQoJCQkgICxWRkFIWVkoeGJxclNuZnZ5dmduZiwgJycpIE5GIHhicXJTbmZ2eXZnbmYNCgkJCSAgLHhicXJWd3ZhDQoJCQkgICx3cmF2ZlFieGh6cmENCgkJCSAgLFZGQUhZWShhbnpuU25mdnl2Z25mLCAnJykgTkYgYW56blNuZnZ5dmduZg0KCQkJICAsYWJ6YmVRYnhoenJhDQoJCQkgICxmcmV2UWJ4aHpyYQ0KCQkJICAsZ25hdHRueVFieGh6cmENCgkJCSAgLGhleVFieGh6cmENCgkJCSAgLHhyZ3JlbmF0bmENCgkJCSAgLHBlcm5ncl9xbmdyDQoJCQkgICxwZXJuZ3Jfb2wNCgkJCSAgLHpicXZzbF9xbmdyDQoJCQkgICx6YnF2c2xfb2wNCgkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xYnhoenJhIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCWJlcXJlIG9sIGZyZXZRYnhoenJhDQoNCgkJIik7DQoNCgkJJHFieGh6cmE9MDsNCgkJc2Jlcm5wdSgkZF9xYnhoenJhLT5lcmZoeWcoKSBuZiAkZV9xYnhoenJhKXsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsndnFRYnhoenJhJ109JGVfcWJ4aHpyYS0+dnFRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd4YnFyUWJ4aHpyYSddPSRlX3FieGh6cmEtPnhicXJRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydhYnpiZVFieGh6cmEnXT0kZV9xYnhoenJhLT5hYnpiZVFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2ZyZXZRYnhoenJhJ109JGVfcWJ4aHpyYS0+ZnJldlFieGh6cmE7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2duYXR0bnlRYnhoenJhJ109JGVfcWJ4aHpyYS0+Z25hdHRueVFieGh6cmE7DQoNCgkJJHFieGh6cmErKzsNCgkJfQ0KDQoJCSRkX2NyYXRuYXR4aGcgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyT3JhcXJlbg0KCQkJICAsYW56bkNyYXRuYXR4aGcNCgkJCSAgLGFiemJlQ3JhdG5hdHhoZw0KCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCSAgLEVCSl9BSFpPUkUoKSBCSVJFIChCRVFSRSBPTCBvcF9iaGdfdXJucXJlX3ZxKSBuZiBmcmV2Q3JhdG5hdHhoZw0KCQkJICBTRUJaIHFvYi5pdnJqX2NyYXRuYXR4aGcganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJGNyYXRuYXR4aGc9MDsNCgkJc2Jlcm5wdSgkZF9jcmF0bmF0eGhnLT5lcmZoeWcoKSBuZiAkZV9jcmF0bmF0eGhnKXsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxck9yYXFyZW4nXT0kZV9jcmF0bmF0eGhnLT54YnFyT3JhcXJlbjsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYW56bkNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5hbnpuQ3JhdG5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYWJ6YmVDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWyd4YnFyUG5lbk5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnhicXJQbmVuTmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydmcmV2Q3JhdG5hdHhoZyddPSgkZV9jcmF0bmF0eGhnLT5mcmV2Q3JhdG5hdHhoZyk7DQoNCgkJJGNyYXRuYXR4aGcrKzsNCgkJfQ0KCQkNCgkJJGRfb25heCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJPbmF4DQoJCQkgICxmcmV2T25heA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkb25heD0wOw0KCQlzYmVybnB1KCRkX29uYXgtPmVyZmh5ZygpIG5mICRlX29uYXgpew0KCQkJJG5lX29uYXhbJG9uYXhdWyd4YnFyT25heCddPSRlX29uYXgtPnhicXJPbmF4Ow0KCQkJJG5lX29uYXhbJG9uYXhdWydmcmV2T25heCddPSRlX29uYXgtPmZyZXZPbmF4Ow0KDQoJCSRvbmF4Kys7DQoJCX0NCgkJDQoJCSRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsJCQ0KCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCQlGUllSUEcNCgkJCQkJMSBuZiB2cUNoYXRoZ25hLA0KCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJeGJxclNuZnZ5dmduZkduZXZzLA0KCQkJCQlmaHooYXZ5bnZTbmZ2eXZnbmYpIG5mIGF2eW52U25mdnl2Z25mDQoJCQkJU0VCWiBxb2IuaXZyal9nbmV2c09aX3ZhDQoJCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCXRlYmhjIG9sDQoJCQkJCXhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCQl4YnFyU25mdnl2Z25mR25ldnMNCgkJDQoJCQkiKTsNCgkJCQ0KCQkJJGM9MDsNCgkJCQ0KCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlYyl7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsndnFDaGF0aGduYSddPXZhZ2lueSgkZWMtPnZxQ2hhdGhnbmEpOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGVjLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJCQkkbmVfY2hhdGhnbmFbJGNdWydhdnludkNoYXRoZ25hJ109JGVjLT5hdnludlNuZnZ5dmduZjsNCgkJCQkkYysrOw0KCQkJfQ0KCQkNCgkJJGRfeHJmdm5jbmFPbmVuYXQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJICAseGJxcldyYXZmVGhxbmF0DQoJCQkgICxhbnpuQ3ZwDQoJCQkgICxueW56bmcNCgkJCSAgLGFiemJlR3J5Y0N2cA0KCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCSAgLHdoenludVBiYWdudmFyZTQwDQoJCQkgICx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJICAseGJxcldyYXZmQ25lZ0JzDQoJCQkgICxnbmF0dG55Q3hvDQoJCQkgICxqbnhnaEZ2bmNDcmV2eGZuIG5mIGpueGdoRnZuY0NyZXZ4Zm4xDQoJCQkgICxwYmFwbmcoZ25hdHRueUN4bywnRycsIGpueGdoRnZuY0NyZXZ4Zm4sJzowMC4wMDBNJykgbmYgam54Z2hGdm5jQ3Jldnhmbg0KCQkJICAsV3JhdmZPbmVuYXQNCgkJCSAgLFdyYXZmVGhxbmF0DQoJCQkgICxXcmF2ZkNuZWdCcw0KCQkJICAsUG5lbkZnaHNzdmF0DQoJCQkgICx4cmdyZW5hdG5hDQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJIik7DQoNCgkJJHhyZnZuY25hT25lbmF0PTA7DQoJCXNiZXJucHUoJGRfeHJmdm5jbmFPbmVuYXQtPmVyZmh5ZygpIG5mICRlX3hyZnZuY25hT25lbmF0KXsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZPbmVuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmT25lbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZlRocW5hdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZUaHFuYXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYW56bkN2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hbnpuQ3ZwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ255bnpuZyddPSRlX3hyZnZuY25hT25lbmF0LT5ueW56bmc7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYWJ6YmVHcnljQ3ZwJ109JGVfeHJmdm5jbmFPbmVuYXQtPmFiemJlR3J5Y0N2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT55YnhuZnZGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyUG5lbkZnaHNzdmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJQbmVuRmdoc3N2YXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmQ25lZ0JzJ109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2ZkNuZWdCczsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydnbmF0dG55Q3hvJ109JGVfeHJmdm5jbmFPbmVuYXQtPmduYXR0bnlDeG87DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT5qbnhnaEZ2bmNDcmV2eGZuOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTIwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTIwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTQwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTQwOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdCsrOw0KCQl9DQoNCgkJCSRuZWVbJHZdWydyYWd2Z25mJ109JG5lX3JhZ3ZnbmY7DQoJCQkkbmVlWyR2XVsneHJ6bmZuYSddPSRuZV94cnpuZm5hOw0KCQkJJG5lZVskdl1bJ3hiYWdudmFyZSddPSRuZV94YmFnbnZhcmU7DQoJCQkkbmVlWyR2XVsncWJ4aHpyYSddPSRuZV9xYnhoenJhOw0KCQkJJG5lZVskdl1bJ2NyYXRuYXR4aGcnXT0kbmVfY3JhdG5hdHhoZzsNCgkJCSRuZWVbJHZdWydjaGF0aGduYSddPSRuZV9jaGF0aGduYTsNCg0KCQkkdisrOw0KCQl9DQoJDQoNCgkJJG5lZW5sPSAkbmVlWzBdOw0KCQkkcW5nbmFsbj0gd2ZiYV9yYXBicXIoJG5lZW5sKTsNCgkJDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGRywgZ2Vocik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCgkJJHVybnFyZWYgPSBuZWVubCgNCgkJICAgIk5oZ3ViZXZtbmd2YmE6IE9ybmVyZSAkZ2J4cmEiLA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIg0KCQkpOw0KCQkvL3JwdWIgJGdieHJhIC4gIjxvZT4iOyANCgkJLy9pbmVfcWh6YygkdXJucXJlZik7DQoJCS8vcXZyKCk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJCQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHU1ZSWVFGLCAkcW5nbmFsbik7DQoJCS8vcnB1YiAkcW5nbmFsbjsJDQoJCS8vcXZyKCk7DQoNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCgkJDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJDQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KDQoJCSRmZ25naGZfcHJ2Zm4gPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCSRuZmhqID0gdmZmcmcoJGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl0pPyRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdOiduaic7DQoJCXZzKCRuZmhqID09ICduaicpew0KCQkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gPT0gJ0JYJyl7DQoJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJaGNxbmdyIGdveV9vcF9iaGdfdXJucXJlIGZyZyB2cUVyZmNiYSA9IC0xIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJIik7DQoJCQkNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwncW5nbkZnbmdoZicgPT4nRmh4ZnJmIScgICkpOw0KCQkJDQoJCQkNCgkJfSByeWZyIHsNCgkJCXZzICh2ZmZyZygkZmduZ2hmX3BydmZuWydmZ25naGYnXSkpew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwncW5nbkZnbmdoZicgPT4nVG50bnkgRnJhcXZhdCEnKSk7DQoJCQl9IHJ5ZnIgew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywnZmduZ2hmJyA9PiAiVmFzYmV6bmZ2IiwgJ3pyZmZudHInID0+ICIgSGFxcmUgWm52YWduYXJhcHIgRnJlaXJlICIsJ3FuZ25GZ25naGYnID0+J1NudnlycScgKSApOwkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJfQ0KCQl9IHJ5ZnIgew0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JzAyJyAsJ3pyZmZudHInID0+JG5maGosJ3FuZ25GZ25naGYnID0+J1hiYXJ4ZnYgZ3JlY2hnaGYsIEZ2eW51eG5hIFlidHZhIFBSVkZOIHhyem9ueXYhJyApKTsJCQ0KCQkJcXZyKCk7DQoJCQkNCgkJfQ0KDQoJfQ0KCQ0KCXNoYXBndmJhIHh2ZXZ6X3FuZ25fZ2JfcHJ2Zm5fZ2NvMjUoKXsNCgkJJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZXJkaHJmZ19xcmdudnlfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGZnZiA9ICh2ZmZyZygkX0NCRkdbJ2ZnZiddKSAmJiAhcnpjZ2woJF9DQkZHWydmZ2YnXSkpPyRfQ0JGR1snZmdmJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsNCgkJLy8kZ2J4cmEgPSAodmZmcmcoJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJykpICYmICFyemNnbCgkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkpPyRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZmduZ2hmIEd2cW54IFF2Z3J6aHhuYSBQUlZGTiJ9Jyk7IA0KCQkkZ2J4cmEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKTsNCgkJDQoJCS8vJGhleSA9ICJ1Z2djZjovL2F5cnVoby54cnpyYXhyaC50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi9xYnBoenJhZyI7DQoNCgkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkgRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsbmZueVFuZ24NCgkJCQkJICAscG5mZyhuZmhlbmFmdiBuZiBxcnB2em55KDE4LDIpKSBuZiBuZmhlbmFmdg0KCQkJCQkgICxvdm5sbkNyYXRoZW5hdA0KCQkJCQkgICxvdm5sbkduem9udW5hDQoJCQkJCSAgLHBuZmcob2VoZ2IgbmYgcXJwdnpueSgxOCw0KSkgbmYgb2VoZ2INCgkJCQkJICAscG5mZyhwdnMgbmYgcXJwdnpueSgxOCwyKSkgbmYgcHZzDQoJCQkJCSAgLHB2c0VoY3ZudQ0KCQkJCQkgICwnMScgbmYgcXZmcHludnpyZQ0KCQkJCQkgICwnMicgbmYgc3ludFBoZW51DQoJCQkJCSAgLCcyJyBuZiBzeW50WnZ0bmYNCgkJCQkJICAsc3ludElxDQoJCQkJCSAgLHBuZmcoc2JvIG5mIHFycHZ6bnkoMTgsMikpIG5mIHNibw0KCQkJCQkgICxwbmZnKHNlcnZ0dWcgbmYgcXJwdnpueSgxOCwyKSkgbmYgc2VydnR1Zw0KCQkJCQkgICxwbmZnKHVuZXRuQ3JhbHJlbnVuYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkNyYWxyZW51bmENCgkJCQkJICAsUEJBSVJFRyhJTkVQVU5FKDEwKSwgZnJldlJhZ3ZnbmYpIE5GIHZxQ3JhdHRoYW4NCgkJCQkJICAsdnFDcmF0bmF0eGhnDQoJCQkJCSAgLHdub25nbmFHZ3ENCgkJCQkJICAsd2h6eW51WGJhZ252YXJlDQoJCQkJCSAgLHdoenludUduYXFuQ3JhdG56bmEgDQoJCQkJCSAgLHhicXJOZmhlbmFmdg0KCQkJCQkgICx4YnFyUG5lbk9ubG5lDQoJCQkJCSAgLHhicXJQbmVuUW50bmF0DQoJCQkJCSAgLHhicXJRYnhoenJhDQoJCQkJCSAgLHhicXJWYXBiZ3Jleg0KCQkJCQkgICxWRkFIWVkoeGJxcldyYXZmQ2ViZnJxaGUsICcnKSBORiB4YnFyV3JhdmZDZWJmcnFoZQ0KCQkJCQkgICxWRkFIWVkoeGJxcldyYXZmUnhmY2JlLCAnJykgTkYgeGJxcldyYXZmUnhmY2JlDQoJCQkJCSAgLHhicXJXcmF2ZkF2eW52DQoJCQkJCSAgLHZmYWh5eSh4YnFyV3JhdmZHY28sJycpIG5mIHhicXJXcmF2ZkdjbyANCgkJCQkJICAseGJxclhuYWdiZQ0KCQkJCQkgICx4YnFyWG5hZ2JlT2JhdHhuZQ0KCQkJCQkgICx4YnFyWG5hZ2JlUnhmY2JlDQoJCQkJCSAgLHhicXJYbmFnYmUgbmYgeGJxclhuYWdiZVpobmcgDQoJCQkJCSAgLHhicXJYbmFnYmVDcmV2eGZuDQoJCQkJCSAgLHhicXJYbmdydGJldlJ4ZmNiZSANCgkJCQkJICAseGJxclhyYW5DbndueA0KCQkJCQkgICx4YnFyWWJ4bmZ2DQoJCQkJCSAgLCc0JyBuZiB4YnFyWWJ4bmZ2T25sbmUNCgkJCQkJICAsWWJ4bmZ2T25sbmUNCgkJCQkJICAseGJxckFydG5lbkdod2huYQ0KCQkJCQkgICx4YnFyQ3J5T2JhdHhuZSANCgkJCQkJICAseGJxckNyeVJ4ZmNiZQ0KCQkJCQkgICx4YnFyQ3J5WmhuZw0KCQkJCQkgICx4YnFyQ3J5R2VuYWZ2Zw0KCQkJCQkgICx4YnFyQ3J5R2h3aG5hDQoJCQkJCSAgLFZGQUhZWSh4YnFyQ3J6b25sbmUsICcnKSBORiB4YnFyQ3J6b25sbmUNCgkJCQkJICAseGJxckd2Y3JVbmV0bg0KCQkJCQkgICx4YnFyR2h3aG5hQ3JhdHZldnpuYQ0KCQkJCQkgICwwIG5mIHhicXJUaGFuT25lbmF0DQoJCQkJCSAgLHhicXJHY2YNCgkJCQkJICAseGJxcklueWhnbg0KCQkJCQkgICx4YmduR2dxDQoJCQkJCSAgLFJhZ3ZnbmYNCgkJCQkJICAsUmFndmduZjENCgkJCQkJICAsUmFndmduZjINCgkJCQkJICAsUmFndmduZjMNCgkJCQkJICAsUmFndmduZjQNCgkJCQkJICAsYW56bkdncQ0KCQkJCQkgICxwbmZnKGFxY296IG5mIHFycHZ6bnkoMTgsNCkpIG5mIGFxY296DQoJCQkJCSAgLHBuZmcoYXJnZ2IgbmYgcXJwdnpueSgxOCw0KSkgbmYgYXJnZ2INCgkJCQkJICAsYXZ5bnZPbmVuYXQNCgkJCQkJICAsYXZ5bnZWYXBiZ3Jleg0KCQkJCQkgICxwbmZnKGF2eW52Wm54eWJhIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52Wm54eWJhDQoJCQkJCSAgLGF2eW52V25mbg0KCQkJCQkgICxobmF0Wmh4bg0KCQkJCQkgICxFUkNZTlBSKGFiemJlTndoLCAnLScsICcnKSBORiBhYnpiZU53aA0KCQkJCQkgICxhYnpiZU9wMTENCgkJCQkJICAsVkZBSFlZKGNiZk9wMTEsICcnKSBORiBjYmZPcDExDQoJCQkJCSAgLGNyYXRuYXR4aGcNCgkJCQkJICAsZnJldg0KCQkJCQkgICxmcmV2UmFndmduZg0KCQkJCQkgICxmcmV2UmFndmduZjENCgkJCQkJICAsZnJldlJhZ3ZnbmYyDQoJCQkJCSAgLGZyZXZSYWd2Z25mMw0KCQkJCQkgICxmcmV2UmFndmduZjQNCgkJCQkJICAsVkZBSFlZKGZob2NiZk9wMTEsICcnKSBORiBmaG9jYmZPcDExDQoJCQkJCSAgLGZnbmdoZg0KCQkJCQkgICxncnpjbmdGZ2hzc3ZhdA0KCQkJCQkgICxnbmF0dG55TndoDQoJCQkJCSAgLGd0eU54dXZlT3JleW54aA0KCQkJCQkgICxndHlOam55T3JleW54aA0KCQkJCQkgICxnbmF0dG55T3AxMQ0KCQkJCQkgICxnbmF0dG55UW5zZ25lDQoJCQkJCSAgLGduYXR0bnlSeGZjYmUNCgkJCQkJICAsZ25hdHRueUNyZXZ4Zm4NCgkJCQkJICAsZ25hdHRueUdncQ0KCQkJCQkgICxwbmZnKGdiZ255UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGdiZ255UW5hbkZuanZnDQoJCQkJCSAgLHhicXJPcmFxcmVuDQoJCQkJCSAgLCdZdnl2cmYnIE5GIGhmcmVDYmVnbnkNCgkJCQkJICAsaWJ5aHpyDQoJCQkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkJCSAgLGF2eA0KCQkJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCQkJICAsYWJRbnNnbmUNCgkJCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCQkJICAsZnJldkNyYXRuYXR4aGcNCgkJCQkJICAseGJxck9uYXgNCgkJCQkJICAsZnJldk9uYXgNCgkJCQkJICAsd2h6eW51UGJhZ252YXJlDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxclhuYWdiZUdod2huYQ0KCQkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZUaHFuYXQNCgkJCQkJICAseGJxckdod2huYUdjbw0KCQkJCQkgICxhbnpuQ3ZwDQoJCQkJCSAgLG55bnpuZw0KCQkJCQkgICxhYnpiZUdyeWNDdnANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlNDANCgkJCQkJICAsd2h6eW51V3JhdmZPbmVuYXQNCgkJCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkgICx4YnFyV3JhdmZDbmVnQnMNCgkJCQkJICAsZ25hdHRueUN4bw0KCQkJCQkgICxpcQ0KCQkJCQkgICxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSAgLFdyYXZmR2NvDQoJCQkJCSAgLEdod2huYUdjbw0KCQkJCQkgICxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSAgLFBuZW5OYXR4aGcNCgkJCQkJICAsWHJhbkNud254DQoJCQkJCSAgLE5maGVuYWZ2X2d2Y3INCgkJCQkJICAsT25heA0KCQkJCQkgICxZYnhuZnYNCgkJCQkJICAsR2NmDQoJCQkJCSAgLFBuZW5PbmxuZQ0KCQkJCQkgICxQbmVuUW50bmF0DQoJCQkJCSAgLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLFdyYXZmUnhmY2JlDQoJCQkJCSAgLFdyYXZmQXZ5bnYNCgkJCQkJICAsV3JhdmZYcnpuZm5hDQoJCQkJCSAgLFdyYXZmQ2ViZnJxaGUNCgkJCQkJICAsVmFwYmdyZXoNCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJG5lZSA9IG5lZW5sKCk7DQoJCSRuZW8gPSBuZWVubCgpOw0KCQkkbmVvcSA9IG5lZW5sKCk7DQoJCSRuZWcgPSBuZWVubCgpOw0KCQkkbmVpcSA9IG5lZW5sKCk7DQoJCSRuZWZ4ID0gbmVlbmwoKTsNCgkJJG5lb2MgPSBuZWVubCgpOw0KCQkkbmVvbnVuYW9ueGggPSBuZWVubCgpOw0KCQkkbmVvbnVuYW9ueGhfZ2UgPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZiA9IG5lZW5sKCk7DQoJCSRuZV94cnpuZm5hID0gbmVlbmwoKTsNCgkJJG5lX3hiYWdudmFyZSA9IG5lZW5sKCk7DQoJCSRuZV9xYnhoenJhID0gbmVlbmwoKTsNCgkJJG5lX2NyYXRuYXR4aGcgPSBuZWVubCgpOw0KCQkkbmVfb25heCA9IG5lZW5sKCk7DQoJCSRuZV94cmZ2bmNuYU9uZW5hdCA9IG5lZW5sKCk7DQoJCSR2PTA7DQoNCgkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGViaikgew0KCQkJJG5lZVskdl1bJ25mbnlRbmduJ109JGViai0+bmZueVFuZ247DQoJCQkkbmVlWyR2XVsnbmZoZW5hZnYnXT0oc3libmcpJGViai0+bmZoZW5hZnY7DQoJCQkkbmVlWyR2XVsnb3ZubG5DcmF0aGVuYXQnXT0oc3libmcpJGViai0+b3ZubG5DcmF0aGVuYXQ7DQoJCQkkbmVlWyR2XVsnb3ZubG5HbnpvbnVuYSddPShzeWJuZykkZWJqLT5vdm5sbkduem9udW5hOw0KCQkJJG5lZVskdl1bJ29laGdiJ109KHN5Ym5nKSRlYmotPm9laGdiOw0KCQkJJG5lZVskdl1bJ3B2cyddPShzeWJuZykkZWJqLT5wdnM7DQoJCQkkbmVlWyR2XVsncXZmcHludnpyZSddPSRlYmotPnF2ZnB5bnZ6cmU7DQoJCQkkbmVlWyR2XVsnc3ludFBoZW51J109JGViai0+c3ludFBoZW51Ow0KCQkJJG5lZVskdl1bJ3N5bnRadnRuZiddPSRlYmotPnN5bnRadnRuZjsNCgkJCSRuZWVbJHZdWydzYm8nXT0oc3libmcpJGViai0+c2JvOw0KCQkJJG5lZVskdl1bJ3NlcnZ0dWcnXT0oc3libmcpJGViai0+c2VydnR1ZzsNCgkJCSRuZWVbJHZdWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGViai0+dW5ldG5DcmFscmVudW5hOw0KCQkJJG5lZVskdl1bJ3ZxQ3JhdHRoYW4nXT0kZWJqLT52cUNyYXR0aGFuOw0KCQkJJG5lZVskdl1bJ3dub25nbmFHZ3EnXT0kZWJqLT53bm9uZ25hR2dxOw0KCQkJJG5lZVskdl1bJ3doenludVhiYWdudmFyZSddPSRlYmotPndoenludVhiYWdudmFyZTsNCgkJCSRuZWVbJHZdWyd4YnFyUG5lbk9ubG5lJ109JGViai0+eGJxclBuZW5PbmxuZTsNCgkJCSRuZWVbJHZdWyd4YnFyUWJ4aHpyYSddPSRlYmotPnhicXJRYnhoenJhOw0KCQkJJG5lZVskdl1bJ3hicXJUaGFuT25lbmF0J109dmFnaW55KCRlYmotPnhicXJUaGFuT25lbmF0KTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQ2ViZnJxaGUnXT0kZWJqLT54YnFyV3JhdmZDZWJmcnFoZTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZHY28nXT0kZWJqLT54YnFyV3JhdmZHY287DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZVpobmcnXT0kZWJqLT54YnFyWG5hZ2JlWmhuZzsNCgkJCSRuZWVbJHZdWyd4YnFyWWJ4bmZ2T25sbmUnXT0kZWJqLT54YnFyWWJ4bmZ2T25sbmU7DQoJCQkkbmVlWyR2XVsneGJxckNyem9ubG5lJ109JGViai0+eGJxckNyem9ubG5lOw0KCQkJJG5lZVskdl1bJ3hicXJHaHdobmFDcmF0dmV2em5hJ109JGViai0+eGJxckdod2huYUNyYXR2ZXZ6bmE7DQoJCQkkbmVlWyR2XVsneGJxcklueWhnbiddPSRlYmotPnhicXJJbnloZ247DQoJCQkkbmVlWyR2XVsneGJnbkdncSddPSRlYmotPnhiZ25HZ3E7DQoJCQkkbmVlWyR2XVsnYW56bkdncSddPSRlYmotPmFuem5HZ3E7DQoJCQkkbmVlWyR2XVsnYXFjb3onXT0oc3libmcpJGViai0+YXFjb3o7DQoJCQkkbmVlWyR2XVsnYXJnZ2InXT0oc3libmcpJGViai0+YXJnZ2I7DQoJCQkkbmVlWyR2XVsnYXZ5bnZPbmVuYXQnXT0oc3libmcpJGViai0+YXZ5bnZPbmVuYXQ7DQoJCQkkbmVlWyR2XVsnYXZ5bnZabnh5YmEnXT0oc3libmcpJGViai0+YXZ5bnZabnh5YmE7DQoJCQkkbmVlWyR2XVsnYWJ6YmVOd2gnXT0kZWJqLT5hYnpiZU53aDsNCgkJCSRuZWVbJHZdWydjYmZPcDExJ109JGViai0+Y2JmT3AxMTsNCgkJCSRuZWVbJHZdWydmcmV2J109JGViai0+ZnJldjsNCgkJCSRuZWVbJHZdWydnbmF0dG55TndoJ109JGViai0+Z25hdHRueU53aDsNCgkJCSRuZWVbJHZdWydnbmF0dG55R2dxJ109JGViai0+Z25hdHRueUdncTsNCgkJCSRuZWVbJHZdWydoZnJlQ2JlZ255J109JGViai0+aGZyZUNiZWdueTsNCgkJCSRuZWVbJHZdWydpYnloenInXT0oc3libmcpJGViai0+aWJ5aHpyOw0KDQoJCQkkZG8gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCUZSWVJQRyBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkgICx2cU9uZW5hdA0KCQkJICAsb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsbmZoZW5hZnYNCgkJCSAgLG9laGdiDQoJCQkgICxwdnMNCgkJCSAgLHB2c0VoY3ZudQ0KCQkJICAscXZmeGJhDQoJCQkgICxzYm8NCgkJCSAgLHNlcnZ0dWcNCgkJCSAgLHVuZXRuUnhmY2JlDQoJCQkgICx1bmV0bkNuZ2J4bmENCgkJCSAgLHBuZmcodW5ldG5DcmVieXJ1bmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5DcmVieXJ1bmENCgkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJICAsdmZ2Q3JlWHJ6bmZuYQ0KCQkJICAseGJxck5mbnlPbmVuYXQNCgkJCSAgLHdoenludU5mbnlPbnVuYU9ueGgNCgkJCSAgLHdoenludVhyem5mbmENCgkJCSAgLHdoenludUZuZ2huYSANCgkJCSAgLHhicXJOZm55T251bmFPbnhoDQoJCQkgICx4YnFyT25lbmF0DQoJCQkgICx4YnFyUW5yZW51TmZueQ0KCQkJICAsYWJ6YmVfdmFpYnZwciBuZiB4YnFyUWJ4aHpyYSANCgkJCSAgLHZmYWh5eSh4YnFyUWJ4TmZueSwnJykgbmYgeGJxclFieE5mbnkNCgkJCSAgLCcwJyBuZiB4YnFyVGhhbk9uZW5hdA0KCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJICAsdmZhaHl5KHhicXJYbmdydGJldk9uZW5hdCwgJycpIG5mIHhicXJYbmdydGJldk9uZW5hdA0KCQkJICAsJzEnIG5mIHhicXJYYmFxdmZ2T25lbmF0DQoJCQkgICx4YnFyQXJ0bmVuTmZueQ0KCQkJICAsdmZhaHl5KHhicXJDcmV1dmdoYXRuYSwnMCcpIG5mIHhicXJDcmV1dmdoYXRuYQ0KCQkJICAseGJxckZuZ2huYU9uZW5hdA0KCQkJICAsenJleA0KCQkJICAsYXFjb3oNCgkJCSAgLGFyZ2diDQoJCQkgICxwbmZnKGF2eW52T25lbmF0IG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52T25lbmF0DQoJCQkgICxwbmZnKGF2eW52UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52UW5hbkZuanZnDQoJCQkgICxhdnludlduZm4NCgkJCSAgLGF2eW52R256b251DQoJCQkgICxjYmZHbmV2cw0KCQkJICAsZnJldk9uZW5hdA0KCQkJICAsZmNyZnZzdnhuZnZZbnZhDQoJCQkgICxndmNyDQoJCQkgICxobmF0Wmh4bg0KCQkJICAsaHhoZW5hDQoJCQkgICxoZW52bmENCgkJCSAgLGlieWh6cg0KCQkJICAsZnJldlFieGh6cmENCgkJCSAgLGZyZXZSYWd2Z25mDQoJCQkgICxwbmduZ25hDQoJCQkgICxBcnRuZW5OZm55X3FneQ0KCQkJICAsTmZueU9udW5hT254aF9xZ3kNCgkJCSAgLENyZXV2Z2hhdG5hX3FneQ0KCQkJICAsWG5ncnRiZXZPbmVuYXQNCgkJCSAgLE5mbnlPbmVuYXQNCgkJCSAgLE5mbnlPbnVuYU9ueGgNCgkJCSAgLHdoenludU9udW5hT254aA0KCQkJICAsd2h6eW51UXZ5cnhuZ3huYQ0KCQkJICAsd2h6eW51Q3ZnblBoeG52DQoJCQkgICx3aHp5bnVFcm55dmZuZnYNCgkJCSAgLHhuY25mdmduZkZ2eXZhcXJlDQoJCQkgICxhdnludlFyaXZmbg0KCQkJICAsVkZBSFlZKGF2eW52T25lbmF0SXEsMCkgTkYgYXZ5bnZPbmVuYXRJcQ0KCQkJICAsY3JlYWxuZ25uYVluZWduZg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZklxLCAnJykgTkYgeGJxcldyYXZmSXENCgkJCSAgLGZyZXZWd3ZhDQoJCQkgICxnbmV2c1BoeG52DQoJCQkgICxDcmV1dmdoYXRuYQ0KCQkJICAsWHJhbkNud254DQoJCQkgICx1d3JQaHhudg0KCQkJICAsZnJldk9uZW5hdFFieE5mbnkNCgkJCSAgLGZyZXZPbmVuYXQgTkYgZnJldk9uZW5hdENyenZ5dngNCgkJCSAgLHBlcm5ncl9xbmdyDQoJCQkgICxwZXJuZ3Jfb2wNCgkJCSAgLHpicXZzbF9xbmdyDQoJCQkgICx6YnF2c2xfb2wNCgkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSBiZXFyZSBvbCBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkiKTsNCgkJCQ0KCQkJJG89MDsNCgkJCXNiZXJucHUoJGRvLT5lcmZoeWcoKSBuZiAkZW8pew0KCQkJCSRuZW9bJG9dWydvZWhnYiddPShzeWJuZykkZW8tPm9laGdiOw0KCQkJCSRuZW9bJG9dWydwdnMnXT0oc3libmcpJGVvLT5wdnM7DQoJCQkJJG5lb1skb11bJ3B2c0VoY3ZudSddPShzeWJuZykkZW8tPnB2c0VoY3ZudTsNCgkJCQkkbmVvWyRvXVsncXZmeGJhJ109KHN5Ym5nKSRlby0+cXZmeGJhOw0KCQkJCSRuZW9bJG9dWydzZXJ2dHVnJ109KHN5Ym5nKSRlby0+c2VydnR1ZzsNCgkJCQkkbmVvWyRvXVsnc2JvJ109KHN5Ym5nKSRlby0+c2JvOw0KCQkJCSRuZW9bJG9dWyd1bmV0blJ4ZmNiZSddPShzeWJuZykkZW8tPnVuZXRuUnhmY2JlOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNuZ2J4bmEnXT0oc3libmcpJGVvLT51bmV0bkNuZ2J4bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuQ3JlYnlydW5hJ109KHN5Ym5nKSRlby0+dW5ldG5DcmVieXJ1bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuQ3JhbHJlbnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkkbmVvWyRvXVsndW5ldG5GbmdobmEnXT0oc3libmcpJGVvLT51bmV0bkZuZ2huYTsNCgkJCQkkbmVvWyRvXVsndmZ2Q3JlWHJ6bmZuYSddPShzeWJuZykkZW8tPnZmdkNyZVhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3doenludVhyem5mbmEnXT0kZW8tPndoenludVhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3doenludUZuZ2huYSddPShzeWJuZykkZW8tPndoenludUZuZ2huYTsNCgkJCQkkbmVvWyRvXVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZW8tPnhicXJOZm55T251bmFPbnhoOw0KCQkJCSRuZW9bJG9dWyd4YnFyT25lbmF0J109JGVvLT54YnFyT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUW5yZW51TmZueSddPSRlby0+eGJxclFucmVudU5mbnk7DQoJCQkJJG5lb1skb11bJ3hicXJRYnhoenJhJ109JGVvLT54YnFyUWJ4aHpyYTsNCgkJCQkkbmVvWyRvXVsneGJxclFieE5mbnknXT0kZW8tPnhicXJRYnhOZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyVGhhbk9uZW5hdCddPSRlby0+eGJxclRoYW5PbmVuYXQ7DQoJCQkJJG5lb1skb11bJ3hicXJXcmF2Zlhyem5mbmEnXT0kZW8tPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkJJG5lb1skb11bJ3hicXJYbmdydGJldk9uZW5hdCddPSRlby0+eGJxclhuZ3J0YmV2T25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyWGJhcXZmdk9uZW5hdCddPSRlby0+eGJxclhiYXF2ZnZPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ3hicXJBcnRuZW5OZm55J109JGVvLT54YnFyQXJ0bmVuTmZueTsNCgkJCQkkbmVvWyRvXVsneGJxckNyZXV2Z2hhdG5hJ109JGVvLT54YnFyQ3JldXZnaGF0bmE7DQoJCQkJJG5lb1skb11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZW8tPnhicXJGbmdobmFPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ3pyZXgnXT0kZW8tPnpyZXg7DQoJCQkJJG5lb1skb11bJ2FxY296J109KHN5Ym5nKSRlby0+YXFjb3o7DQoJCQkJJG5lb1skb11bJ2FyZ2diJ109KHN5Ym5nKSRlby0+YXJnZ2I7DQoJCQkJJG5lb1skb11bJ2F2eW52T25lbmF0J109KHN5Ym5nKSRlby0+YXZ5bnZPbmVuYXQ7DQoJCQkJJG5lb1skb11bJ2F2eW52UW5hbkZuanZnJ109KHN5Ym5nKSRlby0+YXZ5bnZRbmFuRm5qdmc7DQoJCQkJJG5lb1skb11bJ2NiZkduZXZzJ109JGVvLT5jYmZHbmV2czsNCgkJCQkkbmVvWyRvXVsnZnJldk9uZW5hdCddPSRlby0+ZnJldk9uZW5hdDsNCgkJCQkkbmVvWyRvXVsnZmNyZnZzdnhuZnZZbnZhJ109JGVvLT5mY3JmdnN2eG5mdlludmE7DQoJCQkJJG5lb1skb11bJ2d2Y3InXT0kZW8tPmd2Y3I7DQoJCQkJJG5lb1skb11bJ2h4aGVuYSddPSRlby0+aHhoZW5hOw0KCQkJCSRuZW9bJG9dWydoZW52bmEnXT0kZW8tPmhlbnZuYTsNCgkJCQkkbmVvWyRvXVsnaWJ5aHpyJ109KHN5Ym5nKSRlby0+aWJ5aHpyOw0KDQoJCQkJLyogJGRvcSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyANCgkJCQkJb3BfYmhnX3FyZ252eV92cQ0KCQkJCQksZnJldlFieGh6cmENCg0KCQkJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcXJnbnZ5IGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb3E9MDsNCgkJCQlzYmVybnB1KCRkb3EtPmVyZmh5ZygpIG5mICRlb3Epew0KCQkJCQkkbmVvcVskb3FdWydmcmV2UWJ4aHpyYSddPSRlb3EtPmZyZXZRYnhoenJhOw0KCQkJCQkNCgkJCQkkb3ErKzsNCgkJCQl9ICovDQoJCQkJDQoJCQkJJGRvYyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJCUZSWVJQRyAgb3BfYmhnX3FyZ252eV92cQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLGZyZXZPbmVuYXQNCgkJCQkJICAsRUJKX0FIWk9SRSgpIEJJUkUgKEJFUVJFIE9MIG9wX2JoZ191cm5xcmVfdnEpIG5mIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkJCSAgLDIgbmYgZnJldlJhZ3ZnbmYNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJCSIpOw0KDQoJCQkJJG9jPTA7DQoJCQkJc2Jlcm5wdSgkZG9jLT5lcmZoeWcoKSBuZiAkZW9jKXsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldk9uZW5hdCddPSRlb2MtPmZyZXZPbmVuYXQ7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZPbmVuYXRDcnp2eXZ4J109JGVvYy0+ZnJldk9uZW5hdENyenZ5dng7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZSYWd2Z25mJ109JGVvYy0+ZnJldlJhZ3ZnbmY7DQoNCgkJCQkkb2MrKzsNCgkJCQl9DQoJCQkJDQoJCQkJJG5lZyA9IG5lZW5sKCk7DQoJCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7DQoJCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQkJeGJxclFieGh6cmEsDQoJCQkJCQl4YnFyV3JhdmZHbmV2cywNCgkJCQkJCXdoenludUZuZ2huYSwNCgkJCQkJCXhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJCXhicXJGbmdobmFPbmVuYXQsDQoJCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJCWF2eW52T25sbmUsDQoJCQkJCQlhdnludlNuZnZ5dmduZiwNCgkJCQkJCWF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJCWZyZXZPbmVuYXQsDQoJCQkJCQlHTkVWU19PWiwNCgkJCQkJCWduZXZzU25mdnl2Z25mDQoJCQkJCSAgU0VCWiBpdnJqX29uZW5hdF9nbmV2c19jY2Ffb3AyNSBrDQoJCQkJCWp1cmVyIGsub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBrLm9wX2JoZ19xcmdudnlfdnE9JG9wX2JoZ19xcmdudnlfdnENCg0KCQkJCSIpOw0KDQoJCQkJJGc9MDsNCg0KCQkJCXNiZXJucHUoJGRnLT5lcmZoeWcoKSBuZiAkZWcpew0KCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJJG5lZ1skZ11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlZy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmR25ldnMnXT0kZWctPnhicXJXcmF2ZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxckZuZ2huYU9uZW5hdCddPSRlZy0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkJJG5lZ1skZ11bJ2F2eW52T25sbmUnXT0oc3libmcpJGVnLT5hdnludk9ubG5lOw0KCQkJCQkkbmVnWyRnXVsnYXZ5bnZTbmZ2eXZnbmYnXT0oc3libmcpJGVnLT5hdnludlNuZnZ5dmduZjsNCgkJCQkJJG5lZ1skZ11bJ2F2eW52RmhxbnVRdnloYW5mdiddPShzeWJuZykkZWctPmF2eW52RmhxbnVRdnloYW5mdjsNCgkJCQkJJG5lZ1skZ11bJ2ZyZXZPbmVuYXQnXT12YWdpbnkoJGVnLT5mcmV2T25lbmF0KTsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+R05FVlNfT1o7DQoJCQkJCSRuZWdbJGddWydnbmV2c1NuZnZ5dmduZiddPShzeWJuZykkZWctPmduZXZzU25mdnl2Z25mOw0KDQoJCQkJJGcrKzsNCgkJCQl9DQoNCgkJCQkkbmVvbnVuYW9ueGggPSBuZWVubCgpOw0KCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOw0KCQkJCSRkb28gPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgb3BfYmhnX3FyZ252eV92cQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLG9wX3ZhX3FyZ252eV92cQ0KCQkJCQkgICxvcF92YV91cm5xcmVfdnENCgkJCQkJICAsdnFPbmVuYXQNCgkJCQkJICAsdnFXbnp2YW5hDQoJCQkJCSAgLHB2cw0KCQkJCQkgICxwdnNFaGN2bnUNCgkJCQkJICAsdW5ldG5DcmFscmVudW5hDQoJCQkJCSAgLHBuZmcodW5ldG5GbmdobmEgbmYgcXJwdnpueSgxOCwyKSkgbmYgdW5ldG5GbmdobmENCgkJCQkJICAsdW5ldG5DcmVieXJ1bmENCgkJCQkJICAsd2h6eW51Rm5naG5hDQoJCQkJCSAgLHhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAsUE5GUg0KCQkJCQkJSlVSQSAoICggeGJxclFieE5mbnkgPD4gMjMgKSApIEdVUkENCgkJCQkJCScxJyBSWUZSICcwJyANCgkJCQkJCVJBUSBORiB4YnFyTmZueU9udW5hT254aA0KCQkJCQkgICxOZm55T251bmFPbnhoDQoJCQkJCSAgLHhicXJPbmVuYXQNCgkJCQkJICAseGJxck9uZW5hdE5mbnkNCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclFieE5mbnkNCgkJCQkJICAsSEVOVk5BX1FCWEhaUkENCgkJCQkJICAseGJxclhuYWdiZQ0KCQkJCQkgICx6cmV4T25lbmF0DQoJCQkJCSAgLGFxY296DQoJCQkJCSAgLGFiemJlTndoUWJ4TmZueQ0KCQkJCQkgICxhYnpiZVFuc2duZVFieE5mbnkNCgkJCQkJICAsY2JmR25ldnMNCgkJCQkJICAsZnJldk9udW5hT254aA0KCQkJCQkgICxmcmV2T251bmFPbnhoR25ldnMNCgkJCQkJICAsZnJldk9uZW5hdA0KCQkJCQkgICxmcmV2T25lbmF0UWJ4TmZueQ0KCQkJCQkgICxmcmV2Vnd2YQ0KCQkJCQkgICxmY3JmdnN2eG5mdlludmFPbmVuYXQNCgkJCQkJICAsZ25hdHRueVFuc2duZVFieE5mbnkNCgkJCQkJICAsZ25hdHRueU53aFFieE5mbnkNCgkJCQkJICAsVkZBSFlZKGd2Y3JPbmVuYXQsJycpIE5GIGd2Y3JPbmVuYXQNCgkJCQkJICAsVkZBSFlZKGh4aGVuYU9uZW5hdCwnJykgTkYgaHhoZW5hT25lbmF0DQoJCQkJCSAgLGhlbnZuYU9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZHbmV2cw0KCQkJCQkgICx3aHp5bnVGbmdobmFHbmV2cw0KCQkJCQkgICx4YnFyU25mdnl2Z25mR25ldnMNCgkJCQkJICAseGJxcldyYXZmQ2hhdGhnbmENCgkJCQkJICAsYXJnZ2INCgkJCQkJICAsYXZ5bnZPbmxuZQ0KCQkJCQkgICxhdnludlduZm4NCgkJCQkJICAsYXZ5bnZTbmZ2eXZnbmYNCgkJCQkJICAsYXZ5bnZGaHFudVF2eWhhbmZ2DQoJCQkJCSAgLGduZXZzDQoJCQkJCSAgLGduZXZzU25mdnl2Z25mDQoJCQkJCSAgLHBuZ25nbmENCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuaXZyal9xbmduX29udW5hT254aA0KCQkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIG9wX2JoZ19xcmdudnlfdnEgPSAkb3BfYmhnX3FyZ252eV92cQ0KDQoJCQkJIik7DQoNCgkJCQkkb289MDsNCg0KCQkJCXNiZXJucHUoJGRvby0+ZXJmaHlnKCkgbmYgJGVvbnVuYW9ueGgpew0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZnJldk9uZW5hdCddPXZhZ2lueSgkZW9udW5hb254aC0+ZnJldk9uZW5hdCk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydjYmZHbmV2cyddPSRlb251bmFvbnhoLT5jYmZHbmV2czsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2hlbnZuYU9uZW5hdCddPSRlb251bmFvbnhoLT5oZW52bmFPbmVuYXQ7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkZuZ2huYSddPShzeWJuZykkZW9udW5hb254aC0+dW5ldG5GbmdobmE7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPndoenludUZuZ2huYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZW9udW5hb254aC0+eGJxckZuZ2huYU9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3B2cyddPShzeWJuZykkZW9udW5hb254aC0+cHZzOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsncHZzRWhjdm51J109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnNFaGN2bnU7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3VuZXRuQ3JlYnlydW5hJ109KHN5Ym5nKSRlb251bmFvbnhoLT51bmV0bkNyZWJ5cnVuYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPnhicXJOZm55T251bmFPbnhoOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxck9uZW5hdCddPSRlb251bmFvbnhoLT54YnFyT25lbmF0Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsneGJxclFieE5mbnknXT0kZW9udW5hb254aC0+eGJxclFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWyd4YnFyUWJ4aHpyYSddPSRlb251bmFvbnhoLT54YnFyUWJ4aHpyYTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3hicXJYbmFnYmUnXT0kZW9udW5hb254aC0+eGJxclhuYWdiZTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ3pyZXhPbmVuYXQnXT0kZW9udW5hb254aC0+enJleE9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FxY296J109KHN5Ym5nKSRlb251bmFvbnhoLT5hcWNvejsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FyZ2diJ109KHN5Ym5nKSRlb251bmFvbnhoLT5hcmdnYjsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2F2eW52V25mbiddPShzeWJuZykkZW9udW5hb254aC0+YXZ5bnZXbmZuOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnYWJ6YmVOd2hRYnhOZm55J109JGVvbnVuYW9ueGgtPmFiemJlTndoUWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T251bmFPbnhoJ109JGVvbnVuYW9ueGgtPmZyZXZPbnVuYU9ueGg7DQoJCQkJCSRuZW9udW5hb254aFskb29dWydmcmV2T25lbmF0UWJ4TmZueSddPSRlb251bmFvbnhoLT5mcmV2T25lbmF0UWJ4TmZueTsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2ZyZXZWd3ZhJ109JGVvbnVuYW9ueGgtPmZyZXZWd3ZhOw0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZmNyZnZzdnhuZnZZbnZhT25lbmF0J109JGVvbnVuYW9ueGgtPmZjcmZ2c3Z4bmZ2WW52YU9uZW5hdDsNCgkJCQkJJG5lb251bmFvbnhoWyRvb11bJ2duYXR0bnlRbnNnbmVRYnhOZm55J109JGVvbnVuYW9ueGgtPmduYXR0bnlRbnNnbmVRYnhOZm55Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnZ3Zjck9uZW5hdCddPSRlb251bmFvbnhoLT5ndmNyT25lbmF0Ow0KCQkJCQkkbmVvbnVuYW9ueGhbJG9vXVsnaHhoZW5hT25lbmF0J109JGVvbnVuYW9ueGgtPmh4aGVuYU9uZW5hdDsNCgkJCQkJDQoJCQkJCSRuZW9udW5hb254aF9nZSA9IG5lZW5sKCk7DQoJCQkJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsJCQ0KCQkJCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJCQkNCgkJCQkJCQlGUllSUEcNCgkJCQkJCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCQkJCQkJb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJCQkJZnJldk9uZW5hdCwNCgkJCQkJCQkJJ09aJyBORiB4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJCQlQTkZSDQoJCQkJCQkJCQkNCgkJCQkJCQkJCUpVUkEgKCAoIGsueGJxclFieE5mbnkgPD4gMjMgKSApIEdVUkENCgkJCQkJCQkJCScxJyBSWUZSICcwJyANCgkJCQkJCQkJUkFRIE5GIHhicXJOZm55T251bmFPbnhoLA0KCQkJCQkJCQknMycgTkYgeGJxclNuZnZ5dmduZkduZXZzLA0KCQkJCQkJCQkwIE5GIGF2eW52T25sbmUsDQoJCQkJCQkJCTEwMCBORiBhdnludlNuZnZ5dmduZiwNCgkJCQkJCQkJMCBORiBhdnludkZocW51UXZ5aGFuZnYsDQoJCQkJCQkJCXZmYWh5eSggbC5HTkVWU19PWiwgJzAnICkgTkYgZ25ldnMsDQoJCQkJCQkJCTEwMCBORiBnbmV2c1NuZnZ5dmduZiwNCgkJCQkJCQkJdmZhaHl5KCB3aHp5bnVGbmdobmEsIDAgKSBORiB3aHp5bnVGbmdobmEsDQoJCQkJCQkJCScxJyBORiB4YnFyV3JhdmZHbmV2cywNCgkJCQkJCQkJdmZhaHl5KCB4YnFyRm5naG5hT25lbmF0LCAnQ1BSJyApIE5GIHhicXJGbmdobmFPbmVuYXQsDQoJCQkJCQkJCUVCSl9BSFpPUkUgKCApIEJJUkUgKCBCRVFSRSBPTCBvcF9iaGdfcXJnbnZ5X3ZxICkgTkYgZnJldk9udW5hT254aCANCgkJCQkJCQlTRUJaDQoJCQkJCQkJCXFvYi5pdnJqX3FuZ25fb251bmFPbnhoIGsNCgkJCQkJCQkJWVJTRyBXQlZBIGVyc3JlcmFmdl9jYmZfZ25ldnMgbCBCQSBrLmNiZkduZXZzID0gbC5BQlpCRV9VRg0KCQkJCQkJCQlqdXJlciBrLm9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgay5vcF9iaGdfcXJnbnZ5X3ZxID0gJG9wX2JoZ19xcmdudnlfdnENCgkJCQkJDQoJCQkJCQkiKTsNCgkJCQkJCQ0KCQkJCQkJJGc9MDsNCgkJCQkJCQ0KCQkJCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlZyl7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJCQkkbmVvbnVuYW9ueGhfZ2VbJGddWyd4YnFyTmZueU9udW5hT254aCddPSRlZy0+eGJxck5mbnlPbnVuYU9ueGg7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsneGJxclNuZnZ5dmduZkduZXZzJ109JGVnLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ3hicXJXcmF2ZkduZXZzJ109JGVnLT54YnFyV3JhdmZHbmV2czsNCgkJCQkJCQkkbmVvbnVuYW9ueGhfZ2VbJGddWyd4YnFyRm5naG5hT25lbmF0J109JGVnLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2F2eW52T25sbmUnXT0oc3libmcpJGVnLT5hdnludk9ubG5lOw0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2F2eW52U25mdnl2Z25mJ109KHN5Ym5nKSRlZy0+YXZ5bnZTbmZ2eXZnbmY7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnYXZ5bnZGaHFudVF2eWhhbmZ2J109KHN5Ym5nKSRlZy0+YXZ5bnZGaHFudVF2eWhhbmZ2Ow0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2ZyZXZPbmVuYXQnXT0kZWctPmZyZXZPbmVuYXQ7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnZnJldk9udW5hT254aCddPXZhZ2lueSgkZWctPmZyZXZPbnVuYU9ueGgpOw0KCQkJCQkJCSRuZW9udW5hb254aF9nZVskZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+Z25ldnM7DQoJCQkJCQkJJG5lb251bmFvbnhoX2dlWyRnXVsnZ25ldnNTbmZ2eXZnbmYnXT0oc3libmcpJGVnLT5nbmV2c1NuZnZ5dmduZjsNCgkJCQkJCQ0KCQkJCQkJCSRnKys7DQoJCQkJCQl9DQoJCQkJCQkNCgkJCQkJCSRuZW9udW5hb254aFskb29dWydvbnVuYU9ueGhHbmV2cyddPSRuZW9udW5hb254aF9nZTsNCg0KCQkJCQkkb28rKzsJDQoJCQkJfQ0KDQoJCQkNCgkJCQkvLyRuZW9bJG9dWydvbnVuYU9ueGgnXT0kbmVfb251bmFPbnhoOw0KCQkJCSRuZW9bJG9dWydvbnVuYU9ueGgnXT0kbmVvbnVuYW9ueGg7DQoJCQkJJG5lb1skb11bJ29uZW5hdFFieGh6cmEnXT0kbmVvcTsNCgkJCQkkbmVvWyRvXVsnb25lbmF0Q3J6dnl2eCddPSRuZW9jOw0KCQkJCSRuZW9bJG9dWydvbmVuYXRHbmV2cyddPSRuZWc7DQoJCQkJDQoNCgkJCQkkbysrOw0KDQoJCQkJfQ0KDQoNCgkJCSRuZWVbJHZdWydvbmVuYXQnXT0kbmVvOw0KDQoJCSRkcnYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLFZGQUhZWShueW56bmdSYWd2Z25mLCAnJykgTkYgbnluem5nUmFndmduZg0KCQkJICAsdmF2ZnZueVJhZ3ZnbmYNCgkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIHhicXJSYWd2Z25mKSBORiB4YnFyUmFndmduZg0KCQkJICAsVkZBSFlZKHhicXJXcmF2Zk5jdiwgJycpIE5GIHhicXJXcmF2Zk5jdg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZlZxcmFndmduZiwgJzUnKSBORiB4YnFyV3JhdmZWcXJhZ3ZnbmYNCgkJCSAgLFZGQUhZWSh4YnFyQXJ0bmVuLCAnJykgTkYgeGJxckFydG5lbg0KCQkJICAsVkZBSFlZKHhicXJGZ25naGYsICcnKSBORiB4YnFyRmduZ2hmDQoJCQkgICxWRkFIWVkoYW56blJhZ3ZnbmYsICcnKSBORiBhbnpuUmFndmduZg0KCQkJICAsVkZBSFlZKGF2b1JhZ3ZnbmYsICcnKSBORiBhdm9SYWd2Z25mDQoJCQkgICwnMTIzNDU2JyBORiBhdmNyZVJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhYnpiZVZxcmFndmduZiwgJycpIE5GIGFiemJlVnFyYWd2Z25mDQoJCQkgICxWRkFIWVkoYWJ6YmVWd3ZhUmFndmduZiwgJycpIE5GIGFiemJlVnd2YVJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShnbmF0dG55Vnd2YVJhZ3ZnbmYsICcnKSBORiBnbmF0dG55Vnd2YVJhZ3ZnbmYNCgkJCSAgLGZyZXZSYWd2Z25mDQoJCSAgU0VCWiBxb2IuaXZyal9yYWd2Z25mX3JrYyBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIHhicXJSYWd2Z25mIDw+IDIgDQoJCQlCRVFSRSBPTCBmcmV2UmFndmduZg0KDQoJCSIpOw0KDQoJCSRydj0wOw0KCQlzYmVybnB1KCRkcnYtPmVyZmh5ZygpIG5mICRlcnYpew0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnbnluem5nUmFndmduZiddPSRlcnYtPm55bnpuZ1JhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyUmFndmduZiddPSRlcnYtPnhicXJSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxcldyYXZmTmN2J109JGVydi0+eGJxcldyYXZmTmN2Ow0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxcldyYXZmVnFyYWd2Z25mJ109JGVydi0+eGJxcldyYXZmVnFyYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxckFydG5lbiddPSRlcnYtPnhicXJBcnRuZW47DQoJCQkkbmVfcmFndmduZlskcnZdWyd4YnFyRmduZ2hmJ109JGVydi0+eGJxckZnbmdoZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2Fuem5SYWd2Z25mJ109JGVydi0+YW56blJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhdm9SYWd2Z25mJ109JGVydi0+YXZvUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2F2Y3JlUmFndmduZiddPSRlcnYtPmF2Y3JlUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2FiemJlVnFyYWd2Z25mJ109JGVydi0+YWJ6YmVWcXJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhYnpiZVZ3dmFSYWd2Z25mJ109JGVydi0+YWJ6YmVWd3ZhUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2duYXR0bnlWd3ZhUmFndmduZiddPSRlcnYtPmduYXR0bnlWd3ZhUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ2ZyZXZSYWd2Z25mJ109dmFnaW55KCRlcnYtPmZyZXZSYWd2Z25mKTsNCg0KCQkkcnYrKzsNCgkJfQ0KCQkNCgkJJGRfeHJ6bmZuYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJICAsZnJldlhyem5mbmENCgkJCQkgICx6cmV4WHJ6bmZuYQ0KCQkJICBTRUJaIHFvYi5pdnJqX3FuZ25feHJ6bmZuYSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkeHJ6bmZuYT0wOw0KCQlzYmVybnB1KCRkX3hyem5mbmEtPmVyZmh5ZygpIG5mICRlX3hyem5mbmEpew0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWyd3aHp5bnVYcnpuZm5hJ109dmFnaW55KCRlX3hyem5mbmEtPndoenludVhyem5mbmEpOw0KCQkJJG5lX3hyem5mbmFbJHhyem5mbmFdWyd4YnFyV3JhdmZYcnpuZm5hJ109JGVfeHJ6bmZuYS0+eGJxcldyYXZmWHJ6bmZuYTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnenJleFhyem5mbmEnXT0kZV94cnpuZm5hLT56cmV4WHJ6bmZuYTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnZnJldlhyem5mbmEnXT12YWdpbnkoJGVfeHJ6bmZuYS0+ZnJldlhyem5mbmEpOw0KDQoJCSR4cnpuZm5hKys7DQoJCX0NCg0KCQkvKiAkZF94YmFnbnZhcmUgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJXcmF2ZlhiYWdudmFyZQ0KCQkJICAseGJxckd2Y3JYYmFnbnZhcmUNCgkJCSAgLHhicXJIeGhlbmFYYmFnbnZhcmUNCgkJCSAgLGFiemJlWGJhZ252YXJlDQoJCQkgICxmcmV2WGJhZ252YXJlDQoJCQlTRUJaIHFvYi5nb3lfb3BfYmhnX3hiYWdudmFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkeGJhZ252YXJlPTA7DQoJCXNiZXJucHUoJGRfeGJhZ252YXJlLT5lcmZoeWcoKSBuZiAkZV94YmFnbnZhcmUpew0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxcldyYXZmWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT54YnFyV3JhdmZYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWyd4YnFyR3ZjclhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxckd2Y3JYYmFnbnZhcmU7DQoJCQkkbmVfeGJhZ252YXJlWyR4YmFnbnZhcmVdWyd4YnFySHhoZW5hWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT54YnFySHhoZW5hWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsnYWJ6YmVYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPmFiemJlWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsnZnJldlhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+ZnJldlhiYWdudmFyZTsNCg0KCQkkeGJhZ252YXJlKys7DQoJCX0gKi8NCg0KDQoJCS8qICRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsJCQ0KCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkNCgkJCQlGUllSUEcNCgkJCQkJMSBuZiB2cUNoYXRoZ25hLA0KCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQlvcF9iaGdfdXJucXJlX3ZxLA0KCQkJCQlmcmV2T25lbmF0LA0KCQkJCQknT1onIE5GIHhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCVBORlINCgkJCQkJSlVSQSAoICggay54YnFyUWJ4TmZueSA8PiAyMyApICkgR1VSQQ0KCQkJCQknMScgUllGUiAnMCcgDQoJCQkJCVJBUSBORiB4YnFyTmZueU9udW5hT254aCwNCgkJCQkJJzMnIE5GIHhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJMCBORiBhdnludk9ubG5lLA0KCQkJCQkxMDAgTkYgYXZ5bnZTbmZ2eXZnbmYsDQoJCQkJCTAgTkYgYXZ5bnZGaHFudVF2eWhhbmZ2LA0KCQkJCQl2ZmFoeXkoIGwuR05FVlNfT1osICcwJyApIE5GIGduZXZzLA0KCQkJCQkxMDAgTkYgZ25ldnNTbmZ2eXZnbmYsDQoJCQkJCXZmYWh5eSggd2h6eW51Rm5naG5hLCAwICkgTkYgd2h6eW51Rm5naG5hLA0KCQkJCQknMScgTkYgeGJxcldyYXZmR25ldnMsDQoJCQkJCXZmYWh5eSggeGJxckZuZ2huYU9uZW5hdCwgJ0NQUicgKSBORiB4YnFyRm5naG5hT25lbmF0LA0KCQkJCQlFQkpfQUhaT1JFICggKSBCSVJFICggQkVRUkUgT0wgb3BfYmhnX3FyZ252eV92cSApIE5GIGZyZXZPbnVuYU9ueGggDQoJCQkJU0VCWiBxb2IuaXZyal9xbmduX29udW5hT254aCBrDQoJCQkJWVJTRyBXQlZBIGVyc3JlcmFmdl9jYmZfZ25ldnMgbCBCQSBrLmNiZkduZXZzID0gbC5BQlpCRV9VRg0KCQkJCQlqdXJlciBrLm9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkNCgkJCSIpOw0KCQkJDQoJCQkkYz0wOw0KCQkJDQoJCQlzYmVybnB1KCRkZy0+ZXJmaHlnKCkgbmYgJGVjKXsNCgkJCQkkbmVfY2hhdGhnbmFbJGNdWyd2cUNoYXRoZ25hJ109dmFnaW55KCRlYy0+dnFDaGF0aGduYSk7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsneGJxclNuZnZ5dmduZkduZXZzJ109JGVjLT54YnFyU25mdnl2Z25mR25ldnM7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWMtPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ2F2eW52Q2hhdGhnbmEnXT0kZWMtPmF2eW52Q2hhdGhnbmE7DQoJCQkJJGMrKzsNCgkJCX0gKi8NCg0KDQoJCSRkX3FieGh6cmEgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfcWJ4aHpyYV92cSBuZiB2cVFieGh6cmENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCSAgLHhicXJRYnhoenJhDQoJCQkgICxWRkFIWVkoeGJxclNuZnZ5dmduZiwgJycpIE5GIHhicXJTbmZ2eXZnbmYNCgkJCSAgLHhicXJWd3ZhDQoJCQkgICx3cmF2ZlFieGh6cmENCgkJCSAgLFZGQUhZWShhbnpuU25mdnl2Z25mLCAnJykgTkYgYW56blNuZnZ5dmduZg0KCQkJICAsYWJ6YmVRYnhoenJhDQoJCQkgICxmcmV2UWJ4aHpyYQ0KCQkJICAsZ25hdHRueVFieGh6cmENCgkJCSAgLGhleVFieGh6cmENCgkJCSAgLHhyZ3JlbmF0bmENCgkJCSAgLHBlcm5ncl9xbmdyDQoJCQkgICxwZXJuZ3Jfb2wNCgkJCSAgLHpicXZzbF9xbmdyDQoJCQkgICx6YnF2c2xfb2wNCgkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xYnhoenJhIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCWJlcXJlIG9sIGZyZXZRYnhoenJhDQoNCgkJIik7DQoNCgkJJHFieGh6cmE9MDsNCgkJc2Jlcm5wdSgkZF9xYnhoenJhLT5lcmZoeWcoKSBuZiAkZV9xYnhoenJhKXsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsndnFRYnhoenJhJ109JGVfcWJ4aHpyYS0+dnFRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd4YnFyUWJ4aHpyYSddPSRlX3FieGh6cmEtPnhicXJRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWyd4YnFyU25mdnl2Z25mJ109JGVfcWJ4aHpyYS0+eGJxclNuZnZ5dmduZjsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnYWJ6YmVRYnhoenJhJ109JGVfcWJ4aHpyYS0+YWJ6YmVRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydmcmV2UWJ4aHpyYSddPSRlX3FieGh6cmEtPmZyZXZRYnhoenJhOw0KCQkJJG5lX3FieGh6cmFbJHFieGh6cmFdWydnbmF0dG55UWJ4aHpyYSddPSRlX3FieGh6cmEtPmduYXR0bnlRYnhoenJhOw0KDQoJCSRxYnhoenJhKys7DQoJCX0NCg0KCQkkZF9jcmF0bmF0eGhnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAsJzEnIG5mIHZxQ3JhdG5hdHhoZw0KCQkJICAseGJxck9yYXFyZW4NCgkJCSAgLHZmYWh5eShhbnpuQ3JhdG5hdHhoZywnJykgbmYgYW56bkNyYXRuYXR4aGcNCgkJCSAgLHZmYWh5eShhYnpiZUNyYXRuYXR4aGcsJycpIG5mIGFiemJlQ3JhdG5hdHhoZw0KCQkJICAsdmZhaHl5KHhicXJQbmVuTmF0eGhnLCczJykgbmYgeGJxclBuZW5OYXR4aGcNCgkJCSAgLEVCSl9BSFpPUkUoKSBCSVJFIChCRVFSRSBPTCBvcF9iaGdfdXJucXJlX3ZxKSBuZiBmcmV2Q3JhdG5hdHhoZw0KCQkJICBTRUJaIHFvYi5pdnJqX2NyYXRuYXR4aGcganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJGNyYXRuYXR4aGc9MDsNCgkJc2Jlcm5wdSgkZF9jcmF0bmF0eGhnLT5lcmZoeWcoKSBuZiAkZV9jcmF0bmF0eGhnKXsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxck9yYXFyZW4nXT0kZV9jcmF0bmF0eGhnLT54YnFyT3JhcXJlbjsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYW56bkNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5hbnpuQ3JhdG5hdHhoZzsNCgkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYWJ6YmVDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWyd4YnFyUG5lbk5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnhicXJQbmVuTmF0eGhnOw0KCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydmcmV2Q3JhdG5hdHhoZyddPXZhZ2lueSgkZV9jcmF0bmF0eGhnLT5mcmV2Q3JhdG5hdHhoZyk7DQoNCgkJJGNyYXRuYXR4aGcrKzsNCgkJfQ0KCQkvKiANCgkJJGRfb25heCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJPbmF4DQoJCQkgICxmcmV2T25heA0KCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3VybnFyZSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkb25heD0wOw0KCQlzYmVybnB1KCRkX29uYXgtPmVyZmh5ZygpIG5mICRlX29uYXgpew0KCQkJJG5lX29uYXhbJG9uYXhdWyd4YnFyT25heCddPSRlX29uYXgtPnhicXJPbmF4Ow0KCQkJJG5lX29uYXhbJG9uYXhdWydmcmV2T25heCddPSRlX29uYXgtPmZyZXZPbmF4Ow0KDQoJCSRvbmF4Kys7DQoJCX0gKi8NCgkJDQoJCS8qICRkX3hyZnZuY25hT25lbmF0ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3hyZnZuY25hT25lbmF0X3ZxDQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZPbmVuYXQNCgkJCSAgLHhicXJXcmF2ZlRocW5hdA0KCQkJICAsYW56bkN2cA0KCQkJICAsbnluem5nDQoJCQkgICxhYnpiZUdyeWNDdnANCgkJCSAgLHdoenludVBiYWdudmFyZTIwDQoJCQkgICx3aHp5bnVQYmFnbnZhcmU0MA0KCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCSAgLHhicXJQbmVuRmdoc3N2YXQNCgkJCSAgLHhicXJXcmF2ZkNuZWdCcw0KCQkJICAsZ25hdHRueUN4bw0KCQkJICAsam54Z2hGdm5jQ3JldnhmbiBuZiBqbnhnaEZ2bmNDcmV2eGZuMQ0KCQkJICAscGJhcG5nKGduYXR0bnlDeG8sJ0cnLCBqbnhnaEZ2bmNDcmV2eGZuLCc6MDAuMDAwTScpIG5mIGpueGdoRnZuY0NyZXZ4Zm4NCgkJCSAgLFdyYXZmT25lbmF0DQoJCQkgICxXcmF2ZlRocW5hdA0KCQkJICAsV3JhdmZDbmVnQnMNCgkJCSAgLFBuZW5GZ2hzc3ZhdA0KCQkJICAseHJncmVuYXRuYQ0KCQkJICAscGVybmdyX3FuZ3INCgkJCSAgLHBlcm5ncl9vbA0KCQkJICAsemJxdnNsX3FuZ3INCgkJCSAgLHpicXZzbF9vbA0KCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJCSIpOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdD0wOw0KCQlzYmVybnB1KCRkX3hyZnZuY25hT25lbmF0LT5lcmZoeWcoKSBuZiAkZV94cmZ2bmNuYU9uZW5hdCl7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmT25lbmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2Zk9uZW5hdDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZUaHFuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmVGhxbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2Fuem5DdnAnXT0kZV94cmZ2bmNuYU9uZW5hdC0+YW56bkN2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydueW56bmcnXT0kZV94cmZ2bmNuYU9uZW5hdC0+bnluem5nOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2FiemJlR3J5Y0N2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hYnpiZUdyeWNDdnA7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneWJ4bmZ2RnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+eWJ4bmZ2RnZuY0NyZXZ4Zm47DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxclBuZW5GZ2hzc3ZhdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyUG5lbkZnaHNzdmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZkNuZWdCcyddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZDbmVnQnM7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnZ25hdHRueUN4byddPSRlX3hyZnZuY25hT25lbmF0LT5nbmF0dG55Q3hvOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ2pueGdoRnZuY0NyZXZ4Zm4nXT0kZV94cmZ2bmNuYU9uZW5hdC0+am54Z2hGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmUyMCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmUyMDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd3aHp5bnVQYmFnbnZhcmU0MCddPSRlX3hyZnZuY25hT25lbmF0LT53aHp5bnVQYmFnbnZhcmU0MDsNCg0KCQkkeHJmdm5jbmFPbmVuYXQrKzsNCgkJfSAqLw0KDQoJCQkkbmVlWyR2XVsncmFndmduZiddPSRuZV9yYWd2Z25mOw0KCQkJJG5lZVskdl1bJ3hyem5mbmEnXT0kbmVfeHJ6bmZuYTsNCgkJCSRuZWVbJHZdWyd4YmFnbnZhcmUnXT0kbmVfeGJhZ252YXJlOw0KCQkJJG5lZVskdl1bJ3FieGh6cmEnXT0kbmVfcWJ4aHpyYTsNCgkJCSRuZWVbJHZdWydjcmF0bmF0eGhnJ109JG5lX2NyYXRuYXR4aGc7DQoNCgkJJHYrKzsNCgkJfQ0KCQ0KDQoJCSRuZWVubD0gJG5lZVswXTsNCgkJJHFuZ25hbG49IHdmYmFfcmFwYnFyKCRuZWVubCk7DQoJCQ0KCQkkcGhleSA9IHBoZXlfdmF2ZygkaGV5KTsNCgkJDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0NCRkcsIGdlaHIpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19FUkdIRUFHRU5BRlNSRSwgZ2Vocik7DQoJCSR1cm5xcmVmID0gbmVlbmwoDQoJCSAgICJOaGd1YmV2bW5ndmJhOiBPcm5lcmUgJGdieHJhIiwNCgkJICAgIlBiYWdyYWctR2xjcjogbmNjeXZwbmd2YmEvd2ZiYSINCgkJKTsNCgkJLy9ycHViICRnYnhyYSAuICI8b2U+IjsgDQoJCS8vaW5lX3FoemMoJHVybnFyZWYpOw0KCQkvL3F2cigpOw0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19VR0dDVVJOUVJFLCAkdXJucXJlZik7DQoJCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGR1NWUllRRiwgJHFuZ25hbG4pOw0KCQkvL3JwdWIgJHFuZ25hbG47CQ0KCQkvL3F2cigpOw0KDQoJCS8vc2JlIHFyb2h0IGJheWwhDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xVQkZHLCBzbnlmcik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xDUlJFLCBzbnlmcik7DQoJCQ0KCQkkZXJmYyA9IHBoZXlfcmtycCgkcGhleSk7DQoJCQ0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCg0KCQkkZmduZ2hmX3BydmZuID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkkbmZoaiA9IHZmZnJnKCRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdKT8kZmduZ2hmX3BydmZuWyJSa3ByY2d2YmEiXTonbmonOw0KCQl2cygkbmZoaiA9PSAnbmonKXsNCgkJCXZzKCRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddID09ICdCWCcpew0KCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCWhjcW5nciBnb3lfb3BfYmhnX3VybnFyZSBmcmcgdnFFcmZjYmEgPSAtMSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSIpOw0KCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J0ZoeGZyZiEnICApKTsNCgkJCQ0KCQkJDQoJCX0gcnlmciB7DQoJCQl2cyAodmZmcmcoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10pKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J1RudG55IEZyYXF2YXQhJykpOw0KCQkJfSByeWZyIHsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZicgPT4gIlZhc2Jlem5mdiIsICd6cmZmbnRyJyA9PiAiIEhhcXJlIFpudmFnbmFyYXByIEZyZWlyZSAiLCdxbmduRmduZ2hmJyA9PidTbnZ5cnEnICkgKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCX0NCgkJfSByeWZyIHsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PicwMicgLCd6cmZmbnRyJyA9PiRuZmhqLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScgKSk7CQkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCg0KCX0NCgkNCglzaGFwZ3ZiYSB4dmV2el9xbmduX2diX3BydmZuX29wMjYxKCl7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2VyZGhyZmdfcXJnbnZ5X3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSR4YnFyUWJ4aHpyYSA9ICh2ZmZyZygkX0NCRkdbJ3hicXJRYnhoenJhJ10pICYmICFyemNnbCgkX0NCRkdbJ3hicXJRYnhoenJhJ10pKT8kX0NCRkdbJ3hicXJRYnhoenJhJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiB4YnFyIHFieGh6cmEgZ3ZxbnggcXZncnpoeG5hIn0nKTsNCgkJJGZnZiA9ICh2ZmZyZygkX0NCRkdbJ2ZnZiddKSAmJiAhcnpjZ2woJF9DQkZHWydmZ2YnXSkpPyRfQ0JGR1snZmdmJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9mZ25naGYgR3ZxbnggUXZncnpoeG5hIFBSVkZOIn0nKTsNCgkJLy8kZ2J4cmEgPSAodmZmcmcoJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJykpICYmICFyemNnbCgkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKSkpPyRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZmduZ2hmIEd2cW54IFF2Z3J6aHhuYSBQUlZGTiJ9Jyk7IA0KCQkkZ2J4cmEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKTsNCgkJDQoJCS8vcnB1YigkeGJxclFieGh6cmEpOw0KCQkvL3F2cigpOw0KCQkNCgkJLy8kaGV5ID0gInVnZ2NmOi8vYXlydWhvLnhyenJheHJoLnRiLnZxL2JjcmFuY3YvcWJwaHpyYWciOw0KCQkkaGV5ID0gInVnZ2NmOi8vbmN2Zi10ai5vcm5waHhudi50Yi52cS9iY3JhbmN2L3FicGh6cmFnIjsNCg0KCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCSBGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgICxuZm55UW5nbg0KCQkJCQkgICxwbmZnKG5maGVuYWZ2IG5mIHFycHZ6bnkoMTgsMikpIG5mIG5maGVuYWZ2DQoJCQkJCSAgLG92bmxuQ3JhdGhlbmF0DQoJCQkJCSAgLG92bmxuR256b251bmENCgkJCQkJICAscG5mZyhvZWhnYiBuZiBxcnB2em55KDE4LDQpKSBuZiBvZWhnYg0KCQkJCQkgICxwbmZnKHB2cyBuZiBxcnB2em55KDE4LDIpKSBuZiBwdnMNCgkJCQkJICAscHZzRWhjdm51DQoJCQkJCSAgLCcxJyBuZiBxdmZweW52enJlDQoJCQkJCSAgLCcyJyBuZiBzeW50UGhlbnUNCgkJCQkJICAsJzInIG5mIHN5bnRadnRuZg0KCQkJCQkgICxzeW50SXENCgkJCQkJICAscG5mZyhzYm8gbmYgcXJwdnpueSgxOCwyKSkgbmYgc2JvDQoJCQkJCSAgLHBuZmcoc2VydnR1ZyBuZiBxcnB2em55KDE4LDIpKSBuZiBzZXJ2dHVnDQoJCQkJCSAgLHBuZmcodW5ldG5DcmFscmVudW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JhbHJlbnVuYQ0KCQkJCQkgICxQQkFJUkVHKElORVBVTkUoMTApLCBmcmV2UmFndmduZikgTkYgdnFDcmF0dGhhbg0KCQkJCQkgICx2cUNyYXRuYXR4aGcNCgkJCQkJICAsd25vbmduYUdncQ0KCQkJCQkgICx3aHp5bnVYYmFnbnZhcmUNCgkJCQkJICAsd2h6eW51R25hcW5DcmF0bnpuYSANCgkJCQkJICAseGJxck5maGVuYWZ2DQoJCQkJCSAgLHhicXJQbmVuT25sbmUNCgkJCQkJICAseGJxclBuZW5RbnRuYXQNCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclZhcGJncmV6DQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZDZWJmcnFoZSwgJycpIE5GIHhicXJXcmF2ZkNlYmZycWhlDQoJCQkJCSAgLFZGQUhZWSh4YnFyV3JhdmZSeGZjYmUsICcnKSBORiB4YnFyV3JhdmZSeGZjYmUNCgkJCQkJICAseGJxcldyYXZmQXZ5bnYNCgkJCQkJICAseGJxcldyYXZmR2NvDQoJCQkJCSAgLHhicXJYbmFnYmUNCgkJCQkJICAseGJxclhuYWdiZU9iYXR4bmUNCgkJCQkJICAseGJxclhuYWdiZVJ4ZmNiZQ0KCQkJCQkgICx4YnFyWG5hZ2JlIG5mIHhicXJYbmFnYmVaaG5nDQoJCQkJCSAgLHhicXJYbmFnYmVDcmV2eGZuDQoJCQkJCSAgLHhicXJYbmdydGJldlJ4ZmNiZQ0KCQkJCQkgICx4YnFyWHJhbkNud254DQoJCQkJCSAgLHhicXJZYnhuZnYNCgkJCQkJICAseGJxcllieG5mdk9ubG5lDQoJCQkJCSAgLFlieG5mdk9ubG5lDQoJCQkJCSAgLHhicXJBcnRuZW5HaHdobmENCgkJCQkJICAseGJxckNyeU9iYXR4bmUgDQoJCQkJCSAgLHhicXJDcnlSeGZjYmUNCgkJCQkJICAseGJxckNyeVpobmcNCgkJCQkJICAseGJxckNyeUdlbmFmdmcNCgkJCQkJICAseGJxckNyeUdod2huYQ0KCQkJCQkgICxWRkFIWVkoeGJxckNyem9ubG5lLCAnJykgTkYgeGJxckNyem9ubG5lDQoJCQkJCSAgLHhicXJHdmNyVW5ldG4NCgkJCQkJICAseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJICAsdmZhaHl5KHhicXJHY2YsJycpIG5mIHhicXJHY2YNCgkJCQkJICAseGJxcklueWhnbg0KCQkJCQkgICx4YmduR2dxDQoJCQkJCSAgLFJhZ3ZnbmYNCgkJCQkJICAsUmFndmduZjENCgkJCQkJICAsUmFndmduZjINCgkJCQkJICAsUmFndmduZjMNCgkJCQkJICAsUmFndmduZjQNCgkJCQkJICAsYW56bkdncQ0KCQkJCQkgICxwbmZnKGFxY296IG5mIHFycHZ6bnkoMTgsNCkpIG5mIGFxY296DQoJCQkJCSAgLHBuZmcoYXJnZ2IgbmYgcXJwdnpueSgxOCw0KSkgbmYgYXJnZ2INCgkJCQkJICAsYXZ5bnZPbmVuYXQNCgkJCQkJICAsYXZ5bnZWYXBiZ3Jleg0KCQkJCQkgICxwbmZnKGF2eW52Wm54eWJhIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52Wm54eWJhDQoJCQkJCSAgLGF2eW52V25mbg0KCQkJCQkgICxobmF0Wmh4bg0KCQkJCQkgICxFUkNZTlBSKGFiemJlTndoLCAnLScsICcnKSBORiBhYnpiZU53aA0KCQkJCQkgICxhYnpiZU9wMTENCgkJCQkJICAsVkZBSFlZKGNiZk9wMTEsICcnKSBORiBjYmZPcDExDQoJCQkJCSAgLGNyYXRuYXR4aGcNCgkJCQkJICAsZnJldg0KCQkJCQkgICxmcmV2UmFndmduZg0KCQkJCQkgICxmcmV2UmFndmduZjENCgkJCQkJICAsZnJldlJhZ3ZnbmYyDQoJCQkJCSAgLGZyZXZSYWd2Z25mMw0KCQkJCQkgICxmcmV2UmFndmduZjQNCgkJCQkJICAsVkZBSFlZKGZob2NiZk9wMTEsICcnKSBORiBmaG9jYmZPcDExDQoJCQkJCSAgLGZnbmdoZg0KCQkJCQkgICxncnpjbmdGZ2hzc3ZhdA0KCQkJCQkgICxnbmF0dG55TndoDQoJCQkJCSAgLGd0eU54dXZlT3JleW54aA0KCQkJCQkgICxndHlOam55T3JleW54aA0KCQkJCQkgICxnbmF0dG55T3AxMQ0KCQkJCQkgICxnbmF0dG55UW5zZ25lDQoJCQkJCSAgLGduYXR0bnlSeGZjYmUNCgkJCQkJICAsZ25hdHRueUNyZXZ4Zm4NCgkJCQkJICAsZ25hdHRueUdncQ0KCQkJCQkgICxwbmZnKGdiZ255UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGdiZ255UW5hbkZuanZnDQoJCQkJCSAgLHhicXJPcmFxcmVuDQoJCQkJCSAgLCdZdnl2cmYnIE5GIGhmcmVDYmVnbnkNCgkJCQkJICAsaWJ5aHpyDQoJCQkJCSAgLGFuem5DcmF0bmF0eGhnDQoJCQkJCSAgLGF2eA0KCQkJCQkgICxhYnpiZUNyYXRuYXR4aGcNCgkJCQkJICAsYWJRbnNnbmUNCgkJCQkJICAseGJxclBuZW5OYXR4aGcNCgkJCQkJICAsZnJldkNyYXRuYXR4aGcNCgkJCQkJICAseGJxck9uYXgNCgkJCQkJICAsZnJldk9uYXgNCgkJCQkJICAsd2h6eW51UGJhZ252YXJlDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxclhuYWdiZUdod2huYQ0KCQkJCQkgICx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkgICx4YnFyV3JhdmZUaHFuYXQNCgkJCQkJICAseGJxckdod2huYUdjbw0KCQkJCQkgICxhbnpuQ3ZwDQoJCQkJCSAgLG55bnpuZw0KCQkJCQkgICxhYnpiZUdyeWNDdnANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCQkJICAsd2h6eW51UGJhZ252YXJlNDANCgkJCQkJICAsd2h6eW51V3JhdmZPbmVuYXQNCgkJCQkJICAseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkgICx4YnFyV3JhdmZDbmVnQnMNCgkJCQkJICAsZ25hdHRueUN4bw0KCQkJCQkgICxpcQ0KCQkJCQkgICxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSAgLFdyYXZmR2NvDQoJCQkJCSAgLEdod2huYUdjbw0KCQkJCQkgICxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSAgLFBuZW5OYXR4aGcNCgkJCQkJICAsWHJhbkNud254DQoJCQkJCSAgLE5maGVuYWZ2X2d2Y3INCgkJCQkJICAsT25heA0KCQkJCQkgICxZYnhuZnYNCgkJCQkJICAsR2NmDQoJCQkJCSAgLFBuZW5PbmxuZQ0KCQkJCQkgICxQbmVuUW50bmF0DQoJCQkJCSAgLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSAgLFdyYXZmUnhmY2JlDQoJCQkJCSAgLFdyYXZmQXZ5bnYNCgkJCQkJICAsV3JhdmZYcnpuZm5hDQoJCQkJCSAgLFdyYXZmQ2ViZnJxaGUNCgkJCQkJICAsVmFwYmdyZXoNCgkJCQkJICAscGVybmdyX3FuZ3INCgkJCQkJICAscGVybmdyX29sDQoJCQkJCSAgLHpicXZzbF9xbmdyDQoJCQkJCSAgLHpicXZzbF9vbA0KCQkJCSAgU0VCWiBxb2IuZ295X29wX2JoZ191cm5xcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJG5lZSA9IG5lZW5sKCk7DQoJCSRuZW8gPSBuZWVubCgpOw0KCQkkbmVvcSA9IG5lZW5sKCk7DQoJCSRuZWcgPSBuZWVubCgpOw0KCQkkbmVpcSA9IG5lZW5sKCk7DQoJCSRuZWZ4ID0gbmVlbmwoKTsNCgkJJG5lb2MgPSBuZWVubCgpOw0KCQkkbmVfaG5hdFpoeG4gPSBuZWVubCgpOw0KCQkkbmVfd256dmFuYSA9IG5lZW5sKCk7DQoJCSRuZV9jaGF0aGduYSA9IG5lZW5sKCk7DQoJCSRuZV9vbnVuYU9ueGggPSBuZWVubCgpOw0KCQkkbmVfb251bmFPbnhoR25ldnMgPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZiA9IG5lZW5sKCk7DQoJCSRuZV9yYWd2Z25mX2NyenZ5dnggPSBuZWVubCgpOw0KCQkkbmVfcmFndmduZl9jcnpvcnl2ID0gbmVlbmwoKTsNCgkJJG5lX3JhZ3ZnbmZfY3JhcmV2em4gPSBuZWVubCgpOw0KCQkkbmVfeHJ6bmZuYSA9IG5lZW5sKCk7DQoJCSRuZV94YmFnbnZhcmUgPSBuZWVubCgpOw0KCQkkbmVfcWJ4aHpyYSA9IG5lZW5sKCk7DQoJCSRuZV9jcmF0bmF0eGhnID0gbmVlbmwoKTsNCgkJJG5lX29uYXggPSBuZWVubCgpOw0KCQkkbmVfeHJmdm5jbmFPbmVuYXQgPSBuZWVubCgpOw0KCQkkdj0wOw0KDQoJCXNiZXJucHUoJGQtPmVyZmh5ZygpIG5mICRlYmopIHsNCgkJCSRuZWVbJHZdWyduZm55UW5nbiddPSRlYmotPm5mbnlRbmduOw0KCQkJJG5lZVskdl1bJ25maGVuYWZ2J109KHN5Ym5nKSRlYmotPm5maGVuYWZ2Ow0KCQkJJG5lZVskdl1bJ292bmxuQ3JhdGhlbmF0J109KHN5Ym5nKSRlYmotPm92bmxuQ3JhdGhlbmF0Ow0KCQkJJG5lZVskdl1bJ292bmxuR256b251bmEnXT0oc3libmcpJGViai0+b3ZubG5HbnpvbnVuYTsNCgkJCSRuZWVbJHZdWydvZWhnYiddPShzeWJuZykkZWJqLT5vZWhnYjsNCgkJCSRuZWVbJHZdWydwdnMnXT0oc3libmcpJGViai0+cHZzOw0KCQkJJG5lZVskdl1bJ3F2ZnB5bnZ6cmUnXT0kZWJqLT5xdmZweW52enJlOw0KCQkJJG5lZVskdl1bJ3N5bnRQaGVudSddPSRlYmotPnN5bnRQaGVudTsNCgkJCSRuZWVbJHZdWydzeW50WnZ0bmYnXT0kZWJqLT5zeW50WnZ0bmY7DQoJCQkkbmVlWyR2XVsnc2JvJ109KHN5Ym5nKSRlYmotPnNibzsNCgkJCSRuZWVbJHZdWydzZXJ2dHVnJ109KHN5Ym5nKSRlYmotPnNlcnZ0dWc7DQoJCQkkbmVlWyR2XVsndW5ldG5DcmFscmVudW5hJ109KHN5Ym5nKSRlYmotPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCSRuZWVbJHZdWyd2cUNyYXR0aGFuJ109JGViai0+dnFDcmF0dGhhbjsNCgkJCSRuZWVbJHZdWyd3bm9uZ25hR2dxJ109JGViai0+d25vbmduYUdncTsNCgkJCSRuZWVbJHZdWyd3aHp5bnVYYmFnbnZhcmUnXT0kZWJqLT53aHp5bnVYYmFnbnZhcmU7DQoJCQkkbmVlWyR2XVsneGJxclBuZW5PbmxuZSddPSRlYmotPnhicXJQbmVuT25sbmU7DQoJCQkkbmVlWyR2XVsneGJxclFieGh6cmEnXT0kZWJqLT54YnFyUWJ4aHpyYTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZSeGZjYmUnXT0kZWJqLT54YnFyV3JhdmZSeGZjYmU7DQoJCQkkbmVlWyR2XVsneGJxcldyYXZmQ2ViZnJxaGUnXT0kZWJqLT54YnFyV3JhdmZDZWJmcnFoZTsNCgkJCSRuZWVbJHZdWyd4YnFyV3JhdmZHY28nXT0kZWJqLT54YnFyV3JhdmZHY287DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZSddPSRlYmotPnhicXJYbmFnYmU7DQoJCQkkbmVlWyR2XVsneGJxclhuYWdiZVpobmcnXT0kZWJqLT54YnFyWG5hZ2JlWmhuZzsNCgkJCSRuZWVbJHZdWyd4YnFyWG5hZ2JlR2h3aG5hJ109JGViai0+eGJxclhuYWdiZUdod2huYTsNCgkJCSRuZWVbJHZdWyd4YnFyWWJ4bmZ2T25sbmUnXT0kZWJqLT54YnFyWWJ4bmZ2T25sbmU7DQoJCQkkbmVlWyR2XVsneGJxckNyem9ubG5lJ109JGViai0+eGJxckNyem9ubG5lOw0KCQkJJG5lZVskdl1bJ3hicXJHY2YnXT0kZWJqLT54YnFyR2NmOw0KCQkJJG5lZVskdl1bJ3hicXJHaHdobmFDcmF0dmV2em5hJ109JGViai0+eGJxckdod2huYUNyYXR2ZXZ6bmE7DQoJCQkkbmVlWyR2XVsneGJxckdod2huYUdjbyddPSRlYmotPnhicXJXcmF2ZkdjbzsNCgkJCSRuZWVbJHZdWyd4YnFySW55aGduJ109JGViai0+eGJxcklueWhnbjsNCgkJCSRuZWVbJHZdWyd4YmduR2dxJ109JGViai0+eGJnbkdncTsNCgkJCSRuZWVbJHZdWydhbnpuR2dxJ109JGViai0+YW56bkdncTsNCgkJCSRuZWVbJHZdWydhcWNveiddPShzeWJuZykkZWJqLT5hcWNvejsNCgkJCSRuZWVbJHZdWydhcmdnYiddPShzeWJuZykkZWJqLT5hcmdnYjsNCgkJCSRuZWVbJHZdWydhdnludk9uZW5hdCddPShzeWJuZykkZWJqLT5hdnludk9uZW5hdDsNCgkJCSRuZWVbJHZdWydhdnludlduZm4nXT0oc3libmcpJGViai0+YXZ5bnZXbmZuOw0KCQkJJG5lZVskdl1bJ2F2eW52Wm54eWJhJ109KHN5Ym5nKSRlYmotPmF2eW52Wm54eWJhOw0KCQkJJG5lZVskdl1bJ2diZ255UW5hbkZuanZnJ109KHN5Ym5nKSRlYmotPmdiZ255UW5hbkZuanZnOw0KCQkJJG5lZVskdl1bJ2huYXRaaHhuJ109KHN5Ym5nKSRlYmotPmhuYXRaaHhuOw0KCQkJJG5lZVskdl1bJ2F2eCddPSRlYmotPmF2eDsNCgkJCSRuZWVbJHZdWydhYnpiZU53aCddPSRlYmotPmFiemJlTndoOw0KCQkJJG5lZVskdl1bJ2d0eU5qbnlPcmV5bnhoJ109JGViai0+Z3R5TmpueU9yZXlueGg7DQoJCQkkbmVlWyR2XVsnZ3R5Tnh1dmVPcmV5bnhoJ109JGViai0+Z3R5Tnh1dmVPcmV5bnhoOw0KCQkJJG5lZVskdl1bJ2NiZk9wMTEnXT0kZWJqLT5jYmZPcDExOw0KCQkJJG5lZVskdl1bJ2ZyZXYnXT0kZWJqLT5mcmV2Ow0KCQkJJG5lZVskdl1bJ2duYXR0bnlOd2gnXT0kZWJqLT5nbmF0dG55TndoOw0KCQkJJG5lZVskdl1bJ2duYXR0bnlHZ3EnXT0kZWJqLT5nbmF0dG55R2dxOw0KCQkJJG5lZVskdl1bJ2dyemNuZ0ZnaHNzdmF0J109JGViai0+Z3J6Y25nRmdoc3N2YXQ7DQoJCQkkbmVlWyR2XVsnaGZyZUNiZWdueSddPSRlYmotPmhmcmVDYmVnbnk7DQoJCQkkbmVlWyR2XVsnaWJ5aHpyJ109KHN5Ym5nKSRlYmotPmlieWh6cjsNCgkJCSRuZWVbJHZdWydpcSddPShzeWJuZykkZWJqLT5pcTsNCg0KCQkJJGRvID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQlGUllSUEcgb3BfYmhnX3FyZ252eV92cQ0KCQkJICAsdnFPbmVuYXQNCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLG5maGVuYWZ2DQoJCQkgICxvZWhnYg0KCQkJICAscHZzDQoJCQkgICxwdnNFaGN2bnUNCgkJCSAgLHF2ZnhiYQ0KCQkJICAsc2JvDQoJCQkgICxzZXJ2dHVnDQoJCQkgICx1bmV0blJ4ZmNiZQ0KCQkJICAsdW5ldG5DbmdieG5hDQoJCQkgICxwbmZnKHVuZXRuQ3JlYnlydW5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuQ3JlYnlydW5hDQoJCQkgICxwbmZnKHVuZXRuRm5naG5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuRm5naG5hDQoJCQkgICxwbmZnKHVuZXRuQ3JhbHJlbnVuYSBuZiBxcnB2em55KDE4LDIpKSBuZiB1bmV0bkNyYWxyZW51bmENCgkJCSAgLHZmdkNyZVhyem5mbmENCgkJCSAgLHhicXJOZm55T25lbmF0DQoJCQkgICx3aHp5bnVOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVYcnpuZm5hDQoJCQkgICx3aHp5bnVGbmdobmENCgkJCSAgLHhicXJOZm55T251bmFPbnhoDQoJCQkgICx4YnFyT25lbmF0DQoJCQkgICx4YnFyUW5yZW51TmZueQ0KCQkJICAseGJxclFieGh6cmENCgkJCSAgLHhicXJRYnhOZm55DQoJCQkgICx4YnFyVGhhbk9uZW5hdA0KCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJICAseGJxclhuZ3J0YmV2T25lbmF0DQoJCQkgICx4YnFyWGJhcXZmdk9uZW5hdA0KCQkJICAseGJxckFydG5lbk5mbnkNCgkJCSAgLHhicXJDcmV1dmdoYXRuYQ0KCQkJICAseGJxckZuZ2huYU9uZW5hdA0KCQkJICAsenJleA0KCQkJICAsYXFjb3oNCgkJCSAgLGFyZ2diDQoJCQkgICxwbmZnKGF2eW52T25lbmF0IG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52T25lbmF0DQoJCQkgICxwbmZnKGF2eW52UW5hbkZuanZnIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52UW5hbkZuanZnDQoJCQkgICxhdnludlduZm4NCgkJCSAgLGF2eW52R256b251DQoJCQkgICxjYmZHbmV2cw0KCQkJICAsUEJBSVJFRyhJTkVQVU5FKDI1NSksIGZyZXZPbmVuYXQpIG5mIGZyZXZPbmVuYXQNCgkJCSAgLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJICAsZ3Zjcg0KCQkJICAsaG5hdFpoeG4NCgkJCSAgLGh4aGVuYQ0KCQkJICAsaGVudm5hDQoJCQkgICxpYnloenINCgkJCSAgLGZyZXZRYnhoenJhDQoJCQkgICxmcmV2UmFndmduZg0KCQkJICAscG5nbmduYQ0KCQkJICAsQXJ0bmVuTmZueV9xZ3kNCgkJCSAgLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkgICxDcmV1dmdoYXRuYV9xZ3kNCgkJCSAgLFhuZ3J0YmV2T25lbmF0DQoJCQkgICxOZm55T25lbmF0DQoJCQkgICxOZm55T251bmFPbnhoDQoJCQkgICx3aHp5bnVPbnVuYU9ueGgNCgkJCSAgLHdoenludVF2eXJ4bmd4bmENCgkJCSAgLHdoenludUN2Z25QaHhudg0KCQkJICAsd2h6eW51RXJueXZmbmZ2DQoJCQkgICx4bmNuZnZnbmZGdnl2YXFyZQ0KCQkJICAsYXZ5bnZRcml2Zm4NCgkJCSAgLFZGQUhZWShhdnludk9uZW5hdElxLDApIE5GIGF2eW52T25lbmF0SXENCgkJCSAgLGNyZWFsbmdubmFZbmVnbmYNCgkJCSAgLFZGQUhZWSh4YnFyV3JhdmZJcSwgJycpIE5GIHhicXJXcmF2ZklxDQoJCQkgICxmcmV2Vnd2YQ0KCQkJICAsZ25ldnNQaHhudg0KCQkJICAsQ3JldXZnaGF0bmENCgkJCSAgLFhyYW5DbndueA0KCQkJICAsdXdyUGh4bnYNCgkJCSAgLGZyZXZPbmVuYXRRYnhOZm55DQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ19xcmdudnkganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkgYmVxcmUgb2wgb3BfYmhnX3FyZ252eV92cQ0KCQkJIik7DQoJCQkNCgkJCSRvPTA7DQoJCQlzYmVybnB1KCRkby0+ZXJmaHlnKCkgbmYgJGVvKXsNCgkJCQkkbmVvWyRvXVsncHZzJ109KHN5Ym5nKSRlby0+cHZzOw0KCQkJCSRuZW9bJG9dWydwdnNFaGN2bnUnXT0oc3libmcpJGVvLT5wdnNFaGN2bnU7DQoJCQkJJG5lb1skb11bJ3NibyddPShzeWJuZykkZW8tPnNibzsNCgkJCQkkbmVvWyRvXVsndW5ldG5SeGZjYmUnXT0oc3libmcpJGVvLT51bmV0blJ4ZmNiZTsNCgkJCQkkbmVvWyRvXVsndW5ldG5DbmdieG5hJ109KHN5Ym5nKSRlby0+dW5ldG5DbmdieG5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW8tPnVuZXRuQ3JlYnlydW5hOw0KCQkJCSRuZW9bJG9dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvLT51bmV0bkNyYWxyZW51bmE7DQoJCQkJJG5lb1skb11bJ3VuZXRuRm5naG5hJ109KHN5Ym5nKSRlby0+dW5ldG5GbmdobmE7DQoJCQkJJG5lb1skb11bJ3ZmdkNyZVhyem5mbmEnXT0oc3libmcpJGVvLT52ZnZDcmVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVYcnpuZm5hJ109JGVvLT53aHp5bnVYcnpuZm5hOw0KCQkJCSRuZW9bJG9dWyd3aHp5bnVGbmdobmEnXT0oc3libmcpJGVvLT53aHp5bnVGbmdobmE7DQoJCQkJJG5lb1skb11bJ3hicXJOZm55T251bmFPbnhoJ109JGVvLT54YnFyTmZueU9udW5hT254aDsNCgkJCQkkbmVvWyRvXVsneGJxck5mbnlPbmVuYXQnXT0kZW8tPnhicXJOZm55T25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyT25lbmF0J109JGVvLT54YnFyT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd4YnFyUW5yZW51TmZueSddPSRlby0+eGJxclFucmVudU5mbnk7DQoJCQkJJG5lb1skb11bJ3hicXJRYnhoenJhJ109JGVvLT54YnFyUWJ4aHpyYTsNCgkJCQkkbmVvWyRvXVsneGJxcldyYXZmWHJ6bmZuYSddPSRlby0+eGJxcldyYXZmWHJ6bmZuYTsNCgkJCQkkbmVvWyRvXVsneGJxckFydG5lbk5mbnknXT0kZW8tPnhicXJBcnRuZW5OZm55Ow0KCQkJCSRuZW9bJG9dWyd4YnFyRm5naG5hT25lbmF0J109JGVvLT54YnFyRm5naG5hT25lbmF0Ow0KCQkJCSRuZW9bJG9dWyd6cmV4J109JGVvLT56cmV4Ow0KCQkJCSRuZW9bJG9dWydhcWNveiddPShzeWJuZykkZW8tPmFxY296Ow0KCQkJCSRuZW9bJG9dWydhcmdnYiddPShzeWJuZykkZW8tPmFyZ2diOw0KCQkJCSRuZW9bJG9dWydhdnludk9uZW5hdCddPShzeWJuZykkZW8tPmF2eW52T25lbmF0Ow0KCQkJCSRuZW9bJG9dWydhdnludlFuYW5Gbmp2ZyddPShzeWJuZykkZW8tPmF2eW52UW5hbkZuanZnOw0KCQkJCSRuZW9bJG9dWydhdnludlduZm4nXT0oc3libmcpJGVvLT5hdnludlduZm47DQoJCQkJJG5lb1skb11bJ2NiZkduZXZzJ109JGVvLT5jYmZHbmV2czsNCgkJCQl2cygkeGJxclFieGh6cmEgPT0nMjcnKXsNCgkJCQkJCSRuZW9bJG9dWydmcmV2T25lbmF0J109JGVvLT5mcmV2T25lbmF0Ow0KCQkJCQl9IHJ5ZnJ7DQoJCQkJCQkkbmVvWyRvXVsnZnJldk9uZW5hdCddPXZhZ2lueSgkZW8tPmZyZXZPbmVuYXQpOw0KCQkJCQl9DQoJCQkJJG5lb1skb11bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlby0+ZmNyZnZzdnhuZnZZbnZhOw0KCQkJCSRuZW9bJG9dWydndmNyJ109JGVvLT5ndmNyOw0KCQkJCSRuZW9bJG9dWydobmF0Wmh4biddPShzeWJuZykkZW8tPmhuYXRaaHhuOw0KCQkJCSRuZW9bJG9dWydoeGhlbmEnXT0kZW8tPmh4aGVuYTsNCgkJCQkkbmVvWyRvXVsnaGVudm5hJ109JGVvLT5oZW52bmE7DQoJCQkJJG5lb1skb11bJ2lieWh6ciddPShzeWJuZykkZW8tPmlieWh6cjsNCg0KCQkJCSRkb3EgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJCQlGUllSUEcgIG9wX2JoZ19xYnhoenJhX3ZxIG5mIHZxUWJ4aHpyYQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkJCSAgLG9wX2JoZ19xcmdudnlfdnENCgkJCQkJICAseGJxclFieGh6cmENCgkJCQkJICAseGJxclZ3dmENCgkJCQkJICAsd3JhdmZRYnhoenJhDQoJCQkJCSAgLGFuem5TbmZ2eXZnbmYNCgkJCQkJICAsYWJ6YmVRYnhoenJhDQoJCQkJCSAgLGZyZXZRYnhoenJhDQoJCQkJCSAgLGduYXR0bnlRYnhoenJhDQoJCQkJCSAgLGhleVFieGh6cmENCgkJCQkJICAseHJncmVuYXRuYQ0KCQkJCQkgICxwZXJuZ3JfcW5ncg0KCQkJCQkgICxwZXJuZ3Jfb2wNCgkJCQkJICAsemJxdnNsX3FuZ3INCgkJCQkJICAsemJxdnNsX29sDQoJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FieGh6cmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSB4YnFyUWJ4aHpyYSA9ICcyMDMnDQoNCgkJCQkiKTsNCg0KCQkJCSRvcT0wOw0KCQkJCXNiZXJucHUoJGRvcS0+ZXJmaHlnKCkgbmYgJGVvcSl7DQoJCQkJCSRuZW9xWyRvcV1bJ2ZyZXZRYnhoenJhJ109JGVvcS0+ZnJldlFieGh6cmE7DQoJCQkJCQ0KCQkJCSRvcSsrOw0KCQkJCX0NCgkJCQkNCgkJCQkvKiAkZG9jID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJRlJZUlBHICBvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsZnJldk9uZW5hdA0KCQkJCQkgICxmcmV2T25lbmF0IG5mIGZyZXZPbmVuYXRDcnp2eXZ4DQoJCQkJCSAgLDIgbmYgZnJldlJhZ3ZnbmYNCgkJCQkJICBTRUJaIHFvYi5nb3lfb3BfYmhnX3FyZ252eSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJCSIpOw0KDQoJCQkJJG9jPTA7DQoJCQkJc2Jlcm5wdSgkZG9jLT5lcmZoeWcoKSBuZiAkZW9jKXsNCgkJCQkJJG5lb2NbJG9jXVsnZnJldk9uZW5hdCddPSRlb2MtPmZyZXZPbmVuYXQ7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZPbmVuYXRDcnp2eXZ4J109JGVvYy0+ZnJldk9uZW5hdENyenZ5dng7DQoJCQkJCSRuZW9jWyRvY11bJ2ZyZXZSYWd2Z25mJ109JGVvYy0+ZnJldlJhZ3ZnbmY7DQoNCgkJCQkkb2MrKzsNCgkJCQl9ICovDQoJCQkJDQoJCQkJJG5lZyA9IG5lZW5sKCk7DQoJCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7DQoJCQkJJGRnID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJLS1GUllSUEcgay5vbmVuYXRHbmV2c192cQ0KCQkJCQkgIC0tLGsub3BfYmhnX3VybnFyZV92cQ0KCQkJCQkgIC0tLGsub3BfYmhnX3FyZ252eV92cQ0KCQkJCQkgIC0tLGsuZ3Zjcl9xYnhoenJhDQoJCQkJCSAgLS0say54YnFyV3JhdmZHbmV2cw0KCQkJCQkgIC0tLGsud2h6eW51Rm5naG5hDQoJCQkJCSAgLS0say54YnFyU25mdnl2Z25mR25ldnMNCgkJCQkJICAtLSxrLnhicXJGbmdobmFPbmVuYXQNCgkJCQkJICAtLS0say54YnFyV3JhdmZDaGF0aGduYQ0KCQkJCQkgIC0tLHBuZmcoay5hdnludk9ubG5lIG5mIHFycHZ6bnkoMTgsMikpIG5mIGF2eW52T25sbmUNCgkJCQkJICAtLSxrLmF2eW52U25mdnl2Z25mDQoJCQkJCSAgLS0say5hdnludkZocW51UXZ5aGFuZnYNCgkJCQkJICAtLSxrLmZyZXZPbmVuYXQNCgkJCQkJICAtLSxrLmduZXZzDQoJCQkJCSAgLS0say5nbmV2c1NuZnZ5dmduZg0KCQkJCQktLVNFQlogZ295X3FuZ25fb25lbmF0R25ldnMgIGsNCgkJCQkJDQoJCQkJCSAgRlJZUlBHIG9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQkJeGJxclFieGh6cmEsDQoJCQkJCQl4YnFyV3JhdmZHbmV2cywNCgkJCQkJCXdoenludUZuZ2huYSwNCgkJCQkJCXhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJCXhicXJGbmdobmFPbmVuYXQsDQoJCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJCWF2eW52T25sbmUsDQoJCQkJCQlhdnludlNuZnZ5dmduZiwNCgkJCQkJCWF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJCWZyZXZPbmVuYXQsDQoJCQkJCQlHTkVWU19PWiwNCgkJCQkJCWduZXZzU25mdnl2Z25mDQoJCQkJCSAgU0VCWiBpdnJqX29uZW5hdF9nbmV2c19jY2Ffb3AyNSBrDQoJCQkJCWp1cmVyIGsub3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBrLm9wX2JoZ19xcmdudnlfdnE9JG9wX2JoZ19xcmdudnlfdnENCg0KCQkJCSIpOw0KDQoJCQkJJGc9MDsNCg0KCQkJCXNiZXJucHUoJGRnLT5lcmZoeWcoKSBuZiAkZWcpew0KCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJJG5lZ1skZ11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlZy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmR25ldnMnXT0kZWctPnhicXJXcmF2ZkduZXZzOw0KCQkJCQkkbmVnWyRnXVsnYXZ5bnZPbmxuZSddPShzeWJuZykkZWctPmF2eW52T25sbmU7DQoJCQkJCSRuZWdbJGddWydhdnludlNuZnZ5dmduZiddPShzeWJuZykkZWctPmF2eW52U25mdnl2Z25mOw0KCQkJCQkkbmVnWyRnXVsnZnJldk9uZW5hdCddPSRlZy0+ZnJldk9uZW5hdDsNCgkJCQkJJG5lZ1skZ11bJ2duZXZzJ109KHN5Ym5nKSRlZy0+R05FVlNfT1o7DQoJCQkJCSRuZWdbJGddWydnbmV2c1NuZnZ5dmduZiddPShzeWJuZykkZWctPmduZXZzU25mdnl2Z25mOw0KDQoJCQkJJGcrKzsNCgkJCQl9DQoNCgkJCQkkbmVfb251bmFPbnhoID0gbmVlbmwoKTsNCgkJCQkkb3BfYmhnX3FyZ252eV92cSA9ICRlby0+b3BfYmhnX3FyZ252eV92cTsNCgkJCQkkZG9vID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCQkJRlJZUlBHIG9udW5hT254aF92cQ0KCQkJCQkgICxvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCQkJICAsb3BfdmFfcXJnbnZ5X3ZxDQoJCQkJCSAgLG9wX3ZhX3VybnFyZV92cQ0KCQkJCQkgICxvcF9iaGdfdXJucXJlX3ZxX25mbnkNCgkJCQkJICAsb3BfdmFfdXJucXJlX3ZxX25mbnkNCgkJCQkJICAsb3BfYmhnX3FyZ252eV92cV9uZm55DQoJCQkJCSAgLG9wX3ZhX3FyZ252eV92cV9uZm55DQoJCQkJCSAgLHZxT25lbmF0DQoJCQkJCSAgLHZxV256dmFuYQ0KCQkJCQkgICxwdnMNCgkJCQkJICAscHZzRWhjdm51DQoJCQkJCSAgLHVuZXRuQ3JhbHJlbnVuYQ0KCQkJCQkgICxwbmZnKHVuZXRuRm5naG5hIG5mIHFycHZ6bnkoMTgsMikpIG5mIHVuZXRuRm5naG5hDQoJCQkJCSAgLHVuZXRuQ3JlYnlydW5hDQoJCQkJCSAgLHZmdkNyZVhyem5mbmENCgkJCQkJICAsd2h6eW51Rm5naG5hDQoJCQkJCSAgLHdoenludVhyem5mbmENCgkJCQkJICAseGJxckZuZ2huYU9uZW5hdA0KCQkJCQkgICxQTkZSDQoJCQkJCQlKVVJBICggKCB4YnFyUWJ4TmZueSA8PiAyMyApICkgR1VSQQ0KCQkJCQkJJzEnIFJZRlIgJzAnIA0KCQkJCQkJUkFRIE5GIHhicXJOZm55T251bmFPbnhoDQoJCQkJCSAgLE5mbnlPbnVuYU9ueGgNCgkJCQkJICAseGJxck9uZW5hdA0KCQkJCQkgICx4YnFyT25lbmF0TmZueQ0KCQkJCQkgICx4YnFyUWJ4aHpyYQ0KCQkJCQkgICx4YnFyUWJ4TmZueQ0KCQkJCQkgICxIRU5WTkFfUUJYSFpSQQ0KCQkJCQkgICx4YnFyWG5hZ2JlDQoJCQkJCSAgLHpyZXhPbmVuYXQNCgkJCQkJICAsYXFjb3oNCgkJCQkJICAsYWJ6YmVOd2hRYnhOZm55DQoJCQkJCSAgLGFiemJlUW5zZ25lUWJ4TmZueQ0KCQkJCQkgICxhYnpiZVFieGh6cmENCgkJCQkJICAsY2JmR25ldnMNCgkJCQkJICAsZnJldk9udW5hT254aA0KCQkJCQkgICxmcmV2T251bmFPbnhoR25ldnMNCgkJCQkJICAsZmNyZnZzdnhuZnZZbnZhT25lbmF0DQoJCQkJCSAgLGZyZXZPbmVuYXQNCgkJCQkJICAsZnJldk9uZW5hdFFieE5mbnkNCgkJCQkJICAsZnJldlZ3dmENCgkJCQkJICAsZmNyZnZzdnhuZnZZbnZhT25lbmF0IG5mIGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJCQkgICxnbmF0dG55UW5zZ25lUWJ4TmZueQ0KCQkJCQkgICxnbmF0dG55TndoUWJ4TmZueQ0KCQkJCQkgICxWRkFIWVkoZ3Zjck9uZW5hdCwnJykgTkYgZ3Zjck9uZW5hdA0KCQkJCQkgICxWRkFIWVkoaHhoZW5hT25lbmF0LCcnKSBORiBoeGhlbmFPbmVuYXQNCgkJCQkJICAsaGVudm5hT25lbmF0DQoJCQkJCSAgLHhicXJXcmF2ZkduZXZzDQoJCQkJCSAgLHdoenludUZuZ2huYUduZXZzDQoJCQkJCSAgLHhicXJTbmZ2eXZnbmZHbmV2cw0KCQkJCQkgICx4YnFyV3JhdmZDaGF0aGduYQ0KCQkJCQkgICxhcmdnYg0KCQkJCQkgICxhdnludk9ubG5lDQoJCQkJCSAgLGF2eW52V25mbg0KCQkJCQkgICxhdnludlNuZnZ5dmduZg0KCQkJCQkgICxhdnludkZocW51UXZ5aGFuZnYNCgkJCQkJICAsZ25ldnMNCgkJCQkJICAsZ25ldnNTbmZ2eXZnbmYNCgkJCQkJICAscG5nbmduYQ0KCQkJCQkgICxwZXJuZ3JfcW5ncg0KCQkJCQkgICxwZXJuZ3Jfb2wNCgkJCQkJICAsemJxdnNsX3FuZ3INCgkJCQkJICAsemJxdnNsX29sDQoJCQkJICBTRUJaIHFvYi5pdnJqX3FuZ25fb251bmFPbnhoDQoJCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSBuYXEgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxDQoNCgkJCQkiKTsNCg0KCQkJCSRvbz0wOw0KDQoJCQkJc2Jlcm5wdSgkZG9vLT5lcmZoeWcoKSBuZiAkZW9udW5hb254aCl7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsncHZzJ109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnM7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsncHZzRWhjdm51J109KHN5Ym5nKSRlb251bmFvbnhoLT5wdnNFaGN2bnU7DQoJCQkJCQ0KCQkJCQl2cygkeGJxclFieGh6cmEgPT0nMjcnKXsNCgkJCQkJCQ0KCQkJCQl9IHJ5ZnJ7DQoJCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ3N5bnRHdmYnXT0kZW9udW5hb254aC0+ZnJldk9udW5hT254aDsNCgkJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsndW5ldG5GbmdobmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuRm5naG5hOw0KCQkJCQkJJG5lX29udW5hT254aFskb29dWyd2ZnZDcmVYcnpuZm5hJ109dmFnaW55KCRlb251bmFvbnhoLT52ZnZDcmVYcnpuZm5hKTsNCgkJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsneGJxclFieGh6cmEnXT0kZW9udW5hb254aC0+eGJxclFieGh6cmE7DQoJCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2FiemJlUWJ4aHpyYSddPSRlb251bmFvbnhoLT5hYnpiZVFieGh6cmE7DQoJCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2ZjcmZ2c3Z4bmZ2WW52YSddPSRlb251bmFvbnhoLT5mY3JmdnN2eG5mdlludmE7DQoJCQkJCX0NCgkJCQkJJG5lX29udW5hT254aFskb29dWyd1bmV0bkNyYWxyZW51bmEnXT0oc3libmcpJGVvbnVuYW9ueGgtPnVuZXRuQ3JhbHJlbnVuYTsNCgkJCQkJJG5lX29udW5hT254aFskb29dWyd1bmV0bkNyZWJ5cnVuYSddPShzeWJuZykkZW9udW5hb254aC0+dW5ldG5DcmVieXJ1bmE7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnd2h6eW51Rm5naG5hJ109KHN5Ym5nKSRlb251bmFvbnhoLT53aHp5bnVGbmdobmE7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZW9udW5hb254aC0+eGJxck5mbnlPbnVuYU9ueGg7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsneGJxck9uZW5hdCddPSRlb251bmFvbnhoLT54YnFyT25lbmF0Ow0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ3hicXJRYnhOZm55J109JGVvbnVuYW9ueGgtPnhicXJRYnhOZm55Ow0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ3hicXJYbmFnYmUnXT0kZW9udW5hb254aC0+eGJxclhuYWdiZTsNCgkJCQkJJG5lX29udW5hT254aFskb29dWyd4YnFyRm5naG5hT25lbmF0J109JGVvbnVuYW9ueGgtPnhicXJGbmdobmFPbmVuYXQ7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnenJleE9uZW5hdCddPSRlb251bmFvbnhoLT56cmV4T25lbmF0Ow0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2FxY296J109KHN5Ym5nKSRlb251bmFvbnhoLT5hcWNvejsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydhcmdnYiddPShzeWJuZykkZW9udW5hb254aC0+YXJnZ2I7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnYXZ5bnZXbmZuJ109KHN5Ym5nKSRlb251bmFvbnhoLT5hdnludlduZm47DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnYWJ6YmVOd2hRYnhOZm55J109ZmdlX2VyY3lucHIoJy0nLCcnLCRlb251bmFvbnhoLT5hYnpiZU53aFFieE5mbnkpOw0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2FiemJlUW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5hYnpiZVFuc2duZVFieE5mbnk7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnY2JmR25ldnMnXT0kZW9udW5hb254aC0+Y2JmR25ldnM7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnZnJldk9udW5hT254aCddPSRlb251bmFvbnhoLT5mcmV2T251bmFPbnhoOw0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2ZyZXZPbmVuYXQnXT12YWdpbnkoJGVvbnVuYW9ueGgtPmZyZXZPbnVuYU9ueGgpOw0KCQkJCQkkbmVfb251bmFPbnhoWyRvb11bJ2ZyZXZPbmVuYXRRYnhOZm55J109JGVvbnVuYW9ueGgtPmZyZXZPbmVuYXQ7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnZnJldlZ3dmEnXT0kZW9udW5hb254aC0+ZnJldlZ3dmE7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnZmNyZnZzdnhuZnZZbnZhT25lbmF0J109JGVvbnVuYW9ueGgtPmZjcmZ2c3Z4bmZ2WW52YU9uZW5hdDsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydnbmF0dG55UW5zZ25lUWJ4TmZueSddPSRlb251bmFvbnhoLT5nbmF0dG55UW5zZ25lUWJ4TmZueTsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydndmNyT25lbmF0J109JGVvbnVuYW9ueGgtPmd2Y3JPbmVuYXQ7DQoJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnaHhoZW5hT25lbmF0J109JGVvbnVuYW9ueGgtPmh4aGVuYU9uZW5hdDsNCgkJCQkJJG5lX29udW5hT254aFskb29dWydoZW52bmFPbmVuYXQnXT0kZW9udW5hb254aC0+aGVudm5hT25lbmF0Ow0KDQoNCgkJCQkkbmVnID0gbmVlbmwoKTsNCgkJCQkJCSRvcF9iaGdfcXJnbnZ5X3ZxID0gJGVvLT5vcF9iaGdfcXJnbnZ5X3ZxOwkJDQoJCQkJCQkkZGcgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCQ0KCQkJCQkJCUZSWVJQRw0KCQkJCQkJCQlvcF9iaGdfcXJnbnZ5X3ZxLA0KCQkJCQkJCQlvcF9iaGdfdXJucXJlX3ZxLA0KCQkJCQkJCQlmcmV2T25lbmF0LA0KCQkJCQkJCQknT1onIE5GIHhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCQkJCVBORlINCgkJCQkJCQkJSlVSQSAoICggay54YnFyUWJ4TmZueSA8PiAyMyApICkgR1VSQQ0KCQkJCQkJCQknMScgUllGUiAnMCcgDQoJCQkJCQkJCVJBUSBORiB4YnFyTmZueU9udW5hT254aCwNCgkJCQkJCQkJJzMnIE5GIHhicXJTbmZ2eXZnbmZHbmV2cywNCgkJCQkJCQkJMCBORiBhdnludk9ubG5lLA0KCQkJCQkJCQkxMDAgTkYgYXZ5bnZTbmZ2eXZnbmYsDQoJCQkJCQkJCTAgTkYgYXZ5bnZGaHFudVF2eWhhbmZ2LA0KCQkJCQkJCQl2ZmFoeXkoIGwuR05FVlNfT1osICcwJyApIE5GIGduZXZzLA0KCQkJCQkJCQkxMDAgTkYgZ25ldnNTbmZ2eXZnbmYsDQoJCQkJCQkJCXZmYWh5eSggd2h6eW51Rm5naG5hLCAwICkgTkYgd2h6eW51Rm5naG5hLA0KCQkJCQkJCQknMScgTkYgeGJxcldyYXZmR25ldnMsDQoJCQkJCQkJCXZmYWh5eSggeGJxckZuZ2huYU9uZW5hdCwgJ0NQUicgKSBORiB4YnFyRm5naG5hT25lbmF0LA0KCQkJCQkJCQlFQkpfQUhaT1JFICggKSBCSVJFICggQkVRUkUgT0wgb3BfYmhnX3FyZ252eV92cSApIE5GIGZyZXZPbnVuYU9ueGggDQoJCQkJCQkJU0VCWiBxb2IuaXZyal9xbmduX29udW5hT254aCBrDQoJCQkJCQkJWVJTRyBXQlZBIGVyc3JlcmFmdl9jYmZfZ25ldnMgbCBCQSBrLmNiZkduZXZzID0gbC5BQlpCRV9VRg0KCQkJCQkJCQlqdXJlciBrLnZxT25lbmF0ID0gJG9wX2JoZ191cm5xcmVfdnEgbmFxIGsub3BfYmhnX3FyZ252eV92cT0kb3BfYmhnX3FyZ252eV92cQ0KCQkJCQkNCgkJCQkJCSIpOw0KCQkJCQkJDQoJCQkJCQkkZz0wOw0KCQkJCQkJDQoJCQkJCQlzYmVybnB1KCRkZy0+ZXJmaHlnKCkgbmYgJGVnKXsNCgkJCQkJCQkkbmVnWyRnXVsnd2h6eW51Rm5naG5hJ109dmFnaW55KCRlZy0+d2h6eW51Rm5naG5hKTsNCgkJCQkJCQkkbmVnWyRnXVsneGJxck5mbnlPbnVuYU9ueGgnXT0kZWctPnhicXJOZm55T251bmFPbnhoOw0KCQkJCQkJCSRuZWdbJGddWyd4YnFyU25mdnl2Z25mR25ldnMnXT0kZWctPnhicXJTbmZ2eXZnbmZHbmV2czsNCgkJCQkJCQkkbmVnWyRnXVsneGJxcldyYXZmQ2hhdGhnbmEnXT0kZWctPnhicXJXcmF2ZkNoYXRoZ25hOw0KCQkJCQkJCSRuZWdbJGddWyd4YnFyV3JhdmZHbmV2cyddPSRlZy0+eGJxcldyYXZmR25ldnM7DQoJCQkJCQkJJG5lZ1skZ11bJ3hicXJGbmdobmFPbmVuYXQnXT0kZWctPnhicXJGbmdobmFPbmVuYXQ7DQoJCQkJCQkJJG5lZ1skZ11bJ2F2eW52T25sbmUnXT0oc3libmcpJGVnLT5hdnludk9ubG5lOw0KCQkJCQkJCSRuZWdbJGddWydhdnludlNuZnZ5dmduZiddPShzeWJuZykkZWctPmF2eW52U25mdnl2Z25mOw0KCQkJCQkJCSRuZWdbJGddWydhdnludkZocW51UXZ5aGFuZnYnXT0oc3libmcpJGVnLT5hdnludkZocW51UXZ5aGFuZnY7DQoJCQkJCQkJJG5lZ1skZ11bJ2ZyZXZPbmVuYXQnXT0kZWctPmZyZXZPbmVuYXQ7DQoJCQkJCQkJJG5lZ1skZ11bJ2ZyZXZPbnVuYU9ueGgnXT12YWdpbnkoJGVnLT5mcmV2T251bmFPbnhoKTsNCgkJCQkJCQkkbmVnWyRnXVsnZ25ldnMnXT0oc3libmcpJGVnLT5nbmV2czsNCgkJCQkJCQkkbmVnWyRnXVsnZ25ldnNTbmZ2eXZnbmYnXT0oc3libmcpJGVnLT5nbmV2c1NuZnZ5dmduZjsNCgkJCQkJCQ0KCQkJCQkJCSRnKys7DQoJCQkJCQl9DQoJCQkJCQkNCgkJCQkJCSRuZV9vbnVuYU9ueGhbJG9vXVsnb251bmFPbnhoR25ldnMnXT0kbmVnOw0KDQoJCQkJCSRvbysrOwkNCgkJCQl9DQoNCgkJCQ0KCQkJJG5lb1skb11bJ29udW5hT254aCddPSRuZV9vbnVuYU9ueGg7DQoNCgkJCQkkbysrOw0KDQoJCQkJfQ0KDQoNCgkJCSRuZWVbJHZdWydvbmVuYXQnXT0kbmVvOw0KDQoJCSRkcnYgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLFZGQUhZWShueW56bmdSYWd2Z25mLCAnJykgTkYgbnluem5nUmFndmduZg0KCQkJICAsdmF2ZnZueVJhZ3ZnbmYNCgkJCSAgLFBCQUlSRUcoSU5FUFVORSgxMCksIHhicXJSYWd2Z25mKSBORiB4YnFyUmFndmduZg0KCQkJICAsVkZBSFlZKHhicXJXcmF2Zk5jdiwgJycpIE5GIHhicXJXcmF2Zk5jdg0KCQkJICAsVkZBSFlZKHhicXJXcmF2ZlZxcmFndmduZiwgJycpIE5GIHhicXJXcmF2ZlZxcmFndmduZg0KCQkJICAsVkZBSFlZKHhicXJBcnRuZW4sICcnKSBORiB4YnFyQXJ0bmVuDQoJCQkgICxWRkFIWVkoeGJxckZnbmdoZiwgJycpIE5GIHhicXJGZ25naGYNCgkJCSAgLFZGQUhZWShhbnpuUmFndmduZiwgJycpIE5GIGFuem5SYWd2Z25mDQoJCQkgICxWRkFIWVkoYXZvUmFndmduZiwgJycpIE5GIGF2b1JhZ3ZnbmYNCgkJCSAgLFZGQUhZWShhYnpiZVZxcmFndmduZiwgJycpIE5GIGFiemJlVnFyYWd2Z25mDQoJCQkgICxWRkFIWVkoYWJ6YmVWd3ZhUmFndmduZiwgJycpIE5GIGFiemJlVnd2YVJhZ3ZnbmYNCgkJCSAgLFZGQUhZWShnbmF0dG55Vnd2YVJhZ3ZnbmYsICcnKSBORiBnbmF0dG55Vnd2YVJhZ3ZnbmYNCgkJCSAgLGZyZXZSYWd2Z25mDQoJCSAgU0VCWiBxb2IuaXZyal9yYWd2Z25mX29wMjYxIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJQkVRUkUgT0wgZnJldlJhZ3ZnbmYNCg0KCQkiKTsNCg0KCQkkcnY9MDsNCgkJc2Jlcm5wdSgkZHJ2LT5lcmZoeWcoKSBuZiAkZXJ2KXsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ255bnpuZ1JhZ3ZnbmYnXT0kZXJ2LT5ueW56bmdSYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxclJhZ3ZnbmYnXT0kZXJ2LT54YnFyUmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJXcmF2Zk5jdiddPSRlcnYtPnhicXJXcmF2Zk5jdjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJXcmF2ZlZxcmFndmduZiddPSRlcnYtPnhicXJXcmF2ZlZxcmFndmduZjsNCgkJCSRuZV9yYWd2Z25mWyRydl1bJ3hicXJBcnRuZW4nXT0kZXJ2LT54YnFyQXJ0bmVuOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsneGJxckZnbmdoZiddPSRlcnYtPnhicXJGZ25naGY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhbnpuUmFndmduZiddPSRlcnYtPmFuem5SYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYXZvUmFndmduZiddPSRlcnYtPmF2b1JhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydhYnpiZVZxcmFndmduZiddPSRlcnYtPmFiemJlVnFyYWd2Z25mOw0KCQkJJG5lX3JhZ3ZnbmZbJHJ2XVsnYWJ6YmVWd3ZhUmFndmduZiddPSRlcnYtPmFiemJlVnd2YVJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydnbmF0dG55Vnd2YVJhZ3ZnbmYnXT0kZXJ2LT5nbmF0dG55Vnd2YVJhZ3ZnbmY7DQoJCQkkbmVfcmFndmduZlskcnZdWydmcmV2UmFndmduZiddPXZhZ2lueSgkZXJ2LT5mcmV2UmFndmduZik7DQoNCgkJJHJ2Kys7DQoJCX0NCgkJDQoJCSRkX3hyem5mbmEgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHIG9wX2JoZ191cm5xcmVfdnENCgkJCQkgICx3aHp5bnVYcnpuZm5hDQoJCQkJICAseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCSAgLGZyZXZYcnpuZm5hDQoJCQkJICAsenJleFhyem5mbmENCgkJCSAgU0VCWiBxb2IuaXZyal9xbmduX3hyem5mbmEganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhyem5mbmE9MDsNCgkJc2Jlcm5wdSgkZF94cnpuZm5hLT5lcmZoeWcoKSBuZiAkZV94cnpuZm5hKXsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsnd2h6eW51WHJ6bmZuYSddPXZhZ2lueSgkZV94cnpuZm5hLT53aHp5bnVYcnpuZm5hKTsNCgkJCSRuZV94cnpuZm5hWyR4cnpuZm5hXVsneGJxcldyYXZmWHJ6bmZuYSddPSRlX3hyem5mbmEtPnhicXJXcmF2Zlhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ3pyZXhYcnpuZm5hJ109JGVfeHJ6bmZuYS0+enJleFhyem5mbmE7DQoJCQkkbmVfeHJ6bmZuYVskeHJ6bmZuYV1bJ2ZyZXZYcnpuZm5hJ109dmFnaW55KCRlX3hyem5mbmEtPmZyZXZYcnpuZm5hKTsNCg0KCQkkeHJ6bmZuYSsrOw0KCQl9DQoNCgkJLyogJGRfeGJhZ252YXJlID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyBvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICx4YnFyV3JhdmZYYmFnbnZhcmUNCgkJCSAgLHhicXJHdmNyWGJhZ252YXJlDQoJCQkgICx4YnFySHhoZW5hWGJhZ252YXJlDQoJCQkgICxhYnpiZVhiYWdudmFyZQ0KCQkJICAsZnJldlhiYWdudmFyZQ0KCQkJU0VCWiBxb2IuZ295X29wX2JoZ194YmFnbnZhcmUganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoNCgkJIik7DQoNCgkJJHhiYWdudmFyZT0wOw0KCQlzYmVybnB1KCRkX3hiYWdudmFyZS0+ZXJmaHlnKCkgbmYgJGVfeGJhZ252YXJlKXsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ3hicXJXcmF2ZlhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxcldyYXZmWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckd2Y3JYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPnhicXJHdmNyWGJhZ252YXJlOw0KCQkJJG5lX3hiYWdudmFyZVskeGJhZ252YXJlXVsneGJxckh4aGVuYVhiYWdudmFyZSddPSRlX3hiYWdudmFyZS0+eGJxckh4aGVuYVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2FiemJlWGJhZ252YXJlJ109JGVfeGJhZ252YXJlLT5hYnpiZVhiYWdudmFyZTsNCgkJCSRuZV94YmFnbnZhcmVbJHhiYWdudmFyZV1bJ2ZyZXZYYmFnbnZhcmUnXT0kZV94YmFnbnZhcmUtPmZyZXZYYmFnbnZhcmU7DQoNCgkJJHhiYWdudmFyZSsrOw0KCQl9ICovDQoNCg0KCQkvKiAkbmVfY2hhdGhnbmEgPSBuZWVubCgpOw0KCQkJJG9wX2JoZ19xcmdudnlfdnEgPSAkZW8tPm9wX2JoZ19xcmdudnlfdnE7CQkNCgkJCSRkZyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJDQoJCQkJRlJZUlBHDQoJCQkJCTEgbmYgdnFDaGF0aGduYSwNCgkJCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCQkJb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJZnJldk9uZW5hdCwNCgkJCQkJJ09aJyBORiB4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQlQTkZSDQoJCQkJCUpVUkEgKCAoIGsueGJxclFieE5mbnkgPD4gMjMgKSApIEdVUkENCgkJCQkJJzEnIFJZRlIgJzAnIA0KCQkJCQlSQVEgTkYgeGJxck5mbnlPbnVuYU9ueGgsDQoJCQkJCSczJyBORiB4YnFyU25mdnl2Z25mR25ldnMsDQoJCQkJCTAgTkYgYXZ5bnZPbmxuZSwNCgkJCQkJMTAwIE5GIGF2eW52U25mdnl2Z25mLA0KCQkJCQkwIE5GIGF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJdmZhaHl5KCBsLkdORVZTX09aLCAnMCcgKSBORiBnbmV2cywNCgkJCQkJMTAwIE5GIGduZXZzU25mdnl2Z25mLA0KCQkJCQl2ZmFoeXkoIHdoenludUZuZ2huYSwgMCApIE5GIHdoenludUZuZ2huYSwNCgkJCQkJJzEnIE5GIHhicXJXcmF2ZkduZXZzLA0KCQkJCQl2ZmFoeXkoIHhicXJGbmdobmFPbmVuYXQsICdDUFInICkgTkYgeGJxckZuZ2huYU9uZW5hdCwNCgkJCQkJRUJKX0FIWk9SRSAoICkgQklSRSAoIEJFUVJFIE9MIG9wX2JoZ19xcmdudnlfdnEgKSBORiBmcmV2T251bmFPbnhoIA0KCQkJCVNFQlogcW9iLml2cmpfcW5nbl9vbnVuYU9ueGggaw0KCQkJCVlSU0cgV0JWQSBlcnNyZXJhZnZfY2JmX2duZXZzIGwgQkEgay5jYmZHbmV2cyA9IGwuQUJaQkVfVUYNCgkJCQkJanVyZXIgay5vcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJDQoJCQkiKTsNCgkJCQ0KCQkJJGM9MDsNCgkJCQ0KCQkJc2Jlcm5wdSgkZGctPmVyZmh5ZygpIG5mICRlYyl7DQoJCQkJJG5lX2NoYXRoZ25hWyRjXVsndnFDaGF0aGduYSddPXZhZ2lueSgkZWMtPnZxQ2hhdGhnbmEpOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJTbmZ2eXZnbmZHbmV2cyddPSRlYy0+eGJxclNuZnZ5dmduZkduZXZzOw0KCQkJCSRuZV9jaGF0aGduYVskY11bJ3hicXJXcmF2ZkNoYXRoZ25hJ109JGVjLT54YnFyV3JhdmZDaGF0aGduYTsNCgkJCQkkbmVfY2hhdGhnbmFbJGNdWydhdnludkNoYXRoZ25hJ109JGVjLT5hdnludkNoYXRoZ25hOw0KCQkJCSRjKys7DQoJCQl9ICovDQoNCg0KCQkkZF9xYnhoenJhID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3FieGh6cmFfdnEgbmYgdnFRYnhoenJhDQoJCQkgICxvcF9iaGdfdXJucXJlX3ZxDQoJCQkgICxvcF9iaGdfcXJnbnZ5X3ZxDQoJCQkgICx4YnFyUWJ4aHpyYQ0KCQkJICAsVkZBSFlZKHhicXJTbmZ2eXZnbmYsICcnKSBORiB4YnFyU25mdnl2Z25mDQoJCQkgICx4YnFyVnd2YQ0KCQkJICAsd3JhdmZRYnhoenJhDQoJCQkgICxWRkFIWVkoYW56blNuZnZ5dmduZiwgJycpIE5GIGFuem5TbmZ2eXZnbmYNCgkJCSAgLGFiemJlUWJ4aHpyYQ0KCQkJICAsZnJldlFieGh6cmENCgkJCSAgLGduYXR0bnlRYnhoenJhDQoJCQkgICxoZXlRYnhoenJhDQoJCQkgICx4cmdyZW5hdG5hDQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfcWJ4aHpyYSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQliZXFyZSBvbCBmcmV2UWJ4aHpyYQ0KDQoJCSIpOw0KDQoJCSRxYnhoenJhPTA7DQoJCXNiZXJucHUoJGRfcWJ4aHpyYS0+ZXJmaHlnKCkgbmYgJGVfcWJ4aHpyYSl7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ3ZxUWJ4aHpyYSddPSRlX3FieGh6cmEtPnZxUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsneGJxclFieGh6cmEnXT0kZV9xYnhoenJhLT54YnFyUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsneGJxclNuZnZ5dmduZiddPSRlX3FieGh6cmEtPnhicXJTbmZ2eXZnbmY7DQoJCQkkbmVfcWJ4aHpyYVskcWJ4aHpyYV1bJ2FiemJlUWJ4aHpyYSddPSRlX3FieGh6cmEtPmFiemJlUWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnZnJldlFieGh6cmEnXT0kZV9xYnhoenJhLT5mcmV2UWJ4aHpyYTsNCgkJCSRuZV9xYnhoenJhWyRxYnhoenJhXVsnZ25hdHRueVFieGh6cmEnXT0kZV9xYnhoenJhLT5nbmF0dG55UWJ4aHpyYTsNCg0KCQkkcWJ4aHpyYSsrOw0KCQl9DQoNCgkJJGRfY3JhdG5hdHhoZyA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQlGUllSUEcgIG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLCcxJyBuZiB2cUNyYXRuYXR4aGcNCgkJCSAgLHhicXJPcmFxcmVuDQoJCQkgICxhbnpuQ3JhdG5hdHhoZw0KCQkJICAsYWJ6YmVDcmF0bmF0eGhnDQoJCQkgICx4YnFyUG5lbk5hdHhoZw0KCQkJICAsRUJKX0FIWk9SRSgpIEJJUkUgKEJFUVJFIE9MIG9wX2JoZ191cm5xcmVfdnEpIG5mIGZyZXZDcmF0bmF0eGhnDQoJCQkgIFNFQlogcW9iLml2cmpfY3JhdG5hdHhoZyBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkiKTsNCg0KCQkkY3JhdG5hdHhoZz0wOw0KCQlzYmVybnB1KCRkX2NyYXRuYXR4aGctPmVyZmh5ZygpIG5mICRlX2NyYXRuYXR4aGcpew0KCQkJdnMoJHhicXJRYnhoenJhID09ICcyNycpew0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsndnFDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+dnFDcmF0bmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxck9yYXFyZW4nXT0kZV9jcmF0bmF0eGhnLT54YnFyT3JhcXJlbjsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2Fuem5DcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YW56bkNyYXRuYXR4aGc7DQoJCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydhYnpiZUNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5hYnpiZUNyYXRuYXR4aGc7DQoJCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWyd4YnFyUG5lbk5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnhicXJQbmVuTmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnZnJldkNyYXRuYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT5mcmV2Q3JhdG5hdHhoZzsNCgkJCX0gcnlmcnsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ3ZxQ3JhdG5hdHhoZyddPSRlX2NyYXRuYXR4aGctPnZxQ3JhdG5hdHhoZzsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ3hicXJPcmFxcmVuJ109JGVfY3JhdG5hdHhoZy0+eGJxck9yYXFyZW47DQoJCQkJJG5lX2NyYXRuYXR4aGdbJGNyYXRuYXR4aGddWydhbnpuQ3JhdG5hdHhoZyddPSRlX2NyYXRuYXR4aGctPmFuem5DcmF0bmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsnYWJ6YmVDcmF0bmF0eGhnJ109JGVfY3JhdG5hdHhoZy0+YWJ6YmVDcmF0bmF0eGhnOw0KCQkJCSRuZV9jcmF0bmF0eGhnWyRjcmF0bmF0eGhnXVsneGJxclBuZW5OYXR4aGcnXT0kZV9jcmF0bmF0eGhnLT54YnFyUG5lbk5hdHhoZzsNCgkJCQkkbmVfY3JhdG5hdHhoZ1skY3JhdG5hdHhoZ11bJ2ZyZXZDcmF0bmF0eGhnJ109dmFnaW55KCRlX2NyYXRuYXR4aGctPmZyZXZDcmF0bmF0eGhnKTsNCgkJCX07DQoJCQkNCgkJJGNyYXRuYXR4aGcrKzsNCgkJfQ0KCQkNCgkJJGRfd256dmFuYSA9ICRndXZmLT5xby0+ZGhyZWwoIg0KDQoJCQkJICBGUllSUEcgb3BfYmhnX3VybnFyZV92cQ0KCQkJCQksdnFXbnp2YW5hDQoJCQkJCSxndmNyX3FieGh6cmENCgkJCQkJLHhicXJXcmF2ZlduenZhbmENCgkJCQkJLGF2eW52V256dmFuYQ0KCQkJCQksYWJ6YmVPY3cNCgkJCQkJLGFiemJlV256dmFuYQ0KCQkJCQksY3Jhd256dmENCgkJCQkJLGduYXR0bnlPY3cNCgkJCQkJLGduYXR0bnlXbnp2YW5hDQoJCQkJCSxnbmF0dG55V25naHVHcnpjYg0KCQkJCQlTRUJaIHFvYi5nb3lfcW5nbl93bnp2YW5hIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQkNCgkJCSIpOw0KCQkJCQ0KCQkJJHduenZhbmE9MDsNCgkJCXNiZXJucHUoJGRfd256dmFuYS0+ZXJmaHlnKCkgbmYgJGVfd256dmFuYSl7DQoJCQkJJG5lX3duenZhbmFbJHduenZhbmFdWyd2cVduenZhbmEnXT0kZV93bnp2YW5hLT52cVduenZhbmE7DQoJCQkJJG5lX3duenZhbmFbJHduenZhbmFdWyd4YnFyV3JhdmZXbnp2YW5hJ109JGVfd256dmFuYS0+eGJxcldyYXZmV256dmFuYTsNCgkJCQkkbmVfd256dmFuYVskd256dmFuYV1bJ2F2eW52V256dmFuYSddPShzeWJuZykkZV93bnp2YW5hLT5hdnludlduenZhbmE7DQoJCQkJJG5lX3duenZhbmFbJHduenZhbmFdWydhYnpiZU9jdyddPSRlX3duenZhbmEtPmFiemJlT2N3Ow0KCQkJCSRuZV93bnp2YW5hWyR3bnp2YW5hXVsnYWJ6YmVXbnp2YW5hJ109JGVfd256dmFuYS0+YWJ6YmVXbnp2YW5hOw0KCQkJCSRuZV93bnp2YW5hWyR3bnp2YW5hXVsnY3Jhd256dmEnXT0kZV93bnp2YW5hLT5jcmF3bnp2YTsNCgkJCQkkbmVfd256dmFuYVskd256dmFuYV1bJ2duYXR0bnlPY3cnXT0kZV93bnp2YW5hLT5nbmF0dG55T2N3Ow0KCQkJCSRuZV93bnp2YW5hWyR3bnp2YW5hXVsnZ25hdHRueVduenZhbmEnXT0kZV93bnp2YW5hLT5nbmF0dG55V256dmFuYTsNCgkJCQkkbmVfd256dmFuYVskd256dmFuYV1bJ2duYXR0bnlXbmdodUdyemNiJ109JGVfd256dmFuYS0+Z25hdHRueVduZ2h1R3J6Y2I7DQoNCgkJCSR3bnp2YW5hKys7DQoJCQl9DQoJCQ0KCQkvKiAkZF9vbmF4ID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoNCgkJCUZSWVJQRyAgb3BfYmhnX3VybnFyZV92cQ0KCQkJICAseGJxck9uYXgNCgkJCSAgLGZyZXZPbmF4DQoJCQkgIFNFQlogcW9iLmdveV9vcF9iaGdfdXJucXJlIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KDQoJCSIpOw0KDQoJCSRvbmF4PTA7DQoJCXNiZXJucHUoJGRfb25heC0+ZXJmaHlnKCkgbmYgJGVfb25heCl7DQoJCQkkbmVfb25heFskb25heF1bJ3hicXJPbmF4J109JGVfb25heC0+eGJxck9uYXg7DQoJCQkkbmVfb25heFskb25heF1bJ2ZyZXZPbmF4J109JGVfb25heC0+ZnJldk9uYXg7DQoNCgkJJG9uYXgrKzsNCgkJfSAqLw0KCQkNCgkJLyogJGRfeHJmdm5jbmFPbmVuYXQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCg0KCQkJRlJZUlBHICBvcF9iaGdfeHJmdm5jbmFPbmVuYXRfdnENCgkJCSAgLG9wX2JoZ191cm5xcmVfdnENCgkJCSAgLHhicXJXcmF2Zk9uZW5hdA0KCQkJICAseGJxcldyYXZmVGhxbmF0DQoJCQkgICxhbnpuQ3ZwDQoJCQkgICxueW56bmcNCgkJCSAgLGFiemJlR3J5Y0N2cA0KCQkJICAsd2h6eW51UGJhZ252YXJlMjANCgkJCSAgLHdoenludVBiYWdudmFyZTQwDQoJCQkgICx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJICAseGJxclBuZW5GZ2hzc3ZhdA0KCQkJICAseGJxcldyYXZmQ25lZ0JzDQoJCQkgICxnbmF0dG55Q3hvDQoJCQkgICxqbnhnaEZ2bmNDcmV2eGZuIG5mIGpueGdoRnZuY0NyZXZ4Zm4xDQoJCQkgICxwYmFwbmcoZ25hdHRueUN4bywnRycsIGpueGdoRnZuY0NyZXZ4Zm4sJzowMC4wMDBNJykgbmYgam54Z2hGdm5jQ3Jldnhmbg0KCQkJICAsV3JhdmZPbmVuYXQNCgkJCSAgLFdyYXZmVGhxbmF0DQoJCQkgICxXcmF2ZkNuZWdCcw0KCQkJICAsUG5lbkZnaHNzdmF0DQoJCQkgICx4cmdyZW5hdG5hDQoJCQkgICxwZXJuZ3JfcW5ncg0KCQkJICAscGVybmdyX29sDQoJCQkgICx6YnF2c2xfcW5ncg0KCQkJICAsemJxdnNsX29sDQoJCSAgU0VCWiBxb2IuZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCg0KCQkJIik7DQoNCgkJJHhyZnZuY25hT25lbmF0PTA7DQoJCXNiZXJucHUoJGRfeHJmdm5jbmFPbmVuYXQtPmVyZmh5ZygpIG5mICRlX3hyZnZuY25hT25lbmF0KXsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyV3JhdmZPbmVuYXQnXT0kZV94cmZ2bmNuYU9uZW5hdC0+eGJxcldyYXZmT25lbmF0Ow0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3hicXJXcmF2ZlRocW5hdCddPSRlX3hyZnZuY25hT25lbmF0LT54YnFyV3JhdmZUaHFuYXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYW56bkN2cCddPSRlX3hyZnZuY25hT25lbmF0LT5hbnpuQ3ZwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ255bnpuZyddPSRlX3hyZnZuY25hT25lbmF0LT5ueW56bmc7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnYWJ6YmVHcnljQ3ZwJ109JGVfeHJmdm5jbmFPbmVuYXQtPmFiemJlR3J5Y0N2cDsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd5YnhuZnZGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT55YnhuZnZGdm5jQ3JldnhmbjsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWyd4YnFyUG5lbkZnaHNzdmF0J109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJQbmVuRmdoc3N2YXQ7DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsneGJxcldyYXZmQ25lZ0JzJ109JGVfeHJmdm5jbmFPbmVuYXQtPnhicXJXcmF2ZkNuZWdCczsNCgkJCSRuZV94cmZ2bmNuYU9uZW5hdFskeHJmdm5jbmFPbmVuYXRdWydnbmF0dG55Q3hvJ109JGVfeHJmdm5jbmFPbmVuYXQtPmduYXR0bnlDeG87DQoJCQkkbmVfeHJmdm5jbmFPbmVuYXRbJHhyZnZuY25hT25lbmF0XVsnam54Z2hGdm5jQ3JldnhmbiddPSRlX3hyZnZuY25hT25lbmF0LT5qbnhnaEZ2bmNDcmV2eGZuOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTIwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTIwOw0KCQkJJG5lX3hyZnZuY25hT25lbmF0WyR4cmZ2bmNuYU9uZW5hdF1bJ3doenludVBiYWdudmFyZTQwJ109JGVfeHJmdm5jbmFPbmVuYXQtPndoenludVBiYWdudmFyZTQwOw0KDQoJCSR4cmZ2bmNuYU9uZW5hdCsrOw0KCQl9ICovDQoNCg0KCQkJJG5lZVskdl1bJ3duenZhbmEnXT0kbmVfd256dmFuYTsNCgkJCSRuZWVbJHZdWydjaGF0aGduYSddPSRuZV9jaGF0aGduYTsNCgkJCSRuZWVbJHZdWydyYWd2Z25mJ109JG5lX3JhZ3ZnbmY7DQoJCQkkbmVlWyR2XVsneHJ6bmZuYSddPSRuZV94cnpuZm5hOw0KCQkJJG5lZVskdl1bJ3hiYWdudmFyZSddPSRuZV94YmFnbnZhcmU7DQoJCQkkbmVlWyR2XVsncWJ4aHpyYSddPSRuZV9xYnhoenJhOw0KCQkJJG5lZVskdl1bJ2NyYXRuYXR4aGcnXT0kbmVfY3JhdG5hdHhoZzsNCg0KCQkkdisrOw0KCQl9DQoJDQoNCgkJJG5lZW5sPSAkbmVlWzBdOw0KCQkkcW5nbmFsbj0gd2ZiYV9yYXBicXIoJG5lZW5sKTsNCgkJDQoJCSRwaGV5ID0gcGhleV92YXZnKCRoZXkpOw0KCQkNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfQ0JGRywgZ2Vocik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCgkJJHVybnFyZWYgPSBuZWVubCgNCgkJICAgIk5oZ3ViZXZtbmd2YmE6IE9ybmVyZSAkZ2J4cmEiLA0KCQkgICAiUGJhZ3JhZy1HbGNyOiBuY2N5dnBuZ3ZiYS93ZmJhIg0KCQkpOw0KCQkvL3JwdWIgJGdieHJhIC4gIjxvZT4iOyANCgkJLy9pbmVfcWh6YygkdXJucXJlZik7DQoJCS8vcXZyKCk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJCQ0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19DQkZHU1ZSWVFGLCAkcW5nbmFsbik7DQoJCS8vcnB1YiAkcW5nbmFsbjsJDQoJCS8vcXZyKCk7DQoNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCgkJDQoJCSRlcmZjID0gcGhleV9ya3JwKCRwaGV5KTsNCgkJDQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KDQoJCSRmZ25naGZfcHJ2Zm4gPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCSRuZmhqID0gdmZmcmcoJGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl0pPyRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdOiduaic7DQoJCXZzKCRuZmhqID09ICduaicpew0KCQkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gPT0gJ0JYJyl7DQoJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCWhjcW5nciBnb3lfb3BfYmhnX3VybnFyZSBmcmcgdnFFcmZjYmEgPSAtMSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCSIpOw0KCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J0ZoeGZyZiEnICApKTsNCgkJCQ0KCQkJDQoJCX0gcnlmciB7DQoJCQl2cyAodmZmcmcoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ10pKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+J1RudG55IEZyYXF2YXQhJykpOw0KCQkJfSByeWZyIHsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsJ2ZnbmdoZicgPT4gIlZhc2Jlem5mdiIsICd6cmZmbnRyJyA9PiAiIEhhcXJlIFpudmFnbmFyYXByIEZyZWlyZSAiLCdxbmduRmduZ2hmJyA9PidTbnZ5cnEnICkgKTsJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCX0NCgkJfSByeWZyIHsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PicwMicgLCd6cmZmbnRyJyA9PiRuZmhqLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScgKSk7CQkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCg0KCX0NCg0KCXNoYXBndmJhIHByeGZnbmdoZl9xbmduX3BydmZuKCl7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IHVybnFyZV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkYWJ6YmVOd2ggPSAodmZmcmcoJF9DQkZHWydhYnpiZU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydhYnpiZU53aCddKSk/JF9DQkZHWydhYnpiZU53aCddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQWJ6YmUgTndoIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRmZ2YgPSAodmZmcmcoJF9DQkZHWydmZ2YnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snZmdmJ10pKT8kX0NCRkdbJ2ZnZiddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogY2hlcHVuZnJfZmduZ2hmIEd2cW54IFF2Z3J6aHhuYSBQUlZGTiJ9Jyk7DQoJCSRoZnJlYW56ciA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfaGZyZWFuenInKTsNCiAgICAgICAgJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KCQkkZ2J4cmEgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ2ZfZ2J4cmEnKTsNCgkJDQoJCSRhYnpiZU53aCA9IGZnZV9lcmN5bnByKG5lZW5sKCItIiwiLiIsImtrIiksIG5lZW5sKCIiLCIiKSwgJGFiemJlTndoKTsNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi9mZ25naGYvJGFiemJlTndoIjsNCgkJDQoNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCg0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCS8vcnB1YiAkZ2J4cmE7DQoJCS8vcXZyKCk7DQoJCSAgIA0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19VR0dDVVJOUVJFLCAkdXJucXJlZik7DQoJCS8vc2JlIHFyb2h0IGJheWwhDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xVQkZHLCBzbnlmcik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xDUlJFLCBzbnlmcik7DQoNCgkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCgkJLy9ycHViICRlcmZjOw0KCQkvL3F2cigpOw0KCQkNCgkJJHhicXJFcmZjYmEgPScnOw0KCQkkYWJ6YmVFcmZjYmEgPScnOw0KCQkkZ25hdHRueUVyZmNiYSA9Jyc7DQoJCSRqbnhnaEVyZmNiYSA9Jyc7DQoJCSRoZW52bmExID0nJzsNCgkJJGhlbnZuYTIgPScnOw0KCQkkQ3FzID0nJzsNCgkJCQ0KCQkkZmduZ2hmX3BydmZuID0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOwkNCgkJDQoJCXZzICghbmVlbmxfeHJsX3JrdmZnZigicW5nbkZnbmdoZiIsJGZnbmdoZl9wcnZmbikpDQoJCXsNCgkJCXZzKG5lZW5sX3hybF9ya3ZmZ2YoIlJrcHJjZ3ZiYSIsJGZnbmdoZl9wcnZmbikpew0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAyJywgJ2ZnbmdoZic9PicwMicgLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScsICd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ1JrcHJjZ3ZiYSddICkpOwkJDQoJCQkJcXZyKCk7DQoJCQl9DQoJCQkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnOTknLCAnZmduZ2hmJz0+Jzk5JywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kYWJ6YmVOd2ggLiAiICIgLiAkZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10pKTsJCQ0KCQkJcXZyKCk7DQoJCX0gDQoJCSAgDQoNCgkJJG5maGogPSB2ZmZyZygkZmduZ2hmX3BydmZuWyJSa3ByY2d2YmEiXSk/JGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl06J25qJzsNCgkJDQoJCQ0KCQl2cygkbmZoaiA9PSAnbmonKXsNCgkJCXZzKHBiaGFnKCRmZ25naGZfcHJ2Zm4pID4gMCl7DQoJCQkJDQoJCQkJdnMocGJoYWcoJGZnbmdoZl9wcnZmblsicW5nbkZnbmdoZiJdWzBdKSA+IDApew0KCQkJCQkkYWJ6YmVOd2ggPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bMF1bImFiemJlTndoIl07DQoJCQkJCSR4YnFyQ2ViZnJmID0gJGZnbmdoZl9wcnZmblsicW5nbkZnbmdoZiJdWzBdWyJ4YnFyQ2ViZnJmIl07DQoJCQkJCSRhYnpiZVFuc2duZSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVswXVsiYWJ6YmVRbnNnbmUiXTsNCgkJCQkJJGduYXR0bnlRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bMF1bImduYXR0bnlRbnNnbmUiXTsNCgkJCQkJDQoJCQkJCSRnbmF0dG55UW5zZ25lPXFuZ3JfcGVybmdyKCRnbmF0dG55UW5zZ25lKTsNCgkJCQkJJGduYXR0bnlRbnNnbmU9cW5ncl9zYmV6bmcoJGduYXR0bnlRbnNnbmUsIkwtei1xIik7DQoJCQkJCQ0KCQkJCQkkam54Z2hGZ25naGYgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bMF1bImpueGdoRmduZ2hmIl07DQoJCQkJCSR4cmdyZW5hdG5hID0gJGZnbmdoZl9wcnZmblsicW5nbkZnbmdoZiJdWzBdWyJ4cmdyZW5hdG5hIl07DQoJCQkJCSR4YnFyUWJ4aHpyYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVswXVsieGJxclFieGh6cmEiXTsNCgkJCQkJJGZnbmdoZiA9ICRmZ25naGZfcHJ2Zm5bImZnbmdoZiJdOw0KCQkJCQkNCgkJCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBmZ25naGZfZXJmY2JhIHNlYnogW2dveV9xbmduX2VyZmNiYV0gDQoJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJCW5hcSB4YnFyQ2ViZnJmID0gJyR4YnFyQ2ViZnJmJyANCgkJCQkJCQluYXEgeHJncmVuYXRuYSA9ICckeHJncmVuYXRuYScgDQoJCQkJCQkJbmFxIGpueGdoRmduZ2hmID0gJyRqbnhnaEZnbmdoZicNCgkJCQkJIik7DQoJCQkJCSRmZ25naGZfZXJmY2JhID0gMDsNCgkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJJGZnbmdoZl9lcmZjYmEgPSAkZS0+ZmduZ2hmX2VyZmNiYTsNCgkJCQkJfQ0KCQkJCQl2cygkZmduZ2hmX2VyZmNiYSA+IDApew0KCQkJCQkJDQoJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZmduZ2hmX3BydmZuWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGFiemJlTndoIC4gIiAiIC4gJGZnbmdoZl9wcnZmblsnenJmZm50ciddLCAncW5nbkZnbmdoZicgPT4keHJncmVuYXRuYSkpOwkNCgkJCQkJCXF2cigpOw0KCQkJCQl9DQoJCQkJCQ0KCQkJCX0gcnlmciB2cyhwYmhhZygkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF0pID4gMCl7DQoJCQkJCSRhYnpiZU53aCA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiYWJ6YmVOd2giXTsNCgkJCQkJJHhicXJFcmZjYmEgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bInhicXJFcmZjYmEiXTsNCgkJCQkJJGFiemJlUW5zZ25lID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJhYnpiZVFuc2duZSJdOw0KCQkJCQkkZ25hdHRueVFuc2duZSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiZ25hdHRueVFuc2duZSJdOw0KCQkJCQkNCgkJCQkJJGduYXR0bnlRbnNnbmU9cW5ncl9wZXJuZ3IoJGduYXR0bnlRbnNnbmUpOw0KCQkJCQkkZ25hdHRueVFuc2duZT1xbmdyX3NiZXpuZygkZ25hdHRueVFuc2duZSwiTC16LXEiKTsNCgkJCQkJDQoJCQkJCSRhYnpiZUVyZmNiYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiYWJ6YmVFcmZjYmEiXTsNCgkJCQkJJGduYXR0bnlFcmZjYmEgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImduYXR0bnlFcmZjYmEiXTsNCgkJCQkJJGpueGdoRXJmY2JhID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJqbnhnaEVyZmNiYSJdOw0KCQkJCQkkeHJncmVuYXRuYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsieHJncmVuYXRuYSJdOw0KCQkJCQkkQ3FzID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJDcXMiXTsNCgkJCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBmZ25naGZfZXJmY2JhIHNlYnogW2dveV9xbmduX2VyZmNiYV0gDQoJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJbmFxIHhicXJFcmZjYmEgPSAnJHhicXJFcmZjYmEnIA0KCQkJCQkJbmFxIHhyZ3JlbmF0bmEgPSAnJHhyZ3JlbmF0bmEnIA0KCQkJCQkJbmFxIGpueGdoRXJmY2JhID0gJyRqbnhnaEVyZmNiYScgDQoJCQkJCQluYXEgQ3FzID0gJyRDcXMnDQoJCQkJCSIpOw0KCQkJCQkNCgkJCQkJJGZnbmdoZl9lcmZjYmEgPSAwOw0KCQkJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJCQkkZmduZ2hmX2VyZmNiYSA9ICRlLT5mZ25naGZfZXJmY2JhOw0KCQkJCQl9DQoJCQkJCXZzKCRmZ25naGZfZXJmY2JhID4gMCl7DQoJCQkJCQkNCgkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sICdxbmduRmduZ2hmJyA9PiR4cmdyZW5hdG5hKSk7CQ0KCQkJCQkJcXZyKCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0gcnlmciB7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMicsICdmZ25naGYnPT4nMDInICwnenJmZm50cicgPT4kbmZoaiwncW5nbkZnbmdoZicgPT4nWGJhcnhmdiBncmVjaGdoZiwgRnZ5bnV4bmEgWWJ0dmEgUFJWRk4geHJ6b255diEnICkpOwkJDQoJCQlxdnIoKTsNCgkJCQ0KCQl9DQoNCgkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ109PSdGaHBwcmZmJyl7DQoJCQkNCgkJCXZzKCR4YnFyQ2ViZnJmID09ICcnIHx8ICR4YnFyQ2ViZnJmID09ICcwMDEnKXsNCgkJCQkNCgkJCX0gcnlmcnsNCgkJCQkNCgkJCQkkcW5nbl92YSA9IG5lZW5sKCdvcF9iaGdfdXJucXJlX3ZxJyA9PiAkb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJJ2FiemJlTndoJyA9PiAkYWJ6YmVOd2gsICd4YnFyQ2ViZnJmJyA9PiAkeGJxckNlYmZyZiwNCgkJCQkJJ2FiemJlUW5zZ25lJyA9PiAkYWJ6YmVRbnNnbmUsICdnbmF0dG55UW5zZ25lJyA9PiAkZ25hdHRueVFuc2duZSwNCgkJCQkJJ2pueGdoRmduZ2hmJyA9PiAkam54Z2hGZ25naGYsICd4YnFyUWJ4aHpyYScgPT4gJHhicXJRYnhoenJhLA0KCQkJCQkneGJxckVyZmNiYScgPT4gJHhicXJFcmZjYmEsICdhYnpiZUVyZmNiYScgPT4gJGFiemJlRXJmY2JhLA0KCQkJCQknZ25hdHRueUVyZmNiYScgPT4gJGduYXR0bnlFcmZjYmEsICdqbnhnaEVyZmNiYScgPT4gJGpueGdoRXJmY2JhLA0KCQkJCQknaGVudm5hMScgPT4gJGhlbnZuYTEsICdoZW52bmEyJyA9PiAkaGVudm5hMiwNCgkJCQkJJ0NxcycgPT4gJENxcywgJ3hyZ3JlbmF0bmEnID0+ICR4cmdyZW5hdG5hKTsNCgkJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9xbmduX2VyZmNiYScsICRxbmduX3ZhKTsNCgkJCX07DQoJCQ0KCQkJdnMoJGFiemJlUW5zZ25lID09ICcnIHx8ICR4YnFyQ2ViZnJmID09ICcwMDEnKXsNCgkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQlIQ1FOR1IgZ295X29wX2JoZ191cm5xcmUNCgkJCQkJRlJHIGdveV9vcF9iaGdfdXJucXJlLnZxRXJmY2JhID0gLTY2LA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmFfMSA9IC02NiwNCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLmduYXR0bnlRbnNnbmUgPSBBSFlZDQoJCQkJCUpVUkVSDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS5vcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkiKTsNCgkJCX0gcnlmcnsNCgkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQ0KCQkJCQlIQ1FOR1IgZ295X29wX2JoZ191cm5xcmUNCgkJCQkJRlJHIGdveV9vcF9iaGdfdXJucXJlLnZxRXJmY2JhID0gZ295X3FuZ25fZXJmY2JhLnZxRXJmY2JhLA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmFfMSA9IGdveV9xbmduX2VyZmNiYS52cUVyZmNiYSwNCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLmFiUW5zZ25lID0gZ295X3FuZ25fZXJmY2JhLmFiemJlUW5zZ25lLA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUuZ25hdHRueVFuc2duZSA9IGdveV9xbmduX2VyZmNiYS5nbmF0dG55UW5zZ25lDQoJCQkJCQkJDQoJCQkJCVNFQloNCgkJCQkJCWdveV9xbmduX2VyZmNiYQ0KCQkJCQkJVkFBUkUgV0JWQSBnb3lfb3BfYmhnX3VybnFyZSBCQSBnb3lfcW5nbl9lcmZjYmEub3BfYmhnX3VybnFyZV92cSA9IGdveV9vcF9iaGdfdXJucXJlLm9wX2JoZ191cm5xcmVfdnEgDQoJCQkJCUpVUkVSDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS5vcF9iaGdfdXJucXJlX3ZxPSAkb3BfYmhnX3VybnFyZV92cSANCgkJCQkJCU5BUSBnb3lfcW5nbl9lcmZjYmEudnFFcmZjYmEgPSAoIEZSWVJQRyBaTksgKCB2cUVyZmNiYSApIFNFQlogZ295X3FuZ25fZXJmY2JhICkNCgkJCQkiKTsNCgkJCX07DQoJCQkNCgkJCQ0KCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sICdxbmduRmduZ2hmJyA9PiR4cmdyZW5hdG5hICAuICIgTldIOiAiIC4gJGFiemJlTndoICAuICIgQUJaQkUvR05BVFROWSAiIC4gJGFiemJlUW5zZ25lIC4gIi8iIC4gJGduYXR0bnlRbnNnbmUgICAgICApKTsJCQ0KCQkJCXF2cigpOw0KCQl9DQoNCgl9DQoNCgkNCglzaGFwZ3ZiYSBwcnhlcmZjYmFfcW5nbl9wcnZmbigpew0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiB1cm5xcmVfdnEgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGFiemJlTndoID0gKHZmZnJnKCRfQ0JGR1snYWJ6YmVOd2gnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snYWJ6YmVOd2gnXSkpPyRfQ0JGR1snYWJ6YmVOd2gnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIEFiemJlIE53aCBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQogICAgICAgICRuZWUgPSBuZWVubCgpOw0KICAgICAgICAkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCgkJJGdieHJhID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk7DQoJCQ0KCQkkYWJ6YmVOd2ggPSBmZ2VfZXJjeW5wcihuZWVubCgiLSIsIi4iLCJrayIpLCBuZWVubCgiIiwiIiksICRhYnpiZU53aCk7DQoJCSRoZXkgPSAidWdnY2Y6Ly9uY3ZmLXRqLm9ybnBoeG52LnRiLnZxL2JjcmFuY3YvZmduZ2hmLyRhYnpiZU53aCI7DQoNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCg0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCS8vcnB1YiAkZ2J4cmE7DQoJCS8vcXZyKCk7DQoJCSAgIA0KCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19VR0dDVVJOUVJFLCAkdXJucXJlZik7DQoJCS8vc2JlIHFyb2h0IGJheWwhDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xVQkZHLCBzbnlmcik7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0ZGWV9JUkVWU0xDUlJFLCBzbnlmcik7DQoNCgkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQlwaGV5X3B5YmZyKCRwaGV5KTsNCgkJLy9ycHViICRlcmZjOw0KCQkvL3F2cigpOw0KCQkNCgkJJHhicXJFcmZjYmEgPScnOw0KCQkkYWJ6YmVFcmZjYmEgPScnOw0KCQkkZ25hdHRueUVyZmNiYSA9Jyc7DQoJCSRqbnhnaEVyZmNiYSA9Jyc7DQoJCSRoZW52bmExID0nJzsNCgkJJGhlbnZuYTIgPScnOw0KCQkkY3FzID0nJzsNCgkJDQoJCSRmZ25naGZfcHJ2Zm4gPSB3ZmJhX3FycGJxcigkZXJmYywgZ2Vocik7DQoJCSRrayA9IHBiaGFnKCRmZ25naGZfcHJ2Zm4pOw0KCQkNCgkJdnMgKCFuZWVubF94cmxfcmt2ZmdmKCJxbmduRmduZ2hmIiwkZmduZ2hmX3BydmZuKSkNCgkJew0KCQkJdnMobmVlbmxfeHJsX3JrdmZnZigiUmtwcmNndmJhIiwkZmduZ2hmX3BydmZuKSl7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDInLCAnZmduZ2hmJz0+JzAyJyAsJ3pyZmZudHInID0+JGZnbmdoZl9wcnZmblsnUmtwcmNndmJhJ10sJ3FuZ25GZ25naGYnID0+JGZnbmdoZl9wcnZmblsnUmtwcmNndmJhJ10gKSk7CQkNCgkJCQlxdnIoKTsNCgkJCX0NCgkJCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMicsICdmZ25naGYnPT4nMDInICwnenJmZm50cicgPT4kZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sJ3FuZ25GZ25naGYnID0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gKSk7CQkNCgkJCXF2cigpOw0KCQl9IA0KCQkgIA0KDQoJCSRuZmhqID0gdmZmcmcoJGZnbmdoZl9wcnZmblsiUmtwcmNndmJhIl0pPyRmZ25naGZfcHJ2Zm5bIlJrcHJjZ3ZiYSJdOiduaic7DQoJCQ0KCQkNCgkJdnMoJG5maGogPT0gJ25qJyl7DQoJCQl2cyhwYmhhZygkZmduZ2hmX3BydmZuKSA+IDApew0KCQ0KCQkJCXZzKHBiaGFnKCRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdKSA+IDApew0KCQkJCQkkYWJ6YmVOd2ggPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsiYWJ6YmVOd2giXTsNCgkJCQkJJHhicXJDZWJmcmYgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsieGJxckNlYmZyZiJdOw0KCQkJCQkkYWJ6YmVRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsiYWJ6YmVRbnNnbmUiXTsNCgkJCQkJJGduYXR0bnlRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRmduZ2hmIl1bJGtrXVsiZ25hdHRueVFuc2duZSJdOw0KCQkJCQkNCgkJCQkJJGduYXR0bnlRbnNnbmU9cW5ncl9wZXJuZ3IoJGduYXR0bnlRbnNnbmUpOw0KCQkJCQkkZ25hdHRueVFuc2duZT1xbmdyX3NiZXpuZygkZ25hdHRueVFuc2duZSwiTC16LXEiKTsNCgkJCQkJDQoJCQkJCSRqbnhnaEZnbmdoZiA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdWyJqbnhnaEZnbmdoZiJdOw0KCQkJCQkkeHJncmVuYXRuYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdWyJ4cmdyZW5hdG5hIl07DQoJCQkJCSR4YnFyUWJ4aHpyYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25GZ25naGYiXVska2tdWyJ4YnFyUWJ4aHpyYSJdOw0KCQkJCQkkZmduZ2hmID0gJGZnbmdoZl9wcnZmblsiZmduZ2hmIl07DQoNCgkJCQkJJGRrayA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBhZyBzZWJ6IHFvYi5nb3lfcW5nbl9lcmZjYmEgDQoJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJCW5hcSB4YnFyQ2ViZnJmID0gJyR4YnFyQ2ViZnJmJw0KCQkJCQkJCW5hcSB4cmdyZW5hdG5hID0gJyR4cmdyZW5hdG5hJyANCgkJCQkJCQluYXEgam54Z2hGZ25naGYgPSAnJGpueGdoRmduZ2hmJw0KCQkJCQkiKTsNCgkJCQkJJHBhZyA9IDA7DQoJCQkJCXNiZXJucHUoJGRray0+ZXJmaHlnKCkgbmYgJGVrayl7DQoJCQkJCQkkcGFnID0gJGVray0+cGFnOw0KCQkJCQkJDQoJCQkJCX0NCgkJCQkJCQkJCQkJDQoJCQkJCXZzKCRwYWcgPiAwKXsNCgkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRmZ25naGZfcHJ2Zm5bJ2ZnbmdoZiddICwnenJmZm50cicgPT4kYWJ6YmVOd2ggLiAiICIgLiAkZmduZ2hmX3BydmZuWyd6cmZmbnRyJ10sICdxbmduRmduZ2hmJyA9PiR4cmdyZW5hdG5hKSk7CQ0KCQkJCQkJcXZyKCk7DQoJCQkJCX0gDQoJCQkJCQ0KCQkJCX0gDQoJCQkJDQoJCQkJdnMocGJoYWcoJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdKSA+IDApew0KCQkJCQkNCgkJCQkJJGFiemJlTndoID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJhYnpiZU53aCJdOw0KCQkJCQkkeGJxckVyZmNiYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsieGJxckVyZmNiYSJdOw0KCQkJCQkkYWJ6YmVRbnNnbmUgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImFiemJlUW5zZ25lIl07DQoJCQkJCSRnbmF0dG55UW5zZ25lID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJnbmF0dG55UW5zZ25lIl07DQoJCQkJCQ0KCQkJCQkkZ25hdHRueVFuc2duZT1xbmdyX3Blcm5ncigkZ25hdHRueVFuc2duZSk7DQoJCQkJCSRnbmF0dG55UW5zZ25lPXFuZ3Jfc2Jlem5nKCRnbmF0dG55UW5zZ25lLCJMLXotcSIpOw0KCQkJCQkNCgkJCQkJJGFiemJlRXJmY2JhID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJhYnpiZUVyZmNiYSJdOw0KCQkJCQkkZ25hdHRueUVyZmNiYSA9ICRmZ25naGZfcHJ2Zm5bInFuZ25FcmZjYmEiXVswXVsiZ25hdHRueUVyZmNiYSJdOw0KCQkJCQkkam54Z2hFcmZjYmEgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImpueGdoRXJmY2JhIl07DQoJCQkJCSR4cmdyZW5hdG5hID0gJGZnbmdoZl9wcnZmblsicW5nbkVyZmNiYSJdWzBdWyJ4cmdyZW5hdG5hIl07DQoJCQkJCSRjcXMgPSAkZmduZ2hmX3BydmZuWyJxbmduRXJmY2JhIl1bMF1bImNxcyJdOw0KCQkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIGZnbmdoZl9lcmZjYmEgc2VieiBbZ295X3FuZ25fZXJmY2JhXSANCgkJCQkJCQlqdXJlciBhYnpiZU53aCA9ICckYWJ6YmVOd2gnIA0KCQkJCQkJCW5hcSB4YnFyRXJmY2JhID0gJyR4YnFyRXJmY2JhJyANCgkJCQkJCQluYXEgeHJncmVuYXRuYSA9ICckeHJncmVuYXRuYScgDQoJCQkJCQkJbmFxIGpueGdoRXJmY2JhID0gJyRqbnhnaEVyZmNiYScgDQoJCQkJCQkJbmFxIGNxcyA9ICckY3FzJw0KCQkJCQkiKTsNCgkJCQkJDQoJCQkJCSRmZ25naGZfZXJmY2JhID0gMDsNCgkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJJGZnbmdoZl9lcmZjYmEgPSAkZS0+ZmduZ2hmX2VyZmNiYTsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJdnMoJGZnbmdoZl9lcmZjYmEgPiAwKXsNCgkJCQkJCQ0KCQkJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRhYnpiZU53aCAuICIgIiAuICRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwgJ3FuZ25GZ25naGYnID0+JHhyZ3JlbmF0bmEpKTsJDQoJCQkJCQlxdnIoKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkJDQoJCQl9DQoJCQkNCgkJfSByeWZyIHsNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PicwMicgLCd6cmZmbnRyJyA9PiRuZmhqLCdxbmduRmduZ2hmJyA9PidYYmFyeGZ2IGdyZWNoZ2hmLCBGdnludXhuYSBZYnR2YSBQUlZGTiB4cnpvbnl2IScgKSk7CQkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCgkJDQoNCgkJdnMoJGZnbmdoZl9wcnZmblsnZmduZ2hmJ109PSdGaHBwcmZmJyl7DQoJCQkJDQoJCQl2cygkeGJxckNlYmZyZiA9PSAnJyB8fCAkeGJxckNlYmZyZiA9PSAnMDAxJyl7DQoJCQkJDQoJCQl9IHJ5ZnJ7DQoJCQkJDQoJCQkJJHFuZ25fdmEgPSBuZWVubCgnb3BfYmhnX3VybnFyZV92cScgPT4gJG9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCSdhYnpiZU53aCcgPT4gJGFiemJlTndoLCAneGJxckNlYmZyZicgPT4gJHhicXJDZWJmcmYsDQoJCQkJCSdhYnpiZVFuc2duZScgPT4gJGFiemJlUW5zZ25lLCAnZ25hdHRueVFuc2duZScgPT4gJGduYXR0bnlRbnNnbmUsDQoJCQkJCSdqbnhnaEZnbmdoZicgPT4gJGpueGdoRmduZ2hmLCAneGJxclFieGh6cmEnID0+ICR4YnFyUWJ4aHpyYSwNCgkJCQkJJ3hicXJFcmZjYmEnID0+ICR4YnFyRXJmY2JhLCAnYWJ6YmVFcmZjYmEnID0+ICRhYnpiZUVyZmNiYSwNCgkJCQkJJ2duYXR0bnlFcmZjYmEnID0+ICRnbmF0dG55RXJmY2JhLCAnam54Z2hFcmZjYmEnID0+ICRqbnhnaEVyZmNiYSwNCgkJCQkJJ2hlbnZuYTEnID0+ICRoZW52bmExLCAnaGVudm5hMicgPT4gJGhlbnZuYTIsDQoJCQkJCSdjcXMnID0+ICRjcXMsICd4cmdyZW5hdG5hJyA9PiAkeHJncmVuYXRuYSk7DQoJCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9lcmZjYmEnLCAkcW5nbl92YSk7DQoJCQl9Ow0KDQoJCQl2cygkYWJ6YmVRbnNnbmUgPT0gJycgfHwgJHhicXJDZWJmcmYgPT0gJzAwMScpew0KCQkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJCUhDUU5HUiBnb3lfb3BfYmhnX3VybnFyZQ0KCQkJCQlGUkcgZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmEgPSAtNjYsDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS52cUVyZmNiYV8xID0gLTY2LA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUuZ25hdHRueVFuc2duZSA9IEFIWVkNCgkJCQkJSlVSRVINCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLm9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCSIpOw0KCQkJfSByeWZyew0KCQkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJDQoJCQkJCUhDUU5HUiBnb3lfb3BfYmhnX3VybnFyZQ0KCQkJCQlGUkcgZ295X29wX2JoZ191cm5xcmUudnFFcmZjYmEgPSBnb3lfcW5nbl9lcmZjYmEudnFFcmZjYmEsDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS52cUVyZmNiYV8xID0gZ295X3FuZ25fZXJmY2JhLnZxRXJmY2JhLA0KCQkJCQkJZ295X29wX2JoZ191cm5xcmUuYWJRbnNnbmUgPSBnb3lfcW5nbl9lcmZjYmEuYWJ6YmVRbnNnbmUsDQoJCQkJCQlnb3lfb3BfYmhnX3VybnFyZS5nbmF0dG55UW5zZ25lID0gZ295X3FuZ25fZXJmY2JhLmduYXR0bnlRbnNnbmUNCgkJCQkJCQkNCgkJCQkJU0VCWg0KCQkJCQkJZ295X3FuZ25fZXJmY2JhDQoJCQkJCQlWQUFSRSBXQlZBIGdveV9vcF9iaGdfdXJucXJlIEJBIGdveV9xbmduX2VyZmNiYS5vcF9iaGdfdXJucXJlX3ZxID0gZ295X29wX2JoZ191cm5xcmUub3BfYmhnX3VybnFyZV92cSANCgkJCQkJSlVSRVINCgkJCQkJCWdveV9vcF9iaGdfdXJucXJlLm9wX2JoZ191cm5xcmVfdnE9ICRvcF9iaGdfdXJucXJlX3ZxIA0KCQkJCQkJTkFRIGdveV9xbmduX2VyZmNiYS52cUVyZmNiYSA9ICggRlJZUlBHIFpOSyAoIHZxRXJmY2JhICkgU0VCWiBnb3lfcW5nbl9lcmZjYmEgKQ0KCQkJCSIpOw0KCQkJfTsNCgkJCQ0KCQkJDQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JGZnbmdoZl9wcnZmblsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRmZ25naGZfcHJ2Zm5bJ3pyZmZudHInXSwgJ3FuZ25GZ25naGYnID0+JHhyZ3JlbmF0bmEgIC4gIiBOV0g6ICIgLiAkYWJ6YmVOd2ggIC4gIiBBQlpCRS9HTkFUVE5ZICIgLiAkYWJ6YmVRbnNnbmUgLiAiLyIgLiAkZ25hdHRueVFuc2duZSAgICAgICkpOwkJDQoJCQkJcXZyKCk7DQoJCX0NCgkNCgl9IA0KCQ0KCQ0KCXNoYXBndmJhIHByeF9nbmV2c1VmKCl7DQoJCSRndXZmLT55YnR2YV9wcnZmbl9hcmooKTsNCgkJJGdieHJhID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk7DQoJCQ0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVueiBjaGVwdW5mcl9lcmRocmZnX3FyZ252eV92cSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDdnl2dSBHcmV5cm92dSBRbnVoeWggUW5nbiBPbmVuYXQhIn0nKTsNCgkJJGNiZkduZXZzID0gKHZmZnJnKCRfQ0JGR1snY2JmR25ldnMnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snY2JmR25ldnMnXSkpPyRfQ0JGR1snY2JmR25ldnMnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGNiZkduZXZzIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRnbmF0dG55TndoID0gKHZmZnJnKCRfQ0JGR1snZ25hdHRueU53aCddKSAmJiAhcnpjZ2woJF9DQkZHWydnbmF0dG55TndoJ10pKT8kX0NCRkdbJ2duYXR0bnlOd2gnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGduYXR0bnlOd2ggR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHhicXJRYnhoenJhID0gKHZmZnJnKCRfQ0JGR1sneGJxclFieGh6cmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxclFieGh6cmEnXSkpPyRfQ0JGR1sneGJxclFieGh6cmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHhicXJRYnhoenJhIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCSRmcmV2T25lbmF0ID0gKHZmZnJnKCRfQ0JGR1snZnJldk9uZW5hdCddKSAmJiAhcnpjZ2woJF9DQkZHWydmcmV2T25lbmF0J10pKT8kX0NCRkdbJ2ZyZXZPbmVuYXQnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIGZyZXZPbmVuYXQgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJHhicXJGbmdobmFPbmVuYXQgPSAodmZmcmcoJF9DQkZHWyd4YnFyRm5naG5hT25lbmF0J10pICYmICFyemNnbCgkX0NCRkdbJ3hicXJGbmdobmFPbmVuYXQnXSkpPyRfQ0JGR1sneGJxckZuZ2huYU9uZW5hdCddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgeGJxckZuZ2huYU9uZW5hdCBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkd2h6eW51Rm5naG5hID0gKHZmZnJnKCRfQ0JGR1snd2h6eW51Rm5naG5hJ10pICYmICFyemNnbCgkX0NCRkdbJ3doenludUZuZ2huYSddKSk/JF9DQkZHWyd3aHp5bnVGbmdobmEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHdoenludUZuZ2huYSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkc2JvID0gKHZmZnJnKCRfQ0JGR1snc2JvJ10pICYmICFyemNnbCgkX0NCRkdbJ3NibyddKSk/JF9DQkZHWydzYm8nXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIEFDSkMgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJLy8kZmdmID0gKHZmZnJnKCRfQ0JGR1snZmdmJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnZiddKSk/JF9DQkZHWydmZ2YnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIENuZW56IGNoZXB1bmZyX2ZnbmdoZiBHdnFueCBRdmdyemh4bmEgUFJWRk4ifScpOw0KCQkvLyRnYnhyYSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignZl9nYnhyYScpOw0KDQoJCSRoZXkgPSAidWdnY2Y6Ly9uY3ZmLXRqLm9ybnBoeG52LnRiLnZxL2JjcmFuY3YvZ25ldnMtdWY/eGJxclVmPSRjYmZHbmV2cyI7DQoNCgkJJHBoZXkgPSBwaGV5X3ZhdmcoJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0hFWSwgJGhleSk7DQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX0VSR0hFQUdFTkFGU1JFLCBnZWhyKTsNCg0KCQkkdXJucXJlZiA9IG5lZW5sKA0KCQkgICAiTmhndWJldm1uZ3ZiYTogT3JuZXJlICRnYnhyYSIsDQoJCSAgICJQYmFncmFnLUdsY3I6IG5jY3l2cG5ndmJhL3dmYmEiDQoJCSk7DQoJCQkgICANCgkJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJCS8vc2JlIHFyb2h0IGJheWwhDQoJCQlwaGV5X2ZyZ2JjZygkcGhleSwgUEhFWUJDR19GRllfSVJFVlNMVUJGRywgc255ZnIpOw0KCQkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCg0KCQkJJGVyZmMgPSBwaGV5X3JrcnAoJHBoZXkpOw0KCQkJcGhleV9weWJmcigkcGhleSk7DQoJCQkkZXJmY2JhX25lZT0gd2ZiYV9xcnBicXIoJGVyZmMsIGdlaHIpOw0KCQkJLy9pbmVfcWh6YygkZXJmY2JhX25lZSk7DQoJCSAgIAkvL3F2cigpOw0KCQkJDQoJCQkkbmZoaiA9IHZmZnJnKCRlcmZjYmFfbmVlWyJSa3ByY2d2YmEiXSk/JGVyZmNiYV9uZWVbIlJrcHJjZ3ZiYSJdOidieCc7DQoJCQl2cygkbmZoaiA9PSAnYngnKXsNCgkJCQl2cyhwYmhhZygkZXJmY2JhX25lZSkgPiAwKXsNCgkJCQkJdnMocGJoYWcoJGVyZmNiYV9uZWVbImNiZkduZXZzIl0pID4gMCl7DQoJCQkJCQlzYmUgKCRrID0gMDsgJGsgPD0gcGJoYWcoJGVyZmNiYV9uZWVbImNiZkduZXZzIl0pOyAkaysrKSB7DQoJCQkJCQkJdnMocGJoYWcoJGVyZmNiYV9uZWVbImNiZkduZXZzIl1bJGtdKSA+IDAgKXsNCgkJCQkJCQkJDQoNCgkJCQkJCQkJdnMgKCRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsieGJxcldyYXZmQ2hhdGhnbmEiXSA9PSAnT1gnKXsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJDQoJCQkJCQkJCQkkeGJxcldyYXZmQ2hhdGhnbmEgPSAkZXJmY2JhX25lZVsiY2JmR25ldnMiXVska11bInhicXJXcmF2ZkNoYXRoZ25hIl07DQoJCQkJCQkJCQkkZ25ldnMgPSAkZXJmY2JhX25lZVsiY2JmR25ldnMiXVska11bImduZXZzIl07DQoJCQkJCQkJCQkNCgkJCQkJCQkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJCQkJCQkJCWZyeXJwZyBwYmhhZygqKSBuZiBwYmhhZ19jZyBzZWJ6IFtnb3lfcW5nbl9vbmVuYXRHbmV2c10ganVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICckb3BfYmhnX3VybnFyZV92cScgbmFxIG9wX2JoZ19xcmdudnlfdnEgPSAnJG9wX2JoZ19xcmdudnlfdnEnIG5hcSBndmNyX3FieGh6cmEgPSAnJHhicXJRYnhoenJhJyBuYXEgeGJxcldyYXZmQ2hhdGhnbmEgPSAnT1gnDQoJCQkJCQkJCQkJIik7DQoJCQkJCQkJCQkJJHBiaGFnX2NnID0gMDsNCgkJCQkJCQkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJCQkJCQkJJHBiaGFnX2NnID0gJGUtPnBiaGFnX2NnOw0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCXZzKCRwYmhhZ19jZyA+IDApew0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsJDQoJCQkJCQkJCQkJCQkkcW5nbl92YSA9IG5lZW5sKCd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEpOw0KCQkJCQkJCQkJCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsJCQ0KCQkJCQkJCQkJCQkJJGZnZiA9ICRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsgDQoJCQkJCQkJCQkJCQlxdnIoKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9IHJ5ZnIgdnMoJHBiaGFnX2NnID09IDApew0KDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsNCgkJCQkJCQkJCQkJCSRxbmduX3ZhID0gbmVlbmwoJ29wX2JoZ191cm5xcmVfdnEnID0+ICRvcF9iaGdfdXJucXJlX3ZxLCAnb3BfYmhnX3FyZ252eV92cScgPT4gJG9wX2JoZ19xcmdudnlfdnEsICd4YnFyV3JhdmZDaGF0aGduYScgPT4gJHhicXJXcmF2ZkNoYXRoZ25hLCAnZ25ldnMnID0+ICRnbmV2cywgJ2d2Y3JfcWJ4aHpyYScgPT4gJHhicXJRYnhoenJhLCAnZnJldk9uZW5hdCcgPT4gJGZyZXZPbmVuYXQsICd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEsICd4YnFyRm5naG5hT25lbmF0JyA9PiAkeGJxckZuZ2huYU9uZW5hdCwgJ3hicXJXcmF2ZkduZXZzJyA9PiAnMScpOw0KCQkJCQkJCQkJCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQ0KCQkJCQkJCQl9CQ0KCQkJCQkJCQkNCgkJCQkJCQkJdnMgKCRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsieGJxcldyYXZmQ2hhdGhnbmEiXSA9PSAnQ0NVJyl7DQoJCQkJCQkJCQkNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJJHhicXJXcmF2ZkNoYXRoZ25hID0gJGVyZmNiYV9uZWVbImNiZkduZXZzIl1bJGtdWyJ4YnFyV3JhdmZDaGF0aGduYSJdOw0KCQkJCQkJCQkJJGduZXZzID0gJGVyZmNiYV9uZWVbImNiZkduZXZzIl1bJGtdWyJnbmV2cyJdOw0KCQkJCQkJCQkJDQoJCQkJCQkJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCQkJCQkJCQlmcnlycGcgcGJoYWcoKikgbmYgcGJoYWdfY2cgc2VieiBbZ295X3FuZ25fb25lbmF0R25ldnNdIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAnJG9wX2JoZ191cm5xcmVfdnEnIG5hcSBvcF9iaGdfcXJnbnZ5X3ZxID0gJyRvcF9iaGdfcXJnbnZ5X3ZxJyBuYXEgZ3Zjcl9xYnhoenJhID0gJyR4YnFyUWJ4aHpyYScgbmFxIHhicXJXcmF2ZkNoYXRoZ25hID0gJ0NDVScNCgkJCQkJCQkJCQkiKTsNCgkJCQkJCQkJCQkkcGJoYWdfY2cgPSAwOw0KCQkJCQkJCQkJCQlzYmVybnB1KCRkLT5lcmZoeWcoKSBuZiAkZSl7DQoJCQkJCQkJCQkJCQkkcGJoYWdfY2cgPSAkZS0+cGJoYWdfY2c7DQoJCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkJdnMoJHBiaGFnX2NnID4gMCl7DQoJCQkJCQkJCQkJCQkNCgkJCQkJCQkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRlcmZjYmFfbmVlWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGVyZmNiYV9uZWVbJ3pyZmZudHInXSkpOwkNCgkJCQkJCQkJCQkJCSRxbmduX3ZhID0gbmVlbmwoJ3doenludUZuZ2huYScgPT4gJHdoenludUZuZ2huYSk7DQoJCQkJCQkJCQkJCQkkZ3V2Zi0+cW8tPmp1cmVyKCdvcF9iaGdfcXJnbnZ5X3ZxJywgJG9wX2JoZ19xcmdudnlfdnEpOwkJDQoJCQkJCQkJCQkJCQkkZmdmID0gJGd1dmYtPnFvLT5oY3FuZ3IoJ2dveV9xbmduX29uZW5hdEduZXZzJywgJHFuZ25fdmEpOyANCgkJCQkJCQkJCQkJCXF2cigpOw0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCX0gcnlmciB2cygkcGJoYWdfY2cgPT0gMCl7DQoNCgkJCQkJCQkJCQkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gJzAwJywgJ2ZnbmdoZic9PiRlcmZjYmFfbmVlWydmZ25naGYnXSAsJ3pyZmZudHInID0+JGVyZmNiYV9uZWVbJ3pyZmZudHInXSkpOw0KCQkJCQkJCQkJCQkJJHFuZ25fdmEgPSBuZWVubCgnb3BfYmhnX3VybnFyZV92cScgPT4gJG9wX2JoZ191cm5xcmVfdnEsICdvcF9iaGdfcXJnbnZ5X3ZxJyA9PiAkb3BfYmhnX3FyZ252eV92cSwgJ3hicXJXcmF2ZkNoYXRoZ25hJyA9PiAkeGJxcldyYXZmQ2hhdGhnbmEsICdnbmV2cycgPT4gJGduZXZzLCAnZ3Zjcl9xYnhoenJhJyA9PiAkeGJxclFieGh6cmEsICdmcmV2T25lbmF0JyA9PiAkZnJldk9uZW5hdCwgJ3doenludUZuZ2huYScgPT4gJHdoenludUZuZ2huYSwgJ3hicXJGbmdobmFPbmVuYXQnID0+ICR4YnFyRm5naG5hT25lbmF0LCAneGJxcldyYXZmR25ldnMnID0+ICcxJyk7DQoJCQkJCQkJCQkJCQkkemZ0ID0gJGd1dmYtPnFvLT52YWZyZWcoJ2dveV9xbmduX29uZW5hdEduZXZzJywgJHFuZ25fdmEpOw0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCX0NCgkJCQkJCQkJDQoJCQkJCQkJCX0NCgkJCQkJCQkJDQoJCQkJCQkJCXZzICgkZXJmY2JhX25lZVsiY2JmR25ldnMiXVska11bInhicXJXcmF2ZkNoYXRoZ25hIl0gPT0gJ0NDQScpew0KCQkJCQkJCQkJDQoJCQkJCQkJCQkNCgkJCQkJCQkJCSR4YnFyV3JhdmZDaGF0aGduYSA9ICRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsieGJxcldyYXZmQ2hhdGhnbmEiXTsNCgkJCQkJCQkJCSRnbmV2cyA9ICRlcmZjYmFfbmVlWyJjYmZHbmV2cyJdWyRrXVsiZ25ldnMiXTsNCgkJCQkJCQkJCQ0KCQkJCQkJCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQkJCQkJCQkJZnJ5cnBnIHBiaGFnKCopIG5mIHBiaGFnX2NnIHNlYnogW2dveV9xbmduX29uZW5hdEduZXZzXSBqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJyRvcF9iaGdfdXJucXJlX3ZxJyBuYXEgb3BfYmhnX3FyZ252eV92cSA9ICckb3BfYmhnX3FyZ252eV92cScgbmFxIGd2Y3JfcWJ4aHpyYSA9ICckeGJxclFieGh6cmEnIG5hcSB4YnFyV3JhdmZDaGF0aGduYSA9ICdDQ0EnDQoJCQkJCQkJCQkJIik7DQoJCQkJCQkJCQkJJHBiaGFnX2NnID0gMDsNCgkJCQkJCQkJCQkJc2Jlcm5wdSgkZC0+ZXJmaHlnKCkgbmYgJGUpew0KCQkJCQkJCQkJCQkJJHBiaGFnX2NnID0gJGUtPnBiaGFnX2NnOw0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCXZzKCRwYmhhZ19jZyA+IDApew0KCQkJCQkJCQkJCQkJDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsJDQoJCQkJCQkJCQkJCQkkcW5nbl92YSA9IG5lZW5sKCd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEpOw0KCQkJCQkJCQkJCQkJJGd1dmYtPnFvLT5qdXJlcignb3BfYmhnX3FyZ252eV92cScsICRvcF9iaGdfcXJnbnZ5X3ZxKTsJCQ0KCQkJCQkJCQkJCQkJJGZnZiA9ICRndXZmLT5xby0+aGNxbmdyKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsgDQoJCQkJCQkJCQkJCQlxdnIoKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9IHJ5ZnIgdnMoJHBiaGFnX2NnID09IDApew0KDQoJCQkJCQkJCQkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsNCgkJCQkJCQkJCQkJCSRxbmduX3ZhID0gbmVlbmwoJ29wX2JoZ191cm5xcmVfdnEnID0+ICRvcF9iaGdfdXJucXJlX3ZxLCAnb3BfYmhnX3FyZ252eV92cScgPT4gJG9wX2JoZ19xcmdudnlfdnEsICd4YnFyV3JhdmZDaGF0aGduYScgPT4gJHhicXJXcmF2ZkNoYXRoZ25hLCAnZ25ldnMnID0+ICRnbmV2cywgJ2d2Y3JfcWJ4aHpyYScgPT4gJHhicXJRYnhoenJhLCAnZnJldk9uZW5hdCcgPT4gJGZyZXZPbmVuYXQsICd3aHp5bnVGbmdobmEnID0+ICR3aHp5bnVGbmdobmEsICd4YnFyRm5naG5hT25lbmF0JyA9PiAkeGJxckZuZ2huYU9uZW5hdCwgJ3hicXJXcmF2ZkduZXZzJyA9PiAnMScpOw0KCQkJCQkJCQkJCQkJJHpmdCA9ICRndXZmLT5xby0+dmFmcmVnKCdnb3lfcW5nbl9vbmVuYXRHbmV2cycsICRxbmduX3ZhKTsNCgkJCQkJCQkJCQkJCQ0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQ0KCQkJCQkJCQl9CQ0KCQkJCQkJCX0JCQ0KCQkJCQkJfSANCgkJCQkJCQ0KCQkJCQkJDQoJCQkJCX0gDQoJCQkJfQ0KCQkJfSAgcnlmciB7DQoJCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAnMDAnLCAnZmduZ2hmJz0+JzAyJyAsJ3pyZmZudHInID0+J1hiYXJ4ZnYgZ3JlY2hnaGYsIEZ2eW51eG5hIFlidHZhIFBSVkZOIHhyem9ueXYhJyApKTsJCQ0KCQkJCXF2cigpOw0KCQkJCQ0KCQkJfQ0KCQkJDQoJCQlxdnIoKTsNCgkJCQ0KCQkJdnMoJGVyZmNiYV9uZWVbJ2ZnbmdoZiddKXsNCgkJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICcwMCcsICdmZ25naGYnPT4kZXJmY2JhX25lZVsnZmduZ2hmJ10gLCd6cmZmbnRyJyA9PiRlcmZjYmFfbmVlWyd6cmZmbnRyJ10pKTsJCQkJCQ0KCQkJDQoJCQl9DQoJCQ0KCX0gDQoJDQoJDQoJc2hhcGd2YmEgcHJnbnhfZXJmY2JhX3BydmZuKCl7DQoJCSRndXZmLT55YnR2YV9wcnZmbl9hcmooKTsNCgkJJGdieHJhID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdmX2dieHJhJyk7DQoJCS8vJG9wX2JoZ191cm5xcmVfdnEgPSAodmZmcmcoJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pICYmICFyemNnbCgkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkpPyRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddOnF2cigneyJmZ2YiOiJSRUVCRSIsInFyZnAiOiIgQ25lbnogdXJucXJlX3ZxIEd2cW54IFF2Z3J6aHhuYSJ9Jyk7DQoJCS8vJHZxRXJmY2JhID0gKHZmZnJnKCRfQ0JGR1sndnFFcmZjYmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sndnFFcmZjYmEnXSkpPyRfQ0JGR1sndnFFcmZjYmEnXToiIjsNCgkJJGVyZmNiYSA9ICh2ZmZyZygkX0NCRkdbJ0NxcyddKSAmJiAhcnpjZ2woJF9DQkZHWydDcXMnXSkpPyRfQ0JGR1snQ3FzJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiBDbmVuenJncmUgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJG5lZSA9IG5lZW5sKCk7DQogICAgICAgICRndHkgPSBxbmdyKCdMLXotcSB1OnY6ZicpOw0KCQkNCgkJJGhleSA9ICJ1Z2djZjovL25jdmYtdGoub3JucGh4bnYudGIudnEvYmNyYW5jdi9xYmpheWJucS1lcmZjYmE/Y25ndT0kZXJmY2JhIjsNCg0KCQkkcGhleSA9IHBoZXlfdmF2ZygkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfSEVZLCAkaGV5KTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRVJHSEVBR0VOQUZTUkUsIGdlaHIpOw0KDQoJCSR1cm5xcmVmID0gbmVlbmwoDQoJCSAgICJOaGd1YmV2bW5ndmJhOiBPcm5lcmUgJGdieHJhIiwNCgkJICAgIlBiYWdyYWctR2xjcjogbmNjeXZwbmd2YmEvd2ZiYSINCgkJKTsNCgkJLy9ycHViICR2cUVyZmNiYTsNCgkJLy9xdnIoKTsNCgkJICAgDQoJCXBoZXlfZnJnYmNnKCRwaGV5LCBQSEVZQkNHX1VHR0NVUk5RUkUsICR1cm5xcmVmKTsNCgkJLy9zYmUgcXJvaHQgYmF5bCENCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTFVCRkcsIHNueWZyKTsNCgkJcGhleV9mcmdiY2coJHBoZXksIFBIRVlCQ0dfRkZZX0lSRVZTTENSUkUsIHNueWZyKTsNCg0KCQkkZXJmYyA9IHBoZXlfcmtycCgkcGhleSk7DQoJCXBoZXlfcHliZnIoJHBoZXkpOw0KCQkvL2luZV9xaHpjKCRlcmZjKTsNCgkJLy9xdnIoKTsNCgkNCg0KCX0gDQoJDQoJc2hhcGd2YmEgeWJucV9nbmV2c1VmKCl7DQoJCXJlZWJlX2VyY2JlZ3ZhdChSX05ZWSBeIChSX0FCR1ZQUiB8IFJfSk5FQVZBVCkpOw0KICAgICAgICAkaGZyZWFuenIgPSAkZ3V2Zi0+ZnJmZnZiYS0+aGZyZXFuZ24oJ1FLX2hmcmVhbnpyJyk7DQoJCSRlYnlyX3ZxID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19lYnlyX3ZxJyk7DQoJCSRvcF9iaGdfdXJucXJlX3ZxID0gKHZmZnJnKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSAmJiAhcnpjZ2woJF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ10pKT8kX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHZxIHVybnFyZSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkb3BfYmhnX3FyZ252eV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ19xcmdudnlfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3FyZ252eV92cSddKSk/JF9DQkZHWydvcF9iaGdfcXJnbnZ5X3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiB2cSBxcmdudnkgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGNiZkduZXZzID0gKHZmZnJnKCRfQ0JGR1snY2JmR25ldnMnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snY2JmR25ldnMnXSkpPyRfQ0JGR1snY2JmR25ldnMnXTpxdnIoJ3siZmdmIjoiUkVFQkUiLCJxcmZwIjoiIHZxIHVybnFyZSBHdnFueCBRdmdyemh4bmEifScpOw0KCQkkZmduZ2hmX3BydmZuID0gKHZmZnJnKCRfQ0JGR1snZmduZ2hmX3BydmZuJ10pICYmICFyemNnbCgkX0NCRkdbJ2ZnbmdoZl9wcnZmbiddKSk/JF9DQkZHWydmZ25naGZfcHJ2Zm4nXToiIjsNCgkJJGd0eSA9IHFuZ3IoJ0wtei1xIHU6djpmJyk7DQoJCQ0KCQkNCgkJdnMoJGZnbmdoZl9wcnZmbiA9PSAnTkNDRUJJUlFLJyl7DQoJCQkNCgkJCQ0KCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCSAgICBxcnB5bmVyIEB2cV91cm5xcmUgb3Z0dmFnIA0KCQkJCWZyZyBAdnFfdXJucXJlID0gKGZyeXJwZyBnYmMgMSAgc2VieiBnb3lfcW5nbl9vbmVuYXRHbmV2cyBqdXJlciBvcF9iaGdfcXJnbnZ5X3ZxID0gJG9wX2JoZ19xcmdudnlfdnEgbmFxIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSApDQoJCQkJDQoJCQkJDQoJCQkiKTsNCgkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDAiLCAncXJmcCcgPT4gIlBuYXByeSBGcmFxdmF0IFFieD8iKSk7CQ0KCQkJcXZyKCk7DQoJCX0gcnlmciB7DQoJCQkNCgkJCSRkID0gJGd1dmYtPnFvLT5kaHJlbCgiDQoJCQkJcXJ5cmdyIHNlYnogZ295X3FuZ25fb25lbmF0R25ldnMganVyZXIgb3BfYmhnX3FyZ252eV92cSA9ICRvcF9iaGdfcXJnbnZ5X3ZxIG5hcSBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQlWQUZSRUcgVkFHQiBnb3lfcW5nbl9vbmVuYXRHbmV2cyAoDQoJCQkJCW9wX2JoZ19xcmdudnlfdnEsDQoJCQkJCW9wX2JoZ191cm5xcmVfdnEsDQoJCQkJCWd2Y3JfcWJ4aHpyYSwNCgkJCQkJd2h6eW51Rm5naG5hLA0KCQkJCQl4YnFyRm5naG5hT25lbmF0LA0KCQkJCQl4YnFyU25mdnl2Z25mR25ldnMsDQoJCQkJCXhicXJXcmF2ZkNoYXRoZ25hLA0KCQkJCQl4YnFyV3JhdmZHbmV2cywNCgkJCQkJYXZ5bnZPbmxuZSwNCgkJCQkJYXZ5bnZTbmZ2eXZnbmYsDQoJCQkJCWF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJZnJldk9uZW5hdCwNCgkJCQkJZ25ldnMsDQoJCQkJCWduZXZzU25mdnl2Z25mLA0KCQkJCQlwZXJuZ3JfcW5nciANCgkJCQkJKSBGUllSUEcNCgkJCQkJb3BfYmhnX3FyZ252eV92cSwNCgkJCQkJb3BfYmhnX3VybnFyZV92cSwNCgkJCQkJeGJxclFieGh6cmEsDQoJCQkJCXdoenludUZuZ2huYSwNCgkJCQkJeGJxckZuZ2huYU9uZW5hdCwNCgkJCQkJeGJxclNuZnZ5dmduZkduZXZzLA0KCQkJCQl4YnFyV3JhdmZDaGF0aGduYSwNCgkJCQkJeGJxcldyYXZmR25ldnMsDQoJCQkJCWF2eW52T25sbmUsDQoJCQkJCWF2eW52U25mdnl2Z25mLA0KCQkJCQkwIE5GIGF2eW52RmhxbnVRdnloYW5mdiwNCgkJCQkJZnJldk9uZW5hdCwNCgkJCQkJZ25ldnMsDQoJCQkJCWduZXZzU25mdnl2Z25mLA0KCQkJCQlUUkdRTkdSKCkNCgkJCQlTRUJaIHFvYi5pdnJqX29uZW5hdEduZXZzX2JoZyANCgkJCQkJSlVSRVIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxIG5hcSBvcF9iaGdfcXJnbnZ5X3ZxID0gJG9wX2JoZ19xcmdudnlfdnENCgkJCQkNCg0KCQkJIik7DQoJCQkNCgkJCQ0KCQkJcnB1YiB3ZmJhX3JhcGJxcihuZWVubCgnZmdmJyA9PiAiMDAiLCAncXJmcCcgPT4gIiBGaHhmcmYuLkduZXZzIFlibnEiKSk7CQ0KCQkJcXZyKCk7DQoJCQkNCgkJfQ0KCQkNCgkJDQogICAgfQ0KCQ0KCXNoYXBndmJhIHBiY2xfcW5nbigpew0KCQlyZWViZV9lcmNiZWd2YXQoUl9OWVkgXiAoUl9BQkdWUFIgfCBSX0pORUFWQVQpKTsNCgkJJGhmcmVhbnpyID0gJGd1dmYtPmZyZmZ2YmEtPmhmcmVxbmduKCdRS19oZnJlYW56cicpOw0KCQkkZWJ5cl92cSA9ICRndXZmLT5mcmZmdmJhLT5oZnJlcW5nbignUUtfZWJ5cl92cScpOw0KCQkkb3BfYmhnX3VybnFyZV92cSA9ICh2ZmZyZygkX0NCRkdbJ29wX2JoZ191cm5xcmVfdnEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snb3BfYmhnX3VybnFyZV92cSddKSk/JF9DQkZHWydvcF9iaGdfdXJucXJlX3ZxJ106cXZyKCd7ImZnZiI6IlJFRUJFIiwicXJmcCI6IiB2cSB1cm5xcmUgR3ZxbnggUXZncnpoeG5hIn0nKTsNCgkJJGFiemJlTndoID0gKHZmZnJnKCRfQ0JGR1snYWJ6YmVOd2gnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1snYWJ6YmVOd2gnXSkpPyRfQ0JGR1snYWJ6YmVOd2gnXToiIjsNCgkJJHhicXJRYnhoenJhID0gKHZmZnJnKCRfQ0JGR1sneGJxclFieGh6cmEnXSkgJiYgIXJ6Y2dsKCRfQ0JGR1sneGJxclFieGh6cmEnXSkpPyRfQ0JGR1sneGJxclFieGh6cmEnXToiMTAiOw0KCQkkZ3R5ID0gcW5ncignTC16LXEgdTp2OmYnKTsNCgkJDQoJCSRhYnpiZU53aCA9ICRndXZmLT52YXBfYWJOd2hfZ2VrKCR4YnFyUWJ4aHpyYSk7DQoJCQ0KCQl2cyghdmZmcmcoJGFiemJlTndoKSl7DQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICIwMCIsICdxcmZwJyA9PiAiQWJ6YmUgTndoIHRudG55IGhhZ2h4IHF2IG9yYWdoeCBmcnV2YXR0biBndnFueCBucW4iKSk7CQ0KCQkJcXZyKCk7DQoJCX0NCgkJDQoJCXZzKCRmZ25naGYgPT0gJ05DQ0VCSVJRJyl7DQoJCQkNCgkJCQ0KCQkJJGQgPSAkZ3V2Zi0+cW8tPmRocmVsKCINCgkJCQlxcnB5bmVyIEB2cV91cm5xcmUgb3Z0dmFnIA0KCQkJCWZyZyBAdnFfdXJucXJlID0gKGZyeXJwZyBnYmMgMSB2cSBzZWJ6IGdveV9vcF9iaGdfdXJucXJlIGp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cSApDQoJCQkJDQoJCQkiKTsNCgkJCQ0KCQkJLy8kZ3V2Zi0+cW8tPmp1cmVyKCdmaG9wYmFfYmhnX3ZxJywgJGZob3BiYV9iaGdfdnEpOw0KCQkJLy8kemZ0PSRndXZmLT5xby0+aGNxbmdyKCdxZ19maG9wYmFfYmhnJywgbmVlbmwoJ2ZnbmdoZicgPT4gJ0NFQlBSRkZSUScsICdwZXJuZ3JvbCcgPT4gJGhmcmVhbnpyLCAncGVybmdycW5ncicgPT4gJGd0eSkpOw0KCQkJDQoJCQkNCgkJCXJwdWIgd2ZiYV9yYXBicXIobmVlbmwoJ2ZnZicgPT4gIjAwIiwgJ3FyZnAnID0+ICJQbmFwcnkgUGJjbCBRbmduPyIpKTsJDQoJCQlxdnIoKTsNCgkJfSByeWZyIHsNCgkJCQ0KCQkJDQoJCQkkZCA9ICRndXZmLT5xby0+ZGhyZWwoIg0KCQkJCXFycHluZXIgQHZxX3VybnFyZSBvdnR2YWcNCgkJCQl2YWZyZWcgdmFnYiBbcW9iXS5bZ295X29wX2JoZ191cm5xcmVdKCANCgkJCQkJbnluem5nDQoJCQkJCSxuZm55UW5nbg0KCQkJCQksbmZoZW5hZnYNCgkJCQkJLE5maGVuYWZ2X2d2Y3INCgkJCQkJLE9uYXgNCgkJCQkJLG92bmxuQ3JhdGhlbmF0DQoJCQkJCSxvdm5sbkduem9udW5hDQoJCQkJCSxvZWhnYg0KCQkJCQksUG5lbk5hdHhoZw0KCQkJCQksUG5lbk9ubG5lDQoJCQkJCSxQbmVuUW50bmF0DQoJCQkJCSxwdnMNCgkJCQkJLHB2c0VoY3ZudQ0KCQkJCQkscGVybmdyX29sDQoJCQkJCSxwZXJuZ3JfcW5ncg0KCQkJCQkscXZmcHludnpyZQ0KCQkJCQksUmFndmduZg0KCQkJCQksUmFndmduZjENCgkJCQkJLFJhZ3ZnbmYyDQoJCQkJCSxSYWd2Z25mMw0KCQkJCQksUmFndmduZjQNCgkJCQkJLHN5bnRQaGVudQ0KCQkJCQksc3ludFp2dG5mDQoJCQkJCSxzeW50SXENCgkJCQkJLHNibw0KCQkJCQksc2VydnR1Zw0KCQkJCQksdW5ldG5DcmFscmVudW5hDQoJCQkJCSx2cV9nY28NCgkJCQkJLHZxQ3JhdG5hdHhoZw0KCQkJCQksdnFDcmF0dGhhbg0KCQkJCQksdnFFcmZjYmENCgkJCQkJLHZxRXJmY2JhXzENCgkJCQkJLFZhcGJncmV6DQoJCQkJCSx3bm9uZ25hR2dxDQoJCQkJCSxXcmF2ZlJ4ZmNiZQ0KCQkJCQksV3JhdmZYcnpuZm5hDQoJCQkJCSxXcmF2ZkF2eW52DQoJCQkJCSxXcmF2ZkNlYmZycWhlDQoJCQkJCSxXcmF2Zkdjbw0KCQkJCQksd2h6eW51UGJhZ252YXJlDQoJCQkJCSx3aHp5bnVQYmFnbnZhcmUyMA0KCQkJCQksd2h6eW51UGJhZ252YXJlNDANCgkJCQkJLHdoenludVdyYXZmT25lbmF0DQoJCQkJCSx3aHp5bnVYcnpuZm5hDQoJCQkJCSx3aHp5bnVYYmFnbnZhcmUNCgkJCQkJLHdoenludUduYXFuQ3JhdG56bmENCgkJCQkJLFhuZ3J0YmV2UnhmY2JlDQoJCQkJCSxYcmFuQ253bngNCgkJCQkJLHhicXJOZmhlbmFmdg0KCQkJCQkseGJxck9uYXgNCgkJCQkJLHhicXJPcmFxcmVuDQoJCQkJCSx4YnFyUG5lbk5hdHhoZw0KCQkJCQkseGJxclBuZW5PbmxuZQ0KCQkJCQkseGJxclBuZW5RbnRuYXQNCgkJCQkJLHhicXJQbmVuRmdoc3N2YXQNCgkJCQkJLHhicXJRYnhoenJhDQoJCQkJCSx4YnFyVGhhbk9uZW5hdA0KCQkJCQkseGJxclZhcGJncmV6DQoJCQkJCSx4YnFyV3JhdmZPbmVuYXQNCgkJCQkJLHhicXJXcmF2ZlJ4ZmNiZQ0KCQkJCQkseGJxcldyYXZmVGhxbmF0DQoJCQkJCSx4YnFyV3JhdmZYcnpuZm5hDQoJCQkJCSx4YnFyV3JhdmZBdnludg0KCQkJCQkseGJxcldyYXZmQ25lZ0JzDQoJCQkJCSx4YnFyV3JhdmZDZWJmcnFoZQ0KCQkJCQkseGJxcldyYXZmR2NvDQoJCQkJCSx4YnFyWG5hZ2JlDQoJCQkJCSx4YnFyWG5hZ2JlT2JhdHhuZQ0KCQkJCQkseGJxclhuYWdiZVJ4ZmNiZQ0KCQkJCQkseGJxclhuYWdiZVpobmcNCgkJCQkJLHhicXJYbmFnYmVDcmV2eGZuDQoJCQkJCSx4YnFyWG5hZ2JlR2h3aG5hDQoJCQkJCSx4YnFyWG5ncnRiZXZSeGZjYmUNCgkJCQkJLHhicXJYcmFuQ253bngNCgkJCQkJLHhicXJZYnhuZnYNCgkJCQkJLHhicXJZYnhuZnZPbmxuZQ0KCQkJCQkseGJxckFydG5lbkdod2huYQ0KCQkJCQkseGJxckNyeU9iYXR4bmUNCgkJCQkJLHhicXJDcnlSeGZjYmUNCgkJCQkJLHhicXJDcnlaaG5nDQoJCQkJCSx4YnFyQ3J5R2VuYWZ2Zw0KCQkJCQkseGJxckNyeUdod2huYQ0KCQkJCQkseGJxckNyem9ubG5lDQoJCQkJCSx4YnFyR3ZjclVuZXRuDQoJCQkJCSx4YnFyR2NmDQoJCQkJCSx4YnFyR2h3aG5hQ3JhdHZldnpuYQ0KCQkJCQkseGJxckdod2huYUdjbw0KCQkJCQkseGJxcklueWhnbg0KCQkJCQkseGJnbkdncQ0KCQkJCQksWWJ4bmZ2DQoJCQkJCSxZYnhuZnZPbmxuZQ0KCQkJCQkseWJ4bmZ2RnZuY0NyZXZ4Zm4NCgkJCQkJLGFuem5DcmF0bmF0eGhnDQoJCQkJCSxhbnpuQ3ZwDQoJCQkJCSxhbnpuR2dxDQoJCQkJCSxhcWNveg0KCQkJCQksYXJnZ2INCgkJCQkJLGF2eA0KCQkJCQksYXZ5bnZPbmVuYXQNCgkJCQkJLGF2eW52VmFwYmdyZXoNCgkJCQkJLGF2eW52V25mbg0KCQkJCQksYXZ5bnZabnh5YmENCgkJCQkJLGFiUW5zZ25lDQoJCQkJCSxhYnpiZV9veQ0KCQkJCQksYWJ6YmVOd2gNCgkJCQkJLGFiemJlT3AxMQ0KCQkJCQksYWJ6YmVDcmF0bmF0eGhnDQoJCQkJCSxhYnpiZUdyeWNDdnANCgkJCQkJLGNyYXRuYXR4aGcNCgkJCQkJLGNiZk9wMTENCgkJCQkJLGZyZXYNCgkJCQkJLGZyZXZPbmF4DQoJCQkJCSxmcmV2UmFndmduZg0KCQkJCQksZnJldlJhZ3ZnbmYxDQoJCQkJCSxmcmV2UmFndmduZjINCgkJCQkJLGZyZXZSYWd2Z25mMw0KCQkJCQksZnJldlJhZ3ZnbmY0DQoJCQkJCSxmcmV2Q3JhdG5hdHhoZw0KCQkJCQksZmduZ2hmDQoJCQkJCSxmZ25naGZfb3ANCgkJCQkJLGZob2NiZk9wMTENCgkJCQkJLGduYXR0bnlfb3kNCgkJCQkJLGduYXR0bnlOd2gNCgkJCQkJLGduYXR0bnlPcDExDQoJCQkJCSxnbmF0dG55UW5zZ25lDQoJCQkJCSxnbmF0dG55UnhmY2JlDQoJCQkJCSxnbmF0dG55Q3Jldnhmbg0KCQkJCQksZ25hdHRueUN4bw0KCQkJCQksZ25hdHRueUdncQ0KCQkJCQksZ3J6Y25nRmdoc3N2YXQNCgkJCQkJLGd0eU54dXZlT3JleW54aA0KCQkJCQksZ3R5TmpueU9yZXlueGgNCgkJCQkJLGdiZ255UW5hbkZuanZnDQoJCQkJCSxHY2YNCgkJCQkJLEdod2huYUNyYXR2ZXZ6bmENCgkJCQkJLEdod2huYUdjbw0KCQkJCQksaG5hdFpoeG4NCgkJCQkJLGlxDQoJCQkJCSxpYnloenINCgkJCQkJLGpueGdoRnZuY0NyZXZ4Zm4NCgkJCQkpDQoJCQkJZnJ5cnBnIA0KCQkJCQlueW56bmcNCgkJCQkJLG5mbnlRbmduDQoJCQkJCSxuZmhlbmFmdg0KCQkJCQksTmZoZW5hZnZfZ3Zjcg0KCQkJCQksT25heA0KCQkJCQksb3ZubG5DcmF0aGVuYXQNCgkJCQkJLG92bmxuR256b251bmENCgkJCQkJLG9laGdiDQoJCQkJCSxQbmVuTmF0eGhnDQoJCQkJCSxQbmVuT25sbmUNCgkJCQkJLFBuZW5RbnRuYXQNCgkJCQkJLHB2cw0KCQkJCQkscHZzRWhjdm51DQoJCQkJCSwnJGhmcmVhbnpyJw0KCQkJCQksVFJHUU5HUigpDQoJCQkJCSxxdmZweW52enJlDQoJCQkJCSxyYWd2Z25mDQoJCQkJCSxyYWd2Z25mMQ0KCQkJCQkscmFndmduZjINCgkJCQkJLHJhZ3ZnbmYzDQoJCQkJCSxyYWd2Z25mNA0KCQkJCQksc3ludFBoZW51DQoJCQkJCSxzeW50WnZ0bmYNCgkJCQkJLHN5bnRJcQ0KCQkJCQksc2JvDQoJCQkJCSxzZXJ2dHVnDQoJCQkJCSx1bmV0bkNyYWxyZW51bmENCgkJCQkJLHZxX2djbw0KCQkJCQksdnFDcmF0bmF0eGhnDQoJCQkJCSx2cUNyYXR0aGFuDQoJCQkJCSwwDQoJCQkJCSwwDQoJCQkJCSxWYXBiZ3Jleg0KCQkJCQksd25vbmduYUdncQ0KCQkJCQksV3JhdmZSeGZjYmUNCgkJCQkJLFdyYXZmWHJ6bmZuYQ0KCQkJCQksV3JhdmZBdnludg0KCQkJCQksV3JhdmZDZWJmcnFoZQ0KCQkJCQksV3JhdmZHY28NCgkJCQkJLHdoenludVBiYWdudmFyZQ0KCQkJCQksd2h6eW51UGJhZ252YXJlMjANCgkJCQkJLHdoenludVBiYWdudmFyZTQwDQoJCQkJCSx3aHp5bnVXcmF2Zk9uZW5hdA0KCQkJCQksd2h6eW51WHJ6bmZuYQ0KCQkJCQksd2h6eW51WGJhZ252YXJlDQoJCQkJCSx3aHp5bnVHbmFxbkNyYXRuem5hDQoJCQkJCSxYbmdydGJldlJ4ZmNiZQ0KCQkJCQksWHJhbkNud254DQoJCQkJCSx4YnFyTmZoZW5hZnYNCgkJCQkJLHhicXJPbmF4DQoJCQkJCSx4YnFyT3JhcXJlbg0KCQkJCQkseGJxclBuZW5OYXR4aGcNCgkJCQkJLHhicXJQbmVuT25sbmUNCgkJCQkJLHhicXJQbmVuUW50bmF0DQoJCQkJCSx4YnFyUG5lbkZnaHNzdmF0DQoJCQkJCSx4YnFyUWJ4aHpyYQ0KCQkJCQkseGJxclRoYW5PbmVuYXQNCgkJCQkJLHhicXJWYXBiZ3Jleg0KCQkJCQkseGJxcldyYXZmT25lbmF0DQoJCQkJCSx4YnFyV3JhdmZSeGZjYmUNCgkJCQkJLHhicXJXcmF2ZlRocW5hdA0KCQkJCQkseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCQkseGJxcldyYXZmQXZ5bnYNCgkJCQkJLHhicXJXcmF2ZkNuZWdCcw0KCQkJCQkseGJxcldyYXZmQ2ViZnJxaGUNCgkJCQkJLHhicXJXcmF2Zkdjbw0KCQkJCQkseGJxclhuYWdiZQ0KCQkJCQkseGJxclhuYWdiZU9iYXR4bmUNCgkJCQkJLHhicXJYbmFnYmVSeGZjYmUNCgkJCQkJLHhicXJYbmFnYmVaaG5nDQoJCQkJCSx4YnFyWG5hZ2JlQ3Jldnhmbg0KCQkJCQkseGJxclhuYWdiZUdod2huYQ0KCQkJCQkseGJxclhuZ3J0YmV2UnhmY2JlDQoJCQkJCSx4YnFyWHJhbkNud254DQoJCQkJCSx4YnFyWWJ4bmZ2DQoJCQkJCSx4YnFyWWJ4bmZ2T25sbmUNCgkJCQkJLHhicXJBcnRuZW5HaHdobmENCgkJCQkJLHhicXJDcnlPYmF0eG5lDQoJCQkJCSx4YnFyQ3J5UnhmY2JlDQoJCQkJCSx4YnFyQ3J5WmhuZw0KCQkJCQkseGJxckNyeUdlbmFmdmcNCgkJCQkJLHhicXJDcnlHaHdobmENCgkJCQkJLHhicXJDcnpvbmxuZQ0KCQkJCQkseGJxckd2Y3JVbmV0bg0KCQkJCQkseGJxckdjZg0KCQkJCQkseGJxckdod2huYUNyYXR2ZXZ6bmENCgkJCQkJLHhicXJHaHdobmFHY28NCgkJCQkJLHhicXJJbnloZ24NCgkJCQkJLHhiZ25HZ3ENCgkJCQkJLFlieG5mdg0KCQkJCQksWWJ4bmZ2T25sbmUNCgkJCQkJLHlieG5mdkZ2bmNDcmV2eGZuDQoJCQkJCSxhbnpuQ3JhdG5hdHhoZw0KCQkJCQksYW56bkN2cA0KCQkJCQksYW56bkdncQ0KCQkJCQksYXFjb3oNCgkJCQkJLGFyZ2diDQoJCQkJCSxhdngNCgkJCQkJLGF2eW52T25lbmF0DQoJCQkJCSxhdnludlZhcGJncmV6DQoJCQkJCSxhdnludlduZm4NCgkJCQkJLGF2eW52Wm54eWJhDQoJCQkJCSwnJw0KCQkJCQksYWJ6YmVfb3kNCgkJCQkJLCckYWJ6YmVOd2gnDQoJCQkJCSxhYnpiZU9wMTENCgkJCQkJLGFiemJlQ3JhdG5hdHhoZw0KCQkJCQksYWJ6YmVHcnljQ3ZwDQoJCQkJCSxjcmF0bmF0eGhnDQoJCQkJCSxjYmZPcDExDQoJCQkJCSxmcmV2DQoJCQkJCSxmcmV2T25heA0KCQkJCQksZnJldlJhZ3ZnbmYNCgkJCQkJLGZyZXZSYWd2Z25mMQ0KCQkJCQksZnJldlJhZ3ZnbmYyDQoJCQkJCSxmcmV2UmFndmduZjMNCgkJCQkJLGZyZXZSYWd2Z25mNA0KCQkJCQksZnJldkNyYXRuYXR4aGcNCgkJCQkJLGZnbmdoZg0KCQkJCQksZmduZ2hmX29wDQoJCQkJCSxmaG9jYmZPcDExDQoJCQkJCSxwYm55cmZwcihnbmF0dG55X295LCBBSFlZKSBuZiBnbmF0dG55X295DQoJCQkJCSxnbmF0dG55TndoDQoJCQkJCSxnbmF0dG55T3AxMQ0KCQkJCQksQUhZWQ0KCQkJCQksZ25hdHRueVJ4ZmNiZQ0KCQkJCQksZ25hdHRueUNyZXZ4Zm4NCgkJCQkJLGduYXR0bnlDeG8NCgkJCQkJLGduYXR0bnlHZ3ENCgkJCQkJLGdyemNuZ0ZnaHNzdmF0DQoJCQkJCSxndHlOeHV2ZU9yZXlueGgNCgkJCQkJLGd0eU5qbnlPcmV5bnhoDQoJCQkJCSxnYmdueVFuYW5Gbmp2Zw0KCQkJCQksR2NmDQoJCQkJCSxHaHdobmFDcmF0dmV2em5hDQoJCQkJCSxHaHdobmFHY28NCgkJCQkJLGhuYXRaaHhuDQoJCQkJCSxpcQ0KCQkJCQksaWJ5aHpyDQoJCQkJCSxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJc2VieiBbcW9iXS5baXZyal9vcF9iaGdfdXJucXJlXQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQkNCgkJCQlmcmcgQHZxX3VybnFyZSA9IGZwYmNyX3ZxcmFndmdsKCkNCgkJCQkNCgkJCQl2YWZyZWcgdmFnYiBnb3lfb3BfYmhnX3FyZ252eSAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLE5mbnlPbnVuYU9ueGgNCgkJCQkJLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkJCSxOZm55T25lbmF0DQoJCQkJCSxuZmhlbmFmdg0KCQkJCQkscG5nbmduYQ0KCQkJCQkscHZzDQoJCQkJCSxwdnNFaGN2bnUNCgkJCQkJLHF2ZnhiYQ0KCQkJCQksc2JvDQoJCQkJCSxzZXJ2dHVnDQoJCQkJCSx1bmV0blJ4ZmNiZQ0KCQkJCQksdW5ldG5DbmdieG5hDQoJCQkJCSx1bmV0bkNyYWxyZW51bmENCgkJCQkJLHVuZXRuQ3JlYnlydW5hDQoJCQkJCSx1bmV0bkZuZ2huYQ0KCQkJCQksdmZ2Q3JlWHJ6bmZuYQ0KCQkJCQksd2h6eW51TmZueU9udW5hT254aA0KCQkJCQksd2h6eW51WHJ6bmZuYQ0KCQkJCQksd2h6eW51Rm5naG5hDQoJCQkJCSxYbmdydGJldk9uZW5hdA0KCQkJCQkseGJxck5mbnlPbnVuYU9ueGgNCgkJCQkJLHhicXJOZm55T25lbmF0DQoJCQkJCSx4YnFyT25lbmF0DQoJCQkJCSx4YnFyUW5yZW51TmZueQ0KCQkJCQkseGJxclFieE5mbnkNCgkJCQkJLHhicXJRYnhoenJhDQoJCQkJCSx4YnFyVGhhbk9uZW5hdA0KCQkJCQkseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCQkseGJxclhuZ3J0YmV2T25lbmF0DQoJCQkJCSx4YnFyWGJhcXZmdk9uZW5hdA0KCQkJCQkseGJxckFydG5lbk5mbnkNCgkJCQkJLHhicXJDcmV1dmdoYXRuYQ0KCQkJCQkseGJxckZuZ2huYU9uZW5hdA0KCQkJCQksenJleA0KCQkJCQksYXFjb3oNCgkJCQkJLEFydG5lbk5mbnlfcWd5DQoJCQkJCSxhcmdnYg0KCQkJCQksYXZ5bnZPbmVuYXQNCgkJCQkJLGF2eW52UW5hbkZuanZnDQoJCQkJCSxhdnludlduZm4NCgkJCQkJLGF2eW52R256b251DQoJCQkJCSxDcmV1dmdoYXRuYV9xZ3kNCgkJCQkJLGNiZkduZXZzDQoJCQkJCSxmcmV2T25lbmF0DQoJCQkJCSxmcmV2UWJ4aHpyYQ0KCQkJCQksZnJldlJhZ3ZnbmYNCgkJCQkJLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJCQksZ3Zjcg0KCQkJCQksaG5hdFpoeG4NCgkJCQkJLGh4aGVuYQ0KCQkJCQksaGVudm5hDQoJCQkJCSxpYnloenINCgkJCQkJLHBlcm5ncl9vbA0KCQkJCQkscGVybmdyX3FuZ3INCgkJCQkpDQoJCQkJZnJ5cnBnDQoJCQkJCUB2cV91cm5xcmUNCgkJCQkJLE5mbnlPbnVuYU9ueGgNCgkJCQkJLE5mbnlPbnVuYU9ueGhfcWd5DQoJCQkJCSxOZm55T25lbmF0DQoJCQkJCSxuZmhlbmFmdg0KCQkJCQkscG5nbmduYQ0KCQkJCQkscHZzDQoJCQkJCSxwdnNFaGN2bnUNCgkJCQkJLHF2ZnhiYQ0KCQkJCQksc2JvDQoJCQkJCSxzZXJ2dHVnDQoJCQkJCSx1bmV0blJ4ZmNiZQ0KCQkJCQksdW5ldG5DbmdieG5hDQoJCQkJCSx1bmV0bkNyYWxyZW51bmENCgkJCQkJLHVuZXRuQ3JlYnlydW5hDQoJCQkJCSx1bmV0bkZuZ2huYQ0KCQkJCQksdmZ2Q3JlWHJ6bmZuYQ0KCQkJCQksd2h6eW51TmZueU9udW5hT254aA0KCQkJCQksd2h6eW51WHJ6bmZuYQ0KCQkJCQksd2h6eW51Rm5naG5hDQoJCQkJCSxYbmdydGJldk9uZW5hdA0KCQkJCQkseGJxck5mbnlPbnVuYU9ueGgNCgkJCQkJLHhicXJOZm55T25lbmF0DQoJCQkJCSx4YnFyT25lbmF0DQoJCQkJCSx4YnFyUW5yZW51TmZueQ0KCQkJCQkseGJxclFieE5mbnkNCgkJCQkJLHhicXJRYnhoenJhDQoJCQkJCSx4YnFyVGhhbk9uZW5hdA0KCQkJCQkseGJxcldyYXZmWHJ6bmZuYQ0KCQkJCQkseGJxclhuZ3J0YmV2T25lbmF0DQoJCQkJCSx4YnFyWGJhcXZmdk9uZW5hdA0KCQkJCQkseGJxckFydG5lbk5mbnkNCgkJCQkJLHhicXJDcmV1dmdoYXRuYQ0KCQkJCQkseGJxckZuZ2huYU9uZW5hdA0KCQkJCQksenJleA0KCQkJCQksYXFjb3oNCgkJCQkJLEFydG5lbk5mbnlfcWd5DQoJCQkJCSxhcmdnYg0KCQkJCQksYXZ5bnZPbmVuYXQNCgkJCQkJLGF2eW52UW5hbkZuanZnDQoJCQkJCSxhdnludlduZm4NCgkJCQkJLGF2eW52R256b251DQoJCQkJCSxDcmV1dmdoYXRuYV9xZ3kNCgkJCQkJLGNiZkduZXZzDQoJCQkJCSxmcmV2T25lbmF0DQoJCQkJCSxmcmV2UWJ4aHpyYQ0KCQkJCQksZnJldlJhZ3ZnbmYNCgkJCQkJLGZjcmZ2c3Z4bmZ2WW52YQ0KCQkJCQksZ3Zjcg0KCQkJCQksaG5hdFpoeG4NCgkJCQkJLGh4aGVuYQ0KCQkJCQksaGVudm5hDQoJCQkJCSxpYnloenINCgkJCQkJLCckaGZyZWFuenInDQoJCQkJCSxUUkdRTkdSKCkNCgkJCQlzZWJ6IGl2cmpfb3BfYmhnX29uZW5hdA0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQkJCQ0KCQkJCXZhZnJlZyB2YWdiIGdveV9vcF9iaGdfcWJ4aHpyYSAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLHdyYXZmUWJ4aHpyYQ0KCQkJCQkseHJncmVuYXRuYQ0KCQkJCQkseGJxclFieGh6cmENCgkJCQkJLHhicXJTbmZ2eXZnbmYNCgkJCQkJLHhicXJWd3ZhDQoJCQkJCSxhbnpuU25mdnl2Z25mDQoJCQkJCSxhYnpiZVFieGh6cmENCgkJCQkJLGZyZXZRYnhoenJhDQoJCQkJCSxnbmF0dG55UWJ4aHpyYQ0KCQkJCQksaGV5UWJ4aHpyYQ0KCQkJCSAgICAscGVybmdyX29sDQoJCQkJICAgICxwZXJuZ3JfcW5ncg0KCQkJCSkNCgkJCQlmcnlycGcNCgkJCQkJQHZxX3VybnFyZQ0KCQkJCQksd3JhdmZRYnhoenJhDQoJCQkJCSx4cmdyZW5hdG5hDQoJCQkJCSx4YnFyUWJ4aHpyYQ0KCQkJCQkseGJxclNuZnZ5dmduZg0KCQkJCQkseGJxclZ3dmENCgkJCQkJLGFuem5TbmZ2eXZnbmYNCgkJCQkJLGFiemJlUWJ4aHpyYQ0KCQkJCQksZnJldlFieGh6cmENCgkJCQkJLGduYXR0bnlRYnhoenJhDQoJCQkJCSxoZXlRYnhoenJhDQoJCQkJICAgICwnJGhmcmVhbnpyJw0KCQkJCSAgICAsVFJHUU5HUigpDQoJCQkJc2VieiBnb3lfb3BfYmhnX3FieGh6cmENCgkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkNCgkJCQl2YWZyZWcgdmFnYiBnb3lfb3BfYmhnX3hiYWdudmFyZSAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLHhicXJXcmF2ZlhiYWdudmFyZQ0KCQkJCQkseGJxckd2Y3JYYmFnbnZhcmUNCgkJCQkJLHhicXJIeGhlbmFYYmFnbnZhcmUNCgkJCQkJLGFiemJlWGJhZ252YXJlDQoJCQkJCSxmcmV2WGJhZ252YXJlDQoJCQkJCSxwZXJuZ3JfcW5ncg0KCQkJCQkscGVybmdyX29sDQoJCQkJKQ0KCQkJCWZyeXJwZw0KCQkJCQlAdnFfdXJucXJlDQoJCQkJCSx4YnFyV3JhdmZYYmFnbnZhcmUNCgkJCQkJLHhicXJHdmNyWGJhZ252YXJlDQoJCQkJCSx4YnFySHhoZW5hWGJhZ252YXJlDQoJCQkJCSxhYnpiZVhiYWdudmFyZQ0KCQkJCQksZnJldlhiYWdudmFyZSANCgkJCQkgICAgLFRSR1FOR1IoKQ0KCQkJCQksJyRoZnJlYW56cicNCgkJCQlzZWJ6IGdveV9vcF9iaGdfeGJhZ252YXJlDQoJCQkJanVyZXIgb3BfYmhnX3VybnFyZV92cSA9ICRvcF9iaGdfdXJucXJlX3ZxDQoJCQkJDQoJCQkJdmFmcmVnIHZhZ2IgZ295X29wX2JoZ194cmZ2bmNuYU9uZW5hdCAoDQoJCQkJCW9wX2JoZ191cm5xcmVfdnENCgkJCQkJLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkseGJxcldyYXZmVGhxbmF0DQoJCQkJCSxhbnpuQ3ZwDQoJCQkJCSxueW56bmcNCgkJCQkJLGFiemJlR3J5Y0N2cA0KCQkJCQksd2h6eW51UGJhZ252YXJlMjANCgkJCQkJLHdoenludVBiYWdudmFyZTQwDQoJCQkJCSx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJCQkseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkseGJxcldyYXZmQ25lZ0JzDQoJCQkJCSxnbmF0dG55Q3hvDQoJCQkJCSxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSxXcmF2Zk9uZW5hdA0KCQkJCQksV3JhdmZUaHFuYXQNCgkJCQkJLFdyYXZmQ25lZ0JzDQoJCQkJCSxQbmVuRmdoc3N2YXQNCgkJCQkJLHhyZ3JlbmF0bmENCgkJCQkJLHBlcm5ncl9xbmdyDQoJCQkJCSxwZXJuZ3Jfb2wNCgkJCQkpDQoJCQkJZnJ5cnBnDQoJCQkJCUB2cV91cm5xcmUNCgkJCQkJLHhicXJXcmF2Zk9uZW5hdA0KCQkJCQkseGJxcldyYXZmVGhxbmF0DQoJCQkJCSxhbnpuQ3ZwDQoJCQkJCSxueW56bmcNCgkJCQkJLGFiemJlR3J5Y0N2cA0KCQkJCQksd2h6eW51UGJhZ252YXJlMjANCgkJCQkJLHdoenludVBiYWdudmFyZTQwDQoJCQkJCSx5YnhuZnZGdm5jQ3Jldnhmbg0KCQkJCQkseGJxclBuZW5GZ2hzc3ZhdA0KCQkJCQkseGJxcldyYXZmQ25lZ0JzDQoJCQkJCSxnbmF0dG55Q3hvDQoJCQkJCSxqbnhnaEZ2bmNDcmV2eGZuDQoJCQkJCSxXcmF2Zk9uZW5hdA0KCQkJCQksV3JhdmZUaHFuYXQNCgkJCQkJLFdyYXZmQ25lZ0JzDQoJCQkJCSxQbmVuRmdoc3N2YXQNCgkJCQkJLHhyZ3JlbmF0bmENCgkJCQkgICAgLFRSR1FOR1IoKQ0KCQkJCQksJyRoZnJlYW56cicNCgkJCQlzZWJ6IGdveV9vcF9iaGdfeHJmdm5jbmFPbmVuYXQNCgkJCQlqdXJlciBvcF9iaGdfdXJucXJlX3ZxID0gJG9wX2JoZ191cm5xcmVfdnENCgkJCQkNCgkJCQl2YWZyZWcgdmFnYiBnb3lfcW5nbl93bnp2YW5hICgNCgkJCQkJb3BfYmhnX3VybnFyZV92cQ0KCQkJCQksZ3Zjcl9xYnhoenJhDQoJCQkJCSxmcmV2UWJ4aHpyYV93bnp2YW5hDQoJCQkJCSxhYnpiZU9jdw0KCQkJCQksZ25hdHRueU9jdw0KCQkJCQkseGJxcldyYXZmV256dmFuYQ0KCQkJCQksV3JhdmZXbnp2YW5hDQoJCQkJCSxhYnpiZVduenZhbmENCgkJCQkJLGduYXR0bnlXbnp2YW5hDQoJCQkJCSxnbmF0dG55V25naHVHcnpjYg0KCQkJCQksY3Jhd256dmENCgkJCQkJLGF2eW52V256dmFuYQ0KCQkJCQkseHJncmVuYXRuYQ0KCQkJCQkscGVybmdyX3FuZ3INCgkJCQkJLHBlcm5ncl9vbA0KCQkJCSkNCgkJCQlmcnlycGcNCgkJCQkJQHZxX3VybnFyZQ0KCQkJCQksZ3Zjcl9xYnhoenJhDQoJCQkJCSxmcmV2UWJ4aHpyYV93bnp2YW5hDQoJCQkJCSxhYnpiZU9jdw0KCQkJCQksZ25hdHRueU9jdw0KCQkJCQkseGJxcldyYXZmV256dmFuYQ0KCQkJCQksV3JhdmZXbnp2YW5hDQoJCQkJCSxhYnpiZVduenZhbmENCgkJCQkJLGduYXR0bnlXbnp2YW5hDQoJCQkJCSxnbmF0dG55V25naHVHcnpjYg0KCQkJCQksY3Jhd256dmENCgkJCQkJLGF2eW52V256dmFuYQ0KCQkJCQkseHJncmVuYXRuYQ0KCQkJCSAgICAsVFJHUU5HUigpDQoJCQkJCSwnJGhmcmVhbnpyJw0KCQkJCXNlYnogZ295X3FuZ25fd256dmFuYQ0KCQkJCWp1cmVyIG9wX2JoZ191cm5xcmVfdnEgPSAkb3BfYmhnX3VybnFyZV92cQ0KCQ0KDQoJCQkiKTsNCgkJCQ0KCQkJDQoJCQlycHViIHdmYmFfcmFwYnFyKG5lZW5sKCdmZ2YnID0+ICIwMCIsICdxcmZwJyA9PiAiIFBiY2wgUW5nbiBGaHhmcmYgbG4hIikpOwkNCgkJCXF2cigpOw0KCQkJDQoJCX0NCgkJCQ0KCQkJDQoJfQ0KCQ0KCQ0KfQ0KCQ0KCQ==
Function Calls
None |
Stats
MD5 | 9dff09c53c52746cf9317da65b1dc513 |
Eval Count | 0 |
Decode Time | 16122 ms |