Tm90ZQo9PT09CgpUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcGVvcGxlIHdobyBhcmUgcGVybWl0dGVkIHRvIG1ha2UKY2hhbmdlcyB0byB2YXJpb3VzIHBhcnRzIG9mIHRoZSBjb21waWxlciBhbmQgYXNzb2NpYXRlZCBsaWJyYXJpZXMuCgpQbGVhc2UgZG8gbm90IGNvbnRhY3QgdGhlIHBlb3BsZSBpbiB0aGlzIGZpbGUgZGlyZWN0bHkgdG8gcmVwb3J0CnByb2JsZW1zIGluIEdDQy4KCkZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IEdDQywgcGxlYXNlIHZpc2l0OgoKICBodHRwOi8vZ2NjLmdudS5vcmcKClRvIHJlcG9ydCBwcm9ibGVtcyBpbiBHQ0MsIHBsZWFzZSB2aXNpdDoKCiAgaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbAoKTWFpbnRhaW5lcnMKPT09PT09PT09PT0KCgkJCUJsYW5rZXQgV3JpdGUgUHJpdnMuCgpSaWNoYXJkIEVhcm5zaGF3CQkJCXJpY2hhcmQuZWFybnNoYXdAYXJtLmNvbQpSaWNoYXJkIEhlbmRlcnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGhAcmVkaGF0LmNvbQpHZW9mZnJleSBLZWF0aW5nCQkJCWdlb2Zma0BnZW9mZmsub3JnClJpY2hhcmQgS2VubmVyCQkJCQlrZW5uZXJAbnl1LmVkdQpKZWZmIExhdwkJCQkJbGF3QHJlZGhhdC5jb20KTWljaGFlbCBNZWlzc25lcgkJCQlnbnVAdGhlLW1laXNzbmVycy5vcmcKSmFzb24gTWVycmlsbAkJCQkJamFzb25AcmVkaGF0LmNvbQpEYXZpZCBTLiBNaWxsZXIJCQkJCWRhdmVtQHJlZGhhdC5jb20KTWFyayBNaXRjaGVsbAkJCQkJbWFya0Bjb2Rlc291cmNlcnkuY29tCkJlcm5kIFNjaG1pZHQJCQkJCWJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbQpKaW0gV2lsc29uCQkJCQl3aWxzb25Ac3BlY2lmaXhpbmMuY29tCgoKCQkJQ1BVIFBvcnQgTWFpbnRhaW5lcnMJKENQVSBhbHBoYWJldGljYWwgb3JkZXIpCgphbHBoYSBwb3J0CQlSaWNoYXJkIEhlbmRlcnNvbglydGhAcmVkaGF0LmNvbQphcm0gcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCmFybSBwb3J0CQlSaWNoYXJkIEVhcm5zaGF3CXJpY2hhcmQuZWFybnNoYXdAYXJtLmNvbQphcm0gcG9ydAkJUGF1bCBCcm9vawkJcGF1bEBjb2Rlc291cmNlcnkuY29tCmF2ciBwb3J0CQlEZW5pcyBDaGVydHlrb3YJCWRlbmlzY0BvdmVydGEucnUKYXZyIHBvcnQJCUFuYXRvbHkgU29rb2xvdgkJYWVzb2tAcG9zdC5ydQpiZmluIHBvcnQJCUJlcm5kIFNjaG1pZHQJCWJlcm5kLnNjaG1pZHRAYW5hbG9nLmNvbQpjNHggcG9ydAkJTWljaGFlbCBIYXllcwkJbS5oYXllc0BlbGVjLmNhbnRlcmJ1cnkuYWMubnoKY3JpcyBwb3J0CQlIYW5zLVBldGVyIE5pbHNzb24JaHBAYXhpcy5jb20KY3J4IHBvcnQJCVBhdWwgV29lZ2VyZXIJCXBhdWwud29lZ2VyZXJAbnNjLmNvbQpmcjMwIHBvcnQJCU5pY2sgQ2xpZnRvbgkJbmlja2NAcmVkaGF0LmNvbQpmcnYgcG9ydAkJQWxkeSBIZXJuYW5kZXoJCWFsZHloQHJlZGhhdC5jb20KZnJ2IHBvcnQJCUFsZXhhbmRyZSBPbGl2YQkJYW9saXZhQHJlZGhhdC5jb20KaDggcG9ydAkJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpoOCBwb3J0CQkJS2F6dSBIaXJhdGEJCWthenVAY29kZXNvdXJjZXJ5LmNvbQpocHBhIHBvcnQJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpocHBhIHBvcnQJCURhdmUgQW5nbGluCQlkYXZlLmFuZ2xpbkBucmMuY2EKaTM4NiBwb3J0CQlSaWNoYXJkIEhlbmRlcnNvbglydGhAcmVkaGF0LmNvbQppYTY0IHBvcnQJCUppbSBXaWxzb24JCXdpbHNvbkBzcGVjaWZpeGluYy5jb20KaXEyMDAwIHBvcnQJCU5pY2sgQ2xpZnRvbgkJbmlja2NAcmVkaGF0LmNvbQptMzJjIHBvcnQJCURKIERlbG9yaWUJCWRqQHJlZGhhdC5jb20KbTMyciBwb3J0CQlOaWNrIENsaWZ0b24JCW5pY2tjQHJlZGhhdC5jb20KbTY4aGMxMSBwb3J0CQlTdGVwaGFuZSBDYXJyZXoJCXN0Y2FycmV6QG5lcmltLmZyCm02OGsgcG9ydCAoPykJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQptNjhrIHBvcnQJCUFuZHJlYXMgU2Nod2FiCQlzY2h3YWJAc3VzZS5kZQptNjhrLW1vdG9yb2xhLXN5c3YgcG9ydAlQaGlsaXBwZSBEZSBNdXl0ZXIJcGhkbUBtYWNxZWwuYmUKbWNvcmUgcG9ydAkJTmljayBDbGlmdG9uCQluaWNrY0ByZWRoYXQuY29tCm1pcHMgcG9ydCAgICAgICAgICAgICAgIEVyaWMgQ2hyaXN0b3BoZXIgICAgICAgIGVjaHJpc3RvQGFwcGxlLmNvbQptaXBzIHBvcnQJCVJpY2hhcmQgU2FuZGlmb3JkCXJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbQptbWl4IHBvcnQJCUhhbnMtUGV0ZXIgTmlsc3NvbglocEBiaXRyYW5nZS5jb20KbW4xMDMwMCBwb3J0CQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KbW4xMDMwMCBwb3J0CQlBbGV4YW5kcmUgT2xpdmEJCWFvbGl2YUByZWRoYXQuY29tCm10IHBvcnQJCQlBbGR5IEhlcm5hbmRlegkJYWxkeWhAcmVkaGF0LmNvbQptdCBwb3J0CQkJTmF0aGFuIFNpZHdlbGwJCW5hdGhhbkBjb2Rlc291cmNlcnkuY29tCnBkcDExIHBvcnQJCVBhdWwgS29uaW5nCQluaTFkQGFycmwubmV0CnJzNjAwMCBwb3J0CQlHZW9mZiBLZWF0aW5nCQlnZW9mZmtAZ2VvZmZrLm9yZwpyczYwMDAgcG9ydAkJRGF2aWQgRWRlbHNvaG4JCWRqZUB3YXRzb24uaWJtLmNvbQpyczYwMDAgdmVjdG9yIGV4dG5zCUFsZHkgSGVybmFuZGV6CQlhbGR5aEByZWRoYXQuY29tCnMzOTAgcG9ydAkJSGFydG11dCBQZW5uZXIJCWhwZW5uZXJAZGUuaWJtLmNvbQpzMzkwIHBvcnQJCVVscmljaCBXZWlnYW5kCQl1d2VpZ2FuZEBkZS5pYm0uY29tCnNoIHBvcnQJCQlKb2VybiBSZW5uZWNrZQkJam9lcm4ucmVubmVja2VAc3QuY29tCnNoIHBvcnQJCQlBbGV4YW5kcmUgT2xpdmEJCWFvbGl2YUByZWRoYXQuY29tCnNoIGxpYnJhcmllcy9jb25maWd1cnkJS2F6IEtvamltYQkJa2tvamltYUBnY2MuZ251Lm9yZwpzcGFyYyBwb3J0CQlSaWNoYXJkIEhlbmRlcnNvbglydGhAcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlEYXZpZCBTLiBNaWxsZXIJCWRhdmVtQHJlZGhhdC5jb20Kc3BhcmMgcG9ydAkJSmFrdWIgSmVsaW5lawkJamFrdWJAcmVkaGF0LmNvbQpzcGFyYyBwb3J0CQlFcmljIEJvdGNhem91CQllYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnIKdjg1MCBwb3J0CQlOaWNrIENsaWZ0b24JCW5pY2tjQHJlZGhhdC5jb20KdmF4IHBvcnQJCURhdmUgQW5nbGluCQlkYXZlLmFuZ2xpbkBucmMuY2EKdmF4IHBvcnQJCU1hdHQgVGhvbWFzCQltYXR0QDNhbS1zb2Z0d2FyZS5jb20KeDg2LTY0IHBvcnQJCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6CnhzdG9ybXkxNiBwb3J0CQlHZW9mZnJleSBLZWF0aW5nCWdlb2Zma0BnZW9mZmsub3JnCnh0ZW5zYSBwb3J0CQlCb2IgV2lsc29uCQlib2Iud2lsc29uQGFjbS5vcmcKCgkJCU9TIFBvcnQgTWFpbnRhaW5lcnMJKE9TIGFscGhhYmV0aWNhbCBvcmRlcikKCmRhcndpbiBwb3J0CQlEYWxlIEpvaGFubmVzZW4JCWRhbGVqQGFwcGxlLmNvbQpkYXJ3aW4gcG9ydAkJTWlrZSBTdHVtcAkJbXJzQGFwcGxlLmNvbQpkYXJ3aW4gcG9ydAkJU3RhbiBTaGVicwkJc2hlYnNAYXBwbGUuY29tCkRKR1BQCQkJREogRGVsb3JpZQkJZGpAZGVsb3JpZS5jb20KZnJlZWJzZAkJCUxvcmVuIEouIFJpdHRsZQkJbGpyaXR0bGVAYWNtLm9yZwpocHV4CQkJRGF2ZSBBbmdsaW4JCWRhdmUuYW5nbGluQG5yYy5jYQpocHV4CQkJU3RldmUgRWxsY2V5CQlzamVAY3VwLmhwLmNvbQpuZXRic2QJCQlKYXNvbiBUaG9ycGUJCXRob3JwZWpAbmV0YnNkLm9yZwpzY281LCB1bml4d2FyZSwgc2NvIHVkawlLZWFuIEpvaG5zdG9uCQlqa2pAc2NvLmNvbQpzaC1saW51eC1nbnUJCUtheiBLb2ppbWEJCWtrb2ppbWFAZ2NjLmdudS5vcmcKUlRFTVMgUG9ydHMJCUpvZWwgU2hlcnJpbGwJCWpvZWxAb2FyY29ycC5jb20KUlRFTVMgUG9ydHMJCVJhbGYgQ29yc2VwaXVzCQlyYWxmLmNvcnNlcGl1c0BydGVtcy5vcmcKVnhXb3JrcyBwb3J0cwkJTmF0aGFuIFNpZHdlbGwJCW5hdGhhbkBjb2Rlc291cmNlcnkuY29tCndpbmRvd3MsIGN5Z3dpbiwgbWluZ3cJQ2hyaXN0b3BoZXIgRmF5bG9yCWNnZkBnY2MuZ251Lm9yZwp3aW5kb3dzLCBjeWd3aW4sIG1pbmd3CURhbm55IFNtaXRoCQlkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldAoKCQkJTGFuZ3VhZ2UgRnJvbnQgRW5kcyBNYWludGFpbmVycwoKQyBmcm9udCBlbmQvSVNPIEM5OQlKb3NlcGggTXllcnMJCWpzbUBwb2x5b21pbm8ub3JnLnVrCkMgZnJvbnQgZW5kL0lTTyBDOTkJUmljaGFyZCBIZW5kZXJzb24JcnRoQHJlZGhhdC5jb20KQWRhIGZyb250IGVuZAkJR2VlcnQgQm9zY2gJCWJvc2NoQGduYXQuY29tCkFkYSBmcm9udCBlbmQJCVJvYmVydCBEZXdhcgkJZGV3YXJAZ25hdC5jb20KQWRhIGZyb250IGVuZAkJQXJuYXVkIENoYXJsZXQJCWNoYXJsZXRAYWN0LWV1cm9wZS5mcgpmb3J0cmFuIDk1CQlQYXVsIEJyb29rCQlwYXVsQGNvZGVzb3VyY2VyeS5jb20KZm9ydHJhbiA5NQkJVGhvbWFzIEtvZW5pZwkJVGhvbWFzLktvZW5pZ0BvbmxpbmUuZGUKZm9ydHJhbiA5NQkJVG9vbiBNb2VuZQkJdG9vbkBtb2VuZS5pbmRpdi5ubHV1Zy5ubApmb3J0cmFuIDk1CQlKZXJyeSBEZUxpc2xlCQlqdmRlbGlzbGVAZ2NjLmdudS5vcmcKZm9ydHJhbiA5NQkJRnJhbudvaXMtWGF2aWVyIENvdWRlcnQJY291ZGVydEBjbGlwcGVyLmVucy5mcgpmb3J0cmFuIDk1ICAgICAgICAgICAgICBCdWQgRGF2aXMgICAgICAgICAgICAgICBqbWRhdmlzQGxpbmsuY29tCmZvcnRyYW4gOTUJCVN0ZXZlIEthcmdsCQlzZ2tAdHJvdXRtYXNrLmFwbC53YXNoaW5ndG9uLmVkdQpmb3J0cmFuIDk1ICAgICAgICAgICAgICBFcmlrIEVkZWxtYW5uICAgICAgICAgICBlcmlrLmVkZWxtYW5uQGlraS5maQpmb3J0cmFuIDk1CQlQYXVsIFRob21hcwkJcGF1bHRAZ2NjLmdudS5vcmcKZm9ydHJhbiA5NQkJVG9iaWFzIFNjaGz8dGVyCQl0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGUKZm9ydHJhbiA5NQkJSmFubmUgQmxvbXF2aXN0CQlqYkBnY2MuZ251Lm9yZwpjKysJCQlKYXNvbiBNZXJyaWxsCQlqYXNvbkByZWRoYXQuY29tCmMrKyAgICAgICAgICAgICAgICAgICAgIE1hcmsgTWl0Y2hlbGwJCW1hcmtAY29kZXNvdXJjZXJ5LmNvbQpjKysJCQlOYXRoYW4gU2lkd2VsbAkJbmF0aGFuQGNvZGVzb3VyY2VyeS5jb20KamF2YQkJCVBlciBCb3RobmVyCQlwZXJAYm90aG5lci5jb20KamF2YQkJCUFuZHJldyBIYWxleQkJYXBoQHJlZGhhdC5jb20KamF2YQkJCVRvbSBUcm9tZXkJCXRyb21leUByZWRoYXQuY29tCm1lcmN1cnkJCQlGZXJndXMgSGVuZGVyc29uCWZqaEBjcy5tdS5vei5hdQpvYmplY3RpdmUtYwkJU3RhbiBTaGVicwkJc2hlYnNAYXBwbGUuY29tCm9iamVjdGl2ZS1jCQlPdmlkaXUgUHJlZGVzY3UJCW92aWRpdUBjdXAuaHAuY29tCm9iamVjdGl2ZS1jL2MrKwkJWmllbW93aXQgTGFza2kJCXpsYXNraUBhcHBsZS5jb20Kb2JqZWN0aXZlLWMvYysrCQlNaWtlIFN0dW1wCQltcnNAYXBwbGUuY29tCnRyZWVsYW5nICAgICAgICAgICAgICAgIFRpbSBKb3NsaW5nICAgICAgICAgICAgIHRlakBtZWxicGMub3JnLmF1CnRyZWVsYW5nICAgICAgICAgICAgICAgIEphbWVzIEEuIE1vcnJpc29uCXBoeXRob25AZ2NjLmdudS5vcmcKCgkJCVZhcmlvdXMgTWFpbnRhaW5lcnMKCmNwcGxpYgkJCVBlciBCb3RobmVyCQlwZXJAYm90aG5lci5jb20KbGliZGVjbnVtYmVyCQlCZW4gRWxsaXN0b24JCWJqZUBhdS5pYm0uY29tCmxpYmdjagkJCVRvbSBUcm9tZXkJCXRyb21leUByZWRoYXQuY29tCmxpYmdjagkJCUJyeWNlIE1jS2lubGF5CQltY2tpbmxheUByZWRoYXQuY29tCmxpYmdvbXAgICAgICAgICAgICAgICAgIFJpY2hhcmQgSGVuZGVyc29uICAgICAgIHJ0aEByZWRoYXQuY29tCmxpYmliZXJ0eQkJREogRGVsb3JpZQkJZGpAcmVkaGF0LmNvbQpsaWJpYmVydHkJCUlhbiBMYW5jZSBUYXlsb3IJaWFuQGFpcnMuY29tCmxpYmZmaSB0ZXN0c3VpdGUJQW5kcmVhcyBUb2JsZXIJCWFuZHJlYXN0QGdjYy5nbnUub3JnCmxpYm9iamMJCQlOaWNvbGEgUGVybwkJbi5wZXJvQG1pLmZsYXNobmV0Lml0CmxpYm9iamMJCQlBbmRyZXcgUGluc2tpCQlwaW5za2lhQHBoeXNpY3MudWMuZWR1Cmxvb3AgZGlzY292ZXJ5CQlNaWNoYWVsIEhheWVzCQltLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uegpzb2Z0LWZwCQkJSm9zZXBoIE15ZXJzCQlqc21AcG9seW9taW5vLm9yZy51awpzY2hlZHVsZXIgKCsgaGFpZmEpCUppbSBXaWxzb24JCXdpbHNvbkBzcGVjaWZpeGluYy5jb20Kc2NoZWR1bGVyICgrIGhhaWZhKQlNaWNoYWVsIE1laXNzbmVyCWdudUB0aGUtbWVpc3NuZXJzLm9yZwpzY2hlZHVsZXIgKCsgaGFpZmEpCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpzY2hlZHVsZXIgKCsgaGFpZmEpCVZsYWRpbWlyIE1ha2Fyb3YJdm1ha2Fyb3ZAcmVkaGF0LmNvbQpyZW9yZwkJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpjYWxsZXItc2F2ZS5jCQlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KY2FsbGdyYXBoCQlKYW4gSHViaWNrYQkJamhAc3VzZS5jegpkZWJ1Z2dpbmcgY29kZQkJSmltIFdpbHNvbgkJd2lsc29uQHNwZWNpZml4aW5jLmNvbQpkd2FyZiBkZWJ1Z2dpbmcgY29kZQlKYXNvbiBNZXJyaWxsCQlqYXNvbkByZWRoYXQuY29tCmMrKyBydW50aW1lIGxpYnMJUGFvbG8gQ2FybGluaQkJcGNhcmxpbmlAc3VzZS5kZQpjKysgcnVudGltZSBsaWJzICAgICAgICBHYWJyaWVsIERvcyBSZWlzICAgICAgICBnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0CmMrKyBydW50aW1lIGxpYnMJVWxyaWNoIERyZXBwZXIJCWRyZXBwZXJAcmVkaGF0LmNvbQpjKysgcnVudGltZSBsaWJzCVBoaWwgRWR3YXJkcwkJcG1lQGdjYy5nbnUub3JnCmMrKyBydW50aW1lIGxpYnMJQmVuamFtaW4gS29zbmlrCQlia296QHJlZGhhdC5jb20KYysrIHJ1bnRpbWUgbGlicwlMb3JlbiBKLiBSaXR0bGUJCWxqcml0dGxlQGFjbS5vcmcKKnN5bnRoZXRpYyBtdWx0aXBseQlUb3Jiam9ybiBHcmFubHVuZAl0ZWdlQHN3b3guY29tCipjLXRvcnR1cmUJCVRvcmJqb3JuIEdyYW5sdW5kCXRlZ2VAc3dveC5jb20KZml4aW5jbHVkZXMJCUJydWNlIEtvcmIJCWJrb3JiQGdudS5vcmcKZ2NzZS5jIAkJCUplZmYgTGF3CQlsYXdAcmVkaGF0LmNvbQpnbG9iYWwgb3B0IGZyYW1ld29yawlKZWZmIExhdwkJbGF3QHJlZGhhdC5jb20KanVtcC5jCQkJRGF2aWQgUy4gTWlsbGVyCQlkYXZlbUByZWRoYXQuY29tCndlYiBwYWdlcwkJR2VyYWxkIFBmZWlmZXIJCWdlcmFsZEBwZmVpZmVyLmNvbQpidWlsZCBzdGF0dXMgbGlzdHMJSmFuaXMgSm9obnNvbgkJamFuaXMxODdAdXMuaWJtLmNvbQpjb25maWcuc3ViL2NvbmZpZy5ndWVzcwlCZW4gRWxsaXN0b24JCWNvbmZpZy1wYXRjaGVzQGdudS5vcmcKYmFzaWMgYmxvY2sgcmVvcmRlcmluZwlKYXNvbiBFY2toYXJkdAkJamxlQHJpY2UuZWR1CmkxOG4JCQlQaGlsaXBwIFRob21hcwkJcHRob21hc0BzdXNlLmRlCmkxOG4JCQlKb3NlcGggTXllcnMJCWpzbUBwb2x5b21pbm8ub3JnLnVrCmRpYWdub3N0aWMgbWVzc2FnZXMJR2FicmllbCBEb3MgUmVpcwlnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0CmJ1aWxkIG1hY2hpbmVyeSAoKi5pbikJREogRGVsb3JpZQkJZGpAcmVkaGF0LmNvbQpidWlsZCBtYWNoaW5lcnkgKCouaW4pCU5hdGhhbmFlbCBOZXJvZGUJbmVyb2RlbkBnY2MuZ251Lm9yZwpidWlsZCBtYWNoaW5lcnkgKCouaW4pCUFsZXhhbmRyZSBPbGl2YQkJYW9saXZhQHJlZGhhdC5jb20KZG9jcyBjby1tYWludGFpbmVyCUdlcmFsZCBQZmVpZmVyCQlnZXJhbGRAcGZlaWZlci5jb20KZG9jcyBjby1tYWludGFpbmVyCUpvc2VwaCBNeWVycwkJanNtQHBvbHlvbWluby5vcmcudWsKcHJlZGljdC5kZWYJCUphbiBIdWJpY2thCQlqaEBzdXNlLmN6CmNvbnRyaWIvcmVncmVzc2lvbglHZW9mZiBLZWF0aW5nCQlnZW9mZmtAZ2VvZmZrLm9yZwpnY292CQkJSmFuIEh1Ymlja2EJCWpoQHN1c2UuY3oKZ2NvdgkJCU5hdGhhbiBTaWR3ZWxsCQluYXRoYW5AY29kZXNvdXJjZXJ5LmNvbQpvcHRpb24gaGFuZGxpbmcJCU5laWwgQm9vdGgJCW5laWxAZGFpa29rdXlhLmNvLnVrCnRlc3RzdWl0ZQkJSmFuaXMgSm9obnNvbgkJamFuaXMxODdAdXMuaWJtLmNvbQptaWRkbGUtZW5kCQlSb2dlciBTYXlsZQkJcm9nZXJAZXllc29wZW4uY29tCm1pZGRsZS1lbmQJCUlhbiBMYW5jZSBUYXlsb3IJaWFuQGFpcnMuY29tCnRyZWUtc3NhCQlEaWVnbyBOb3ZpbGxvCQlkbm92aWxsb0ByZWRoYXQuY29tCnRyZWUtc3NhCQlBbmRyZXcgTWFjTGVvZAkJYW1hY2xlb2RAcmVkaGF0LmNvbQpQUkUJCQlEYW5pZWwgQmVybGluCQlkYmVybGluQGRiZXJsaW4ub3JnCmNvZGUgc2lua2luZwkJRGFuaWVsIEJlcmxpbgkJZGJlcmxpbkBkYmVybGluLm9yZwptdWRmbGFwCQkJRnJhbmsgQ2guIEVpZ2xlcglmY2hlQHJlZGhhdC5jb20KdHJlZSBicm93c2VyL3VucGFyc2VyCVNlYmFzdGlhbiBQb3AJCXBvcEBjcmkuZW5zbXAuZnIKc2NldiwgZGF0YSBkZXBlbmRlbmNlICAgRGFuaWVsIEJlcmxpbgkJZGJlcmxpbkBkYmVybGluLm9yZwpzY2V2LCBkYXRhIGRlcGVuZGVuY2UJU2ViYXN0aWFuIFBvcAkJcG9wQGNyaS5lbnNtcC5mcgpsaW5lYXIgbG9vcCB0cmFuc2Zvcm1zCURhbmllbCBCZXJsaW4JCWRiZXJsaW5AZGJlcmxpbi5vcmcKcHJvZmlsZSBmZWVkYmFjawlKYW4gSHViaWNrYQkJamhAc3VzZS5jegp0eXBlLXNhZmUgdmVjdG9ycwlOYXRoYW4gU2lkd2VsbAkJbmF0aGFuQGNvZGVzb3VyY2VyeS5jb20KYWxpYXMgYW5hbHlzaXMJCURhbmllbCBCZXJsaW4JCWRiZXJsaW5AZGJlcmxpbi5vcmcKYWxpYXMgYW5hbHlzaXMJCURpZWdvIE5vdmlsbG8JCWRub3ZpbGxvQHJlZGhhdC5jb20KcmVsb2FkCQkJVWxyaWNoIFdlaWdhbmQJCXV3ZWlnYW5kQGRlLmlibS5jb20KZGZwLmMsIHJlbGF0ZWQJCUJlbiBFbGxpc3RvbgkJYmplQGF1LmlibS5jb20KUlRMIG9wdGltaXplcnMJCUVyaWMgQm90Y2F6b3UJCWVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcgoKTm90ZSBpbmRpdmlkdWFscyB3aG8gbWFpbnRhaW4gcGFydHMgb2YgdGhlIGNvbXBpbGVyIG5lZWQgYXBwcm92YWwgdG8gY2hlY2sKaW4gY2hhbmdlcyBvdXRzaWRlIG9mIHRoZSBwYXJ0cyBvZiB0aGUgY29tcGlsZXIgdGhleSBtYWludGFpbi4KCgoJCQlXcml0ZSBBZnRlciBBcHByb3ZhbAkobGFzdCBuYW1lIGFscGhhYmV0aWNhbCBvcmRlcikKCk1hcmsgRy4gQWRhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmsuZy5hZGFtc0BzeW1wYXRpY28uY2EKTWF0dCBBdXN0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVzdGVybkBhcHBsZS5jb20KRGF2aWQgQXllcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5heWVyc0Bpbm9kZS5hdApHaW92YW5uaSBCYWpvCQkJCQlnaW92YW5uaWJham9AZ2NjLmdudS5vcmcKU2NvdHQgQmFtYnJvdWdoCQkJCQlzY290dGJAbmV0d2luZGVyLm9yZwpXb2xmZ2FuZyBCYW5nZXJ0aAkJCQliYW5nZXJ0aEBkZWFsaWkub3JnCkphbiBCZXVsaWNoCQkJCQlqYmV1bGljaEBub3ZlbGwuY29tCkRhdmlkIEJpbGxpbmdodXJzdAkJCQlEYXZpZC5CaWxsaW5naHVyc3RAcmlvdGludG8uY29tCkxhdXJ5bmFzIEJpdmVpbmlzCQkJICAgICAgICBsYXVyeW5hcy5iaXZlaW5pc0BnbWFpbC5jb20KVXJvcyBCaXpqYWsJCQkJCXVyb3NAa3NzLWxva2Euc2kKRXJpYyBCbGFrZQkJCQkJZXJpY2JAZ2NjLmdudS5vcmcKSmltIEJsYW5keQkJCQkJamltYkBjb2Rlc291cmNlcnkuY29tClBoaWwgQmx1bmRlbGwJCQkJCXBiQGZ1dHVyZXR2LmNvbQpIYW5zIEJvZWhtCQkJCQloYm9laG1AZ2NjLmdudS5vcmcKU2VnaGVyIEJvZXNzZW5rb29sCQkJCXNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnClBhb2xvIEJvbnppbmkJCQkJCWJvbnppbmlAZ251Lm9yZwpOZWlsIEJvb3RoCQkJCQluZWlsQGRhaWtva3V5YS5jby51awpTdGV2ZW4gQm9zc2NoZXIJCQkJCXN0ZXZlbmIuZ2NjQGdtYWlsLmNvbQpSb2JlcnQgQm93ZGlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3dkaWRnZUBhcHBsZS5jb20KSm9lbCBCcm9iZWNrZXIJCQkJCWJyb2JlY2tlckBnbmF0LmNvbQpEYXZlIEJyb2xsZXkJCQkJCWJyb2xsZXlAcmVkaGF0LmNvbQpLZXZpbiBCdWV0dG5lcgkJCQkJa2V2aW5iQHJlZGhhdC5jb20KVG9iaWFzIEJ1cm51cwkJCQkJYnVybnVzQG5ldC1iLmRlCkFuZHJldyBDYWduZXkJCQkJCWNhZ25leUByZWRoYXQuY29tCkpvaG4gQ2FycgkJCQkJamZjQG1pdC5lZHUKU3RldmUgQ2hhbWJlcmxhaW4JCQkJc2FjQHRyYW5zbWV0YS5jb20KTWljaGFlbCBDaGFzdGFpbgkJCQltZWMuZ251QG1pbmRzcHJpbmcuY29tCkNoYW5kcmEgQ2hhdnZhCQkJCQljY2hhdnZhQHJlZGhhdC5jb20KV2lsbGlhbSBDb2hlbgkJCQkJd2NvaGVuQHJlZGhhdC5jb20KSm9zaCBDb25uZXIJCQkJCWpjb25uZXJAYXBwbGUuY29tClIuIEtlbGxleSBDb29rCQkJCQlrY29va0BnY2MuZ251Lm9yZwpDaHJpc3RpYW4gQ29ybmVsc3NlbgkJCQljY29ybkBjcy50dS1iZXJsaW4uZGUKUm9iZXJ0byBDb3N0YQkJCQkJcm9iZXJ0by5jb3N0YUBzdC5jb20KSWFuIERhbGwJCQkJCWlhbkBiZXdhcmUuZHJvcGJlYXIuaWQuYXUKRGF2aWQgRGFuZXkJCQkJCWRkYW5leUBhdnRyZXguY29tClpkZW5layBEdm9yYWsJCQkJCWR2b3Jha3pAc3VzZS5jegpNb2hhbiBFbWJhcgkJCQkJZ251c3R1ZmZAdGhpc2lzY29vbC5jb20KTWFyYyBFc3BpZQkJCQkJZXNwaWVAY3ZzLm9wZW5ic2Qub3JnClJhZmFlbCDBdmlsYSBkZSBFc3DtbmRvbGEJCQlyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbQpBbnNnYXIgRXN6dGVybWFubgkJCQlhbnNnYXJAdGhwaHkudW5pLWR1ZXNzZWxkb3JmLmRlCkRvdWcgRXZhbnMJCQkJCWRqZUB0cmFuc21ldGEuY29tCkJlcm5oYXJkIEZpc2NoZXIJCQkJcmVwLm5vcEBhb24uYXQKVGhvbWFzIEZpdHpzaW1tb25zCQkJCWZpdHpzaW1AcmVkaGF0LmNvbQpCcmlhbiBGb3JkCQkJCQlmb3JkQHZzcy5mc2kuY29tCkthdmVoIEdoYXppCQkJCQlnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1Ck1hdHRoZXcgR2luZ2VsbAkJCQkJZ2luZ2VsbEBnbmF0LmNvbQpBbnRob255IEdyZWVuCQkJCQlncmVlbkByZWRoYXQuY29tCkRvdWcgR3JlZ29yCQkJCQlkb3VnLmdyZWdvckBnbWFpbC5jb20KSm9uIEdyaW1tCQkJCQlqZ3JpbW0yQHVzLmlibS5jb20KUmljaGFyZCBHdWVudGhlcgkJCQlyZ3VlbnRoZXJAc3VzZS5kZQpMYXVyZW50IEd1ZXJieQkJCQkJbGF1cmVudEBndWVyYnkubmV0Ck1vc3RhZmEgSGFnb2cJCQkJCWhhZ29nQGdjYy5nbnUub3JnCk9saXZpZXIgSGFpbnF1ZQkJCQkJaGFpbnF1ZUBhY3QtZXVyb3BlLmZyClN0dWFydCBIYXN0aW5ncwkJCQkJc3R1YXJ0QGFwcGxlLmNvbQpNYXR0aGV3IEhpbGxlcgkJCQkJaGlsbGVyQHJlZGhhdC5jb20KTWFuZnJlZCBIb2xsc3RlaW4JCQkJbWhAc3VzZS5jb20KRmFsayBIdWVmZm5lcgkJCQkJZmFsa0BkZWJpYW4ub3JnCkFuZHJldyBKb2huIEh1Z2hlcwkJCQlnbnVfYW5kcmV3QG1lbWJlci5mc2Yub3JnCkJlcm5hcmRvIElubm9jZW50aQkJCQliZXJuaWVAZGV2ZWxlci5jb20KRGFuaWVsIEphY29ib3dpdHoJCQkJZGFuQGRlYmlhbi5vcmcKQW5kcmVhcyBKYWVnZXIJCQkJCWFqQHN1c2UuZGUKRmFyaWJvcnogSmFoYW5pYW4JCQkJZmphaGFuaWFuQGFwcGxlLmNvbQpQaGlsbGlwIEpvcmRhbgkJCQkJcGhpbGxpcC5tLmpvcmRhbkBnbWFpbC5jb20KS2xhdXMgS2FlbXBmCQkJCQlra2FlbXBmQHByb2dpcy5kZQpWaWN0b3IgS2FwbGFuc2t5CQkJCXZpY3RvcmtAaWwuaWJtLmNvbQpCcmVuZGFuIEtlaG9lCQkJCQlicmVuZGFuQHplbi5vcmcKTXVtaXQgS2hhbgkJCQkJa2hhbkB4cmF5bGl0aC53aXNjLmVkdQpNYXR0aGlhcyBLbG9zZQkJCQkJZG9rb0BkZWJpYW4ub3JnCkplZmYgS25hZ2dzCQkJCQlqa25hZ2dzQHJlZGhhdC5jb20KTWljaGFlbCBLb2NoCQkJCQlrb25xdWVyb3JAZ214LmRlCk1hdHQgS3JhYWkJCQkJCWtyYWFpQGZ0YmZzLm9yZwpBbmRyZWFzIEtyZWJiZWwJCQkJCWtyZWJiZWwxQGRlLmlibS5jb20KTWF4aW0gS3V2eXJrb3YJCQkJCW1rdXZ5cmtvdkBpc3ByYXMucnUKU2NvdHQgUm9iZXJ0IExhZGQJCQkJc2NvdHQubGFkZEBjb3lvdGVndWxjaC5jb20KUmF6eWEgTGFkZWxza3kJCQkJCXJhenlhQGdjYy5nbnUub3JnCkFhcm9uIFcuIExhRnJhbWJvaXNlCQkJCWFhcm9uYXZheTYyQGFhcm9ud2wuY29tCkFzaGVyIExhbmd0b24JCQkJCWxhbmd0b24yQGxsbmwuZ292CkNocmlzIExhdHRuZXIJCQkJCXNhYnJlQG5vbmRvdC5vcmcKVGVycnkgTGF1cmVuem8JCQkJCXRsYXVyZW56b0BnbWFpbC5jb20KTWFyYyBMZWhtYW5uCQkJCQlwY2dAZ29vZi5jb20KQWxhbiBMZWhvdHNreQkJCQkJYXBsQGFsdW0ubWl0LmVkdQpKYW1lcyBMZW1rZQkJCQkJamltQGxlbWtlLm9yZwpLcmlhbmcgTGVyZHN1d2FuYWtpagkJCQlsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQKV2FycmVuIExldnkJCQkJCXdhcnJlbmxAY3J1emlvLmNvbQpEb24gTGluZHNheQkJCQkJZGxpbmRzYXlAcmVkaGF0LmNvbQpDaGVuIExpcWluCQkJCQlsaXFpbkBzdW5ub3J0aC5jb20uY24KUmFscGggTG9hZGVyCQkJCQlyY2xAaWh1Zy5jby5uegpHYWJvciBMb2tpCQkJCQlsb2tpQGluZi51LXN6ZWdlZC5odQpTYW5kcmEgTG9vc2Vtb3JlCQkJCXNhbmRyYUBjb2Rlc291cmNlcnkuY29tCkRhdmUgTG92ZQkJCQkJZC5sb3ZlQGRsLmFjLnVrCk1hcnRpbiB2LiBM9ndpcwkJCQkJbG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlCkhKIEx1CQkJCQkJaGpsQGx1Y29uLm9yZwpaaWdhIE1haGtvdmVjCQkJCQl6aWdhLm1haGtvdmVjQGtsaWthLnNpClJhbmppdCBNYXRoZXcJCQkJCXJtYXRoZXdAaG90bWFpbC5jb20KTWljaGFlbCBNYXR6CQkJCQltYXR6QHN1c2UuZGUKR3JlZyBNY0dhcnkJCQkJCWdrbUBnbnUub3JnCkFkYW0gTWVnYWN6CQkJCQlhZGFtQHh3dC5vcmcKUm9iZXJ0IE1pbGxhbgkJCQkJcm1oQGdjYy5nbnUub3JnCkxlZSBNaWxsd2FyZAkJCQkJbGVlLm1pbGx3YXJkQGdtYWlsLmNvbQpBbGFuIE1vZHJhCQkJCQlhbW9kcmFAYmlncG9uZC5uZXQuYXUKQ2F0aGVyaW5lIE1vb3JlCQkJCQljbG1AcmVkaGF0LmNvbQpCcm9va3MgTW9zZXMJCQkJCWJtb3Nlc0BzdGFuZm9yZC5lZHUKRGlyayBNdWVsbGVyCQkJCQlkbXVlbGxlckBzdXNlLmRlCkFkYW0gTmVtZXQJCQkJCWFuZW1ldEBjYXZpdW1uZXR3b3Jrcy5jb20KRGFuIE5pY29sYWVzY3UJCQkJCWRhbm5AaWNzLnVjaS5lZHUKRG9yaXQgTnV6bWFuCQkJCQlkb3JpdEBpbC5pYm0uY29tCkRhdmlkIE8nQnJpZW4JCQkJCW9icmllbkBGcmVlQlNELm9yZwpUdXJseSBPJ0Nvbm5vcgkJCQkJdHVybHlAYXBwbGUuY29tCkNhcmxvcyBPJ0RvbmVsbAkJCQkJY2FybG9zQGNvZGVzb3VyY2VyeS5jb20KSmVmZnJleSBELiBPbGRoYW0JCQkJb2xkaGFtQGNvZGVzb3VyY2VyeS5jb20KUmFpbmVyIE9ydGgJCQkJCXJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERQpEZXZhbmcgUGF0ZWwJCQkJCWRwYXRlbEBhcHBsZS5jb20KQWxleGFuZHJlIFBldGl0LUJpYW5jbwkJCQlhcGJpYW5jb0ByZWRoYXQuY29tCk5pY29sYXMgUGl0cmUJCQkJCW5pY29AY2FtLm9yZwpDbGludG9uIFBvcGV0egkJCQkJY3BvcGV0ekBjcG9wZXR6LmNvbQpKZXJyeSBRdWlubgkJCQkJamxxdWlubkBvcHRvbmxpbmUubmV0ClJvbGYgUmFzbXVzc2VuCQkJCQlyb2xmd3JAZ2NjLmdudS5vcmcKVm9sa2VyIFJlaWNoZWx0CQkJCQlyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlClRvbSBSaXgJCQkJCQl0cml4QHJlZGhhdC5jb20KQ3JhaWcgUm9kcmlndWVzCQkJCQlyb2RyaWdjQGdjYy5nbnUub3JnCkdhdmluIFJvbWlnLUtvY2gJCQkJZ2F2aW5AcmVkaGF0LmNvbQpJcmEgUm9zZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcmFyQGlsLmlibS5jb20KTWFjaWVqIFcuIFJvenlja2kJCQkJbWFjcm9AbGludXgtbWlwcy5vcmcKSXJhIFJ1YmVuCQkJCQlpcmFAYXBwbGUuY29tCkRvdWdsYXMgUnVwcAkJCQkJcnVwcEBnbmF0LmNvbQpNYXR0aGV3IFNhY2hzCQkJCQltc2FjaHNAYXBwbGUuY29tCkFsZXggU2FtdWVsCQkJCQlzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbQpTdmVpbiBTZWxkYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdmVpbkBkZXYuc2VsZGFsLmNvbQpUaGllbW8gU2V1ZmVyCQkJCQl0aHNAbmV0d29ya25vLmRlCk1hcmsgU2hpbndlbGwJCQkJCXNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20KRnJhbnogU2lybAkJCQkJZnJhbnouc2lybC1rZXJuZWxAbGF1dGVyYmFjaC5jb20KTWljaGFlbCBTb2tvbG92CQkJCQltc29rb2xvdkBpdmFuLkhhcmhhbi5PUkcKUmljaGFyZCBTdGFsbG1hbgkJCQlybXNAZ251Lm9yZwpHcmFoYW0gU3RvdHQJCQkJCWdyYWhhbS5zdG90dEBidGludGVybmV0LmNvbQpNaWtlIFN0dW1wCQkJCQltcnNAYXBwbGUuY29tCkplZmYgU3R1cm0JCQkJCWpzdHVybUBnY2MuZ251Lm9yZwpLcmVzdGVuIEtyYWIgVGhvcnVwCQkJCWtyYWJAZ2NjLmdudS5vcmcKQ2Fyb2xpbmUgVGljZQkJCQkJY3RpY2VAYXBwbGUuY29tCk1pY2hhZWwgVGllbWFubgkJCQkJdGllbWFubkByZWRoYXQuY29tCkRhdmlkIFVuZwkJCQkJZGF2aWR1QG1pcHMuY29tCkpvbmF0aGFuIFdha2VseQkJCQkJcmVkaUBnY2MuZ251Lm9yZwpLcmlzdGVyIFdhbGZyaWRzc29uCQkJCWNhdG9AZGYubHRoLnNlCkZlbmcgV2FuZwkJCQkJZmVuZ3dhbmdAbnVkdC5lZHUuY24KSm9obiBXZWhsZQkJCQkJam9obkBmZWl0aC5jb20KRmxvcmlhbiBXZWltZXIJCQkJCWZ3QGRlbmViLmVueW8uZGUKWmFjayBXZWluYmVyZwkJCQkJemFja3dAcGFuaXguY29tCk1hcmsgV2llbGFhcmQJCQkJCW1hcmtAZ2NjLmdudS5vcmcKQ2FybG8gV29vZAkJCQkJY2FybG9AYWxpbm9lLmNvbQpDYW5xdW4gWWFuZwkJCQkJY2FucXVuQG51ZHQuZWR1LmNuCktlbm5ldGggWmFkZWNrCQkJCQl6YWRlY2tAbmF0dXJhbGJyaWRnZS5jb20KSmllIFpoYW5nCQkJCQlqaWUuemhhbmdAYW5hbG9nLmNvbQpKb24gWmllZ2xlcgkJCQkJam9uekBhcHBsZS5jb20KSm9zZWYgWmxvbWVrCQkJCQlqb3NlZi56bG9tZWtAZW1haWwuY3oKQ2hhby15aW5nIEZ1CQkJCQlmdUBtaXBzLmNvbQoKQnVnIGRhdGFiYXNlIG9ubHkgYWNjb3VudHMKCkphbWVzIERlbm5ldHQJCQkJCWpkZW5uZXR0QGFjbS5vcmcKQ2hyaXN0aWFuIEVocmhhcmR0CQkJCWVocmhhcmR0QG1hdGhlbWF0aWsudW5pLXVsbS5kZQpEYXJhIEhhemVnaGkJCQkJCWRoYXplZ2hpQHlhaG9vLmNvbQo=