7c4b0eb21d64583acb09cb9a9bc22f8ePCEtLWM0ZjNLWDhVZ1k3Qll5bVpsOGVaVkdRSGFYeVdKQ2JwNFZ0ZVR0Qk1KUE9QRUhiSFB4bWdMVTNpaDh3K3N6YmVDSFZaVkoxb1hqTkY5YUppL2tkMXppUEttZ1ZqQ2tCaklkYmRlalh4cE40TmxpTTd3Z284eGFqNGgxTnpmQklTdlVUWXlHY09iYUFNeTNNRDZuYXh3czRNZXEvTFhzMHQ3bDgtLT48ZmgtZnVuY3Rpb24+DQokY29uZmlnPWpzb25fZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCJjb25uL2NvbmZpZy5qc29uIikpOw0KPC9maC1mdW5jdGlvbj4NCjwhRE9DVFlQRSBodG1sPg0KPGh0bWw+DQo8aGVhZD4NCg0KCTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCgk8dGl0bGU+5oKo55qE572R56uZ5ZCN56ewIC0gUG93ZXJlZCBieSDlj5HotKcxMDA8L3RpdGxlPg0KCTxsaW5rIGhyZWY9Im1lZGlhLzIwMTkxMjA4MTEzMDM1ZU0uaWNvIiByZWw9InNob3J0Y3V0IGljb24iIC8+DQo8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0i5Y+R6LSnMTAwLeiZmuaLn+WVhuWTgeiHquWKqOWPkei0p+ezu+e7nyIgLz4NCjxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSLomZrmi5/llYblk4Es6Ieq5Yqo5Y+R6LSnLOWcqOe6v+aUr+S7mCzku5jotLnpmIXor7siIC8+DQoNCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+DQoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ0ZW1wbGF0ZS90MTIvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIj4NCgk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiPg0KCTxzY3JpcHQgc3JjPSJ0ZW1wbGF0ZS90MTIvanMvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+DQoJPHNjcmlwdCBzcmM9InRlbXBsYXRlL3QxMi9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4NCgk8c2NyaXB0IHNyYz0ianMvcXJjb2RlLm1pbi5qcyI+PC9zY3JpcHQ+DQoJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgl0ZCx0aHtmb250LXNpemU6IDEzcHggIWltcG9ydGFudDt9DQo8L3N0eWxlPg0KPHNjcmlwdCBjaGFyc2V0PSJVVEYtOCIgaWQ9IkxBX0NPTExFQ1QiIHNyYz0iLy9zZGsuNTEubGEvanMtc2RrLXByby5taW4uanMiPjwvc2NyaXB0PjxzY3JpcHQ+TEEuaW5pdCh7aWQ6ICJKVTUxUmN6SDAxZWRhZ29nIixjazogIkpVNTFSY3pIMDFlZGFnb2cifSk8L3NjcmlwdD48L2hlYWQ+DQo8Ym9keT4NCg0KDQo8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQgbmF2YmFyLWZpeGVkLXRvcCIgcm9sZT0ibmF2aWdhdGlvbiI+DQoJPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIj4NCgk8ZGl2IGNsYXNzPSJuYXZiYXItaGVhZGVyIj4NCgkJPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJuYXZiYXItdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiDQoJCQkJZGF0YS10YXJnZXQ9IiNleGFtcGxlLW5hdmJhci1jb2xsYXBzZSI+DQoJCQk8c3BhbiBjbGFzcz0ic3Itb25seSI+5YiH5o2i5a+86IiqPC9zcGFuPg0KCQkJPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+DQoJCQk8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4NCgkJCTxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPg0KCQk8L2J1dHRvbj4NCgkJPGEgaHJlZj0iLi8iPjxpbWcgc3JjPSJtZWRpYS8yMDE5MTIwMjIxNDQwOXpYLnBuZyIgc3R5bGU9ImhlaWdodDogNTBweCI+PC9hPg0KCTwvZGl2Pg0KCTxkaXY+DQoJPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIiBpZD0iZXhhbXBsZS1uYXZiYXItY29sbGFwc2UiPg0KCTx1bCBjbGFzcz0ibmF2IG5hdmJhci1uYXYgbmF2YmFyLXJpZ2h0Ij4NCjxmaC1mdW5jdGlvbj4NCgkJCWlmKCRfU0VTU0lPTlsiTV9sb2dpbiJdPT0iIil7DQoJCQkJJGFwaT0iPGxpPjxhIGhyZWY9XCJtZW1iZXIvcmVnLnBocFwiPjxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi11c2VyXCI+PC9zcGFuPiDms6jlhow8L2E+PC9saT48bGk+PGEgaHJlZj1cIm1lbWJlci9sb2dpbi5waHBcIj48c3BhbiBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tbG9nLWluXCI+PC9zcGFuPiDnmbvlvZU8L2E+PC9saT4iOw0KCQkJfWVsc2V7DQoJCQkJJGFwaT0iDQoJCQkJPGxpPjxhIGhyZWY9XCJtZW1iZXJcIj48c3BhbiBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tdXNlclwiPjwvc3Bhbj4gIi4kX1NFU1NJT05bIk1fbG9naW4iXS4iPC9hPjwvbGk+DQoJCQkJPGxpPjxhIGhyZWY9XCJtZW1iZXIvY2FydC5waHBcIj48c3BhbiBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tc2hvcHBpbmctY2FydFwiPjwvc3Bhbj4g6LSt54mp6L2mPC9hPjwvbGk+DQoJCQkJPGxpPjxhIGhyZWY9XCJtZW1iZXIvbG9naW4ucGhwP2FjdGlvbj11bmxvZ2luXCI+PHNwYW4gY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLWxvZy1vdXRcIj48L3NwYW4+IOmAgOWHujwvYT48L2xpPiI7DQogICAgICB9DQo8L2ZoLWZ1bmN0aW9uPg0KDQoNCiAgICA8L3VsPg0KCQk8dWwgY2xhc3M9Im5hdiBuYXZiYXItbmF2Ij4NCg0KPGZoLWZ1bmN0aW9uPg0KaWYoaXNtb2JpbGUoKSl7DQoJJHNxbD0ic2VsZWN0ICogZnJvbSBzbF9tZW51IHdoZXJlIFVfaGlkZT0wIGFuZCBVX2RlbD0wIGFuZCBVX3N1Yj0wICBvcmRlciBieSBVX29yZGVyLFVfaWQgZGVzYyI7DQokcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCAgJHNxbCk7DQppZiAobXlzcWxpX251bV9yb3dzKCRyZXN1bHQpID4gMCkgew0Kd2hpbGUoJHJvdyA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgew0KDQogIGlmKCRyb3dbIlVfdHlwZSJdPT0ibGluayIpew0KICAgICRsaW5rPSRyb3dbIlVfbGluayJdOw0KICAgICR0YXJnZXQ9Il9ibGFuayI7DQogIH1lbHNlew0KICAgICRsaW5rPSI/dHlwZT0iLiRyb3dbIlVfdHlwZSJdLiImaWQ9Ii4kcm93WyJVX3R5cGVpZCJdOw0KICAgICR0YXJnZXQ9Il9zZWxmIjsNCiAgfQ0KDQppZihnZXRycygic2VsZWN0IGNvdW50KCopIGFzIFVfY291bnQgZnJvbSBzbF9tZW51IHdoZXJlIFVfc3ViPSIuJHJvd1siVV9pZCJdLCJVX2NvdW50Iik+MCl7DQoJJGFwaT0kYXBpLiI8bGkgY2xhc3M9XCJkcm9wZG93blwiPjxhIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGhyZWY9XCIiLiRsaW5rLiJcIiB0YXJnZXQ9XCIiLiR0YXJnZXQuIlwiID4iLiRyb3dbIlVfdGl0bGUiXS4iIDxiIGNsYXNzPVwiY2FyZXRcIj48L2I+PC9hPiI7DQp9ZWxzZXsNCgkkYXBpPSRhcGkuIjxsaSBjbGFzcz1cImRyb3Bkb3duXCI+PGEgIGhyZWY9XCIiLiRsaW5rLiJcIiB0YXJnZXQ9XCIiLiR0YXJnZXQuIlwiID4iLiRyb3dbIlVfdGl0bGUiXS4iPC9hPiI7DQp9DQogIA0KDQokc3FsMj0ic2VsZWN0ICogZnJvbSBzbF9tZW51IHdoZXJlIFVfaGlkZT0wIGFuZCBVX2RlbD0wIGFuZCBVX3N1Yj0iLiRyb3dbIlVfaWQiXS4iIG9yZGVyIGJ5IFVfb3JkZXIsVV9pZCBkZXNjIjsNCiRyZXN1bHQyID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCAgJHNxbDIpOw0KaWYgKG15c3FsaV9udW1fcm93cygkcmVzdWx0MikgPiAwKSB7DQokYXBpPSRhcGkuIjx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIj4iOw0KDQp3aGlsZSgkcm93MiA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0MikpIHsNCiAgaWYoJHJvdzJbIlVfdHlwZSJdPT0ibGluayIpew0KICAgICRsaW5rMj0kcm93MlsiVV9saW5rIl07DQogICAgJHRhcmdldDI9Il9ibGFuayI7DQogIH1lbHNlew0KICAgICRsaW5rMj0iP3R5cGU9Ii4kcm93MlsiVV90eXBlIl0uIiZpZD0iLiRyb3cyWyJVX3R5cGVpZCJdOw0KICAgICR0YXJnZXQyPSJfc2VsZiI7DQogIH0NCg0KICAgICRhcGk9JGFwaS4iPGxpPjxhIGhyZWY9XCIiLiRsaW5rMi4iXCIgdGFyZ2V0PVwiIi4kdGFyZ2V0Mi4iXCI+Ii4kcm93MlsiVV90aXRsZSJdLiI8L2E+PC9saT4iOw0KICB9DQogICRhcGk9JGFwaS4iPC91bD4iOw0KfQ0KICAgICAgJGFwaT0kYXBpLiI8L2xpPiI7DQogICAgfQ0KfQ0KfWVsc2V7DQoJJHNxbD0ic2VsZWN0ICogZnJvbSBzbF9tZW51IHdoZXJlIFVfaGlkZT0wIGFuZCBVX2RlbD0wIGFuZCBVX3N1Yj0wICBvcmRlciBieSBVX29yZGVyLFVfaWQgZGVzYyI7DQokcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCAgJHNxbCk7DQppZiAobXlzcWxpX251bV9yb3dzKCRyZXN1bHQpID4gMCkgew0Kd2hpbGUoJHJvdyA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgew0KDQogIGlmKCRyb3dbIlVfdHlwZSJdPT0ibGluayIpew0KICAgICRsaW5rPSRyb3dbIlVfbGluayJdOw0KICAgICR0YXJnZXQ9Il9ibGFuayI7DQogIH1lbHNlew0KICAgICRsaW5rPSI/dHlwZT0iLiRyb3dbIlVfdHlwZSJdLiImaWQ9Ii4kcm93WyJVX3R5cGVpZCJdOw0KICAgICR0YXJnZXQ9Il9zZWxmIjsNCiAgfQ0KDQppZihnZXRycygic2VsZWN0IGNvdW50KCopIGFzIFVfY291bnQgZnJvbSBzbF9tZW51IHdoZXJlIFVfc3ViPSIuJHJvd1siVV9pZCJdLCJVX2NvdW50Iik+MCl7DQoJJGFwaT0kYXBpLiI8bGkgY2xhc3M9XCJkcm9wZG93blwiPjxhIGhyZWY9XCIiLiRsaW5rLiJcIiB0YXJnZXQ9XCIiLiR0YXJnZXQuIlwiID4iLiRyb3dbIlVfdGl0bGUiXS4iIDxiIGNsYXNzPVwiY2FyZXRcIj48L2I+PC9hPiI7DQp9ZWxzZXsNCgkkYXBpPSRhcGkuIjxsaSBjbGFzcz1cImRyb3Bkb3duXCI+PGEgaHJlZj1cIiIuJGxpbmsuIlwiIHRhcmdldD1cIiIuJHRhcmdldC4iXCIgPiIuJHJvd1siVV90aXRsZSJdLiI8L2E+IjsNCn0NCg0KJHNxbDI9InNlbGVjdCAqIGZyb20gc2xfbWVudSB3aGVyZSBVX2hpZGU9MCBhbmQgVV9kZWw9MCBhbmQgVV9zdWI9Ii4kcm93WyJVX2lkIl0uIiBvcmRlciBieSBVX29yZGVyLFVfaWQgZGVzYyI7DQokcmVzdWx0MiA9IG15c3FsaV9xdWVyeSgkY29ubiwgICRzcWwyKTsNCmlmIChteXNxbGlfbnVtX3Jvd3MoJHJlc3VsdDIpID4gMCkgew0KJGFwaT0kYXBpLiI8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+IjsNCg0Kd2hpbGUoJHJvdzIgPSBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdDIpKSB7DQoNCiAgaWYoJHJvdzJbIlVfdHlwZSJdPT0ibGluayIpew0KICAgICRsaW5rMj0kcm93MlsiVV9saW5rIl07DQogICAgJHRhcmdldDI9Il9ibGFuayI7DQogIH1lbHNlew0KICAgICRsaW5rMj0iP3R5cGU9Ii4kcm93MlsiVV90eXBlIl0uIiZpZD0iLiRyb3cyWyJVX3R5cGVpZCJdOw0KICAgICR0YXJnZXQyPSJfc2VsZiI7DQogIH0NCg0KICAgICRhcGk9JGFwaS4iPGxpPjxhIGhyZWY9XCIiLiRsaW5rMi4iXCIgdGFyZ2V0PVwiIi4kdGFyZ2V0Mi4iXCI+Ii4kcm93MlsiVV90aXRsZSJdLiI8L2E+PC9saT4iOw0KICB9DQogICRhcGk9JGFwaS4iPC91bD4iOw0KfQ0KICAgICAgJGFwaT0kYXBpLiI8L2xpPiI7DQogICAgfQ0KfQ0KfQ0KDQoNCjwvZmgtZnVuY3Rpb24+DQoJCTwvdWw+DQoJPC9kaXY+DQoJPC9kaXY+DQoJPC9kaXY+DQo8L25hdj4NCjxkaXYgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9Im1hcmdpbi10b3A6IDcwcHg7Ij4NCg0KPGRpdiBpZD0ibXlDYXJvdXNlbCIgY2xhc3M9ImNhcm91c2VsIHNsaWRlIj4NCgk8IS0tIOi9ruaSre+8iENhcm91c2Vs77yJ5oyH5qCHIC0tPg0KCTxvbCBjbGFzcz0iY2Fyb3VzZWwtaW5kaWNhdG9ycyI+DQoNCjxmaC1mdW5jdGlvbj4NCgkkaT0wOw0KaWYoZ2V0cnMoInNlbGVjdCBjb3VudChTX2lkKSBhcyBTX2NvdW50IGZyb20gc2xfc2xpZGUgd2hlcmUgU19kZWw9MCBhbmQgU19taWQ9JGZtaWQiLCJTX2NvdW50Iik+MCAmJiAkZm1pZD4wKXsNCgkkc3FsPSJzZWxlY3QgKiBmcm9tIHNsX3NsaWRlIHdoZXJlIFNfZGVsPTAgYW5kIFNfbWlkPSRmbWlkIG9yZGVyIGJ5IFNfb3JkZXIsU19pZCBkZXNjIjsNCn1lbHNlew0KCSRzcWw9InNlbGVjdCAqIGZyb20gc2xfc2xpZGUgd2hlcmUgU19kZWw9MCBhbmQgU19taWQ9MCBvcmRlciBieSBTX29yZGVyLFNfaWQgZGVzYyI7DQp9DQogICAgICAgICAgICAgICAgc1tbDQogICAgICAgICAgICAgICAgICAgICAgICAkYXBpPSRhcGkuIjxsaSBkYXRhLXRhcmdldD1cIiNteUNhcm91c2VsXCIgZGF0YS1zbGlkZS10bz1cIiIuJGkuIlwiPjwvbGk+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpKz0xOw0KDQogICAgICAgICAgICAgICAgICAgIF1dDQoNCiAgICAgICAgPC9maC1mdW5jdGlvbj4NCg0KCTwvb2w+ICAgDQoJPCEtLSDova7mkq3vvIhDYXJvdXNlbO+8iemhueebriAtLT4NCgk8ZGl2IGNsYXNzPSJjYXJvdXNlbC1pbm5lciI+DQoNCgkJPGZoLWZ1bmN0aW9uPg0KaWYoZ2V0cnMoInNlbGVjdCBjb3VudChTX2lkKSBhcyBTX2NvdW50IGZyb20gc2xfc2xpZGUgd2hlcmUgU19kZWw9MCBhbmQgU19taWQ9JGZtaWQiLCJTX2NvdW50Iik+MCAmJiAkZm1pZD4wKXsNCgkkc3FsPSJzZWxlY3QgKiBmcm9tIHNsX3NsaWRlIHdoZXJlIFNfZGVsPTAgYW5kIFNfbWlkPSRmbWlkIG9yZGVyIGJ5IFNfb3JkZXIsU19pZCBkZXNjIjsNCn1lbHNlew0KCSRzcWw9InNlbGVjdCAqIGZyb20gc2xfc2xpZGUgd2hlcmUgU19kZWw9MCBhbmQgU19taWQ9MCBvcmRlciBieSBTX29yZGVyLFNfaWQgZGVzYyI7DQp9DQogICAgICAgICAgICAgICAgc1tbDQogICAgICAgICAgICAgICAgICAgICAgICAkYXBpPSRhcGkuIjxkaXYgY2xhc3M9XCJpdGVtXCIgb25DbGljaz1cIndpbmRvdy5sb2NhdGlvbi5ocmVmPSciLiRyb3dbIlNfbGluayJdLiInXCI+DQoJCQk8aW1nIHNyYz1cIiIucGljKCRyb3dbIlNfcGljIl0pLiJcIiBhbHQ9XCIiLiRyb3dbIlNfdGl0bGUiXS4iXCI+DQoJCQk8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtY2FwdGlvblwiPjwvZGl2Pg0KCQk8L2Rpdj4iOw0KDQogICAgICAgICAgICAgICAgICAgIF1dDQoNCiAgICAgICAgPC9maC1mdW5jdGlvbj4NCgk8L2Rpdj4NCgk8IS0tIOi9ruaSre+8iENhcm91c2Vs77yJ5a+86IiqIC0tPg0KCTxhIGNsYXNzPSJsZWZ0IGNhcm91c2VsLWNvbnRyb2wiIGhyZWY9IiNteUNhcm91c2VsIiByb2xlPSJidXR0b24iIGRhdGEtc2xpZGU9InByZXYiPg0KCSAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+DQoJICAgIDxzcGFuIGNsYXNzPSJzci1vbmx5Ij5QcmV2aW91czwvc3Bhbj4NCgk8L2E+DQoJPGEgY2xhc3M9InJpZ2h0IGNhcm91c2VsLWNvbnRyb2wiIGhyZWY9IiNteUNhcm91c2VsIiByb2xlPSJidXR0b24iIGRhdGEtc2xpZGU9Im5leHQiPg0KCSAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPg0KCSAgICA8c3BhbiBjbGFzcz0ic3Itb25seSI+TmV4dDwvc3Bhbj4NCgk8L2E+DQo8L2Rpdj4gDQoNCgk8ZGl2IGNsYXNzPSJwYW5lbCBwYW5lbC1pbmZvIiBzdHlsZT0ibWFyZ2luLXRvcDogMjBweDsiPg0KCQkJICAgIDxkaXYgY2xhc3M9InBhbmVsLWhlYWRpbmciPg0KCQkJICAgICAgICA8aDMgY2xhc3M9InBhbmVsLXRpdGxlIj4NCgkJCSAgICAgICAgICAgIOe9keermeWFrOWRig0KCQkJICAgICAgICA8L2gzPg0KCQkJICAgIDwvZGl2Pg0KCQkJICAgIDxkaXYgY2xhc3M9InBhbmVsLWJvZHkiPg0KCQkJICAgICAgICA8bWFycXVlZSBkaXJlY3Rpb249ImxlZnQiIHN0eWxlPSJ3aWR0aDogMTAwJTt2ZXJ0aWNhbC1hbGlnbjp0b3A7ICIgb25Nb3VzZU92ZXI9InRoaXMuc3RvcCgpIiBvbk1vdXNlT3V0PSJ0aGlzLnN0YXJ0KCkiPjwvbWFycXVlZT4NCgkJCSAgICA8L2Rpdj4NCgkJCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InJvdyI+DQoJCQ0KPGRpdiBjbGFzcz0iY29sLW1kLTkiPg0KPGZoLWZ1bmN0aW9uPg0KJGk9MTsNCiRzcWw9InNlbGVjdCAqIGZyb20gc2xfcHNvcnQgd2hlcmUgU19kZWw9MCBhbmQgU19zaG93PTEgYW5kIFNfc3ViPTAgb3JkZXIgYnkgU19vcmRlcixTX2lkIGRlc2MiOw0KDQpzW1sNCg0KCQkkYXBpPSRhcGkuIjxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1pbmZvXCI+DQoJCQkgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj4NCgkJCSAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbC10aXRsZVwiPiIuJGkuIkYgIi4kcm93WyJTX3RpdGxlIl0uIjwvc3Bhbj4iOw0KICAgICAgICAgICAgICAgICAgICBpZihpc01vYmlsZSgpKXsNCiAgICAgICAgICAgICAgICAgICAgJGFwaT0kYXBpLiI8YSBocmVmPVwiP3R5cGU9cHJvZHVjdCZpZD0iLiRyb3dbIlNfaWQiXS4iXCIgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+5p+l55yL5pu05aSaPC9hPiI7DQogICAgICAgICAgICAgICAgfQ0KDQoJCQkgICAgJGFwaT0kYXBpLiI8L2Rpdj4iOw0KDQoNCg0KaWYoIWlzTW9iaWxlKCkpew0KJGFwaT0kYXBpLiI8dWwgaWQ9XCJteVRhYlwiIGNsYXNzPVwibmF2IG5hdi10YWJzXCIgc3R5bGU9XCJtYXJnaW4tdG9wOi00MHB4O3RleHQtYWxpZ246cmlnaHRcIj48bGkgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7ZmxvYXQ6bm9uZVwiIGNsYXNzPVwiYWN0aXZlXCI+DQogICAgICAgICAgICAgICAgPGEgaHJlZj1cIiMiLiRyb3dbIlNfaWQiXS4iXCIgZGF0YS10b2dnbGU9XCJ0YWJcIiBzdHlsZT1cInBhZGRpbmc6MTBweCA1cHg7Zm9udC1zaXplOjEycHhcIj7lhajpg6jllYblk4E8L2E+PC9saT4iOw0KJHNxbDI9InNlbGVjdCAqIGZyb20gc2xfcHNvcnQgd2hlcmUgU19kZWw9MCBhbmQgU19zaG93PTEgYW5kIFNfc3ViPSIuJHJvd1siU19pZCJdLiIgb3JkZXIgYnkgU19vcmRlcixTX2lkIGRlc2MiOw0KczJbWw0KDQokYXBpPSRhcGkuIjxsaSBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztmbG9hdDpub25lXCI+PGEgaHJlZj1cIiMiLiRyb3cyWyJTX2lkIl0uIlwiIGRhdGEtdG9nZ2xlPVwidGFiXCIgc3R5bGU9XCJwYWRkaW5nOjEwcHggNXB4O2ZvbnQtc2l6ZToxMnB4XCI+Ii4kcm93MlsiU190aXRsZSJdLiI8L2E+PC9saT4iOw0KDQp9DQp9DQp9DQoNCg0KJGFwaT0kYXBpLiI8L3VsPjxkaXYgaWQ9XCJteVRhYkNvbnRlbnRcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+PGRpdiBjbGFzcz1cInRhYi1wYW5lIGZhZGUgaW4gYWN0aXZlXCIgaWQ9XCIiLiRyb3dbIlNfaWQiXS4iXCI+PHRhYmxlIGNsYXNzPVwidGFibGVcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206MHB4XCI+IjsNCg0KaWYoaXNNb2JpbGUoKSl7DQoJJGFwaT0kYXBpLiI8dHI+PHRoIHdpZHRoPVwiMTAlXCI+5Zu+54mHPC90aD48dGggd2lkdGg9XCI4MCVcIj7llYblk4E8L3RoPjx0aCB3aWR0aD1cIjEwJVwiIHN0eWxlPVwid2hpdGUtc3BhY2U6bm93cmFwXCI+5Lu35qC8PC90aD48dGggd2lkdGg9XCIxMCVcIj7otK3kubA8L3RoPjwvdHI+IjsNCn1lbHNlew0KCSRhcGk9JGFwaS4iPHRyPjx0aCB3aWR0aD1cIjEwJVwiPuWbvueJhzwvdGg+PHRoIHdpZHRoPVwiNTAlXCI+5ZWG5ZOBPC90aD48dGggd2lkdGg9XCIxMCVcIj7ku7fmoLw8L3RoPjx0aCB3aWR0aD1cIjEwJVwiPumUgOmHjzwvdGg+PHRoIHdpZHRoPVwiMTAlXCI+5bqT5a2YPC90aD48dGggd2lkdGg9XCIxMCVcIj7otK3kubA8L3RoPjwvdHI+IjsNCn0NCg0KDQokc3FsMz0ic2VsZWN0ICogZnJvbSBzbF9wcm9kdWN0LHNsX3Bzb3J0IHdoZXJlIFBfc2g9MSBhbmQgUF9kZWw9MCAiLiRNX3BpbmZvLiIgYW5kIFBfc29ydD1TX2lkIGFuZCBTX3N1Yj0iLiRyb3dbIlNfaWQiXS4iIG9yZGVyIGJ5IFBfdG9wIGRlc2MsUF9vcmRlcixQX3RpbWUgZGVzYyxQX2lkIGRlc2MgbGltaXQgNSI7DQpzM1tbDQoNCnN3aXRjaCAoJHJvdzNbIlBfc2VsbHR5cGUiXSkgew0KCQljYXNlIDA6DQoJCSRQX3Jlc3Q9MTsNCgkJJFBfcmVzdHRpdGxlPSLlhYXotrMiOw0KCQlicmVhazsNCg0KCQljYXNlIDE6DQoJCSRQX3Jlc3Q9Z2V0cnMoInNlbGVjdCBjb3VudChDX2lkKSBhcyBDX2NvdW50IGZyb20gc2xfY2FyZCB3aGVyZSBDX2RlbD0wIGFuZCBDX3NvcnQ9Ii5pbnR2YWwoJHJvdzNbIlBfc2VsbCJdKS4iIGFuZCBDX3VzZT0wIiwiQ19jb3VudCIpOw0KCQkkUF9yZXN0dGl0bGU9JFBfcmVzdC4i5Lu2IjsNCgkJYnJlYWs7DQoNCgkJY2FzZSAyOg0KCQkkUF9yZXN0PSRyb3czWyJQX3Jlc3QiXTsNCgkJJFBfcmVzdHRpdGxlPSRQX3Jlc3QuIuS7tiI7DQoJCWJyZWFrOw0KCX0NCg0KDQoNCg0KCWlmKCRyb3czWyJQX2xpbWl0Il0+MCBhbmQgJHJvdzNbIlBfbGltaXRsb25nIl0+MCBhbmQgJHJvdzNbIlBfbGltaXRsb25nIl0tKHRpbWUoKS1zdHJ0b3RpbWUoJHJvdzNbIlBfbGltaXR0aW1lIl0pKS8zNjAwPjApew0KICAgICAgICAgICAgICAkUF9wcmljZT0kcm93M1siUF9saW1pdCJdLiIgPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kOiNmOTA7Y29sb3I6I2ZmZmZmZjtib3JkZXItcmFkaXVzOjVweDtmb250LXNpemU6MTJweDtwYWRkaW5nOjBweCA2cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7XCI+6ZmQ5pe2PC9zcGFuPiI7DQogICAgICAgICAgICAgICRsPWRhdGUoJ1ktbS1kIEg6aTpzJyxzdHJ0b3RpbWUoJysnLiRyb3czWyJQX2xpbWl0bG9uZyJdLicgaG91cicsc3RydG90aW1lKCRyb3czWyJQX2xpbWl0dGltZSJdKSkpOw0KICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICRQX3ByaWNlPXAoJHJvdzNbIlBfcHJpY2UiXSk7DQogICAgICAgICAgICAgICRsPSIiOw0KICAgICAgICAgICAgfQ0KDQoNCmlmKGlzTW9iaWxlKCkpew0KCSRhcGk9JGFwaS4iPHRyPjx0ZD48aW1nIHNyYz1cIiIucGljKHNwbGl0eCgkcm93M1siUF9waWMiXSwifCIsMCkpLiJcIiBoZWlnaHQ9XCI1MFwiPjwvdGQ+PHRkPiIuJHJvdzNbIlBfdGl0bGUiXS4iPC90ZD48dGQ+77+lIi4kUF9wcmljZS4iPC90ZD48dGQ+PGEgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1zdWNjZXNzXCIgaHJlZj1cIj90eXBlPXByb2R1Y3RpbmZvJmlkPSIuJHJvdzNbIlBfaWQiXS4iXCI+PGkgY2xhc3M9XCJmYSBmYS1zaG9wcGluZy1jYXJ0XCI+PC9pPiDotK3kubA8L2E+PC90ZD48L3RyPiI7DQp9ZWxzZXsNCgkkYXBpPSRhcGkuIjx0cj48dGQ+PGltZyBzcmM9XCIiLnBpYyhzcGxpdHgoJHJvdzNbIlBfcGljIl0sInwiLDApKS4iXCIgaGVpZ2h0PVwiNTBcIj48L3RkPjx0ZD4iLiRyb3czWyJQX3RpdGxlIl0uIjwvdGQ+PHRkIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7Y29sb3I6ICNmZjAwMDBcIj7vv6UiLiRQX3ByaWNlLiI8L3RkPjx0ZD4iLiRyb3czWyJQX3NvbGQiXS4i5Lu2PC90ZD48dGQ+Ii4kUF9yZXN0dGl0bGUuIjwvdGQ+PHRkPjxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCIgaHJlZj1cIj90eXBlPXByb2R1Y3RpbmZvJmlkPSIuJHJvdzNbIlBfaWQiXS4iXCI+PGkgY2xhc3M9XCJmYSBmYS1zaG9wcGluZy1jYXJ0XCI+PC9pPiDotK3kubA8L2E+PC90ZD48L3RyPiI7DQp9DQogICAgICANCgldXQ0KDQokYXBpPSRhcGkuIjwvdGFibGU+DQoNCjwvZGl2PiI7DQoNCg0KaWYoIWlzTW9iaWxlKCkpew0KJHNxbDI9InNlbGVjdCAqIGZyb20gc2xfcHNvcnQgd2hlcmUgU19kZWw9MCBhbmQgU19zaG93PTEgYW5kIFNfc3ViPSIuJHJvd1siU19pZCJdLiIgb3JkZXIgYnkgU19vcmRlcixTX2lkIGRlc2MiOw0KczJbWw0KJGFwaT0kYXBpLiI8ZGl2IGNsYXNzPVwidGFiLXBhbmUgZmFkZSBpblwiIGlkPVwiIi4kcm93MlsiU19pZCJdLiJcIj48dGFibGUgY2xhc3M9XCJ0YWJsZVwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTowcHhcIj48dHI+PHRoIHdpZHRoPVwiMTAlXCI+5Zu+54mHPC90aD48dGggd2lkdGg9XCI1MCVcIj7llYblk4E8L3RoPjx0aCB3aWR0aD1cIjEwJVwiPuS7t+agvDwvdGg+PHRoIHdpZHRoPVwiMTAlXCI+6ZSA6YePPC90aD48dGggd2lkdGg9XCIxMCVcIj7lupPlrZg8L3RoPjx0aCB3aWR0aD1cIjEwJVwiPui0reS5sDwvdGg+PC90cj4iOw0KDQokc3FsMz0ic2VsZWN0ICogZnJvbSBzbF9wcm9kdWN0IHdoZXJlIFBfc2g9MSBhbmQgUF9kZWw9MCAiLiRNX3BpbmZvLiIgIGFuZCBQX3NvcnQ9Ii4kcm93MlsiU19pZCJdLiIgb3JkZXIgYnkgUF90b3AgZGVzYyxQX29yZGVyLFBfdGltZSBkZXNjLFBfaWQgZGVzYyBsaW1pdCA1IjsNCnMzW1sNCg0Kc3dpdGNoICgkcm93M1siUF9zZWxsdHlwZSJdKSB7DQoJCWNhc2UgMDoNCgkJJFBfcmVzdD0xOw0KCQkkUF9yZXN0dGl0bGU9IuWFhei2syI7DQoJCWJyZWFrOw0KDQoJCWNhc2UgMToNCgkJJFBfcmVzdD1nZXRycygic2VsZWN0IGNvdW50KENfaWQpIGFzIENfY291bnQgZnJvbSBzbF9jYXJkIHdoZXJlIENfZGVsPTAgYW5kIENfc29ydD0iLmludHZhbCgkcm93M1siUF9zZWxsIl0pLiIgYW5kIENfdXNlPTAiLCJDX2NvdW50Iik7DQoJCSRQX3Jlc3R0aXRsZT0kUF9yZXN0LiLku7YiOw0KCQlicmVhazsNCg0KCQljYXNlIDI6DQoJCSRQX3Jlc3Q9JHJvdzNbIlBfcmVzdCJdOw0KCQkkUF9yZXN0dGl0bGU9JFBfcmVzdC4i5Lu2IjsNCgkJYnJlYWs7DQoJfQ0KDQoNCglpZigkcm93M1siUF9saW1pdCJdPjAgYW5kICRyb3czWyJQX2xpbWl0bG9uZyJdPjAgYW5kICRyb3czWyJQX2xpbWl0bG9uZyJdLSh0aW1lKCktc3RydG90aW1lKCRyb3czWyJQX2xpbWl0dGltZSJdKSkvMzYwMD4wKXsNCiAgICAgICAgICAgICAgJFBfcHJpY2U9JHJvdzNbIlBfbGltaXQiXS4iIDxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZDojZjkwO2NvbG9yOiNmZmZmZmY7Ym9yZGVyLXJhZGl1czo1cHg7Zm9udC1zaXplOjEycHg7cGFkZGluZzowcHggNnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO1wiPumZkOaXtjwvc3Bhbj4iOw0KICAgICAgICAgICAgICAkbD1kYXRlKCdZLW0tZCBIOmk6cycsc3RydG90aW1lKCcrJy4kcm93M1siUF9saW1pdGxvbmciXS4nIGhvdXInLHN0cnRvdGltZSgkcm93M1siUF9saW1pdHRpbWUiXSkpKTsNCiAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAkUF9wcmljZT1wKCRyb3czWyJQX3ByaWNlIl0pOw0KICAgICAgICAgICAgICAkbD0iIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KDQogICAgICAkYXBpPSRhcGkuIjx0cj48dGQ+PGltZyBzcmM9XCIiLnBpYyhzcGxpdHgoJHJvdzNbIlBfcGljIl0sInwiLDApKS4iXCIgaGVpZ2h0PVwiNTBcIj48L3RkPjx0ZD4iLiRyb3czWyJQX3RpdGxlIl0uIjwvdGQ+PHRkIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7Y29sb3I6ICNmZjAwMDBcIj7vv6UiLiRQX3ByaWNlLiI8L3RkPjx0ZD4iLiRyb3czWyJQX3NvbGQiXS4i5Lu2PC90ZD48dGQ+Ii4kUF9yZXN0dGl0bGUuIjwvdGQ+PHRkPjxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyXCIgaHJlZj1cIj90eXBlPXByb2R1Y3RpbmZvJmlkPSIuJHJvdzNbIlBfaWQiXS4iXCI+PGkgY2xhc3M9XCJmYSBmYS1zaG9wcGluZy1jYXJ0XCI+PC9pPiDotK3kubA8L2E+PC90ZD48L3RyPiI7DQoJXV0NCg0KJGFwaT0kYXBpLiI8L3RhYmxlPjwvZGl2PiI7DQpdXQ0KfQ0KDQokYXBpPSRhcGkuIjwvZGl2PjxhIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIGJ0bi1ibG9ja1wiIGhyZWY9XCI/dHlwZT1wcm9kdWN0JmlkPSIuJHJvd1siU19pZCJdLiJcIj7mn6XnnIvmm7TlpJo8L2E+PC9kaXY+IjsNCiAgJGk9JGkrMTsNCiAgICBdXQ0KPC9maC1mdW5jdGlvbj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iY29sLW1kLTMiPg0KCQkJPGRpdiBjbGFzcz0icGFuZWwgcGFuZWwtaW5mbyI+DQoJCQkgICAgPGRpdiBjbGFzcz0icGFuZWwtaGVhZGluZyI+DQoJCQkgICAgICAgIDxoMyBjbGFzcz0icGFuZWwtdGl0bGUiPg0KCQkJICAgICAgICAgICAg56uZ5YaF5pCc57SiDQoJCQkgICAgICAgIDwvaDM+DQoJCQkgICAgPC9kaXY+DQoJCQkgICAgPGRpdiBjbGFzcz0icGFuZWwtYm9keSIgPg0KCQkJPGZvcm0gbmFtZT0iZm9ybXNlYXJjaCIgYWN0aW9uPSIuLz90eXBlPXNlYXJjaCIgbWV0aG9kPSJwb3N0Ij4NCgkJCSAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0i5YWz6ZSu6K+NIiBuYW1lPSJrZXl3b3JkIj4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLWJ0biI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWluZm8iIHR5cGU9InN1Ym1pdCIgPuaQnOe0ojwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogNXB4OyI+DQogICAgICAgICAgICAgICAg5pCc57Si54Ot6K+N77yaDQogICAgICAgICAgICAgICAgPGZoLWZ1bmN0aW9uPg0KJGtleXdvcmQ9ZXhwbG9kZSgiLCIsJEhfZGF0YVsiQ19ob3R3b3JkcyJdKTsNCmZvcigkaT0wOyRpPGNvdW50KCRrZXl3b3JkKTskaSsrKXsNCiAgJGFwaT0kYXBpLiI8YSBocmVmPVwiLi8/dHlwZT1zZWFyY2gma2V5d29yZD0iLiRrZXl3b3JkWyRpXS4iXCI+Ii4ka2V5d29yZFskaV0uIjwvYT4gIjsNCn0NCjwvZmgtZnVuY3Rpb24+DQo8L2Rpdj4NCgkJCSAgICA8L2Rpdj4NCgkJCTwvZGl2Pg0KDQoJCQk8ZGl2IGNsYXNzPSJwYW5lbCBwYW5lbC1pbmZvIj4NCgkJCSAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkaW5nIj4NCgkJCSAgICAgICAgPGgzIGNsYXNzPSJwYW5lbC10aXRsZSI+DQoJCQkgICAgICAgICAgICDmiYvmnLrotK3kubANCgkJCSAgICAgICAgPC9oMz4NCgkJCSAgICA8L2Rpdj4NCgkJCSAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ib2R5IiA+DQoJCQkgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIGlkPSJiaWxsSW1hZ2UiPjwvZGl2Pg0KCQkJICAgIDwvZGl2Pg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSJwYW5lbCBwYW5lbC1pbmZvIj4NCgkJCSAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkaW5nIj4NCgkJCSAgICAgICAgPGgzIGNsYXNzPSJwYW5lbC10aXRsZSI+DQoJCQkgICAgICAgICAgICDlj4vmg4Xpk77mjqUNCgkJCSAgICAgICAgPC9oMz4NCgkJCSAgICA8L2Rpdj4NCgkJCSAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ib2R5Ij4NCgkJCSAgICAgICAgPGZoLWZ1bmN0aW9uPg0KICAgICAgICAkc3FsPSJzZWxlY3QgKiBmcm9tIHNsX2xpbmsgd2hlcmUgTF9kZWw9MCBvcmRlciBieSBMX2lkIGRlc2MiOw0KICAgICAgICBzW1skYXBpPSRhcGkuIjxhIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIGJ0bi14c1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTo1cHg7XCIgaHJlZj1cIiIuJHJvd1siTF9saW5rIl0uIlwiIHRhcmdldD1cIl9ibGFua1wiPiIuJHJvd1siTF90aXRsZSJdLiI8L2E+ICI7XV0NCiAgICAgICAgPC9maC1mdW5jdGlvbj4NCgkJCSAgICA8L2Rpdj4NCgkJCTwvZGl2Pg0KDQoJCQkNCgkJPC9kaXY+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFuZWwgcGFuZWwtaW5mbyI+DQoJCQkgICAgPGRpdiBjbGFzcz0icGFuZWwtaGVhZGluZyI+DQoJCQkgICAgICAgIDxoMyBjbGFzcz0icGFuZWwtdGl0bGUiPg0KCQkJICAgICAgICAgICAg54mI5p2D5omA5pyJDQoJCQkgICAgICAgIDwvaDM+DQoJCQkgICAgPC9kaXY+DQoJCQkgICAgPGRpdiBjbGFzcz0icGFuZWwtYm9keSI+DQoJCQkgICAgICAgIENvcHlyaWdodCDCqSAyMDE1LTIwMjAg5oKo55qE5YWs5Y+45ZCN56ewIOeJiOadg+aJgOaciSA8YSBocmVmPSJodHRwczovL2JlaWFuLm1paXQuZ292LmNuLyIgdGFyZ2V0PSJfYmxhbmsiPuS6rElDUOWkhzAwMDAwMDAw5Y+3PC9hPg0KCQkJICAgIDwvZGl2Pg0KCQkJPC9kaXY+DQo8L2Rpdj4NCg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoNCjxmaC1mdW5jdGlvbj4NCmlmKCFpc21vYmlsZSgpKXsNCgkkYXBpPSRhcGkuIlwkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2Ryb3Bkb3duT3BlbigpO30pOyI7DQp9DQo8L2ZoLWZ1bmN0aW9uPg0KDQpmdW5jdGlvbiBkcm9wZG93bk9wZW4oKSB7DQogdmFyICRkcm9wZG93bkxpID0gJCgnbGkuZHJvcGRvd24nKTsNCiAkZHJvcGRvd25MaS5tb3VzZW92ZXIoZnVuY3Rpb24oKSB7DQogJCh0aGlzKS5hZGRDbGFzcygnb3BlbicpOw0KIH0pLm1vdXNlb3V0KGZ1bmN0aW9uKCkgew0KICQodGhpcykucmVtb3ZlQ2xhc3MoJ29wZW4nKTsNCiB9KTsNCn0NCg0KdmFyIHFyY29kZSA9IG5ldyBRUkNvZGUoJ2JpbGxJbWFnZScsIHt3aWR0aDogMTIwLGhlaWdodDogMTIwLGNvbG9yRGFyazogJyMwMDAwMDAnLGNvbG9yTGlnaHQ6ICcjZmZmZmZmJyxjb3JyZWN0TGV2ZWw6IFFSQ29kZS5Db3JyZWN0TGV2ZWwuSH0pOw0KcXJjb2RlLm1ha2VDb2RlKCI8ZmgtZnVuY3Rpb24+JGFwaT0kYXBpLmdldGh0dHAoKS4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4nOicuJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107PC9maC1mdW5jdGlvbj4iKTsNCiQoIi5jYXJvdXNlbC1pbmRpY2F0b3JzIikuZmluZCgibGk6Zmlyc3QiKS5hdHRyKCJjbGFzcyIsImFjdGl2ZSIpOw0KJCgiLmNhcm91c2VsLWlubmVyIikuZmluZCgiZGl2OmZpcnN0IikuYXR0cigiY2xhc3MiLCJpdGVtIGFjdGl2ZSIpOw0KPC9zY3JpcHQ+DQo8bGluayBocmVmPSdjc3MvbGFucmVuemhpamlhLmNzcycgcmVsPSdzdHlsZXNoZWV0JyB0eXBlPSd0ZXh0L2NzcycgLz48c2NyaXB0IHNyYz0nanMvanF1ZXJ5LktpblNsaWRlc2hvdy0xLjIuMS5taW4uanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCc+PC9zY3JpcHQ+PGRpdiBpZD0nb25saW5lX3FxX2xheWVyJyBzdHlsZT0nei1pbmRleDoyMDAwOyc+PGRpdiBpZD0nb25saW5lX3FxX3RhYic+PGRpdiBjbGFzcz0nb25saW5lX2ljb24nPjxhIGlkPSdmbG9hdFNob3cnIHN0eWxlPSdkaXNwbGF5OmJsb2NrOycgaHJlZj0namF2YXNjcmlwdDp2b2lkKDApOyc+Jm5ic3A7PC9hPjxhICBpZD0nZmxvYXRIaWRlJyBzdHlsZT0nZGlzcGxheTpub25lOycgaHJlZj0namF2YXNjcmlwdDp2b2lkKDApOyc+Jm5ic3A7PC9hPjwvZGl2PjwvZGl2PjxkaXYgaWQ9J29ubGluZVNlcnZpY2UnIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjxkaXYgY2xhc3M9J29ubGluZV93aW5kb3dzIG92ZXJ6Jz48ZGl2IGNsYXNzPSdvbmxpbmVfd190b3AnPjwvZGl2PjxkaXYgY2xhc3M9J29ubGluZV93X2Mgb3ZlcnonPjxkaXYgY2xhc3M9J29ubGluZV9iYXIgZXhwYW5kJyBpZD0nb25saW5lU29ydDEnPjxoMj48YSBvbmNsaWNrPSdjaGFuZ2VPbmxpbmUoMSknPuWcqOe6v+WuouacjTwvYT48L2gyPjxkaXYgY2xhc3M9J29ubGluZV9jb250ZW50IG92ZXJ6JyBpZD0nb25saW5lVHlwZTEnPjx1bCBjbGFzcz0nb3ZlcnonPjxsaT48YSB0aXRsZT0n54K55Ye76L+Z6YeM57uZ5oiR5Y+R5raI5oGvJyBocmVmPSdodHRwOi8vd3BhLnFxLmNvbS9tc2dyZD92PTMmdWluPTEyMzEyMzEyMyZzaXRlPXFxJm1lbnU9eWVzJyB0YXJnZXQ9J19ibGFuaycgY2xhc3M9J3FxX2ljb24nPuWUruWJjeWSqOivojwvYT48L2xpPjxsaT48YSB0aXRsZT0n54K55Ye76L+Z6YeM57uZ5oiR5Y+R5raI5oGvJyBocmVmPSdodHRwOi8vd3d3LnRhb2Jhby5jb20vd2Vid3cvd3cucGhwP3Zlcj0zJnRvdWlkPXRhb2JhbyZzaXRlaWQ9Y250YW9iYW8mc3RhdHVzPTEmY2hhcnNldD11dGYtOCcgdGFyZ2V0PSdfYmxhbmsnIGNsYXNzPSd3d19pY29uJz7llK7lkI7mnI3liqE8L2E+PC9saT48L3VsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9J29ubGluZV9iYXIgY29sbGFwc2UyJyBpZD0nb25saW5lU29ydDInPjxoMj48YSBvbmNsaWNrPSdjaGFuZ2VPbmxpbmUoMiknPueUteivneWuouacjTwvYT48L2gyPjxkaXYgY2xhc3M9J29ubGluZV9jb250ZW50IG92ZXJ6JyBpZD0nb25saW5lVHlwZTInPjx1bCBjbGFzcz0nb3ZlcnonPjxsaT4wMTAtMTAwODY8L2xpPjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nb25saW5lX2JhciBjb2xsYXBzZTInIGlkPSdvbmxpbmVTb3J0Myc+PGgyPjxhIG9uY2xpY2s9J2NoYW5nZU9ubGluZSgzKSc+572R56uZ5LqM57u056CBPC9hPjwvaDI+PGRpdiBjbGFzcz0nb25saW5lX2NvbnRlbnQgb3ZlcnonIGlkPSdvbmxpbmVUeXBlMyc+PHVsIGNsYXNzPSdvdmVyeic+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nanMvcXJjb2RlLm1pbi5qcyc+PC9zY3JpcHQ+PGRpdiBpZD0ncXJjb2RlJyBzdHlsZT0nbWFyZ2luOjAgMCAxMHB4IDEwcHg7Jz48L2Rpdj48c2NyaXB0PnZhciBxcmNvZGUgPSBuZXcgUVJDb2RlKCdxcmNvZGUnLCB7d2lkdGg6IDExMCxoZWlnaHQ6IDExMCxjb2xvckRhcms6ICcjMDAwMDAwJyxjb2xvckxpZ2h0OiAnI2ZmZmZmZicsY29ycmVjdExldmVsOiBRUkNvZGUuQ29ycmVjdExldmVsLkh9KTtxcmNvZGUubWFrZUNvZGUoJ2h0dHA6Ly9sb2NhbGhvc3Q6NTAxMicpOzwvc2NyaXB0PjwvdWw+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nb25saW5lX2JhciBjb2xsYXBzZTInIGlkPSdvbmxpbmVTb3J0NCc+PGgyPjxhIG9uY2xpY2s9J2NoYW5nZU9ubGluZSg0KSc+5b6u5L+h5YWs5LyX5Y+3PC9hPjwvaDI+PGRpdiBjbGFzcz0nb25saW5lX2NvbnRlbnQgb3ZlcnonIGlkPSdvbmxpbmVUeXBlNCc+PHVsIGNsYXNzPSdvdmVyeic+PGltZyBzcmM9J21lZGlhLzIwMTkxMTI2MjI0MzUyV2YuanBnJyB3aWR0aD0nMTIwJyAvPjwvdWw+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nb25saW5lX3dfYm90dG9tJz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4NCg0KDQo8ZmgtZnVuY3Rpb24+DQppZihpc01vYmlsZSgpKXsNCiAgJGFwaT0kYXBpLic8c3R5bGU+DQoudGFiX2Jhcntwb3NpdGlvbjogZml4ZWQ7Ym90dG9tOiAwcHg7bGVmdDogMHB4O3otaW5kZXg6IDk5OTk7YmFja2dyb3VuZDogI2ZmZjtoZWlnaHQ6IDU1cHg7d2lkdGg6IDEwMCU7Ym9yZGVyLXRvcDogc29saWQgMXB4ICNEREQ7cGFkZGluZy10b3A6IDVweDtmb250LXNpemU6IDEycHg7fQ0KLnRhYl9iYXIgLnRhYnt9DQoudGFiX2JhciAuYWN0aXZle2NvbG9yOiAjZmYwMDAwfQ0KLnRhYl9iYXIgaW1ne2hlaWdodDogMjdweDt9DQoudGFiX2JhciB0YWJsZXt3aWR0aDogMTAwJTt9DQoudGFiX2JhciB0YWJsZSB0ciB0ZHt0ZXh0LWFsaWduOiBjZW50ZXI7fQ0KLnRhYl9iYXIgdGFibGUgdHIgdGQgYXtmb250LXNpemU6IDEycHg7Y29sb3I6ICMzMzN9DQouaDUwe2hlaWdodDogNTBweDt9DQoNCjwvc3R5bGU+DQoNCjxkaXYgY2xhc3M9Img1MCI+PC9kaXY+DQo8ZGl2IGNsYXNzPSJ0YWJfYmFyIj4NCiAgPHRhYmxlPg0KICAgIDx0cj4NCiAgPHRkPjxhIGNsYXNzPSJ0YWIiIGhyZWY9Ii4vIj4NCiAgICA8aW1nIHNyYz0idGVtcGxhdGUvdDEyL2ltZy90YWIxXzIucG5nIj4NCiAgICA8ZGl2IGNsYXNzPSJhY3RpdmUiPummlumhtTwvZGl2Pg0KICA8L2E+PC90ZD4nOw0KICANCmlmKCRjb25maWctPnByb2R1Y3QhPSJmYWxzZSIpew0KICAgICRhcGk9JGFwaS4nPHRkPjxhIGNsYXNzPSJ0YWIiIGhyZWY9Ij90eXBlPXByb2R1Y3QmaWQ9MCI+DQogICAgICA8aW1nIHNyYz0idGVtcGxhdGUvdDEyL2ltZy90YWIyLnBuZyI+DQogICAgICA8ZGl2PuWVhuWTgTwvZGl2Pg0KICAgIDwvYT48L3RkPic7DQogIH0NCg0KICBpZigkY29uZmlnLT5uZXdzIT0iZmFsc2UiKXsNCiAgICAkYXBpPSRhcGkuJzx0ZD48YSBjbGFzcz0idGFiIiBocmVmPSI/dHlwZT1uZXdzJmlkPTAiPg0KICAgICAgPGltZyBzcmM9InRlbXBsYXRlL3QxMi9pbWcvdGFiMy5wbmciPg0KICAgICAgPGRpdj7mlofnq6A8L2Rpdj4NCiAgICA8L2E+PC90ZD4nOw0KICB9DQoNCiAgaWYoJGNvbmZpZy0+Y291cnNlIT0iZmFsc2UiKXsNCiAgICAkYXBpPSRhcGkuJzx0ZD48YSBjbGFzcz0idGFiIiBocmVmPSI/dHlwZT1jb3Vyc2UmaWQ9MCI+DQogICAgICAgIDxpbWcgc3JjPSJ0ZW1wbGF0ZS90MTIvaW1nL3RhYjUucG5nIj4NCiAgICAgICAgPGRpdiA+6K++56iLPC9kaXY+DQogICAgICA8L2E+PC90ZD4nOw0KICB9DQoNCiAgJGFwaT0kYXBpLic8dGQ+PGEgY2xhc3M9InRhYiIgaHJlZj0ibWVtYmVyIj4NCiAgICA8aW1nIHNyYz0idGVtcGxhdGUvdDEyL2ltZy90YWI0LnBuZyI+DQogICAgPGRpdj7miJHnmoQ8L2Rpdj4NCiAgPC9hPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvZGl2Pic7DQp9DQo8L2ZoLWZ1bmN0aW9uPg0KPGEgaHJlZj0namF2YXNjcmlwdDo7JyB0YXJnZXQ9J19ibGFuaycgb25jbGljaz0nYWxlcnQoIuacrOe9keermeeUseOAiuWPkei0pzEwMOOAi+WFjei0ueeJiOaQreW7uu+8jOivt+WLv+eUqOS9nOWVhuS4mueUqOmAlCIpO3dpbmRvdy5sb2NhdGlvbi5ocmVmPSJodHRwOi8vZmFodW8xMDAuY24iJyB0aXRsZT0n5Y+R6LSnMTAwJz48ZGl2IHN0eWxlPSJwb3NpdGlvbjogZml4ZWQ7ei1pbmRleDo5OTk5OTtib3R0b206IDEwcHg7bGVmdDogY2FsYyg1MCUgLSAxMDBweCk7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuNyk7dGV4dC1hbGlnbjogY2VudGVyO3dpZHRoOiAyMDBweDtoZWlnaHQ6IDMwcHg7bGluZS1oZWlnaHQ6IDMwcHg7Ym9yZGVyLXJhZGl1czogMzBweDtmb250LXNpemU6IDE4cHg7Y29sb3I6ICMzMzMzMzMiPjxpbWcgc3JjPSJodHRwOi8vZmFodW8xMDAuY24vbWVkaWEvMjAyMDEwMDkxMzQxMjBsVS5pY28iIHN0eWxlPSJoZWlnaHQ6IDIwcHg7d2lkdGg6IDIwcHg7bWFyZ2luLXJpZ2h0OiA1cHg7dmVydGljYWwtYWxpZ246IG1pZGRsZTsiPuWPkei0pzEwMDwvZGl2PjwvYT48L2JvZHk+DQo8L2h0bWw+