CQk9PT09PT09PT0gQmludXRpbHMgTWFpbnRhaW5lcnMgPT09PT09PT09CgpUaGlzIGlzIHRoZSBsaXN0IG9mIGluZGl2aWR1YWxzIHJlc3BvbnNpYmxlIGZvciBtYWludGVuYW5jZSBhbmQgdXBkYXRlCm9mIHRoZSBHTlUgQmluYXJ5IFV0aWxpdGllcyBwcm9qZWN0LiAgVGhpcyBpbmNsdWRlcyB0aGUgbGlua2VyIChsZCksCnRoZSBhc3NlbWJsZXIgKGdhcyksIHRoZSBwcm9maWxlciAoZ3Byb2YpLCBhIHdob2xlIHN1aXRlIG9mIG90aGVyCnByb2dyYW1zIChiaW51dGlscykgYW5kIHRoZSBsaWJyYXJpZXMgdGhhdCB0aGV5IHVzZSAoYmZkIGFuZApvcGNvZGVzKS4gIFRoaXMgcHJvamVjdCBzaGFyZXMgYSBjb21tb24gc2V0IG9mIGhlYWRlciBmaWxlcyB3aXRoIHRoZQpHQ0MgYW5kIEdEQiBwcm9qZWN0cyAoaW5jbHVkZSksIHNvIG1haW50YWluZXJzaGlwIG9mIHRob3NlIGZpbGVzIGlzIApzaGFyZWQgYW1vdW5nc3QgdGhlIHByb2plY3RzLgoKVGhlIGhvbWUgcGFnZSBmb3IgYmludXRpbHMgaXM6CgogIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iaW51dGlscy9iaW51dGlscy5odG1sCgphbmQgcGF0Y2hlcyBzaG91bGQgYmUgc2VudCB0bzoKCiAgYnVnLWJpbnV0aWxzQGdudS5vcmcKICAKd2l0aCAiW1BhdGNoXSIgYXMgcGFydCBvZiB0aGUgc3ViamVjdCBsaW5lLiAgTm90ZSAtIHBhdGNoZXMgdG8gdGhlCnRvcCBsZXZlbCBjb25maWd1cmUuaW4gYW5kIGNvbmZpZy5zdWIgc2NyaXB0cyBzaG91bGQgYmUgc2VudCB0bzoKCiAgY29uZmlnLXBhdGNoZXNAZ251Lm9yZwoKYW5kIG5vdCB0byB0aGUgYmludXRpbHMgbGlzdC4KCgkJLS0tLS0tLS0tIEJsYW5rZXQgV3JpdGUgUHJpdnMgLS0tLS0tLS0tCgpUaGUgZm9sbG93aW5nIHBlb3BsZSBoYXZlIHBlcm1pc3Npb24gdG8gY2hlY2sgcGF0Y2hlcyBpbnRvIHRoZQpyZXBvc2l0b3J5IHdpdGhvdXQgb2J0YWluaW5nIGFwcHJvdmFsIGZpcnN0OgoJCQogIE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4gKGhlYWQgbWFpbnRhaW5lcikKICBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+CiAgSWFuIFRheWxvciA8aWFuQGFpcnMuY29tPgogIEplZmYgTGF3IDxsYXdAcmVkaGF0LmNvbT4KICBKaW0gV2lsc29uIDx3aWxzb25AdHVsaXB0cmVlLm9yZz4KICBESiBEZWxvcmllIDxkakByZWRoYXQuY29tPgogIEFsYW4gTW9kcmEgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KICBNaWNoYWVsIE1laXNzbmVyIDxtZWlzc25lckByZWRoYXQuY29tPgoKICAgICAgLS0tLS0tLS0tIE1haW50YWluZXJzIC0tLS0tLS0tLQoKTWFpbnRhaW5lcnMgYXJlIGluZGl2aWR1YWxzIHdobyBhcmUgcmVzcG9uc2libGUgZm9yLCBhbmQgaGF2ZQpwZXJtaXNzaW9uIHRvIGNoZWNrIGluIGNoYW5nZXMgaW4sIGNlcnRhaW4gc3Vic2V0cyBvZiB0aGUgY29kZS4gIE5vdGUKdGhhdCBtYWludGFpbmVycyBzdGlsbCBuZWVkIGFwcHJvdmFsIHRvIGNoZWNrIGluIGNoYW5nZXMgb3V0c2lkZSBvZgp0aGUgaW1tZWRpYXRlIGRvbWFpbiB0aGF0IHRoZXkgbWFpbnRhaW4uCgpJZiB0aGVyZSBpcyBubyBtYWludGFpbmVyIGZvciBhIGdpdmVuIGRvbWFpbiB0aGVuIHRoZSByZXNwb25zaWJpbGl0eQpmYWxscyB0byB0aGUgaGVhZCBtYWludGFpbmVyIChhYm92ZSkuICBJZiB0aGVyZSBhcmUgc2V2ZXJhbAptYWludGFpbmVycyBmb3IgYSBnaXZlbiBkb21haW4gdGhlbiByZXNwb25zaWJpbGl0eSBmYWxscyB0byB0aGUgZmlyc3QKbWFpbnRhaW5lci4gIFRoZSBmaXJzdCBtYWludGFpbmVyIGlzIGZyZWUgdG8gZGV2b2x2ZSB0aGF0CnJlc3BvbnNpYmlsaXR5IGFtb25nIHRoZSBvdGhlciBtYWludGFpbmVycy4KCiAgQUxQSEEgICAgICAgICAgICBSaWNoYXJkIEhlbmRlcnNvbiA8cnRoQHJlZGhhdC5jb20+CiAgQVJNCQkgICBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+CiAgQVJNCQkgICBSaWNoYXJkIEVhcm5zaGF3IDxyZWFybnNoYUBhcm0uY29tPgogIEFWUgkJICAgRGVuaXMgQ2hlcnR5a292IDxkZW5pc2NAb3ZlcnRhLnJ1PgogIEFWUgkJICAgTWFyZWsgTWljaGFsa2lld2ljeiA8bWFyZWttQGFtZWxlay5nZGEucGw+CiAgQ09ORklHVVJFCSAgIEJlbiBFbGxpc3RvbiA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgogIENSSVMJCSAgIEhhbnMtUGV0ZXIgTmlsc3NvbiA8aHBAYXhpcy5jb20+CiAgRFdBUkYyCSAgIEphc29uIE1lcnJpbGwgPGphc29uQHJlZGhhdC5jb20+CiAgRlIzMAkJICAgRGF2ZSBCcm9sbGV5IDxicm9sbGV5QHJlZGhhdC5jb20+CiAgRlJWCQkgICBEYXZlIEJyb2xsZXkgPGJyb2xsZXlAcmVkaGF0LmNvbT4KICBIUFBBIGVsZjMyCSAgIEFsYW4gTW9kcmEgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KICBIUFBBIGVsZjY0CSAgIEplZmYgTGF3IDxsYXdAcmVkaGF0LmNvbT4gW0Jhc2ljIG1haW50YWluYW5jZSBvbmx5XQogIEhQUEEJCSAgIERhdmUgQW5nbGluIDxkYXZlLmFuZ2xpbkBucmMuY2E+CiAgSUEtNjQJCSAgIEppbSBXaWxzb24gPHdpbHNvbkB0dWxpcHRyZWUub3JnPgogIElRMjAwMAkgICBTdGFuIENveCA8c2NveEByZWRoYXQuY29tPgogIGk4NjAJCSAgIEphc29uIEVja2hhcmR0IDxqbGVAcmVkaGF0LmNvbT4KICBpeDg2CQkgICBBbGFuIE1vZHJhIDxhbW9kcmFAYmlncG9uZC5uZXQuYXU+CiAgaXg4NiBQRQkgICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkByZWRoYXQuY29tPgogIGl4ODYgQ09GRgkgICBESiBEZWxvcmllIDxkakByZWRoYXQuY29tPgogIGl4ODYJCSAgIEguSi5MdSA8aGpsQGdudS5vcmc+CiAgaXg4NiBJTlRFTCBNT0RFICBEaWVnbyBOb3ZpbGxvIDxkbm92aWxsb0ByZWRoYXQuY29tPgogIE02OEhDMTEgTTY4SEMxMiAgU3RlcGhhbmUgQ2FycmV6IDxzdGNhcnJlekBuZXJpbS5mcj4KICBNNjhrCQkgICBCZW4gRWxsaXN0b24gPGJqZUB3YXNhYmlzeXN0ZW1zLmNvbT4KICBNODhrCQkgICBCZW4gRWxsaXN0b24gPGJqZUB3YXNhYmlzeXN0ZW1zLmNvbT4KICBNSVBTCQkgICBFcmljIENocmlzdG9waGVyIDxlY2hyaXN0b0ByZWRoYXQuY29tPgogIE1NSVgJCSAgIEhhbnMtUGV0ZXIgTmlsc3NvbiA8aHBAYml0cmFuZ2UuY29tPgogIE1OMTAzMDAJICAgRXJpYyBDaHJpc3RvcGhlciA8ZWNocmlzdG9AcmVkaGF0LmNvbT4KICBNTjEwMzAwCSAgIEFsZXhhbmRyZSBPbGl2YSA8YW9saXZhQHJlZGhhdC5jb20+CiAgUFBDCQkgICBHZW9mZiBLZWF0aW5nIDxnZW9mZmtAZ2VvZmZrLm9yZz4KICBQUEMgdmVjdG9yIGV4dCAgIEFsZHkgSGVybmFuZGV6IDxhbGR5aEByZWRoYXQuY29tPgogIHMzOTAsIHMzOTB4CSAgIE1hcnRpbiBTY2h3aWRlZnNreSA8c2Nod2lkZWZza3lAZGUuaWJtLmNvbT4KICBTSAkJICAgSvZybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3VwZXJoLmNvbT4KICBTSAkJICAgQWxleGFuZHJlIE9saXZhIDxhb2xpdmFAcmVkaGF0LmNvbT4KICBTSAkJICAgS2F6IEtvamltYSA8a2tvamltYUByci5paWo0dS5vci5qcD4KICBTUEFSQwkJICAgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KICBURVNUU1VJVEVTCSAgIEJlbiBFbGxpc3RvbiA8YmplQHdhc2FiaXN5c3RlbXMuY29tPgogIFRJQzRYICAgICAgICAgICAgU3ZlaW4gU2VsZGFsIDxzdmVpbi5zZWxkYWxAc29saWRhcy5jb20+CiAgVElDNTRYICAgICAgICAgICBUaW1vdGh5IFdhbGwgPHR3YWxsQGFsdW0ubWl0LmVkdT4KICBWQVgJCSAgIEphc29uIFIgVGhvcnBlIDx0aG9ycGVqQHdhc2FiaXN5c3RlbXMuY29tPgogIHg4Nl82NAkgICBKYW4gSHViaWNrYSA8amhAc3VzZS5jej4KICB4ODZfNjQJICAgQW5kcmVhcyBKYWVnZXIgPGFqQHN1c2UuZGU+CiAgWHRlbnNhCSAgIEJvYiBXaWxzb24gPGJvYi53aWxzb25AYWNtLm9yZz4KICB6OGsJCSAgIENocmlzdGlhbiBHcm9lc3NsZXIgPGNocmlzQGdyb2Vzc2xlci5vcmc+CgoKICAgICAgLS0tLS0tLS0tIENHRU4gTWFpbnRhaW5lcnMgLS0tLS0tLS0tLS0tLQoKQ0dFTiBpcyBhIHRvb2wgZm9yIGJ1aWxkaW5nLCBhbW9uZ3N0IG90aGVyIHRoaW5ncywgYXNzZW1ibGVycywKZGlzYXNzZW1ibGVycyBhbmQgc2ltdWxhdG9ycyBmcm9tIGEgc2luZ2xlIGRlc2NyaXB0aW9uIG9mIGEgQ1BVLgpJdCBjcmVhdGVzIGZpbGVzIGluIHNldmVyYWwgb2YgdGhlIGJpbnV0aWxzIGRpcmVjdG9yaWVzLCBidXQgaXQKaXMgbWVudGlvbmVkIGhlcmUgc2luY2UgdGhlcmUgaXMgYSBzaW5nbGUgZ3JvdXAgdGhhdCBtYWludGFpbnMKQ0dFTiBhbmQgdGhlIGZpbGVzIHRoYXQgaXQgY3JlYXRlcy4gCgpJZiB5b3UgaGF2ZSBDR0VOIHJlbGF0ZWQgcHJvYmxlbXMgeW91IGNhbiBzZW5kIGVtYWlsIHRvOwoKICAgY2dlbkBzb3VyY2VzLnJlZGhhdC5jb20KClRoZSBjdXJyZW50IENHRU4gbWFpbnRhaW5lcnMgYXJlOgoKICBEb3VnIEV2YW5zLCBCZW4gRWxsaXN0b24sIEZyYW5rIEVpZ2xlcgoKICAgICAtLS0tLS0tLS0gV3JpdGUgQWZ0ZXIgQXBwcm92YWwgLS0tLS0tLS0tCgpJbmRpdmlkdWFscyB3aXRoICJ3cml0ZSBhZnRlciBhcHByb3ZhbCIgaGF2ZSB0aGUgYWJpbGl0eSB0byBjaGVjayBpbgpjaGFuZ2VzLCBidXQgdGhleSBtdXN0IGdldCBhcHByb3ZhbCBmb3IgZWFjaCBjaGFuZ2UgZnJvbSBzb21lb25lIGluCm9uZSBvZiB0aGUgYWJvdmUgbGlzdHMgKGJsYW5rZXQgd3JpdGUgb3IgbWFpbnRhaW5lcnMpLgoKW0l0J3MgYSBodWdlIGxpc3QsIGZvbGtzLiAgWW91IGtub3cgd2hvIHlvdSBhcmUuICBJZiB5b3UgaGF2ZSB0aGUKICphYmlsaXR5KiB0byBkbyBiaW51dGlscyBjaGVja2lucywgeW91J3JlIGluIHRoaXMgZ3JvdXAuICBKdXN0CiByZW1lbWJlciB0byBnZXQgYXBwcm92YWwgYmVmb3JlIGNoZWNraW5nIGFueXRoaW5nIGluLl0KCiAgICAgLS0tLS0tLS0tLS0tLSAgT2J2aW91cyBGaXhlcyAtLS0tLS0tLS0tLS0tCgpGaXhlcyBmb3Igb2J2aW91cyBtaXN0YWtlcyBkbyBub3QgbmVlZCBhcHByb3ZhbCwgYW5kIGNhbiBiZSBjaGVja2VkIGluCnJpZ2h0IGF3YXksIGJ1dCB0aGUgcGF0Y2ggc2hvdWxkIHN0aWxsIGJlIHNlbnQgdG8gdGhlIGJpbnV0aWxzIGxpc3QuClRoZSBkZWZpbml0aW9uIG9mIG9idmlvdXMgaXMgYSBiaXQgaGF6eSwgYW5kIGlmIHlvdSBhcmUgbm90IHN1cmUsIHRoZW4KeW91IHNob3VsZCBzZWVrIGFwcHJvdmFsIGZpcnN0LiAgT2J2aW91cyBmaXhlcyBpbmNsdWRlIGZpeGVzIGZvcgpzcGVsbGluZyBtaXN0YWtlcywgYmxhdGFudGx5IGluY29ycmVjdCBjb2RlICh3aGVyZSB0aGUgY29ycmVjdCBjb2RlIGlzCmFsc28gYmxhdGFudGx5IG9idmlvdXMpLCBhbmQgc28gb24uICBPYnZpb3VzIGZpeGVzIHNob3VsZCBhbHdheXMgYmUKc21hbGwsIHRoZSBsYXJnZXIgdGhleSBhcmUsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0aGF0IHRoZXkgY29udGFpbgpzb21lIHVuLW9idmlvdXMgc2lkZSBlZmZlY3Qgb3IgY29uc2VxdWVuY2UuCgogICAgLS0tLS0tLS0tIEJyYW5jaCBDaGVja2lucyAtLS0tLS0tLS0KCklmIGEgcGF0Y2ggaXMgYXBwcm92ZWQgZm9yIGNoZWNrIGluIHRvIHRoZSBtYWlubGluZSBzb3VyY2VzLCBpdCBjYW4KYWxzbyBiZSBjaGVja2VkIGludG8gdGhlIGN1cnJlbnQgcmVsZWFzZSBicmFuY2guICBOb3JtYWxseSBob3dldmVyCm9ubHkgYnVnIGZpeGVzIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSBicmFuY2guICBOZXcgZmVhdHVyZXMsIG5ldwpwb3J0cywgZXRjLCBzaG91bGQgYmUgcmVzdHJpY3RlZCB0byB0aGUgbWFpbmxpbmUuICAoT3RoZXJ3aXNlIHRoZQpidXJkZW4gb2YgbWFpbnRhaW5pbmcgdGhlIGJyYW5jaCBpbiBzeW5jIHdpdGggdGhlIG1haW5saW5lIGJlY29tZXMgdG9vIApncmVhdCkuICBJZiB5b3UgYXJlIHVuY2VydGFpbiBhcyB0byB3aGV0aGVyIGEgcGF0Y2ggaXMgYXBwcm9wcmlhdGUgZm9yCnRoZSBicmFuY2gsIGFzayB0aGUgYnJhbmNoIG1haW50YWluZXIuICBUaGlzIGlzOgoKICAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AZGViaWFuLm9yZz4KCiAgICAtLS0tLS0tLSBUZXN0c3VpdGVzIC0tLS0tLS0tLS0tLS0tLQoKSW4gZ2VuZXJhbCBwYXRjaGVzIHRvIGFueSBvZiB0aGUgYmludXRpbHMgdGVzdHN1aXRlcyBzaG91bGQgYmUKY29uc2lkZXJlZCBnZW5lcmljIGFuZCBzZW50IHRvIHRoZSBiaW51dGlscyBtYWlsaW5nIGxpc3QgZm9yCmFwcHJvdmFsLiAgUGF0Y2hlcyB0byB0YXJnZXQgc3BlY2lmaWMgdGVzdHMgYXJlIHRoZSByZXNwb25zaWJpbGl0eSB0aGUKcmVsZXZlbnQgcG9ydCBtYWludGFpbmVyKHMpLCBhbmQgY2FuIGJlIGFwcHJvdmVkL2NoZWNrZWQgaW4gYnkgdGhlbS4KT3RoZXIgdGVzdHN1aXRlIHBhdGNoZXMgbmVlZCB0aGUgYXBwcm92YWwgb2YgYSBibGFua2V0LXdyaXRlLXByaXZlbGVnZXMKcGVyc29uLgoKICAgIC0tLS0tLS0tIENvbmZpZ3VyZSBwYXRjaGVzIC0tLS0tLS0tLS0KClBhdGNoZXMgdG8gdGhlIHRvcCBsZXZlbCBjb25maWd1cmUgZmlsZXMgKGNvbmZpZy5zdWIgJiBjb25maWcuZ3Vlc3MpCmFyZSBub3QgdGhlIGRvbWFpbiBvZiB0aGUgYmludXRpbHMgcHJvamVjdCBhbmQgdGhleSBjYW5ub3QgYmUgYXBwcm92ZWQKYnkgdGhlIGJpbnV0aWxzIGdyb3VwLiAgSW5zdGVhZCB0aGV5IHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gdGhlIGNvbmZpZwptYWludGFpbmVyIGF0OgoKCWNvbmZpZy1wYXRjaGVzQGdudS5vcmcK