MTk5OS0xMi0xOCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW46IE9vcHMsIGBsYXJnYXJnJyAtPiBgbGFzdGFyZycuCgoJKiBsdG1haW4uaW4gKC1XYywgLVhjb21waWxlcik6IEltcGxlbWVudGVkIGluIGNvbXBpbGUgbW9kZS4KCgkqIGx0bWFpbi5pbiAoLVhjb21waWxlciwgLVhsaW5rZXIpOiBBZGQgdG8gY29tcGlsZV9jb21tYW5kIGFuZAoJZmluYWxpemVfY29tbWFuZC4KCSgtV2MsIC1XbCk6IExpa2V3aXNlLgoKCSogdGVzdHMvcXVvdGUudGVzdDogQWRqdXN0IHF1b3Rpbmcgc3R5bGUgb2YgLVdsLgoKCSogbHRtYWluLmluOiBPb3BzLCBgZWNobycgLT4gYCRlY2hvJy4KCgkqIGx0bWFpbi5pbiAoLVdsLCAtV2MpOiBNYWtlIGNvbW1hcyBhcmd1bWVudCBzZXBhcmF0b3JzLCBqdXN0IGxpa2UKCWluIGdjYy4KCgkqIGx0bWFpbi5pbiAobGlidG9vbF9hcmdzKTogR2V0IGFsbCBhcmd1bWVudHMgcHJvcGVybHkgZW5jbG9zZWQgaW4KCXF1b3RlcyBhbmQgYmFja3NsYXNoLXByb3RlY3RlZCB3aGVuIG5lZWRlZC4KCjE5OTktMTItMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRkbC5tNDogUmVuYW1lZCBmcm9tLi4uCgkqIGxpYmx0ZGwvbHRkbC5tNDogdGhhdCBubyBsb25nZXIgZXhpc3RzLgoJKiBjb25maWd1cmUuaW4gKEFDSU5DTFVERV9NNF9MSVNUKTogUmVtb3ZlZCBsaWJsdGRsL2FjaW5jbHVkZS5tNC4KCSogTWFrZWZpbGUuYW0gKGFjbG9jYWxfbWFjcm9zKTogQWRkZWQgbHRkbC5tNC4KCShsaWJsdGRsL2FjaW5jbHVkZS5tNCk6IENvbmNhdGVuYXRlIGxpYnRvb2wubTQgYW5kIGx0ZGwubTQuCgkqIGJvb3RzdHJhcDogTGlrZXdpc2UuCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKEFDTE9DQUwpOiBSZW1vdmUgdGhlIGRlZmluaXRpb24uICBSZWx5aW5nCgl1cG9uIC1JIG1heSBsZWFkIHRvIGR1cGxpY2F0ZXMuCgkqIGRvYy9saWJ0b29sLnRleGk6IFN1Z2dlc3QgYXBwZW5kaW5nIGx0ZGwubTQgdG8gYWNpbmNsdWRlLm00LgoJKiBsaWJ0b29saXplLmluOiBDaGVjayBBQ19MSUJfTFRETCB2ZXJzaW9uIG51bWJlciBpbiBhY2xvY2FsLm00LgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKHdpdGhfYXV4ZGlyKTogRG8gbm90IHVzZSBpdCBhcyB0aGUKCWFyZ3VtZW50IG9mIEFDX0NPTkZJR19BVVhfRElSLCBhdXRvbWFrZSByZXF1aXJlcyBhIGxpdGVyYWwgaGVyZS4KCVVzZSBBQ19DT05GSUdfQVVYX0RJUlMvRElSX0RFRkFVTFQgaW5zdGVhZC4KCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0gKEFDTE9DQUwpOiBEZWZpbmUgd2l0aCBgLUkgLicsIGFzIGluCglib290c3RyYXAuCgoxOTk5LTEyLTE1ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHBhdGggdG8gYXV4aWxpYXJ5IGZpbGVzIGNhbiBiZSBzcGVjaWZpZWQKCSAgdXNpbmcgLS13aXRoLWF1eGRpciAoaWRlYSBieSBIb3dhcmQgQ2h1IDxoeWNAaGlnaGxhbmRzdW4uY29tPikKCgkqIGx0bWFpbi5pbjogZG9uJ3QgcmVtb3ZlIG11bHRpcGxlIG9jY3VyZW5jZXMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKCSAgb2YgYSBsaWJyYXJ5LCBvdGhlcndpc2UgbWFueSBkZXBlbmRlbmNpZXMgd291bGQgZ2V0IGxvc3QKCgkqIGJvb3RzdHJhcDogdXNlICJhY2xvY2FsIC1JIC4iIGluc3RlYWQgb2YgYWRkaW5nIHRoZSBjb250ZW50cwoJICBvZiBsdGRsLm00IHRvIGFjaW5jbHVkZS5tNAoKMTk5OS0xMi0xMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogTkVXUzogdXBkYXRlZC4KCSogbGlibHRkbC9NYWtlZmlsZS5hbTogVXNlIC1uby11bmRlZmluZWQgZm9yIGRsbCBjb21wbGlhbmNlLgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogVXNlIEFDX0xJQlRPT0xfV0lOMzJfRExMIGZvciBkbGwKCWNvbXBsaWFuY2UuCgkqIGxpYmx0ZGwvbHRkbC5jOiBEZWZpbmUgYW5kIHVzZSBMVERMX0dMT0JBTF9EQVRBIHRvIGNvcnJlY3RseQoJZXhwb3J0IGdsb2JhbCBkYXRhIHN5bWJvbHMgZnJvbSBsaWJsdGRsLmRsbC4KCSogbGlibHRkbC9sdGRsLmg6IERlZmluZSBhbmQgdXNlIExURExfU0NPUEUgdG8gZGVjbGFyZSBkYXRhCglzeW1ib2xzIGFzIGRsbGV4cG9ydCwgZGxsaW1wb3J0IG9yIHBsYWluIG9ybmFyeSBleHRlcm4gZGVwZW5kaW5nCglpbiB0aGUgY29udGV4dCBpbiB3aGljaCBpdCBpcyB1c2VkLgoKCSogZG9jL2xpYnRvb2wudGV4aSAoRGlzdHJpYnV0aW5nIGxpYmx0ZGwpOiBkb2N1bWVudCB1c2Ugb2YKCWx0ZGwubTQuCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBSZW1vdmVkIGhlYWRlciBjaGVja3MsIGFzIHRoZXkgYXJlCiAgICAgICAgYXV0b21hdGljYWxseSBwZXJmb3JtZWQgYnkgQUNfTElCX0xUREwuCgkqIGxpYmx0ZGwvbHRkbC5tNDogQWRkZWQgaGVhZGVyIGNoZWNrcyBmcm9tIGNvbmZpZ3VyZS5pbiwgc28gdGhhdAoJQUNfTElCX0xUREwgaXMgc3VmZmljaWVudCB0byBjb21waWxlIGx0ZGwuYy4KCVJlcG9ydGVkIGJ5IFN0ZXBoYW4gS3Vsb3cgPGNvb2xvQGtkZS5vcmc+LgoKCSogbHRjb25maWcuaW4gKGx0ZGxsX29iaik6IGZpeGVkIHR5cG86IG9iamRpciAtPiAkb2JqZGlyCgoxOTk5LTEyLTEyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbiAoY3lnd2luKiwgbWluZ3cqLCBleHBvcnRfc3ltYm9sc19jbWRzKToga2VlcCBhbnkKCURBVEEgdGFncyBhc3NvY2lhdGVkIHdpdGggc3ltYm9scyBieSByZWNlbnQgZGxsdG9vbC4KCShjeWd3aW4qLCBtaW5ndyosIGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBIb25vciBhbnkgREFUQSB0YWdzCglmb3VuZCBpbiB0aGUgc3ltYm9sIGxpc3QuCglSZXBvcnRlZCBieSBKb24gTGVpY2h0ZXIgPGpvbkBzeW1hcy5jb20+LgoKMTk5OS0xMi0xMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gU3RlcGhhbiBLdWxvdyA8Y29vbG9Aa2RlLm9yZz4KCSogbGlibHRkbC9sdGRsLm00OiAgQWRkIGFyZyAzIHRvIEFDX0RFRklORSdzIHRvIHNhdmUgdGhlIHVzZXIKCWZyb20gaGF2aW5nIHRvIGhhY2sgYWNjb25maWcuaC4KCjE5OTktMTItMDYgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIFRPRE86IE5vdGUgc29tZSBjbGVhbnVwcyB0aGF0IGFyZSBub3cgbmVlZGVkLgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogVXNlIHRoZSBuZXcgbWFjcm9pc2VkIHRlc3RzLgoJKiBsaWJsdGRsL2x0ZGwubTQ6IE5ldyBmaWxlLCBtYWNyb2lzZWQgdGVzdHMgZm9ybWVybHkgaW4KCWxpYmx0ZGwvY29uZmlndXJlLmluLgoJUmVwb3J0ZWQgYnkgU3RlcGhhbiBLdWxvdyA8Y29vbG9Aa2RlLm9yZz4uCgoJRnJvbSBUaW0gTW9vbmV5ICA8bW9vbmV5QGRvZ2JlcnQuY2MubmRzdS5Ob0Rhay5lZHU+CgkqIGx0Y29uZmlnLmluOiAgc3BsaXQgb2ZmIHRoZSBvc2YzIHNlY3Rpb24sIHNvIHRoYXQgdGhlIG9zZjQgYW5kCglvc2Y1IHNlY3Rpb25zIGNhbiBhZGQgYC1tc3ltJyB0byBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBsaW5rZXIKCWZvciBzaGFyZWQgbGlicy4KCjE5OTktMTItMDMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGFjX2NvbXBpbGUpOiBVc2UgJGFjX2V4dCBpbnN0ZWFkIG9mIC5jLgoJKGFjX2xpbmspOiBMaWtld2lzZS4KCShkbGZjbi5oLCBhY190cnkpOiBEbyBub3QgYWRkIGZpbGVuYW1lLCBpdCBpcyBhbHJlYWR5IGluCglhY19jb21waWxlLgoJUmVwb3J0ZWQgYnkgU3RlcGhhbmUgQ29udmVyc3kgPFN0ZXBoYW5lLkNvbnZlcnN5QGxyaS5mcj4KCgkqIGx0Y29uZmlnLmluIChsaW51eC1nbnUqKTogRGlzYWJsZSBoYXJkY29kZV9pbnRvX2xpYnMgdW50aWwgaXQKCXdvcmtzIHRvZ2V0aGVyIHdpdGggZmFzdF9pbnN0YWxsLgoKCSogbGlidG9vbC5tNDogVXNlIGhvc3Qgd2hlbiAtLXRhcmdldCBpcyBub3Qgc3BlY2lmaWVkLgoKCSogY29uZmlndXJlLmluOiBBQ19TVUJTVCB2YXJpYWJsZXMgdGhhdCBhcmUgdXNlZCBieSBsdGNvbmZpZyB0bwoJYnVpbGQgbGlidG9vbC4KCgkqIGx0Y29uZmlnLmluIChpcml4NiopOiBEbyBub3Qgb3ZlcnJpZGUgZGVwbGlic19jaGVja19tZXRob2QKCWhlcmUuCgoJKiBsaWJ0b29sLm00OiBEbyBub3QgQUNfU1VCU1QgYW55dGhpbmcgb3RoZXIgdGhhbiBMSUJUT09MLgoKMTk5OS0xMS0yMCAgTWljaGFlbCBGb3JzdGVyICA8ZW1haWxAbWljaGFlbC1mb3JzdGVyLmRlPgoKCSogbHRjb25maWcuaW4gKGxpbnV4LWdudSopOiBTZXQgaGFyZGNvZGVfaW50b19saWJzPXllcy4KCjE5OTktMTEtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluOiAgQmUgZnJpZW5kbGllciB0byBDKysgY29tcGlsZXJzIHdoZW4gdGVzdGluZwoJZm9yIGRsb3BlbiBzdXBwb3J0LgoJUmVwb3J0ZWQgYnkgU3RlcGhhbiBLdWxvdyA8Y29vbG9AaXRtLm11LWx1ZWJlY2suZGU+CgoxOTk5LTExLTI2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00OiAgYmV0dGVyIHVzZSBvZiAkdGFyZ2V0IGluc3RlYWQgb2YgJGhvc3QgdG8gc3VwcG9ydAoJY3Jvc3MgY29tcGlsYXRpb24uCglSZXBvcnRlZCBieSBTYW0gTGF0aW5nYSA8c2xvdWtlbkBkZXZvbHV0aW9uLmNvbT4KCjE5OTktMTEtMTYgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBjb25maWd1cmUuaW46IGdlbmVyYXRlIGx0Y29uZmlnIGFuZCBsdG1haW4uc2ggYmVmb3JlIGNvbmZpZ3VyaW5nCgkgIGxpYmx0ZGwKCjE5OTktMTEtMDQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogdGVzdHMvc2gudGVzdDogTmV3IHRlc3QgdG8gZGV0ZWN0IHVzZXMgb2YgcXVvdGVzIHdpdGhpbgoJYmFja3RpY2tzIHdpdGhpbiBxdW90ZXMuCgkqIGx0Y29uZmlnLmluLCBsdG1haW4uaW46IEZpeCBkZXRlY3RlZCBlcnJvcnMuICBNYXJrIGZhbHNlCglwb3NpdGl2ZXMgd2l0aCBhIGNvbW1lbnQgdGhhdCBkaXNhYmxlcyB0aGUgZGV0ZWN0b3IuCglSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlIDxha2ltQGVwaXRhLmZyPgoKCSogY29uZmlndXJlLmluOiBNb3ZlIGx0Y29uZmlnIGFuZCBsdG1haW4uc2ggZ2VuZXJhdGlvbiBiYWNrLi4uCgkqIE1ha2VmaWxlLmFtOiBoZXJlLgoKMTk5OS0xMS0wMiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIE5FV1M6IHVwZGF0ZWQKCSogVEhBTktTOiBhZGRlZCBPbGx5IEJldHRzIGFuZCBQYXZlbCBSb3NraW4KCSogZG9jL2xpYnRvb2wudGV4aTogZml4IHR5cG8KCgkqIGZpeCBtYWpvciBidWdzIHdoaWNoIHJlbmRlcmVkIGxpYnRvb2wgdmlydHVhbGx5CgkgIHVudXNhYmxlIChpLmUuIG5vdCBwb3J0YWJsZSk6CgkqIGx0Y29uZmlnLmluOiBkb24ndCBoYXJkY29kZSBzeXN0ZW0gZGVwZW5kZW50IHZhcmlhYmxlcyBpbiBsdGNvbmZpZyEhCgkgIGJ1dCBzZXQgc2FuZSBkZWZhdWx0cwoJKiBNYWtlZmlsZS5hbTogcGFzcyB2YXJpYWJsZXMgZnJvbSBBQ19MSUJUT09MX1NFVFVQIHRvIGx0Y29uZmlnCgkqIGxpYnRvb2wubTQ6IGRpdHRvLCBmaXggdHlwbyBpbiBBQ19QUk9HX0xEX1JFTE9BRF9GTEFHCgoJKiBsdGNvbmZpZy5pbjogdXNlIG9sZF9kZXBsaWJzIGZvciBhcmNoaXZlcywgdG9vCgkgIHJlbW92ZSBzZWNvbmQgb2NjdXJlbmNlIG9mIHN5c3Y1CgkqIGx0bWFpbi5pbjogZml4IHR5cG8sIGZpeCB0aGUgc2Vjb25kIG9jY3VyZW5jZSBvZiAtRFBJQywgdG9vCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBpbmNyZW1lbnQgdmVyc2lvbiBudW1iZXIsIGZpeCB0eXBvCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbHN5bSk6IGRvbid0IHJlcG9ydCBhbiBlcnJvciBpZiB0aGUKCSAgbGlibHRkbC1zdHlsZSBzeW1ib2wgbmFtZSB3YXNuJ3QgZm91bmQKCjE5OTktMTEtMDIgIFdvbGZnYW5nIFJhcHAgPHVscmlzQGJuLXVsbS5kZT4KCgkqIGx0Y29uZmlnLmluOiBhZGQgc3VwcG9ydCBmb3IgVW5peHdhcmUgKHN5c3Y0LjJ1dzIqKQoKMTk5OS0xMC0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRtYWluLmluOiAgRGFtbml0ISAgQ3lnd2luIGN2cyBjb21taXR0ZWQgYWxsIHRoZQoJZG9zIGxpbmUgZW5kaW5ncy4KCjE5OTktMTAtMjggIFN0ZXBoYW5lIENvbnZlcnN5ICA8U3RlcGhhbmUuQ29udmVyc3lAbHJpLmZyPgoKCSogbHRtYWluLmluICgtRFBJQyk6ICBjaGFuZ2VkIHRoZSBvcmRlciBvZiBwaWMgZmxhZ3MgYSBsaXR0bGUgdG8KCXByZXZlbnQgdXBzZXR0aW5nIHRoZSBzZ2kgYysrIGNvbXBpbGVyLgoKMTk5OS0xMC0yOCAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogbHRjb25maWcuaW4gKG9wdF9jcik6ICBIYW5kbGUgY3JsZiBzZXF1ZW5jZXMgb3V0cHV0IGJ5IHRoZQoJbWluZ3cgdG9vbGNoYWluLgoKCSogbGlidG9vbC5tNDogIFRoaXJkIHRpbWUgbHVja3ksIHdpdGggVG9yJ3MgcGF0Y2guCgoxOTk5LTEwLTE5ICBUb3IgTGlsbHF2aXN0ICA8dG1sQGlraS5maT4KCgkqIGxpYnRvb2wubTQ6ICB0aGVzZSB3YXMgYSBtaXNzaW5nIGAqJyBpbiB0aGUgLW1uby1jeWd3aW4KCW1hdGNoLgoJKiBsdGNvbmZpZy5pbiAoY3lnd2luLCBsdGRsbF9vYmopOiBmaXhlZCBhIHF1b3RpbmcgZXJyb3IuCgkoZXhwb3J0X3N5bWJvbHNfY21kcyk6IGFkZGVkIG1pc3NpbmcgY29zbWV0aWMgbmV3bGluZS4KCjE5OTktMTAtMTggIFRvciBMaWxscXZpc3QgIDx0bWxAaWtpLmZpPgoKCSogbGlidG9vbC5tNDogdGVzdCBjb21tYW5kIHVzZWQgPT0gd2hpY2ggc2hvdWxkIGJlID0uCglTdXBwb3J0IC1tbm8tY3lnd2luIGZsYWcgZm9yIGJ1aWxkaW5nIG1pbmd3MzIgZGxscy4KCSogbHRjb25maWcuaW4gKGZpbGVfbWFnaWNfY21kKTogYWRkIG1pc3NpbmcgcXVvdGVzLgoJKGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogYW5kIGhlcmUuCgoxOTk5LTEwLTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBEbyBub3Qgc2VhcmNoIHBhdGhzIHdoZW4gdGhlCglzcGVjaWZpZWQgbGlicmFyeSBpcyBub3QganVzdCBhIGJhc2VuYW1lLgoKMTk5OS0xMC0xMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoQUNfUEFUSF9GSUxFKTogbmV3IG1hY3JvIHJlcGxhY2VzCglBQ19QQVRIX1RPT0xfR1JFUF9PVVRQVVQuCgkoQUNfUEFUSF9UT09MX1BSRUZJWCk6IG5ldyBtYWNybyByZXBsYWNlcwoJQUNfUEFUSF9QUk9HX0dSRVBfT1VUUFVULgoJKEFDX0xEX1JFTE9BRF9GTEFHKTogIG1pZ3JhdGVkIGZyb20gbHRjb25maWcuaW4uCgkoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiBkaXR0by4KCSogbHRjb25maWcuaW4gKHJlbG9hZF9mbGFnKTogbW92ZWQgdG8gbGlidG9vbC5tNC4KCShkZXBsYnNfY2hlY2tfbWV0aG9kKTogZGl0dG8uCgoxOTk5LTEwLTA3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19QQVRIX1BST0dfVkVSU0lPTl9HUkVQKTogcmVtb3ZlZCBpbiBmYXZvdXIgb2YgdGhlCgltb3JlIGdlbmVyYWwgQUNfUEFUSF9QUk9HX0dSRVBfT1VUUFVULgoJKEFDX1BBVEhfVE9PTF9WRVJTSU9OX0dSRVApOiByZW1vdmVkIGluIGZhdm91ciBvZiB0aGUgbW9yZSBnZW5lcmFsCglBQ19QQVRIX1RPT0xfR1JFUF9PVVRQVVQuCgkoQUNfUFJPR19MSUJUT09MKTogIFNlYXJjaCBmb3IgYSB3b3JraW5nIGZpbmQgcHJvZ3JhbSBpbiB0aGUKCXVzZXIncyBQQVRIIHVzaW5nIHRoZSBuZXcgbWFjcm9zLgoKMTk5OS0xMC0wNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogTkVXUzogdXBkdGFlZC4KICAgICAgICAqIGx0Y29uZmlnLmluOiBBY2NlcHQgb3NmNS4KICAgICAgICBSZXBvcnRlZCBieSBTYXNjaGEgU2NodW1hbm4gPHNhc2NoYUBzY2h1bWFubi5jeD4KCjE5OTktMTAtMDQgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbiAoLW5vLWluc3RhbGwpOiAgVGhpcyBkb2Vzbid0IHdvcmsgb24gd2luMzIgc2luY2UKCXRoZSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzIGlzIG5vdCBlbmNvZGVkIGluIHRoZSBiaW5hcnksCglhbmQgZGxscyBub3QgaW4gJFBBVEggd29uJ3QgYmUgZm91bmQuICBGYWxsIGJhY2sgdG8gLW5vLWZhc3QtaW5zdGFsbAoJaW5zdGVhZC4KCgkqIGx0bWFpbi5pbiAoLW5vLWZhc3QtaW5zdGFsbCk6ICBXcmFwcGVyIHNjcmlwdCB1c2VkIHRvIGFkZCB0aGUKCWV4ZWV4dCBvbiBhZ2FpbiB3aGVuIG5hbWluZyB0aGUgd3JhcHBlZCBleGVjdXRhYmxlLgoKMTk5OS0xMC0wMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRjb25maWcuaW46ICBTZXQgJEZJTEUgdG8gQEZJTEVAIGZvciBzdWJzdGl0dXRpb24gd2l0aAoJdGhlIHZhbHVlIGZvdW5kIGluIGxpYnRvb2wubTQgYXQgY29uZmlndXJlIHRpbWUuCgkqIGxpYnRvb2wubTQgKEFDX1BBVEhfVE9PTF9HUkVQX1ZFUlNJT04pOiAgTmV3IG1hY3JvLCBjb21iaW5lcwoJQUNfUEFUSF9QUk9HIGFuZCBBQ19DSEVDS19UT09MIHdpdGggYSB0ZXN0IHdoaWNoIGdyZXBzIHRoZQoJb3V0cHV0IG9mICRhY19kaXIvJHthY19wcmVmaXh9PHRvb2w+IC0tdmVyc2lvbiBmb3IgYQoJZ2l2ZW4gcmVnZXguCgkoQUNfUEFUSF9QUk9HX0dSRVBfVkVSU0lPTik6ICBOZXcgbWFjcm8gdXNlZCBieSB0aGUgYWJvdmUuCgkoQUNfTElCVE9PTF9TRVRVUCk6IFVzZSB0aGUgbmV3IG1hY3JvcyB0byBzZWFyY2ggdGhlIFBBVEgKCVtzdGFydGluZyBhdCAvdXNyL2Jpbl0gZm9yIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGFjY2VwdHMKCS0tdmVyc2lvbiBhbmQgaGFzICJmaWxlIiBpbiBpdHMgLS12ZXJzaW9uIG91dHB1dC4KCjE5OTktMTAtMDMgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiBuZXcgLW5vLWluc3RhbGwgZmxhZwoJKiBjb25maWd1cmUuaW46IGZpeCB0eXBvCgkqIGRvYy9saWJ0b29sLnRleGkoTGluayBtb2RlKTogZG9jdW1lbnQgLW5vLWluc3RhbGwgZmxhZywKCSAgY29ycmVjdCAtbm8tZmFzdC1pbnN0YWxsIGRvY3MKCSogbGlidG9vbC5tNDogY2hlY2sgZm9yICJmaWxlIiBjb21tYW5kCgkqIGx0Y29uZmlnLmluOiBkb24ndCBoYXJkY29kZSAvdXNyL2Jpbi9maWxlLCByZW1vdmUgc2Vjb25kCgkgIGRlZmluaXRpb24gb2Ygc3lzdjUsIHJlcGxhY2UgbGlua29wdHMgLT4gbGlua2VyX2ZsYWdzCgkqIGx0bWFpbi5pbjogYWRkIG5ldyAtbm8taW5zdGFsbCBmbGFnLCBwcmludCBoZWxwIGZvciAtbm8taW5zdGFsbAoJICBhbmQgLW5vLWZhc3QtaW5zdGFsbCBmbGFncwoKMTk5OS0xMC0wMyAgT2xseSBCZXR0cyA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsdG1haW4uaW46IGFsd2F5cyBjcmVhdGUgb3V0cHV0X29iamRpcgoKMTk5OS0xMC0wMyAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtOiBkb24ndCBwcmVzZXJ2ZSBmaWxlIGF0dHJpYnV0ZXMgd2hlbgoJICBpbnN0YWxsaW5nIHRoZSBsaWJsdGRsIHNvdXJjZXMKCjE5OTktMTAtMDEgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUX0NPTU1BTkRTKTogZ2VuZXJhdGUgbHRtYWluLnNoCgkqIE1ha2VmaWxlLmFtIChsdG1haW4uc2ggbHRjb25maWcpOiByZW1vdmVkLiAgQXV0b21ha2UgaW5zZXJ0cyB0aGUKCXJ1bGVzIHRvIGF1dG9tYXRpY2FsbHkgY2FsbCBjb25maWcuc3RhdHVzLgoKCSogbGlidG9vbC5tNDogYmUgc3VyZSB0byBBQ19TVUJTVCB2YWx1ZXMgbm8gbG9uZ2VyIHRlc3RlZCBpbgoJbHRjb25maWcuaW4uCgkqIGx0Y29uZmlnLmluOiByZXBsYWNlZCBzZXZlcmFsIG9mIHRoZSBzaW1wbGUgZmVhdHVyZSB0ZXN0cyB3aXRoCglzdWJzdGl0dXRpb25zIGZyb20gY29uZmlnLnN0YXR1cy4KCSogTWFrZWZpbGUuYW0gKGx0Y29uZmlnKTogZ2VuZXJhdGUgbHRjb25maWcgd2l0aCBjb25maWcuc3RhdHVzLgoJKiBjb25maWd1cmUuaW4gKEFDX09VVFBVVCk6IGdlbmVyYXRlIGx0Y29uZmlnIHdpdGggY29uZmlnLnN0YXR1cy4KCjE5OTktMDktMzAgIERvbmFsZCBBbmRlcnNvbiAgPGRkYUB3b3JsZC5zdGQuY29tPgoKCSogbHRjb25maWcuaW4gKHNjbzMuMnY1KTogdXNlIHBhc3NfYWxsIGRlcGxpYnNfY2hlY2tfbWV0aG9kCglmb3IgU0NPMy4yLgoKMTk5OS0wOS0yOSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKHdob2xlLWFyY2hpdmUtZmxhZy1zcGVjKTogIEkgaGFkIGJlZW4KCXdvbmRlcmluZyB3aHkgbXkgZmlsZSBzeXN0ZW0gd2FzIGZpbGxpbmcgdXAgd2l0aCBlbXB0eQoJZmlsZXMgbmFtZWQgYDcxJy4uLiBzZWVtcyBJIGZvcmdvdCB0byBob2xkIGluIHRoZQoJc2hpZnQga2V5IHdoZW4gcmVkaXJlY3Rpbmcgc3RkZXJyLCAyPiYxLiAgRG9oIQoKMTk5OS0wOS0yOSAgVmFkaW0gIDx2YWRpbUBvbGx5LnJ1PgoKCSogbHRjb25maWcuaW4gKHN5c3YpOiAgTW9yZSBVVzcgc3VwcG9ydC4KCjE5OTktMDktMjggIEFsYmVydCBDaGVuZyAgPGFjaGVuZ0BuY3NhLnVpdWMuZWR1PgoKCSogbHRtYWluLmluIChzaGxpYnBhdGhfdmFyKTogZW5zdXJlIHRoZSB2YXJpYWJsZSBpcyBub24tZW1wdHkgYmVmb3JlCglleHBvcnRpbmcgaXQuCgoxOTk5LTA5LTI3ICBNYW5mcmVkIFdlaWNoZWwgIDx3ZWljaGVsQGdsb2JhbC5uYWNhbWFyLmRlPgoKCSogbHRjb25maWcuaW4gKHN5c3Y1KTogQWRkZWQgc3VwcG9ydCByZXF1aXJlZCBmb3Igc2hhcmVkCglsaWJyYXJ5IGxpbmtpbmcgb24gU0NPIFVXNy4KCjE5OTktMDktMjIgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluICh3aG9sZS1hcmNoaXZlLWZsYWctc3BlYyk6IHRlc3Qgd2hldGhlciB0aGUKCXZlcnNpb24gb2YgR05VIGxkIGJlaW5nIHVzZWQgdW5kZXJzdGFuZHMgLS13aG9sZS1hcmNoaXZlCgliZWZvcmUgdXNpbmcgaXQuCgoxOTk5LTA5LTE5ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRtYWluLmluOiBkb24ndCBpZ25vcmUgY29udmVuaWVuY2UgbGlicmFyaWVzIGZvciBvYmplY3RzL2FyY2hpdmVzCgkgICh0ZW1wb3JhcnkgaGFjaykKCjE5OTktMDktMTQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKENEUEFUSCk6IFNldCB0byBgOicgaW5zdGVhZCBvZiBlbXB0eS4KCSogbHRtYWluLmluIChDRFBBVEgpOiBMaWtld2lzZS4KCVJlcG9ydGVkIGJ5IEdyZWcgTWNHYXJ5IDxna21AZW5nLmFzY2VuZC5jb20+CgoxOTk5LTA4LTI0ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbiAobHRkbGwuYywgaW1wZ2VuLmMpOiBQcmV2ZW50IHRoZSBzaGVsbCBmcm9tCglleHBhbmRpbmcgdmFyaWFibGVzICYgYmFja3NsYXNoIGVzY2FwZXMgd2hlbiB3cml0aW5nIHRoZXNlCglmaWxlcyB0byB0aGUgbGlidG9vbCBzY3JpcHQuCgoxOTk5LTA4LTI0ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogbWVudGlvbiBmaXhlcwoJKiBkb2MvUExBVEZPUk1TOiBHTlUvSHVyZCB1cGRhdGUKCSogZGVwZGVtbzogbWFrZSB1c2Ugb2YgdmFyaWFibGVzCgkqIGx0Y29uZmlnLmluOiB1c2UgQ0MgLUUgd2hlbiBjaGVja2luZyBmb3IgRUxGIHN1cHBvcnQKCSAgb24gTmV0QlNEIChyZXBvcnRlZCBieSBUb2RkIFZpZXJsaW5nIDx0dkBwb2JveC5jb20+KSwKCSAgcmVwbGFjZSBhbGwgb2NjdXJlbmNlcyBvZiAnbGlua29wdHMnIHdpdGggJ2xpbmtlcl9mbGFncycKCSogbHRtYWluLmluOiBtb3ZlIGx0ZGxsLmMgYW5kIGltcGdlbi5jIHRvIGx0Y29uZmlnLmluIGFuZAoJICBvbmx5IGFkZCB0aGVtIHRvIHRoZSBsaWJ0b29sIHNjcmlwdCBpZiBpdCdzIG5lY2Vzc2FyeQoKMTk5OS0wOC0yNCAgQm95ZCBHZXJiZXIgIDxnZXJiZXJiQHplbmV6LmNvbT4KCgkqIGx0Y29uZmlnLmluOiBhZGQgc3VwcG9ydCBmb3IgVW5peFdhcmUgNy5YLlgKCSogZG9jL1BMQVRGT1JNUzogYWRkIG5ldyBwbGF0Zm9ybXMKCjE5OTktMDgtMjQgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnQgdXNlIG9mIG5vaW5zdF9MVExJQlJBUklFUyBmb3IKCSAgY29udmVuaWVuY2UgbGlicmFyaWVzCgoJKiBsdGNvbmZpZy5pbjogY2hlY2sgZm9yIGZyZWVic2RlbGYzLCBub3QganVzdCBmcmVlYnNkMy4KCVNldCBoYXJkY29kZV9pbnRvX2xpYnM9eWVzIGZvciBGcmVlQlNEIDMuMCBhbmQgMy4xCgoJKiBsdG1haW4uaW46IGVuYWJsZSB3b3JrYXJvdW5kIGZvciBmcmVlYnNkZWxmMy4wCgoxOTk5LTA4LTI0ICBCZXJ0IERyaWVodWlzICA8YmVydF9kcmllaHVpc0BubC5jb21wdXdhcmUuY29tPgoKCSogbHRjb25maWcuaW46IGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyBpcyAtcmR5bmFtaWMgb24gQlNEL09TCgoxOTk5LTA4LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvQ09QWUlORy5MSUI6IFVwZGF0ZSB0byB2ZXJzaW9uIDIuMS4KCSogbGlibHRkbC9sdGRsLmgsIGxpYmx0ZGwvbHRkbC5jOiBVcGRhdGUgRlNGIGFkZHJlc3MuCgoxOTk5LTA4LTAzICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChtaW5ndyosIEFDX1BST0dfTEQpOiB1c2UgdHIgZm9yIGNhcnJpYWdlIHJldHVybgoJc3RyaXBwaW5nLgoJKiBsdGNvbmZpZy5pbjogZGl0dG8uCglGcm9tIE9sbHkgQmV0dHMgPG9sbHlAbXVzY2F0LmNvLnVrPgoKMTk5OS0wOC0wMiAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogZG9jL2xpYnRvb2wudGV4aSAoQ29tcGlsZSBtb2RlKTogdHlwbyBjb3JyZWN0aW9uLgoJKExpbmsgbW9kZSk6IGFuZCBhbm90aGVyLgoJKFJlbGVhc2UgbnVtYmVycyk6ICBhbmQgYW5vdGhlci4KCShEaXN0cmlidXRpbmcgbGlibHRkbCk6IGFuZCBhbm90aGVyLgoJKFRlc3QgZGVzY3JpcHRpb25zKTogYW5kIGFub3RoZXIuCgkobGlidG9vbCBzY3JpcHQgY29udGVudHMpOiBhbmQgb25lIG1vcmUuCgoJKiBsaWJ0b29sLm00IChBQ19QUk9HX0xEKTogc3RyaXAgY2FycmlhZ2UgcmV0dXJucyBmcm9tIHRoZQoJb3V0cHV0IG9mIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkLgoJKiBsdGNvbmZpZy5pbjogZGl0dG8uCgoxOTk5LTA3LTMwICBQYXZlbCBSb3NraW4gIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGx0bWFpbi5pbjogRW5zdXJlIHRoYXQgZ2NjIG9uIEhQc1VYIHVzZXMgLWZQSUMsIG9yIGVsc2UKCWluaXRpYWxpc2VkIHN0cnVjdHVyZXMgYXJlIHNvbWV0aW1lcyBlbWl0dGVkIGluIHRoZSBjb2RlIHNlY3Rpb24uCgoxOTk5LTA3LTMwICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGx0Y29uZmlnLmluOiAgUmVhZCBsaW5lIGF0IGEgdGltZSB0byBhdm9pZCB0b2tlbmlzYXRpb24gYnkKCXNoZWxsLgoKMTk5OS0wNy0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW46IEZpeCBjcmVhdGlvbiBvZiByZWxhdGl2ZSBsaW5rcyB0byBvYmplY3QgZmlsZXMgaW4KCXN1Yi1kaXJzLgoKMTk5OS0wNy0yOSAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogbHRjb25maWcuaW4oY3lnd2luIG1pbmd3MzIsIGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBPbmx5IGNvbXBpbGUKCWFuZCBsaW5rIGx0ZGxsLmMgaWYgdGhlIGxpYnRvb2wubTQgbWFjcm9zIGRpc2NvdmVyZWQgdGhhdCBpdCBpcwoJcmVxdWlyZWQuCgoxOTk5LTA3LTI2ICBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsaWJ0b29sLm00KGN5Z3dpbiBtaW5ndzMyLCBBQ19MSUJUT09MX1NFVFVQKTogT29wcy4gIEZpeCBzb21lCgl0eXBvcyBtYWRlIGJ5IEV2aWwgR2FyeSB3aGlsZSAobWlzKWFwcGx5aW5nIG15IHBhdGNoIDotKS4KCgkqIGxpYnRvb2wubTQoY3lnd2luIG1pbmd3MzIsIEFDX0xJQlRPT0xfU0VUVVApOiAgT24gc2Vjb25kCgl0aG91Z2h0cywgb25seSBwcm9iZSBmb3IgLW1kbGwgdnMgLWRsbCBvbiBtaW5ndywgYW5kIHJldmVydCB0bwoJdGhlIG9sZCBgLVdsLC0tZGxsIC1ub3N0YXJ0ZmlsZXMnIG9uIGN5Z3dpbi4KCjE5OTktMDctMjQgIEVyZXogWmFkb2sgIDxlemtAY3MuY29sdW1iaWEuZWR1PgoKCSogZG9jL1BMQVRGT1JNUyAoaSo4Ni0qb3BlbmJzZDIuNSk6ICBOZXcgcGxhdGZvcm0uCglTbGlnaHQgcmVvcmRlcmluZyBvZiBvdGhlciBic2QgZW50cmllcy4KCjE5OTktMDctMjQgIE9sbHkgQmV0dHMgIDxvbGx5QG11c2NhdC5jby51az4KCgkqIE5FV1M6IE5vdGUgbmV3IHVzZXIgdmlzaWJsZSBjaGFuZ2VzLgoJKiBsaWJ0b29sLm00IChtaW5ndzMyLCBBQ19MSUJUT09MX1NFVFVQKTogcHJvYmUgZm9yIC1tZGxsIHZzIC1kbGwKCXVuZGVyIGN5Z3dpbi9taW5ndy4KCXByb2JlIHdoZXRoZXIgdGhlIGN5Z3dpbi9taW5ndyBsaWJyYXJ5IHN1cHBsaWVzIGEgc3R1YiBEbGxNYWluCgkoYnV0IHRoaXMgaW5mb3JtYXRpb24gaXNuJ3QgeWV0IHVzZWQpLgoJKiBsdGNvbmZpZy5pbiAobWluZ3czMiwgZXh0cmFjdF9leHBzeW1zX2NtZHMpOiBpZiBIT1NUX0NDIGlzIHNldCwKCXVzZSB0aGF0IHRvIGJ1aWxkIGltcGdlbiBzbyB3ZSBjYW4gdXNlIGl0IHdoZW4gY3Jvc3MtY29tcGlsaW5nLgoJdXNlIGNvcnJlY3QgZW50cnkgcG9pbnRzIGZvciBtaW5ndyBzbyBzdGF0aWMgQysrIGNvbnN0cnVjdG9ycyBnZXQKCWNhbGxlZCBmb3IgY29kZSBpbiB0aGUgRExMLgoJKiBsdG1haW4uaW4gKGltcGdlbi5jKTogZGVmaW5lIE9fQklOQVJZIHRvIDAgaWYgaXQgaXMgbm90IGluIHRoZQoJc3lzdGVtIGhlYWRlcnMuCgoxOTk5LTA3LTI0ICBCZXJ0IERyaWVodWlzIDxiZXJ0X2RyaWVodWlzQGNvbXB1d2FyZS5jb20+CgoJKiBsdGNvbmZpZy5pbjogIFVwZGF0ZWQgYnNkaTQgc29uYW1lIHNwZWNzIHRvIGJlIG1vcmUgbGlrZQoJbGludXggYXMgZGlzY3Vzc2VkIG9uIHRoZSBic2RpIG1haWxpbmcgbGlzdC4KCjE5OTktMDctMjAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfUFJPR19SQU5MSUIpOiAgTm8gbG9uZ2VyIHJlcXVpcmVkIGFzIHdlIG5vdyB1c2UKCUFDX0NIRUNLX1RPT0wgaW4gQUNfTElCVE9PTF9TRVRVUC4KCSogbGlidG9vbC5tNCAoQUNfUFJPR19MSUJUT09MKTogIFBhc3MgdGhlICRidWlsZCB2YXJpYWJsZSB0bwoJbHRjb25maWcuCgkoQUNfUFJPR19SQU5MSUIpOiByZXBsYWNlZCB3aXRoIEFDX0NIRUNLX1RPT0wuCgkqIGx0Y29uZmlnLmluIChidWlsZCk6IG5ldyB2YXJpYWJsZSB0byBob2xkIHRoZSBidWlsZCB0cmlwbGV0Cgl3aGljaCBpcyBub3cgY2hlY2tlZCBmb3IgdW5sZXNzIC0tbm8tdmVyaWZ5IGlzIHNwZWNpZmllZC4KCSgtLWJ1aWxkKTogbmV3IGFyZ3VtZW50IHRvIHNldCB0aGUgYnVpbGQgdHJpcGxldC4KCShyYW5saWIpOiBQcmVmZXIgJHtob3N0X2FsaWFzfS1yYW5saWJbLmV4ZV0gaWYgJGJ1aWxkIGlzIGRpZmZlcmVudAoJdG8gJGhvc3QuCgkqIGRvYy9saWJ0b29sLnRleGkgKEludm9raW5nIGx0Y29uZmlnKTogRG9jdW1lbnQgLS1idWlsZCBvcHRpb24uCgkqIE5FV1M6IE5vdGUgLS1idWlsZCBvcHRpb24uCgoxOTk5LTA3LTE5ICBFcmV6IFphZG9rICA8ZXprQGNzLmNvbHVtYmlhLmVkdT4KCgkqIGRvYy9QTEFURk9STVM6IFVwZGF0ZWQgbW9zdGx5ICpic2QgcGxhdGZvcm1zLgoKMTk5OS0wNy0xOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChQb3J0aW5nIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzKTogVHlwb3MKCVJlcG9ydGVkIGJ5IFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAaHVuZ3J5LmNvbT4KCjE5OTktMDctMTcgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTLCBUT0RPOiB1cGRhdGVkIChwaWMgZmxhZ3MpCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTElCVE9PTCk6IGFkZGVkIC0td2l0aC1waWMgZmxhZwoJKiBsdGNvbmZpZy5pbjogbmV3IHBpY19tb2RlIHZhcmlhYmxlIGFuZCAtLXByZWZlclstbm9uXS1waWMgZmxhZ3MsCgkgIGZpeGVkIHRoZSBzdHJpcCBjaGVjayAocmVwb3J0ZWQgYnkgS2VpdGggQm9zdGljIDxib3N0aWNAYm9zdGljLmNvbT4pCgkqIGx0bWFpbi5pbiAoY29tcGlsZSBtb2RlKTogYnVpbGQgb25seSBQSUMvbm9uLVBJQyBjb2RlIGRlcGVuZGluZwoJICBvbiBwaWNfbW9kZQoJKiBsaWJsdGRsL1JFQURNRTogZG9jdW1lbnQgdGhlIHN1cHBvcnRlZCBkbG9wZW4gaW50ZXJmYWNlcwoJKiBkb2MvbGlidG9vbC50ZXhpICh0ZXN0cyk6IGRvY3VtZW50ZWQgbmV3IHRlc3RzCgkqIHRlc3RzL01ha2VmaWxlLmFtOiBhZGRlZCBuZXcgdGVzdHMKCSogdGVzdHMvZGVtby1waWMudGVzdDogbmV3IHRlc3QgdG8gdGVzdCAtLXdpdGgtcGljCgkqIHRlc3RzL2RlbW8tbm9waWMudGVzdDogbmV3IHRlc3QgdG8gdGVzdCAtLXdpdGhvdXQtcGljCgkqIHRlc3RzL2J1aWxkLXJlbGluazIudGVzdDogdmFyaWFudCBvZiBidWlsZC1yZWxpbmsudGVzdCB0aGF0CgkgIHVzZXMgZGVwZGVtbwoKMTk5OS0wNy0wOSAgT2xseSBCZXR0cyAgPG9sbHlAbXVzY2F0LmNvLnVrPgoKCSogZG9jL2xpYnRvb2wudGV4aSAoQysrIExpYnJhcmllcyk6ICBmaXhlZCBhIHR5cG8uCgoxOTk5LTA3LTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBSRUFETUUtYWxwaGE6ICBpbXByb3ZlZCB0aGUgcmVsZWFzZSBpbnN0cnVjdGlvbnMgdG8gbWVudGlvbgoJYWN0dWFsIGxpc3QgYWRkcmVzc2VzIGZvciBhbm5vdW5jZW1lbnRzLCBhbmQgdXJscyBmb3IgdXBsb2FkCglsb2NhdGlvbnMuCgoxOTk5LTA3LTAzICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogZG9jL1BMQVRGT1JNUzogMS4zYiBwYXNzZXMgYWxsIHRlc3RzIG9uIGN5Z3dpbgoKMTk5OS0wNy0wMyAgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBmaW5pc2hfY21kcyBmb3IgRnJlZUJTRCByZW1vdmVkCgkqIGRlcGRlbW8vbDMvTWFrZWZpbGUuYW06IGluc3RhbGwgbGlibDMubGEgaW50byBhbiBleHRyYSBkaXJlY3RvcnkKCjE5OTktMDctMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogYnVtcGVkIHZlcnNpb24gdG8gMS4zYy4KCglHTlUgbGlidG9vbCAxLjNiIHdhcyByZWxlYXNlZC4KCgkqIE5FV1M6IGluc2VydGVkIHRvZGF5cyBkYXRlLgoKMTk5OS0wNy0wMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvUExBVEZPUk1TOiBUZXN0ZWQgb24gYXMgbWFueSBwbGF0Zm9ybXMgYXMgcG9zc2libGUgZm9yIG1lLgoKMTk5OS0wNy0wMSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIE5FV1M6IHVwZGF0ZWQKCSogZG9jL1BMQVRGT1JNUzogdXBkYXRlZAoJKiBjaGFuZ2VkIG15IGVtYWlsIGFkZHJlc3MKCjE5OTktMDYtMzAgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBkZW1vL2Zvby5oOiB1c2UgTFRfUEFSQU1TIGluc3RlYWQgb2YgTFRETF9QQVJBTVMgKHRoaXMgaXMgbm90IGxpYmx0ZGwpCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0OiBhbHNvIGNoZWNrIGZvciBoYXJkY29kZV9pbnRvX2xpYnMgPSB5ZXMsCgkgIGlmIHNldCwgd2UgbmVlZCB0byByZWxpbmsgYXQgaW5zdGFsbC10aW1lCgoxOTk5LTA2LTI5ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogbWVudGlvbiAtbm8tZmFzdC1pbnN0YWxsLCByZW5hbWUgZHVtbXkgdG8gZm9yY2UKCSogZG9jL1BMQVRGT1JNUzogMS4zYiBwYXNzZXMgYWxsIHRlc3RzIG9uIEdOVS9MaW51eCwKCSAgRnJlZUJTRCAoMi4yLjYgYW5kIDMuMSkKCSogZG9jL2xpYnRvb2wudGV4aTogaXQncyBwb3NzaWJsZSB0byBsaW5rIGxpYnRvb2wgbGlicmFyaWVzCgkgIHVzaW5nIC1MIGFuZCAtbCwgYmV0dGVyIGRvY3VtZW50YXRpb24gb2YgdW5pbnN0YWxsIGFuZCBjbGVhbiBtb2RlLAoJICByZW5hbWUgZHVtbXkgdG8gZm9yY2UsIGRvY3VtZW50ZWQgLW5vLWZhc3QtaW5zdGFsbCwKCSAgQUNfTElCTFRETF8qIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBBQ19QUk9HX0xJQlRPT0wsCgkgIGRvY3VtZW50ZWQgaGFyZGNvZGVfaW50b19saWJzIGFuZCBzdHJpcGxpYi9vbGRfc3RyaXBsaWIsCgkqIGx0Y29uZmlnLmluOiBzZWFyY2ggZm9yIHN0cmlwIHByb2dyYW0sIGFkZGVkIGhhcmRjb2RlX2ludG9fbGlicwoJICBhbmQgc3RyaXBsaWIvb2xkX3N0cmlwbGliIHZhcmlhYmxlcywgc2V0IHN0cmlwIGNvbW1hbmRzIGZvciBHTlUgc3RyaXAsCgkgIG9uIEZyZWVCU0QgPj0gMy4yIHNldCBoYXJkY29kZV9pbnRvX2xpYnMgdG8geWVzLAoJICBmYXN0LWluc3RhbGwgbW9kZSBkb2Vzbid0IHdvcmsgaWYgaGFyZGNvZGVfaW50b19saWJzID0geWVzCgkqIGx0bWFpbi5pbjogcmVpbXBsZW1lbnRlZCBoYXJkY29kaW5nIGludG8gbGlicmFyaWVzOgoJICBuZXcgcmVsaW5rIG1vZGUsIHByZXNlcnZlIGFsbCBsaWJ0b29sIGFyZ3MsIHJlbGluayBsaWJyYXJpZXMKCSAgd2hlbiBpbnN0YWxsaW5nIGlmIG5lY2Vzc2FyeQoJICBhZGRlZCAtbm8tZmFzdC1pbnN0YWxsIGZsYWcsIHJlbW92ZWQgdW5uZWNlc3NhcnkgYGRsbmFtZScKCSAgaW5pdGlhbGl6YXRpb24sIHVzZSBzdHJpcGxpYi9vbGRfc3RyaXBsaWIgZm9yIHN0cmlwcGluZyBsaWJyYXJpZXMsCgkgIGRsbmFtZSBpcyBhbHdheXMgc29uYW1lIG9yIGluIGxpYnJhcnlfbmFtZXMgc28gd2UgZG9uJ3QgbmVlZAoJICB0byBoYW5kbGUgZGlmZmVyZW50IGZpbGUgbmFtZXMKCjE5OTktMDYtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGZyZWVic2QqLCBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgpOiBTZXQgdG8geWVzCgl1cCB0byByZWxlYXNlIDMuMSwgYW5kIHRvIG5vIGZyb20gMy4yIG9uLgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCjE5OTktMDYtMjkgIFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+LCBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChmcmVlYnNkKiwgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoKTogU2V0IHRvCgl5ZXM7IHRlc3RlZCBvbiAzLjEtRUxGIGJ5IFBhdmVsIGFuZCBvbiAyLjIuNiBieSBBbGV4YW5kcmUuCgoxOTk5LTA2LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChsaW51eC1nbnUqLCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IFVzZSBwYXNzX2FsbCBvbgoJYWxwaGEsIHg4NiBhbmQgc3BhcmMgYXJjaGl0ZWN0dXJlcyBieSBub3csIHJldmVydGluZyB0byBmaWxlX21hZ2ljCglhdCBsZWFzdCBvbiBBUk0sIHdoZXJlIGl0IGJyZWFrcy4KCjE5OTktMDYtMjMgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiB1cGRhdGVkCgkqIFJFQURNRTogYWRkZWQgR05VIEh1cmQgdG8gdGhlIHN1cHBvcnRlZCBwbGF0Zm9ybXMKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnQgYC1kbHByZW9wZW4gZHVtbXknCgkgIGluc3RlYWQgb2YgYC1kbG9wZW4gZHVtbXknCgkqIGxpYmx0ZGwvbHRkbC5jIChzdHJjaHIpOiBmaXhlZCB0eXBvIChtaXNzaW5nIHN0YXIpCgoxOTk5LTA2LTIzICBTdGVwaGFuIEt1bG93IDxjb29sb0BpdG0ubXUtbHVlYmVjay5kZT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChzdHJyY2hyKTogZml4ZWQgdHlwbyAobWlzc2luZyBzdGFyKQoJKiBsaWJsdGRsL2x0ZGwuYyAodHJpbSk6IHVzZSBgY29uc3QnIHRvIHNpbGVuY2UgLVd3cml0ZS1zdHJpbmdzCgoxOTk5LTA2LTIzICBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsdG1haW4uaW4gKGx0ZGxsLmMpOiBTdXBwb3J0IGZvciBjcm9zc2NvbXBpbGluZyBmcm9tIGxpbnV4IHRvCgltaW5ndzMyLgoKMTk5OS0wNi0yMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiwgZXhwb3J0X3N5bWJvbHNfY21kcyk6IElmIHRoZXJlIGlzIGFscmVhZHkKCWFuIGV4dHJhY3RlZCBhbmQgY29tcGlsZWQgbHRkbGwuYywgdGhlbiBkb24ndCBkZWxldGUsIHJlZXh0cmFjdAoJYW5kIHJlY29tcGlsZS4KCShjeWd3aW4sIGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBNYWtlIHN1cmUgdGhlIGx0ZGxsIHNvdXJjZSBoYXMgYmVlbgoJZXh0cmFjdGVkIGFuZCBjb21waWxlZCBiZWZvcmUgcmVmZXJlbmNpbmcgdGhlIG9iamVjdCwgc2luY2UgdGhlcmUKCWFyZSBwYXRocyB0aHJvdWdoIHRoZSBjb2RlIHdoaWNoIHJ1biBhcmNoaXZlX2V4cHN5bV9jbWRzIHdpdGhvdXQKCXJ1bm5pbmcgZXhwb3J0X3N5bWJvbHNfY21kcy4KCjE5OTktMDYtMjAgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluOiAgbW92ZWQgdGhlIHRlc3QgZm9yIE5NIGFmdGVyIHRoZSB0ZXN0IGZvcgoJbm9fYnVpbHRpbl9mbGFnLgoKMTk5OS0wNi0yMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbjogVXNlIHNlZCAnJHEnIGluc3RlYWQgb2Ygc2VkICIiIGZvciBjb3B5aW5nIGx0bWFpbiwKCWp1c3QgaW4gY2FzZSBzb21lIHNlZCBkb2VzIG5vdCBzdXBwb3J0IGFuIGVtcHR5IGNvbW1hbmQuCgoJKiBsdGNvbmZpZy5pbiAobGlua19zdGF0aWNfZmxhZywgYWNfY3ZfcHJvZ19jY19zdGF0aWMpOiBVc2UgdGhlCglsYXR0ZXIgaW4gdGhlIHRlc3QuCgoxOTk5LTA2LTE4ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogbHRjb25maWcuaW4gKGJzZGk0LCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IHVzZSBhIGxlc3MgcmVzdHJpY3RpdmUKCSAgcmVnZXggKHJlcG9ydGVkIGJ5IENocmlzIFAuIFJvc3MgPGNyb3NzQGVuZy51cy51dS5uZXQ+KQoJKiBsdG1haW4uaW46IHN1cHBvcnQgYC1kbG9wZW4gZHVtbXknLCBkZWZpbmUgbHRfcHJlbG9hZGVkX3N5bWJvbHMKCSAgaWYgZGxzZWxmICE9IG5vCgkqIGRvYy9saWJ0b29sLnRleGkgKENvbXBpbGUgYW5kIExpbmsgbW9kZSk6IGRvY3VtZW50IGl0LAoJICBkb2N1bWVudGVkIHRoZSAtV2MsIC1XbCBmbGFncywgbGlidG9vbCBkb2VzIGFsc28gc3VwcG9ydCBub24gQwoJICBzb3VyY2UgY29kZQoKMTk5OS0wNi0xOCAgVGV1biBCdXJnZXJzICA8YnVyZ2Vyc0BlY24ubmw+CgoJKiBsdGNvbmZpZy5pbjogQ1IvTEYgZml4IGZvciBicm9rZW4gREpHUFAgYmFzaAoJKiBsdG1haW4uaW46IENSL0xGIGZpeCBmb3IgREpHUFAKCjE5OTktMDYtMTggIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbiAob3V0cHV0bmFtZSk6IFdoZW4gZ2VuZXJhdGluZyB0aGUgZXhlY3V0YWJsZSB3cmFwcGVyCglzY3JpcHQsICRvdXRwdXRuYW1lIGFscmVhZHkgaGFzIHRoZSAkZXhlZXh0IHN1ZmZpeCwgc28gd2UgbmVlZG4ndAoJYWRkIGl0IGFnYWluLgoKMTk5OS0wNi0xNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKGFjX2N2X2xpYl9kbF9kbG9wZW4pOiBtaXNzaW5nICJ4IiBpbiB0ZXN0Cgljb21wYXJpc29uIGNvcnJlY3RlZC4KCgkqIGxpYmx0ZGwvbHRkbC5jIChzeXNfd2xsX29wZW4pOiBsaWJsdGRsIGV4cGVjdHMgdGhpcyBmdW5jdGlvbiB0bwoJZmFpbCBpZiBpdCBpcyB1bmFibGUgdG8gcGh5c2ljYWxseSBsb2FkIHRoZSBsaWJyYXJ5LiAgU2FkbHksCglMb2FkTGlicmFyeSB3aWxsIHNlYXJjaCB0aGUgbG9hZGVkIGxpYnJhcmllcyBmb3IgYSBtYXRjaCBhbmQKCXJldHVybiBvbmUgb2YgdGhlbSBpZiB0aGUgcGF0aCBzZWFyY2ggbG9hZCBmYWlscy4gIFNpbXVsYXRlIGEKCWZhaWx1cmUgaW4gdGhpcyBjYXNlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG90aGVyIEFQSXMuCglBbHNvLCBMb2FkTGlicmFyeSB0YWtlcyB0aGUgbGliZXJ0eSBvZiBhZGRpbmcgYC5kbGwnIHRvIGxpYnJhcnkKCW5hbWVzIHBhc3NlZCB3aXRob3V0IGFuIGV4dGVuc2lvbiwgd2Ugbm93IGFkZCBhIHRyYWlsaW5nIGAuJyB0bwoJcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nLgoKMTk5OS0wNi0xNSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9sdGRsLmMgKHN5c193bGxfY2xvc2UpOiBTdHJhbmdlbHkgZW5vdWdoLCBNaWNyb3NvZnQgaGF2ZQoJZGVjaWRlZCB0aGF0IExvYWRMaWJyYXJ5IHJldHVybnMgYDAnIGZvciBzdWNjZXNzLCB5ZXQgRnJlZUxpYnJhcnkKCXJldHVybnMgYDAnIGZvciBmYWlsdXJlISAgVGhlIEZyZWVMaWJyYXJ5IGNhbGwgdXNlZCB0byBpbnRlcnByZXQKCWAwJyBhcyBzdWNjZXNzIGZvciBib3RoIGZ1bmN0aW9ucy4KCjE5OTktMDYtMTQgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGx0Y29uZmlnLmluOiB1c2UgZXZhbCB3aGVuIHNldHRpbmcgaGF2ZV9kbGZjbl9oLCByZWZvcm1hdHRpbmcKCjE5OTktMDYtMTIgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBmZmlpLm9yZz4KCgkqIGx0bWFpbi5pbjogc3RvcmUgb2xkIGFyY2hpdmVzIGluIGRlcGxpYnMgYW5kIG9sZF9kZXBsaWJzLAoJICByZXRhaW4gdGhlIG9yZGVyIG9mIGRlcGVuZGVuY3kgbGlicmFyaWVzIChldmVuIG9sZCBhcmNoaXZlcyksCgkgIGRldGVybWluaW5nIHRoZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBkaWRuJ3Qgd29yayBkdWUgdG8gYSB0eXBvLAoJICBhZGQgdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGhzIG9mIGFsbCBkZXBlbmRlbmN5IGxpYnJhcmllcyB3aGVuCgkgIGxpbmtpbmcgYSBsaWJyYXJ5IChmaXhlcyBJUklYIDUuMiBidWcpCgoxOTk5LTA2LTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluOiBSZXZlcnRlZCBKdW5lIDYncyBwYXRjaCBmb3IgbmV3IEdOVSBsZCBvdXRwdXQsIGl0CglpcyBubyBsb25nZXIgbmVlZGVkLCBhcyBsZCByZXZlcnRlZCB0byB0aGUgb3JpZ2luYWwgZm9ybWF0LgoJKiBORVdTOiBMaWtld2lzZS4KCgkqIGx0Y29uZmlnLmluOiBXaGVuIHRlc3Rpbmcgc2VsZi1kbG9wZW5pbmcsIHRlc3Qgd2hldGhlciBkbGNsb3NlCgljcmFzaGVzLiAgT24gRnJlZUJTRCAzLjEsIGl0IGRvZXMuICA6LSgKCSogbGlibHRkbC9jb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBORVdTOiBOb3RlIHdvcmstYXJvdW5kLgoJUmVwb3J0ZWQgYnkgUGF2ZWwgUm9za2luIDxwYXZlbF9yb3NraW5AZ2VvY2l0aWVzLmNvbT4KCjE5OTktMDYtMDkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluIChleGVleHQpOiBhdXRvY29uZidzIEFDX0VYRUVYVCB1c2VzICJubyIgdG8gaW5kaWNhdGUKCW5vIGV4dGVuc2lvbiwgYW5kIHdlIG11c3QgZG8gdGhlIHNhbWUgaW4gb3JkZXIgdG8gc2hhcmUgdGhlIGNhY2hlCgl2YWx1ZS4gQWxzbyB3ZSBtdXN0IGlnbm9yZSBjb25mdGVzdC5lcnIgd2hpY2ggSFBzVVggKGF0IGxlYXN0KQoJZmlsbHMgd2l0aCBncmF0dWl0b3VzIHdhcm5pbmdzLgoJKG9iamV4dCk6IGZvciBjb25zaXN0ZW5jeSwgZG8gdGhlIHNhbWUgYXMgYWJvdmUuCglSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKMTk5OS0wNi0wOSAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoZXhlZXh0KTogVXNlIHF1b3RlcyBpbiB0aGUgdGVzdCwgdG8gcHJldmVudCBhCglmYWlsdXJlIGluIHNoLnRlc3QuCgoxOTk5LTA2LTA5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbjogUmVvcmRlcmVkIHRlc3RzIHRvIGJlIG1vcmUgbGlrZSBjb25maWd1cmUuaW4ncwoJcmVjb21tZW5kZWQgb3JkZXIgKHByb2dyYW1zIGZpcnN0LCB0aGVuIGxpYnJhcmllcywgZXRjLikuCglQZXJmb3JtZWQgYSBtYW51YWwgYGBjb25zdGFudCBmb2xkaW5nIHBhc3MnJyAoZWc6IHMvZXZhbCAidGVzdAoJXCJlY2hvICckJyd7J2x0X2N2X2Rsb3Blbicrc2V0fSdgXCIgIT0gc2V0L3Rlc3QKCSIke2x0X2N2X2Rsb3BlbitzZXR9IiAhPSBzZXQvKS4KCXMvdGVzdCAiJHtmb28rc2V0fSIgPSAic2V0Ii90ZXN0ICJYJHtmb28rc2V0fSIgPSBYc2V0L2cKCgkqIGx0Y29uZmlnLmluIChsaW5rX3N0YXRpY19mbGFnKTogQWNjZXB0LCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nCglwcmVmZXJlbmNlOiB0aGUgY2FjaGVkIHZhbHVlOyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQKCWhvc3QuICBBbHNvIHRlc3QgdGhhdCB0aGUgY29tcGlsZXIgYWNjZXB0cyB0aGUgZmxhZywgYW5kIGNhY2hlCgl0aGF0IHJlc3VsdCB0b28uCgoJKiBsdGNvbmZpZy5pbiAocGljX2ZsYWcpOiBBY2NlcHQsIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcKCXByZWZlcmVuY2U6ICB0aGUgY2FjaGVkIHZhbHVlOyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQKCWhvc3QuICBBbHNvIHRlc3QgdGhhdCB0aGUgY29tcGlsZXIgYWNjZXB0cyB0aGUgZmxhZywgYW5kIGNhY2hlCgl0aGF0IHJlc3VsdCB0b28uCgoxOTk5LTA2LTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbiAoTE5fUyk6IEFjY2VwdCwgaW4gb3JkZXIgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlOgoJdGhlIGNhY2hlZCB2YWx1ZTsgYW4gZW52aXJvbm1lbnQgc2V0dGluZzsgYGBsbiAtcycnIGlmIGl0IHdvcmtzOwoJYGBsbicnIGlmIGBgbG4gLXMnJyBkb2Vzbid0IGFwcGVhciB0byB3b3JrLgoKCSogbHRjb25maWcuaW4gKG9iamV4dCk6IEFjY2VwdCwgaW4gb3JkZXIgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlOgoJdGhlIGNhY2hlZCB2YWx1ZTsgdGhlIHJlc3VsdCBvZiBhIHRlc3Qgb2JqZWN0IGNvbXBpbGF0aW9uLgoKCSogbHRjb25maWcuaW4gKFJBTkxJQik6IEFjY2VwdCwgaW4gb3JkZXIgb2YgZGVjcmVhc2luZyBwcmVmZXJlbmNlOgoJdGhlIGNhY2hlZCB2YWx1ZTsgYW4gZW52aXJvbm1lbnQgc2V0dGluZzsgdGhlIGZpcnN0IGZpbGUgY2FsbGVkCglgYHJhbmxpYicnIGluIHRoZSB1c2VyJ3MgcGF0aC4KCgkqIGx0bWFpbi5pbiAoZXhlZXh0KTogVXNlICRleGVleHQgd2hlbiB3b3JraW5nIG91dCB0aGUgbmFtZXMgb2YKCXByb2dyYW1zIChidXQgbm90IHRoZSB3cmFwcGVyIHNjcmlwdCBpdHNlbGYgZHVlIHRvIGEgc3R1cGlkaXR5IGluCgl3aW4zMiB3aGljaCBoYXJkd2lyZXMgdGhlIC5leGUgZXh0ZW5zaW9uIHRvIHRoZSBiaW5hcnkgbG9hZGVyISkuCgkqIGx0Y29uZmlnLmluIChleGVleHQpOiBOb3cgdGhhdCB0aGUgd3JhcHBlciBzY3JpcHQgdHJpZXMgdG8gbW92ZQoJZXhlY3V0YWJsZXMsIHdlIG5lZWQgdG8ga25vdyB3aGV0aGVyIHRoZXkgaGF2ZSBhbiBleHRlbnNpb24gKGFsYQoJQUNfRVhFRVhUKS4gIFNpbmNlIHdlIGNhbid0IHJlbHkgb24gQUNfRVhFRVhUIGhhdmluZyBiZWVuIGNhbGxlZAoJaW4gY29uZmlndXJlLmluLCB3ZSBtdXN0IGJlIGFibGUgdG8gY2hlY2sgZm9yIG91cnNlbHZlcywgdGhvdWdoIHdlCgljYW4gbG9vayBmb3IgYSBjYWNoZWQgcmVzdWx0IGluY2FzZSBBQ19FWEVFWFQgd2FzIGNhbGxlZC4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIHBpY19mbGFnKTogIEZvcmNlIHNlcGFyYXRlIGNvbXBpbGF0aW9uIG9mCglvYmplY3RzIGZvciBkbGxzIHZzLiBvYmplY3RzIGZvciBzdGF0aWMgYXJjaGl2ZXMuICBVc2luZyBhIGNwcAoJbWFjcm8gYWxzbyBhbGxvd3MgdXMgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHdlIG5lZWQgdG8gdXNlCglkbGxleHBvcnQvaW1wb3J0IGRlY2xhcmF0aW9ucy4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIG5lZWRfdmVyc2lvbik6IFNldCB0byBubywgb3RoZXJ3aXNlIG1vZHVsZQoJZGxsJ3MgZW5kIHVwIHdpdGggbWlnaHR5IGxvbmcgbmFtZXMhCgoxOTk5LTA2LTA2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluOiBTdXBwb3J0IG5ldyBHTlUgbGQgLS1oZWxwIG91dHB1dCBmb3JtYXQuCgkqIE5FV1M6ICBMaWtld2lzZS4KCVJlcG9ydGVkIGJ5IEdh62wgUXXpcmkgPGdhZWxAYmFvdWxlLmR5bmRucy5vcmc+IGFuZAoJSC5KLiBMdSA8aGpsQHZhcmVzZWFyY2guY29tPi4KCjE5OTktMDYtMDUgIE1hcmsgS2V0dGVuaXMgIDxrZXR0ZW5pc0BnbnUub3JnPgoKCSogbHRjb25maWcuaW46IFVwZGF0ZSBzdXBwb3J0IGZvciB0aGUgSHVyZC4gIE1ha2Ugc3VyZSB0aGF0IHRoZQoJc29uYW1lIGluY2x1ZGVzIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciBhbmQgY3JlYXRlIHRoZQlyaWdodAoJbGlua3MuICBBbGxvdyBzaGFyZWQgb2JqZWN0cyB3aXRob3V0IHRoZSBgbGliJyBwcmVmaXggYW5kIHdpdGhvdXQKCXZlcnNpb24gaW5mb3JtYXRpb24uCgoxOTk5LTA2LTAyIE5pY2sgUmFzbXVzc2VuIDxuaWNrQGppdmUub3JnPgoKCSogbHRtYWluLmluIChsaW5rKTogdXNlICIkbm9ub3B0IiBhcyB0aGUgY29tcGlsZXIgZm9yCgkgIGNvbXBpbGUvZmluYWxpemVfY29tbWFuZAoKMTk5OS0wNS0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBUT0RPOiBSZW1vdmUgdGhlIHNob3J0IGxpc3Qgb2YgcGVvcGxlIGludGVyZXN0ZWQgaW4gQysrCgljb25zdHJ1Y3RvcnM7IGl0J3Mgbm90IG1lYW5pbmdmdWwsIHNpbmNlIHRoZXJlIGFyZSBzbyBtYW55IG1vcmUKCXBlb3BsZSByZXF1ZXN0aW5nIHRoaXMgZmVhdHVyZSwgYW5kIHdlIGp1c3QgY2FuJ3QgbWFpbnRhaW4gaXQKCWFjY3VyYXRlLgoKMTk5OS0wNS0yNyAgUGF2ZWwgUm9za2luICA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoR05VIEh1cmQsIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogVXNlIHBhc3NfYWxsLgoKMTk5OS0wNS0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+LCBPbGx5IEJldHRzICA8b2xseUBtdXNjYXQuY28udWs+CgoJKiBsdG1haW4uaW46IEV4cGFuZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgd2hlbiBjcmVhdGluZyByZWxvYWRhYmxlCglvYmplY3RzLgoJKiBORVdTOiBEaXR0by4KCjE5OTktMDUtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTkVXUzogTWVudGlvbiB0aGUgdHdvIGJ1Z2ZpeGVzIGJlbG93LgoKCSogbHRtYWluLmluOiBPbmx5IGNyZWF0ZSBkaXJlY3RvcnkgaW50byB3aGljaCB0byBleHRyYWN0Cgljb252ZW5pZW5jZSBsaWJyYXJpZXMgd2hlbiAkY29udmVuaWVuY2UgaXMgbm90IGVtcHR5LiAgSXQgd291bGQKCWFsd2F5cyBiZSBjcmVhdGVkIG9uIHN5c3RlbXMgdGhhdCBkaWQgbm90IHN1cHBvcnQKCXdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLgoKCSogbHRjb25maWcuaW4gKGV4cG9ydF9zeW1ib2xzX2NtZHMpOiBBZGQgJGNvbnZlbmllbmNlLgoJKGN5Z3dpbiwgZXhwb3J0X3N5bWJvbHNfY21kcyk6IERpdHRvLgoJKiBsdG1haW4uaW46IEdlbmVyYXRlIGV4cG9ydCBzeW1ib2wgbGlzdCBiZWZvcmUgZXhwYW5kaW5nCgljb252ZW5pZW5jZSBsaWJyYXJpZXMsIHRvIGF2b2lkIHBhc3Npbmcgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMgdG8KCSROTS4KCVJlcG9ydGVkIGJ5IEdvZG1hciBCYWNrIDxnYmFja0Bjcy51dGFoLmVkdT4KCjE5OTktMDUtMjcgIERhdmlkIEpvbmVzICA8am9uZXNAbW9zYWlkLmNvbT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChMVERMX0JJTkRfRkxBR1MpOiBSZW1vdmUgQklORF9WRVJCT1NFLCB0byBhdm9pZAoJcHJpbnRpbmcgZXJyb3IgbWVzc2FnZXMuCgoxOTk5LTA1LTI2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCglHTlUgbGlidG9vbCAxLjMuMiB3YXMgcmVsZWFzZWQuCgoxOTk5LTA1LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE5FV1M6IExpc3QgZml4ZWQgcHJvYmxlbXMuCgkqIGRvYy9QTEFURk9STVM6IFRlc3RlZCBmb3IgMS4zLjIuCgoJKiBjb25maWcuZ3Vlc3M6IFN5bmNoIHdpdGggR05VIGNvbW1vbi4KCgkqIGx0bWFpbi5pbjogUmV2ZXJ0IHRvIHN0cmlwcGluZyAuZXhlIG9uIGFsbCBwbGF0Zm9ybXMuCgkqIFRPRE86IE5vdGUgYWJvdXQgdGhpcyBwcm9ibGVtLiAgRGVtbyBpcyBmaXhlZCBvbiB3aW4zMi4gIFN1cHBvcnQKCWBlbXB0eScgY29udmVuaWVuY2UgbGlicmFyaWVzLgoKCSogbHRjb25maWcuaW4gKHNvbGFyaXMqLCBsZF9zaGxpYnMpOiBEbyBub3QgZW5hYmxlIHNoYXJlZAoJbGlicmFyaWVzIHdpdGggR05VIGxkIDIuOC4qLCBpdCdzIGJyb2tlbi4gIEVtaXQgYSB3YXJuaW5nCglzdWdnZXN0aW5nIGFuIHVwZ3JhZGUuCglSZXBvcnRlZCBieSBCcmlhbiBGb3JkIDxmb3JkQHZzcy5mc2kuY29tPiBhbmQgUm9uYWxkIFBpam5hY2tlcgoJPFJvbmFsZC5QaWpuYWNrZXJAYmVzdC5tcy5waGlsaXBzLmNvbT4KCjE5OTktMDUtMjUgIEZyYW5rIENoLiBFaWdsZXIgPGZjaGVAY3lnbnVzLmNvbT4KCgkqIGx0bWFpbi5pbjogZmlsZV9tYWdpYyBjaGVjayB3b3VsZCBub3QgYXZvaWQgY3ljbGljIGxpbmtzLgoKMTk5OS0wNS0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkZXBkZW1vL21haW4uYywgZGVwZGVtby9sMS9sMS5jLCBkZXBkZW1vL2wyL2wyLmM6IEsmUi1pemUuCgkqIGRlcGRlbW8vbDMvbDMuYywgZGVwZGVtby9sNC9sNC5jOiBMaWtld2lzZS4KCgkqIGx0bWFpbi5pbjogUmVtb3ZlIG9iamVjdCBmaWxlcyBiZWZvcmUgd3JpdGluZyB0byB0aGVtLCB0byBhdm9pZAoJY2lyY3VsYXIgbGlua3MuCglSZXBvcnRlZCBieSBSb24gTydIYXJhIDxyb25vQHNlbnR1bnkuY29tLmF1PgoKMTk5OS0wNS0yNCBUaG9tYXMgVGFubmVyICA8dGFubmVyQGZmaWkub3JnPgoKCSogTkVXUzogc3VwcG9ydCBmb3IgaW5zdGFsbGluZyBzdHJpcHBlZCBsaWJyYXJpZXMgdXNpbmcgR05VIHN0cmlwCgkqIGx0Y29uZmlnLmluOiBzZXQgZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwgb24gRnJlZUJTRCwKCSAgTGludXggYW5kIFNvbGFyaXMgc2luY2Ugbm8gb25lIGNhbiByZXByb2R1Y2UgdGhlIGZhbW91cyBkZXBsaWJzCgkgIGJ1ZwoJKiBsdG1haW4uaW46IHByZXNlcnZlICRDQyAocmVwb3J0ZWQgYnkgVG9tIFRyb21leSksCgkgIHN0cmlwIGxpYnJhcmllcyB1c2luZyBHTlUgc3RyaXAgaWYgaXQncyBhdmFpbGFibGUgYW5kIHRoZQoJICAtcyBmbGFnIHdhcyBwYXNzZWQgdG8gImluc3RhbGwiCgoxOTk5LTA1LTIzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9QTEFURk9STVM6IFJlbGVhc2UgMS4zLjEgcGFzc2VzIG9uIEdOVSBIdXJkL3g4Ni4KCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoxOTk5LTA1LTIzIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBsdG1haW4uaW46IHN0cmlwIG9mZiB0aGUgLmV4ZSBzdWZmaXggb25seSBvbiAqV2luCgkgIChSZXBvcnRlZCBieSBNYXR0aGV3IEQuIExhbmdzdG9uIDxsYW5nc3RvbkBTTEFDLlN0YW5mb3JkLkVEVT4pCgoxOTk5LTA1LTIyIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZmZpaS5vcmc+CgoJKiBORVdTOiB1cGRhdGVkCgkqIFRPRE86IC1XYywgLVdsLCBpbXBsZW1lbnRlZAoJKiBBVVRIT1JTOiBjaGFuZ2VkIG15IGVtYWlsIGFkZHJlc3MKCSogZG9jL2xpYnRvb2wudGV4aTogZml4ICJ3aWVyZCIgdHlwbyA6KQoJKiBsdG1haW4uaW46IGxpbmtpbmcgYWdhaW5zdCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgd2FzIGJyb2tlbiwKCSAgaW1wbGVtZW50ZWQgdGhlICItV2MsIiAiLVdsLCIgIi1YY29tcGlsZXIiICItWGxpbmtlciIgZmxhZyBmb3IKCSAgY29tcGlsZXIgYW5kIGxpbmtlci1zcGVjaWZpYyBmbGFncywKCSAgYWRkIC1sYyBiZWZvcmUgd2UgZG8gdGhlIGRlcGxpYnMgY2hlY2sKCSogbHRjb25maWcuaW46IGxpbmtvcHRzIC0+IGNvbXBpbGVyX2ZsYWdzIGZvciAkQ0MgYW5kIGxpbmtlcl9mbGFncwoJICBmb3IgJExELCBsaW5rX2FsbF9kZXBsaWJzPXllcyBvbiBJUklYCgoxOTk5LTA1LTIyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBORVdTOiBpbnNlcnQgdG9kYXlzIGRhdGUgYWxvbmdzaWRlIDEuMy4xIHJlbGVhc2UuCgkqIE1ha2VmaWxlLmluOiB1c2UgZ251IG5vdCBnbml0cyBydWxlcwoJKiBjb25maWcuZ3Vlc3M6IHN5bmNoIHdpdGggZ251IGNvbW1vbiAmIGFwcGx5IFRha2FiYXRha2Utc2FuJ3MKCU1JUFMgKjAwMCBwYXRjaC4KCSogY29uZmlnLnN1Yjogc3luY2ggd2l0aCBnbnUgY29tbW9uLgoKMTk5OS0wNS0yMiAgRG91ZyBFdmFucyAgPGRldmFuc0BjYXNleS5jeWdudXMuY29tPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKGRsZXJyb3IpOiBGaXggdHlwbyBpbiBkbG9wZW4gZm91bmQgaW4gLWxkbAoJdGVzdC4KCjE5OTktMDUtMjEgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBEb24ndCBkaXN0cmlidXRlIGluc3R1dGlscy4KCShpbnN0YWxsLWRhdGEtaG9vayk6IHVzZSBsaWJsdGRsL01ha2VmaWxlLmFtJ3MgbG9jYWwtaW5zdGFsbCBmaWxlcwoJcnVsZS4KCSogbGlibHRkbC9NYWtlZmlsZS5hbSAobG9jYWwtaW5zdGFsbC1maWxlcyk6ICBOZXcgcnVsZSB0byBpbnN0YWxsCglsaWJsdGRsIHdpdGhvdXQgY3JlYXRpbmcgbGlua3Mgb3IgbW9kZSA3NzcgZGlyZWN0b3JpZXMuCgkqIGluc3R1dGlsLyo6IGRlbGV0ZWQuCgoxOTk5LTA1LTIxICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9QTEFURk9STVM6IFVwZGF0ZWQgdG8gMS4zLjEgZm9yIGFsbCBwbGF0Zm9ybXMgSSd2ZSBnb3QuCglBZGRlZCBzcGFyYy11bmtub3duLWxpbnV4LWdudS4KCjE5OTktMDUtMjEgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGRlbW8vZm9vLmg6IHMvUEFSQU1TL0xURExfUEFSQU1TL2cKCSogbGlibHRkbC9sdGRsLmg6IGRpdHRvLgoJKiBsaWJsdGRsL2x0ZGwuYzogZGl0dG8uCgoJKiBkZW1vL2Zvby5oOiBzL19fUC9QQVJBTVMvZwoJKiBsaWJsdGRsL2x0ZGwuaDogZGl0dG8uCgkqIGxpYmx0ZGwvbHRkbC5jOiBkaXR0by4KCVJlcG9ydGVkIGJ5IEFraW0gRGVtYWlsbGUgPGRlbWFpbGxlQGluZi5lbnN0LmZyPgoKMTk5OS0wNS0yMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBORVdTOiBVcGRhdGVkIGRvY3MuCgkqIFRPRE86IFJlY29tbWVuZCBsaWJ0b29sLm00IHRvIGJlIGluc2VydGVkIGluIGFjaW5jbHVkZS5tNC4gQUlYCgk0LjMuMi4wIG5vIGxvbmdlciBmYWlscyBvbiBzdGF0aWMgZGxvcGVuaW5nLiAgR05VIERMRCBubyBsb25nZXIKCWhhcyB0byBzdXBwb3J0IC5sYSBmaWxlcywgc2luY2UgbGlibHRkbCBhbHJlYWR5IGRvZXMuICBDb252ZW5pZW5jZQoJbGlicmFyaWVzIGFuZCByZWxvYWRhYmxlIG9iamVjdHMgc2hvdWxkIGJlIHRlc3RlZCBpbiB0aGUKCXRlc3RzdWl0ZS4gIFdlIGNvdWxkIHN1cHBvcnQgc29tZSBhbW91bnQgb2YgY29udHJvbCBvbiB0aGUgc29uYW1lCglvZiBsaWJyYXJpZXMuCgkqIGRvYy9saWJ0b29sLnRleGk6IE5vdGVzIGFib3V0IGNvbnZlbmllbmNlIGxpYnJhcmllcyBhbmQKCWF1dG9tYWtlLiAgRG9jdW1lbnRlZCBJTkNMVERMLgoKMTk5OS0wNS0yMCBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGNkZW1vL21haW4uYzogIldlbGNvbWUgX3RvXyAuLi4iCgkqIG1kZW1vL21haW4uYzogZGl0dG8KCSogbGlibHRkbC9jb25maWd1cmUuaW46IHN1cHBvcnQgbXVsdGlwbGUgZGxvcGVuaW5nIG1lY2hhbmlzbXMKCSAgYXQgb25jZQoJKiBsaWJsdGRsL2x0ZGwuYzogcHJlZml4IHN5c3RlbSBkZXBlbmRlbnQgZnVuY3Rpb25zIHdpdGggInN5c18iCgkgIHRvIGF2b2lkIHN5bWJvbCBjb25mbGljdHMgKGxpYmRsZCBkaWRuJ3Qgd29yaykKCSogbGlidG9vbC5tNCAoQUNfTElCTFRETF8qKTogc2V0IElOQ0xUREwgdG8gdGhlIHBhdGggb2YgbHRkbC5oCgkqIGx0Y29uZmlnLmluOiBjaGVjayBmb3IgZGxvcGVuIHdpdGggLWxkbCBmaXJzdAoKMTk5OS0wNS0xOSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogTkVXUzogQWRkZWQgMS4zLjEgbmV3cyBpdGVtcy4KCSogZG9jL1BMQVRGT1JNUzogdXBkYXRlZCB0aGUgYm94ZXMgSSBoYXZlIGFjY2VzcyB0bywgdG8gMS4zLjEKCWluIHByZXBhcmF0aW9uIGZvciB0aGUgbmV4dCByZWxlYXNlLgoKMTk5OS0wNS0xOCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiosIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjKTogZGxsdG9vbCBjaG9rZXMKCW9uIHRoaXMsIHNvIGxlYXZlIGl0IHVuc2V0IGluIHRoaXMgY2FzZSBzbyB0aGF0IHRoZSBsdG1haW4gY29kZQoJa25vd3MgaXQgaGFzIHRvIHVucGFjayBjb252ZW5pZW5jZSBhcmNoaXZlcyBieSBpdHNlbGYuCgoxOTk5LTA1LTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdG1haW4uaW46IERvIG5vdCBleGl0IHdoZW4gYW4gdW5rbm93biBsaWJyYXJ5IG5hbWUgaXMgcGFzc2VkCglwYXNzZWQgaW4sIHNpbXBseSB3YXJuIGFuZCBjb250aW51ZSBzaW5jZSBzb21lIGNvbXBpbGVycyByZXF1aXJlCgktTEFORzoqIGxpa2Ugb3B0aW9ucyB0byB3b3JrLgoJUmVwb3J0ZWQgYnkgQWRhbSBDLiBQb3dlbGwsIElWIDxhZGFtLnBvd2VsbEBuaXN0Lmdvdj4KCjE5OTktMDUtMTcgIEppcm8gVGFrYWJhdGFrZSAgPGppcm9AZGluLm9yLmpwPgoKCSogbHRjb25maWcuaW46IHBvcnQgdG8gTkVDIFVYLzQ4MDAuCgkqIE5FV1M6IHVwZGF0ZWQuCgoxOTk5LTA1LTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbiAoYmVvcyosIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogc2V0IHRvIHBhc3NfYWxsLiAgQmVPUwoJaXMgUElDIGJ5IGRlZmF1bHQuCglSZXBvcnRlZCBieSAiU2hhd24gVCAuIEFtdW5kc29uIiA8YW11bmRzb25AZ2ltcC5vcmc+CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogRml4IHRlc3QgZmFpbHVyZXMgb24gQUlYIDQuMy4yIGJ5IGNoZWNraW5nCglmb3IgZGxvcGVuICp3aXRoKiAtbGRsIGZpcnN0LgoJUmVwb3J0ZWQgYnkgR3JlZyBXb29sZWRnZSA8aWM1MDM1JXRzczFjcnMuYW1ncmVldGluZ3MuY29tQHJvc2UuYW1ncmVldGluZ3MuY29tPgoKCSogZGVtby9mb28uaDogRG9uJ3Qgc2V0IGFueSBkZWNsc3BlY3MgdW50aWwgd2UgaGF2ZSBmdWxsIGRsbAoJc3VwcG9ydC4KCjE5OTktMDUtMTYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKHNvbGFyaXMyLjYsIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjKTogRG8gbm90IHVzZQoJLVdsIGZvciBhbGxleHRyYWN0LgoKMTk5OS0wNS0xNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBpbnN0dXRpbC9jaG1vZDogTmV3IHNjcmlwdCB0byBhdm9pZCBjaG1vZCdpbmcgZmlsZXMgd2hpbGUKCWluc3RhbGxpbmcgbGlibHRkbCdzIHNvdXJjZXMuCgkqIGluc3R1dGlsL2xuOiBOZXcgc2NyaXB0IHRvIGF2b2lkIGhhcmQtbGlua2luZyBsaWJsdGRsJ3Mgc291cmNlcwoJaW4gdGhlIGluc3RhbGwgdHJlZS4KCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBEaXN0IHRoZW0uCgkoaW5zdGFsLWRhdGEtaG9vayk6IEFkZCBzcmNkaXIvaW5zdHV0aWwgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKCVBBVEggYmVmb3JlIGluc3RhbGxpbmcgbGlibHRkbCdzIHNvdXJjZXMuCgoxOTk5LTA1LTA5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBUT0RPOiB1cGRhdGVkLgoKMTk5OS0wNS0wNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogTWFrZWZpbGUuYW0gKGluc3RhbGwtZGF0YS1ob29rKTogIG1ha2Ugc3VyZSB0aGUgaW5zdGFsbCBkaXJlY3RvcnkKCWlzIG5vdCBsZWZ0IHdvcmxkIHdyaXRhYmxlLgoJUmVwb3J0ZWQgYnkgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uY3MudW5pLWRvcnRtdW5kLmRlPgoKMTk5OS0wNC0zMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJ0b29sLm00OiBVc2UgaWZlbHNlIGluc3RlYWQgb2YgaWYuCglSZXBvcnRlZCBieSBEYXZpZCBNYXppZXJlcyA8ZG1AYW1zdGVyZGFtLmxjcy5taXQuZWR1PgoKMTk5OS0wNC0yOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJR05VIExpYnRvb2wgMS4zIHdhcyByZWxlYXNlZC4KCgkqIE5FV1M6IFN1bW1hcml6ZSBuZXdzIGZyb20gMS4yIHRvIDEuMy4KCgkqIGx0bWFpbi5pbjogU2F2ZSBleGl0IHN0YXR1cyBvZiBsaW5rX2NvbW1hbmQgYmVmb3JlIHJlbW92aW5nCglzeW1ib2wgdGFibGUgb2JqZWN0IGZpbGUuCgoxOTk5LTA0LTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBkb2MvUExBVEZPUk1TOiB1cGRhdGVkIG15IGhwdXgtMTAuMjAgYW5kIGN5Z3dpbiBib3ggZW50cmllcy4KCjE5OTktMDQtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogTkVXUzogSW1wcm92ZWQgc3VwcG9ydCBmb3IgRFUgYW5kIElSSVggdG9vLgoKCSogY29uZmlnLnN1YiwgY29uZmlnLmd1ZXNzOiBVcGRhdGVkIGZyb20gR05VIGNvbW1vbi4KCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogTW92ZSBBQ19MSUJMVERMX0NPTlZFTklFTkNFIGJlZm9yZQoJQU1fUFJPR19MSUJUT09MLCBhcyBzdWdnZXN0ZWQgYnkgYXV0b2NvbmYuCgoJKiBkb2MvbGlidG9vbC50ZXhpIChEaXN0cmlidXRpbmcgbGlibHRkbCk6IERvY3VtZW50IHRoYXQgLXN0YXRpYwoJbWF5IGNhdXNlIHRoZSBzYW1lIHByb2JsZW1zIG9uIGxpYmx0ZGwgYXMgLWFsbC1zdGF0aWMuCgkqIFRPRE86IFdlIG1pZ2h0IHdhbnQgdG8gZml4IHRoaXMgaW4gdGhlIGZ1dHVyZS4KCgkqIGRvYy9saWJ0b29sLnRleGk6IENsZWFyIHVwIG92ZXJmdWxsIGhib3guCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChsdGRsLmxvKTogQWRkIGRlcGVuZGVuY2llcy4KCSogbGlibHRkbC9jb25maWd1cmUuaW46IENsZWFuIHVwIHNvbWUgZHVwbGljYXRlIGRlZmluZXMuICBFbmFibGUKCXN1cHBvcnQgZm9yIG11bHRpcGxlIGRsb3BlbmluZyBtZWNoYW5pc21zLgoJKiBsaWJsdGRsL2FjY29uZmlnLmg6IE5ldyBmaWxlLiAgQWRkICN1bmRlZnMgZm9yIGRlZmluZXMgdGhhdAoJd291bGQgYmUgZHVwbGljYXRlZC4KCjE5OTktMDQtMjkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQgKGN5Z3dpbip8bWluZ3cqLCBETExUT09MLCBPQkpEVU1QLCBBUyk6IE9ubHkgZXhwYW5kIHRoZQoJY29kZSB0aGF0IG1ha2VzIHRoZXNlIGNvbmZpZ3VyZSB0aW1lIGNoZWNrcyBvbiBob3N0cyB0aGF0IG5lZWQgdGhlCgl0b29scyAqYW5kKiBpZiB0aGUgQUNfTElCVE9PTF9XSU4zMl9ETEwgbWFjcm8gaXMgdXNlZC4KCjE5OTktMDQtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChubGlzdCwgU1lNRklMRSk6IFVzZSBvdXRwdXRuYW1lIGluc3RlYWQgb2Ygb3V0cHV0IGZvcgoJbmFtZXMgd2l0aGluIG91dHB1dF9vYmpkaXIuCgoxOTk5LTA0LTI4ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKEFDX0VOQUJMRV9TSEFSRUQsIEFDX0VOQUJMRV9TVEFUSUMsCglBQ19FTkFCTEVfRkFTVF9JTlNUQUxMKTogRG8gbm90IGNhbGwgQUNfQkVGT1JFIGhlcmUsIHRoZXkncmUKCUFDX1JFUVVJUkVkIGJ5IEFDX0xJQlRPT0xfU0VUVVAuCgkoQUNfRElTQUJMRV9TSEFSRUQsIEFDX0RJU0FCTEVfU1RBVElDLCBBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTCk6CglDYWxsIEFDX0JFRk9SRSBoZXJlLCBhbmQgbm93IHdpdGggdHdvIGFyZ3VtZW50cywgc2luY2UgdGhlc2UgZG8KCWNoYW5nZSB0aGUgZGVmYXVsdC4KCShBQ19MSUJMVERMX0NPTlZFTklFTkNFLCBBQ19MSUJMVERMX0lOU1RBTExBQkxFKTogRml4IGNhbGxzIHRvCglBQ19CRUZPUkUuCgoxOTk5LTA0LTI4ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChsdGNvbmZpZ19lbmFibGVfd2luMzJfZGxsKTogcGFzcyAtLWVuYWJsZS13aW4zMi1kbGwgdG8KCWx0Y29uZmlnIGlmIHRoaXMgaXMgc2V0LgoJKEFDX0xJQlRPT0xfV0lOMzJfRExMKTogTmV3IG1hY3JvIHJlcXVpcmVkIGZvciBsaWJ0b29sIHRvIGF0dGVtcHQKCWEgZGxsIGJ1aWxkIG9uIHdpbjMyIGhvc3RzLgoJKiBsdGNvbmZpZy5pbiAoLS1lbmFibGUtd2luMzItZGxsKTogbmV3IGZsYWcgZm9yIHRoZSBjbGkuCgkoY3lnd2luKnxtaW5ndyp8b3MyKiwgbHRjb25maWdfZW5hYmxlX3dpbjMyX2RsbCk6IGlmIHRoaXMgaXMgbm90IHNldAoJdG8geWVzLCB0aGVuIGRvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMuCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IEFDX0xJQlRPT0xfV0lOMzJfRExMLgoJKiBORVdTOiBub3RlZCBuZXcgbWFjcm8uCgoxOTk5LTA0LTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfRExPUEVOLCBBQ19FTkFCTEVfU0hBUkVELAoJQUNfRU5BQkxFX1NUQVRJQywgQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTCwgQUNfTElCTFRETF9DT05WRU5JRU5DRSwKCUFDX0xJQkxURExfSU5TVEFMTEFCTEUpOiBXYXJuIGlmIHRoZXkgYXBwZWFyIGFmdGVyCglBQ19QUk9HX0xJQlRPT0wuICBBQ19MSUJUT09MX1NFVFVQLCBhY3R1YWxseS4KCShBQ19MSUJUT09MX1NFVFVQKTogQ2hlY2sgd2hldGhlciBETE9QRU4gc3VwcG9ydCBpcyB0byBiZSBlbmFibGVkCglhdCBhdXRvY29uZiB0aW1lLCBub3QgY29uZmlndXJlIHRpbWUuICBTaW1wbGlmeSBjb2RlIGFuZAoJaW1wcm92ZSAoPykgaGVscCBtZXNzYWdlIGFib3V0IC0tZGlzYWJsZS1saWJ0b29sLWxvY2suCgoxOTk5LTA0LTI3IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogTkVXUzogbmV3IGNsZWFuIG1vZGUKCSogVEhBTktTOiBhZGRlZCBPc3NhbWEgT3RobWFuCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50ZWQgdGhlIG5ldyBgY2xlYW4nIG1vZGUKCSogbHRjb25maWcuaW46IHNldCBuZWVkX3ZlcnNpb249bm8gb24gT1NGIChyZXBvcnRlZCBieQoJICBNYXJjdXMgU3VuZGJlcmcgPG1hY2thbkBzdGFja2VuLmt0aC5zZT4pCgkqIGx0bWFpbi5pbjogYWxsb3cgYWJzb2x1dGUgbm9uLWV4aXN0YW50IC1MIHBhdGhzLAoJICBhbHdheXMgdXNlIG91dHB1dF9vYmpkaXIgaW5zdGVhZCBvZiBvYmpkaXIgZm9yIHRlbXBvcmFyeSBmaWxlcywKCSAgZGVsZXRlIGdlbmVyYXRlZCB0ZW1wb3Jhcnkgc3ltYm9sIGxpc3RzLAoJICBkb24ndCBhZGQgLmxhIHR3aWNlIGluIHRoZSBwc2V1ZG8tbGlicmFyeSBoZWFkZXIsCgkgIGltcGxlbWVudGVkIGFuZCBkb2N1bWVudGVkIGNsZWFuIG1vZGUgKGRlbGV0ZXMgbGlicmFyaWVzLAoJICBwcm9ncmFtcyBhbmQgb2JqZWN0IGZpbGVzIGFuZCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0pLAoJICBpZiBidWlsZF9saWJ0b29sX2xpYnM9bm8gYW5kIG5vIHN0YXRpYyBsaWJyYXJ5IGlzIGF2YWlsYWJsZSwKCSAgdHJ5IHRvIGxpbmsgdGhlIHByb2dyYW0gYWdhaW5zdCB0aGUgc2hhcmVkIGxpYnJhcnksCgkgIGRvbid0IGFkZCBhIHN0YXRpY2FsbHkgbGlua2VkIGxpYnJhcnkgdG8gdGhlIGRlcGVuZGVuY3lfbGlicwoJKiBsdG1haW4uaW4gKGhlbHAgdW5pbnN0YWxsKTogYWRkZWQgYSBtaXNzaW5nIGJhY2tzbGFzaAoJICBhZnRlciBlY2hvIChyZXBvcnRlZCBieSBPc3NhbWEgT3RobWFuKQoKMTk5OS0wNC0yNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKG9sZF9hcmNoaXZlX2NtZHMpOiBJdGVyYXRlIG9uIG9sZG9ianMgdG8gZmluZCBvdXQKCXdoaWNoIGxpbmtzIHRvIG9iamVjdCBmaWxlcyB3ZSBtdXN0IGNyZWF0ZS4gIERvIG5vdCB0ZXN0IGZvciBlbXB0eQoJcGljX2ZsYWcgdG8gY3JlYXRlIHN1Y2ggbGlua3MuICBVc2Ugb2JqZXh0IHdoZW4gc2VhcmNoaW5nIGZvcgoJb2JqZWN0IGZpbGVzIGV4dHJhY3RlZCBmcm9tIGNvbnZlbmllbmNlIGxpYnJhcnkuCgoJKiBsdGNvbmZpZy5pbiAoY29tcGlsZXJfY19vKTogTWFrZSBzdXJlIHRoZSBjb21waWxlciBkb2VzIG5vdAoJY3JlYXRlIHRlbXBvcmFyaWVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGVuIG91dHB1dCBzaG91bGQgZ28KCWVsc2V3aGVyZS4gIFdlIG11c3QgcGVyZm9ybSBsb2NraW5nIGlmIGl0IGRvZXMuCgoxOTk5LTA0LTI3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdG1haW4uaW4gKG9sZF9hcmNoaXZlX2NtZHMpOiBFbnN1cmUgdGhhdCB0aGVyZSBhcmUgYWx3YXlzIC5vCglvYmplY3RzIGF2YWlsYWJsZSBiZWZvcmUgcnVubmluZyBvbGRfYXJjaGl2ZV9jbWRzLgoKMTk5OS0wNC0yNiAgRXJleiBaYWRvayAgPGV6a0Bjcy5jb2x1bWJpYS5lZHU+CgoJKiBkb2MvUExBVEZPUk1TOiBVcGRhdGVzIGZvciBuZXRic2QgMS4zLjMgYW5kIDEuNC4KCjE5OTktMDQtMjYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGFpeDQuWzAxXSwgYWx3YXlzX2V4cG9ydF9zeW1ib2xzKTogVGhlIGNhc2UgcGF0dGVybgoJd291bGQgbmV2ZXIgbWF0Y2g7IGZpeGVkLgoJUmVwb3J0ZWQgYnkgU3RlcGhhbiBLdWxvdyA8Y29vbG9AaXRtLm11LWx1ZWJlY2suZGU+CgoxOTk5LTA0LTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKE9CSkRVTVApOiBQYXNzIGl0IHRvIGx0Y29uZmlnLgoJKiBjb25maWd1cmUuaW46IEFDX1NVQlNUIERMTFRPT0wsIE9CSkRVTVAgYW5kIEFTLgoJKiBNYWtlZmlsZS5hbSAobGlidG9vbCwgY2xpYnRvb2wpOiBQYXNzIHRoZW0gdG8gbHRjb25maWcuCgoxOTk5LTA0LTI1ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUBjeWdudXMuY29tPgoKCSogbGlidG9vbC5tNCAoY3lnd2luKik6IExvb2sgZm9yIHRhcmdldCBvYmpkdW1wIHRvb2wuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4qLCBmaWxlX21hZ2ljX2NtZCk6IFVzZSBhdXRvY29uZi1sb2NhdGVkIHRhcmdldAoJb2JqZHVtcCB0b29sLiAgVHJhY2sgT0JKRFVNUCBsaWtlIERMTFRPT0wgYW5kIEFTLgoKCSogbHRjb25maWcuaW4gKGN5Z3dpbiosIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogQWNjZXB0CgkiYXJjaGl0ZWN0dXJlOiBpMzg2IiBhcyBvcHRpb25hbCBzdWZmaXgsIGZvciBpdCBpcyBwcmludGVkIG9uIGEKCXNlcGFyYXRlIGxpbmUgc29tZXRpbWVzLgoKCSogbHRtYWluLmluIChjeWd3aW4qLCBsdGRsbC5jKTogV3JhcCBEbGxNYWluIGRlY2xhcmF0aW9uIGluIGV4dGVybiAiQyIuCgoJKiBsdG1haW4uaW4gKGRlcGxpYnNfY2hlY2tfbWV0aG9kPWZpbGVfbWFnaWMpOiBSZWRpcmVjdCBzdGRlcnIgdG8KCS9kZXYvbnVsbCwgdG8gc3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgZnJvbSB0YXJnZXQgb2JqZHVtcC4KCjE5OTktMDQtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGlyaXgqLCBzb25hbWVfc3BlYywgbGlicmFyeV9uYW1lc19zcGVjKTogTWlzc2luZwoJZG90cyBiZWZvcmUgJHZlcnN1ZmZpeCBhbmQgJG1ham9yLgoKCSogbHRjb25maWcuaW4gKHNvbGFyaXMqLCB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyk6IFVzZSAtegoJYWxsZXh0cmFjdC9kZWZhdWx0ZXh0cmFjdCBmcm9tIFNvbGFyaXMgMi42IG9uLgoJUmVwb3J0ZWQgYnkgQnJpYW4gRm9yZCA8Zm9yZEB2c3MuZnNpLmNvbT4KCgkqIGx0Y29uZmlnLmluIChiZW9zKiwgYWxsb3dfdW5kZWZpbmVkX2ZsYWcpOiBEbyBub3QgYnVpbGQgc2hhcmVkCglsaWJyYXJpZXMgd2l0aCB1bmRlZmluZWQgc3ltYm9scy4KCgkqIGx0Y29uZmlnLmluIChhaXg0KiwgYWxsb3dfdW5kZWZpbmVkX2ZsYWcpOiBTZXQgdG8gLWJlcm9rLgoJKGFpeDQqLCBzaGFyZWRfZmxhZyk6IFNldCB0byAtc2hhcmVkIG9yICR7d2x9LWJNOlNSRS4KCShhaXg0KiwgYXJjaGl2ZV9jbWRzKTogVXNlIC1iZXhwYWxsLgoJKGFpeDQqLCBhcmNoaXZlX2NtZHMsIGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBVc2Ugc2hhcmVkX2ZsYWcgYW5kCglhbGxvd191bmRlZmluZWRfZmxhZy4KCShhaXg0KiwgYWx3YXlzX2V4cG9ydF9zeW1ib2xzKTogU2V0IHRvIHllcyB1cCB0byBBSVggNC4xLiosCgliZWNhdXNlIC1iZXhwYWxsIGlzIHN1cHBvcnRlZCBmcm9tIDQuMiBvbi4KCVJlcG9ydGVkIGJ5IEdyZWcgV29vbGVkZ2UKCTxpYzUwMzUldHNzMWNycy5hbWdyZWV0aW5ncy5jb21Acm9zZS5hbWdyZWV0aW5ncy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoaHB1eCosIGhhcmRjb2RlX21pbnVzX0wpOiBTZXQgdG8geWVzLgoJKGhwdXgqLCBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjKTogRG8gbm90IHVzZSArcyBieSBkZWZhdWx0LgoJKGhwdXgqLCBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgpOiBTZXQgdG8gbm8uCgoJKiBsdGNvbmZpZy5pbiAoaXJpeCosIG9zZiosIGFyY2hpdmVfY21kcyk6IFdyaXRlIHNvX2xvY2F0aW9ucwoJd2l0aGluIG9iamRpci4KCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgc29uYW1lX3NwZWMpOiBBcHBlbmQgJG1ham9yLgoJKGlyaXgqLCBsaWJyYXJ5X25hbWVzX3NwZWMpOiBBZGQgbmV3IHNvbmFtZS4KCVJlcG9ydGVkIGJ5IERhdmlkIEthZWxibGluZyA8ZHJrQHNnaS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoaXJpeCosIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjKTogL3Vzci9sb2NhbC9saWIKCWlzIG5vdCBzZWFyY2hlZCBieSBkZWZhdWx0LiAgL3Vzci9saWIgaXMgc2VhcmNoZWQgYmVmb3JlIC9saWIuCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjKTogL3Vzci9saWIgaXMKCXNlYXJjaGVkIGJlZm9yZSAvbGliLgoKCSogbHRjb25maWcuaW4gKGlyaXg1KiwgbmVlZF9saWJfcHJlZml4LCBuZWVkX3ZlcnNpb24pOiBTZXQgdG8gbm8sCglieSB1bmlmeWluZyB3aXRoIGlyaXg2Ki4KCgkqIGx0Y29uZmlnLmluIChpcml4Kiwgb3NmKiwgZGVwbGlic19jaGVja19tZXRob2QpOiBVc2UgcGFzc19hbGwuCgoJKiBsdGNvbmZpZy5pbiAob2xkX0xERkxBR1MsIG9sZF9MSUJTKTogU2F2ZSBhbmQgd3JpdGUgdG8gY29tbWVudHMKCWluIG91dHB1dCBmaWxlLgoKCSogbHRtYWluLmluIChwcmVmZXJfc3RhdGljX2xpYnMpOiBOZXcgdmFyaWFibGUsIHNldCB0byBubyBieQoJZGVmYXVsdCwgYnV0IHNldCB0byB5ZXMgYnkgLXN0YXRpYyBhbmQgLWFsbC1zdGF0aWMuICBVc2VkIGluc3RlYWQKCW9mIGJ1aWxkX2xpYnRvb2xfbGlicyB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgYSBzaGFyZWQgb3Igc3RhdGljCgl2ZXJzaW9uIG9mIGEgbGlicmFyeSwgd2hlbiBib3RoIHZlcnNpb25zIGFyZSBhdmFpbGFibGUuCgoxOTk5LTA0LTI1ICBCb3lkIEx5bm4gR2VyYmVyICA8Z2VyYmVyYkB6ZW5lei5jb20+CgoJKiBsdGNvbmZpZy5pbiAoc2NvMy4ydjUqKTogVXNlIExEX1JVTl9QQVRIIGZvciBoYXJkLWNvZGluZy4KCjE5OTktMDQtMjUgIFBhdmVsIFJvc2tpbiAgPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKHVuaW5zdGFsbC1sb2NhbCk6IFJlbW92ZSBpbnN0YWxsZWQgbGlibHRkbCB0cmVlLgoKMTk5OS0wNC0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkZW1vL01ha2VmaWxlLmFtIChoYy1kaXJlY3QsIGhjLWxpYmZsYWcsIGhjLWxpYnBhdGgsIGhjLW1pbnVzbCk6CglBZGRlZCBDRkxBR1MgdG8gbGluayBjb21tYW5kczsgU0NPIE9TUiBuZWVkcyBpdCBmb3IgLWJlbGYuCgoJKiBUT0RPOiAtV2wgYW5kIC1XYyBvcHRpb25zLgoKMTk5OS0wNC0xMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJsdGRsL2x0ZGwuYzogUmVtb3ZlIHRyaXZpYWwgd2FybmluZ3MuCgoxOTk5LTA0LTIyICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUBjeWdudXMuY29tPgoKCSogbHRjb25maWcuaW46IENvcnJlY3Qgc2VkIGV4cHJlc3Npb24gdGhhdCBleHRyYWN0cyBzeW1ib2xzCglmcm9tIGN5Z3dpbiBkZWYgZmlsZXMuICBJZ25vcmUgZGVtYW5nbGVkIEMrKyBuYW1lcywgaWYgYW55LgoKMTk5OS0wNC0xMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMuY2E+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoc2hsX2Nsb3NlKTogc2hsX3Qgd2FzIGNvcnJlY3QgaGVyZS4uLgoJKHNobF9zeW0pOiAuLi4gYnV0IHdlIGhhdmUgdG8gcGFzcyB0aGUgaGFuZGxlIGJ5IHJlZmVyZW5jZSBoZXJlLgoKMTk5OS0wNC0xMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChJbnZva2luZyBsdGNvbmZpZyk6IERvY3VtZW50IGVudmlyb25tZW50Cgl2YXJpYWJsZXMgdXNlZC4KCgkqIGRvYy9saWJ0b29sLnRleGkgKEludm9raW5nIGx0Y29uZmlnKTogRG9jdW1lbnQgLS1jYWNoZS1maWxlLgoKCSogZG9jL2xpYnRvb2wudGV4aSAoSW52b2tpbmcgbHRjb25maWcpOiBEb2N1bWVudAoJLS1kaXNhYmxlLWZhc3QtaW5zdGFsbCwgLS1lbmFibGUtZGxvcGVuLCAtLXdpdGgtZ251LWxkIGFuZAoJLS1kaXNhYmxlLWxvY2suCgoxOTk5LTA0LTExIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IGNoZWNrIGZvciBzaGxfbG9hZCBpbiBsaWJkbGQKCSogbGlibHRkbC9sdGRsLmMgKHNobF9jbG9zZSwgc2hsX3N5bSk6IHVzZSAoc2hsX3QgKikgaW5zdGVhZCBvZiBzaGxfdAoJKiBsdGNvbmZpZy5pbiAoY2hlY2sgZm9yIGdjYyk6IHJlbW92ZWQgYSBib2d1cyBsaW5lLAoJICBjaGVjayBmb3Igc2hsX2xvYWQgaW4gbGliZGxkCgkqIGx0bWFpbi5pbjogYWRkZWQgYSB3YXJuaW5nIHRvIHRoZSBoZWFkZXIgb2YgdGhlIC5sYSBmaWxlCgkgIHRvIHdhcm4gdXNlcnMgYWdhaW5zdCBkZWxldGluZyB0aGUgZmlsZSwKCSAgbGluayBzaGFyZWQgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzIGlmCgkgIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09IHBhc3NfYWxsCgoxOTk5LTA0LTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKEFDX1BST0dfTEQsIEFDX1BST0dfTk0pOiBXaGVuIGxvb2tpbmcgZm9yIHByb2dyYW1zLAoJdHJ5ICRhY19leGVleHQgdG9vLCBzbyB0aGF0IHRoZXkncmUgZm91bmQgb24gREpHUFAvTVMtRE9TLgoJKiBsdGNvbmZpZy5pbjogTGlrZXdpc2UuCglSZXBvcnRlZCBieSBSb2JlcnQgUy4gTWFpZXIgPHJzbUBtYXRoLmFyaXpvbmEuZWR1PgoKCSogbHRjb25maWcuaW4gKFVzYWdlKTogUmVtb3ZlZCAtLWVuYWJsZS1kbG9wZW4tc2VsZi4KCVJlcG9ydGVkIGJ5IFBhdmVsIFJvc2tpbiA8cGF2ZWxfcm9za2luQGdlb2NpdGllcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogTW92ZWQgc3lzdjQgYmVmb3JlIHN5c3Y0LiouCgkoc3ltY29kZSk6IEJyaWFuJ3Mgb3ZlcnJpZGVyIGlzIHNwZWNpZmljIHRvIHN5c3Y0LCBub3Qgc3lzdjQqLgoKMTk5OS0wNC0wOSBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1MsIFJFQURNRTogTW90b3JvbGEgU3lzdGVtIFYgNCBzdXBwb3J0CgkqIGRvYy9QTEFURk9STVM6IGFkZGVkIG1rODgtbW90b3JvbGEtc3lzdjQKCSogbHRjb25maWcuaW46IGluc3RhbGxlZCBwYXRjaCBmcm9tIEJyaWFuIEZvcmQgPGZvcmRAdnNzLmZzaS5jb20+CgkgIHRvIHN1cHBvcnQgbWs4OC1tb3Rvcm9sYS1zeXN2NAoKCSogZG9jL2xpYnRvb2wudGV4aTogc29tZSBjbGVhbnVwcyBpbiB0aGUgbGlibHRkbCBkb2N1bWVudGF0aW9uCgoxOTk5LTA0LTA3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluICgtLWZhbGxiYWNrLWVjaG8pOiBEbyBub3QgcHV0IGFuIGlubGluZSBkb2N1bWVudCBhbmQKCWFuIGV4ZWMgaW4gdGhlIHNhbWUgaWYgY29uc3RydWN0OyBvdGhlcndpc2UgdGhlIGlubGluZSBkb2N1bWVudAoJbWF5IG5vdCBiZSByZW1vdmVkLgoJKiBsdG1haW4uaW4gKC0tZmFsbGJhY2stZWNobyk6IExpa2V3aXNlLgoJUmVwb3J0ZWQgYnkgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmUuYW5nbGluQG5yYy5jYT4KCgkqIGRyeXJ1bi50ZXN0OiBJdCB3b3VsZCBzdGlsbCBmYWlsIGF0IHJhbmRvbSB0aW1lcywgYmVjYXVzZSBgY3AnCglhbmQgYG12JyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gcHJlc2VydmUgdGhlIHRpbWVzdGFtcHMgb2YgdGhlCglpbnN0YWxsZWQgZmlsZXMuICBJbnN0ZWFkIG9mIHByZXNlcnZpbmcgdGhlbSwganVzdCByZW1vdmUgdGhlbQoJYmVmb3JlIHRoZSBkcnkgdW5pbnN0YWxsIHRlc3QuICBSZWRpcmVjdCBkcnktcnVuIG91dHB1dCB0byBzdGRlcnIsCglzbyB0aGF0IGl0IGNhbiBiZSBlYXNpbHkgc2VwYXJhdGVkIGZyb20gdGhlIHJlZ3VsYXIgb3V0cHV0LgoKMTk5OS0wNC0wNyBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1M6IHN1cHBvcnQgZm9yIG1vdmVkIGxpYnJhcmllcwoJKiBsaWJ0b29sLm00OiBhbm90aGVyIERKR1BQIGZpeAoKMTk5OS0wNC0wNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBkb2MvUExBVEZPUk1TOiBVcGRhdGVkIHRvIDEuMyBmb3IgYWxsIHBsYXRmb3JtcyBJJ3ZlIGdvdC4gIEknbGwKCW1ha2Ugc3VyZSAxLjMgd29uJ3QgYmUgcmVsZWFzZWQgdW5sZXNzIGl0IHBhc3NlcyBhbGwgdGVzdHMgb24KCXRob3NlIHBsYXRmb3Jtcy4KCgkqIGRvYy9saWJ0b29sLnRleGkgKENvbXBpbGUgbW9kZSk6IERvY3VtZW50IHBvdGVudGlhbCBwcm9ibGVtIGFuZAoJd29yay1hcm91bmQgZm9yIGAtYyAtbyBkaXIvZm9vLmxvJy4KCgkqIHRlc3RzL2RyeXJ1bi50ZXN0OiBUaGUgY29uc3RhbnQgbW9kaWZpY2F0aW9ucyBvZiBsaWJ0b29sIHdvdWxkCgljYXVzZSBtYWluLm8gdG8gYmUgdXBkYXRlZCBhdCB0aGUgd3JvbmcgdGltZTsgdGhlIG5ldyBhcHByb2FjaCBpcwoJdG8gbW9kaWZ5IHRoZSBsaWJ0b29sIHNjcmlwdCBzbyB0aGF0IGl0IGVuYWJsZXMgZHJ5IHJ1biBkZXBlbmRpbmcKCW9uIHdoZXRoZXIgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IG9yIG5vdC4gIEkndmUgYWxzbyBtb3ZlZAoJYGFmdGVyJyBhbmQgYGJlZm9yZScgdG8gYSBkaXJlY3RvcnkgZGVlcCB3aXRoaW4gJG9iamRpciwgaW5zdGVhZAoJb2YgY3JlYXRpbmcgaXQgaW4gLi4vdGVzdHMuCgkqIHRlc3RzL01ha2VmaWxlLmFtIChDTEVBTkZJTEVTKTogUmVtb3ZlZC4KCjE5OTktMDQtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IFdlIGNhbm5vdCByZWx5IG9uIHNldHRpbmcgTElCVE9PTCwgYmVjYXVzZQoJYXV0b21ha2UgbWF5IHVzZSBzdWItbWFrZXMsIGFuZCB0aGUgc2V0dGluZyB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkCgl0byB0aGVtIG9uIHNvbWUgbWFrZXMuICBJbnN0ZWFkLCBjcmVhdGUgYSBkcnkgdmVyc2lvbiBvZiBsaWJ0b29sCglhbmQgc3dpdGNoIGJldHdlZW4gaXQgYW5kIHRoZSBvcmlnaW5hbCBvbmUgYmVmb3JlIGFuZCBhZnRlciBkcnkKCXJ1bnMuCgkqIHRlc3RzL01ha2VmaWxlLmFtIChDTEVBTkZJTEVTKTogQWRkZWQgbGlidG9vbC0qLCBjcmVhdGVkIGJ5CglkcnlydW4udGVzdC4KCgkqIHRlc3RzL2RyeXJ1bi50ZXN0OiBVc2UgY21wIGluc3RlYWQgb2YgZGlmZi4KCShiZWZvcmUsIGFmdGVyKTogQ3JlYXRlIHRoZW0gd2l0aGluIC4uL3Rlc3RzLgoJKGxpYnRvb2wpOiBTZXQgdG8gYC9iaW4vc2ggLi9saWJ0b29sJyBieSBkZWZhdWx0LCBidXQgdXNlIExJQlRPT0wsCglTSEVMTCBhbmQgdG9wX2J1aWxkZGlyIGZyb20gdGhlIGVudmlyb25tZW50IGlmIGF2YWlsYWJsZS4gIEZvciBkcnkKCXJ1bnMsIHVzZSAiJGxpYnRvb2wgLW4iLgoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoQ0xFQU5GSUxFUyk6IEFkZGVkIGJlZm9yZSBhbmQgYWZ0ZXIuCgkqIGx0bWFpbi5pbjogRG8gbm90IGNyZWF0ZSBsaW5rcyB0byBvYmplY3QgZmlsZXMgaW4gZHJ5IHJ1bnMuCgoxOTk5LTA0LTA2IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRtYWluLmluOiBhZGRlZCBhIG1pc3NpbmcgbGluZSBvZiB0aGUgSUxEIHBhdGNoCgoJKiBORVdTOiBpbXByb3ZlZCBESkdQUCBzdXBwb3J0CgkqIGRvYy9saWJ0b29sLnRleGk6IHJlbW92ZWQgaGFyZGNvZGVfaW50b19saWJzIGRvY3VtZW50YXRpb24KCSogbGlidG9vbC5tNDogc29tZSBESkdQUCBmaXhlcwoJKiBsdGNvbmZpZy5pbjogZGl0dG8sIHJldmVydGVkIG9uZSBvZiBteSBwcmV2aW91cyBwYXRjaGVzOiB3ZSBuZWVkCgkgIHRvIGNoZWNrIGZvciBOTSwgcmVtb3ZlZCB0aGUgaGFyZGNvZGVfaW50b19saWJzIHN1cHBvcnQgc2luY2UKCSAgbm8gcGxhdGZvcm0gc2VlbXMgdG8gc3VwcG9ydCBpdAoJKiBsdG1haW4uaW46IHNvbWUgREpHUFAgZml4ZXMsIHJlbW92ZWQgdGhlIGhhcmRjb2RlX2ludG9fbGlicyBzdXBwb3J0CgoxOTk5LTA0LTA1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChuZXRic2QqLCBHTlUgbGQpOiBTdXBwb3J0IGEub3V0IHNoYXJlZCBsaWJyYXJpZXMKCgkqIE1ha2VmaWxlLmFtIChDVlMpOiBhbGxvdyBjb21tYW5kLWxpbmUgb3ZlcnJpZGluZyBvZiBjdnMKCgkqIGx0Y29uZmlnLmluIChleGNsdWRlX2V4cHN5bXMpOiBFeGNsdWRlIF9HTE9CQUxfT0ZGU0VUX1RBQkxFXyBieQoJZGVmYXVsdCwgYXMgbW9zdCBhLm91dCBwbGF0Zm9ybXMgdXNlIGl0LCBhbmQgZW5kIHVwIGluIHRyb3VibGUgaWYKCXdlIHByZWxvYWQgaXQsIHNvIGl0J3Mgc2FmZXIgdG8gcnVsZSBpdCBvdXQgYnkgZGVmYXVsdCwgYW5kCglzcGVjaWFsIGNhc2UgaXRzIHJlbW92YWwgZnJvbSBleGNsdWRlX2V4cHN5bXMgaWYgc29tZW9uZSBldmVyCgljb21wbGFpbnMuCgoxOTk5LTA0LTA1IFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aTogcmVvcmRlciB0ZXN0cyB0byByZWZsZWN0IGV4ZWN1dGlvbiBvcmRlciwKCSAgZG9jdW1lbnRlZCBkcnlydW4udGVzdCBhbmQgZGVwZGVtbyoKCSogbHRtYWluLmluIChsdF9wcmVsb2FkZWRfc3ltYm9scyk6IGRyeS1ydW4gbW9kZSBidWdmaXgKCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IG5ldyB0ZXN0IHRvIGNoZWNrIHdoZXRoZXIgdGhlIGRyeS1ydW4KCSAgbW9kZSB3b3JrcyBwcm9wZXJseQoKCSogZGVtby9ydW4udGVzdDogcmVtb3ZlZCB0aGUgdW5uZWNlc3NhcnkgdGVzdAoJKiBkZW1vL01ha2VmaWxlLmFtOiBkaXR0bwoJKiBsdG1haW4uaW46IHNldCB0aGUgRExMIHNlYXJjaCBwYXRoIG9uIGN5Z3dpbixtaW5ndyBhbmQgb3MyCgoxOTk5LTA0LTA0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChzdW5vczQqLCBHTlUgbGQpOiAtQnN0YXRpYyBpcyBub3QgZW5vdWdoIGZvcgoJZGVwbGlicy50ZXN0IHRvIHdvcmsgd2l0aCBHTlUgbGQ7IC1Cc2hhcmVhYmxlIGlzIG5lZWRlZCBoZXJlLgoKCSogbHRjb25maWcuaW4gKGxkX3NobGlicywgYW1pZ2FvcyopOiBEaXNhYmxlIHNoYXJlZCBsaWJzIHdpdGgKCW5hdGl2ZSBsZCB0b28uCgoJKiBsdGNvbmZpZy5pbiAoc3Vub3M0KiwgR05VIGxkKTogUmVvcmRlcmVkLgoKCSogbHRjb25maWcuaW4gKGFyY2hpdmVfY21kcywgc3Vub3M0Kik6IFJldmVydCB0byAtQnN0YXRpYzsgdGhlCgluYXRpdmUgbGlua2VyIGRvZXNuJ3QgZXZlbiBzdXBwb3J0IC1Cc2hhcmVhYmxlLCBvbmx5IEdOVSBsZCBkb2VzLgoJRG8gbm90IHVzZSBgZ2NjIC1zaGFyZWQnIGluIGFyY2hpdmVfY21kcywgaXQgYnJlYWtzIGRlcGxpYnMudGVzdC4KCgkqIGx0Y29uZmlnLmluOiBpZiBsZF9zaGxpYnM9bm8sIHNldCBjYW5fYnVpbGRfc2hhcmVkPW5vIHRvbywKCW90aGVyd2lzZSBpdCB3aWxsIGp1c3QgYmUgZGlzcmVnYXJkZWQuICBUaGlzIHdvdWxkIGNhdXNlCgluZXRic2QvbTY4ayB3aXRoIEdOVSBsZCBhLm91dCwgYW5kIGNlcnRhaW5seSBtYW55IG90aGVyIHBsYXRmb3JtcywKCXRvIGluY29ycmVjdGx5IGJlbGlldmUgdGhhdCBzaGFyZWQgbGlicmFyaWVzIHdlcmUgc3VwcG9ydGVkLCB3aGlsZQoJYXJjaGl2ZV9jbWRzIHdhcyBlbXB0eSwgY2F1c2luZyBzaGFyZWQgbGlicmFyaWVzIG5vdCB0byBiZSBjcmVhdGVkCgoxOTk5LTA0LTAzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE5FV1M6IGltcHJvdmVkIHN1cHBvcnQgZm9yIEFJWCBhbmQgSFAvVVgKCjE5OTktMDQtMDMgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBORVdTOiB1cGRhdGVkCgkqIGxpYnRvb2wubTQ6IGNoZWNrIGZvciBtYWluIGluIGxpYm0gaW5zdGVhZCBvZiBjb3MKCSogbHRtYWluLmluOiBjb3NtZXRpYyBmaXhlcywgZG9uJ3QgdHJ5IHRvIGxpbmsgbGlicmFyaWVzIG9ubHkgb25jZQoJICAoYWx0aG91Z2ggaXQncyBub3QgbmVjZXNzYXJ5IG9uIG1hbnkgcGxhdGZvcm1zIGFuZCBsb29rcyB1Z2x5Li4uKSwKCjE5OTktMDQtMDIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChjb252ZW5pZW5jZSk6IGZpeGVkIHJhY2UgY29uZGl0aW9uIHdoZW4gbW9yZSB0aGFuIG9uZQoJbGlicmFyeSB3YXMgbGlua2VkIHdpdGggdGhlIHNhbWUgY29udmVuaWVuY2UgbGlicmFyeSBieQoJdW5pcXVpZnlpbmcgdGhlIGV4dHJhY3QgZGlyZWN0b3J5LiAgSXQgaXMgbm93IG5hbWVkIGFmdGVyIHRoZSBuZXcKCWxpYnJhcnkgKmFuZCogdGhlIG9sZCBvbmUsIGFuZCBsaXZlcyBpbiB0aGUgb2JqZGlyIG9mIHRoZSBuZXcgb25lLgoKCSogbHRtYWluLmluICgtTCopOiBkbyBub3QgYWJvcnQganVzdCBiZWNhdXNlIGEgZGlyZWN0b3J5IHNwZWNpZmllZAoJd2l0aCAtTCBkb2VzIG5vdCBleGlzdDsganVzdCB3YXJuIGFuZCBkaXNjYXJkIGl0CgoJKiBkZXBkZW1vL2wxL01ha2VmaWxlLmFtIChBVVRPTUFLRV9PUFRJT05TKTogbm8tZGVwZW5kZW5jaWVzCgkqIGRlcGRlbW8vbDIvTWFrZWZpbGUuYW0gKEFVVE9NQUtFX09QVElPTlMpOiBkaXR0bwoJKiBkZXBkZW1vL2wzL01ha2VmaWxlLmFtIChBVVRPTUFLRV9PUFRJT05TKTogZGl0dG8KCSogZGVwZGVtby9sNC9NYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IGRpdHRvCgoJKiBsdGNvbmZpZy5pbiAoYXJjaGl2ZV9jbWRzLCBzdW5vczQqKTogd2hlcmUgd2UgdXNlZCAtQnN0YXRpYywgd2UKCXNob3VsZCBoYXZlIGJlZW4gdXNpbmcgLUJzaGFyZWFibGUKCgkqIGRlbW8vTWFrZWZpbGUuYW0gKENMRUFORklMRVMpOiBjbGVhbiBFWFRSQV8qIGZyb20gZGVwbGlicy1jaGVjawoKCSogbGlidG9vbC5tNCAoTERGTEFHUywgTElCUyk6IHBhc3MgdGhlbSB0byBsdGNvbmZpZywgZm9yIHRoZSB0ZXN0cwoJdGhhdCBpbnZvbHZlIGxpbmtpbmcKCSogTWFrZWZpbGUuYW0gKExERkxBR1MsIExJQlMsIGxpYnRvb2wsIGNsaWJ0b29sKTogZGl0dG8KCSogdGVzdHMvTWFrZWZpbGUuYW0gKENGTEFHUywgQ1BQRkxBR1MsIExERkxBR1MsIExJQlMpOiBzZXQKCShMREZMQUdTLCBMSUJTLCBURVNUU19FTlZJUk9OTUVOVCk6IHBhc3MgdGhlbSBkb3duCgoxOTk5LTA0LTAyICBFcmV6IFphZG9rICA8ZXprQGNzLmNvbHVtYmlhLmVkdT4KCgkqIGRvYy9QTEFURk9STVM6IDEuMmYgb2sgb24gdmFyaW91cyB2ZXJzaW9ucyBvZiBocHV4IGNjCgoxOTk5LTA0LTAyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChsaW5rX2FsbF9kZXBsaWJzKTogc2V0IHRvIHVua25vd24gYnkgZGVmYXVsdAoJKiBsdG1haW4uaW46IHRlc3QgIT0gbm8sIG5vdCA9IHllcwoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCB1bmtub3duCgoxOTk5LTA0LTAxIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnRlZCBkZXBsaWJzLnRlc3QKCgkqIGRlbW8vTWFrZWZpbGUuYW06IG1vdmVkIHRlc3RzdWl0ZSBzcGVjaWZpYyBkZWNsYXJhdGlvbnMgdG8gdGhlIGVuZCwKCSAgdGhlIGRlcGxpYnMgY2hlY2sgaXMgbm93IG9wdGlvbmFsCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiByZWFkIGxpYnRvb2wgLS1jb25maWcgb25seSBvbmNlLAoJICBtZXJnZWQgQUNfU1lTX1NZTUJPTF9VTkRFUlNDT1JFK0FDX1NZU19OTV9QQVJTRSBmcm9tIGxpYnRvb2wubTQKCSogbGlidG9vbC5tNDogQUNfU1lTX1NZTUJPTF9VTkRFUlNDT1JFK0FDX1NZU19OTV9QQVJTRSB3ZXJlIG5vdAoJICB1c2VkLCBsdF9kbG9wZW4gYW5kIHNpbGVudCBtYXkgYmUgZW1wdHksIEFDX1NZU19MSUJUT09MX0NZR1dJTgoJICBubyBsb25nZXIgbmVjZXNzYXJ5CgkqIGx0Y29uZmlnLmluOiBOTSBpcyBhbHJlYWR5IGNoZWNrZWQgaW4gbGlidG9vbC5tNCwKCSogbHRtYWluLmluOiBhbHdheXMgbGluayBhbGwgc3RhdGljIGRlcGVuZGVuY3lfbGlicwoJKiB0ZXN0cy9NYWtlZmlsZS5hbTogYWRkZWQgZGVwbGlicy50ZXN0CgkqIHRlc3RzL2RlbW8tZXhlYy50ZXN0LCBkZW1vLWluc3QudGVzdDogcmVtb3ZlZCBoZWxsMAoJKiB0ZXN0cy9kZXBsaWJzLnRlc3Q6IG5ldyB0ZXN0IHRvIHRlc3QgdGhlIGRlcGxpYnNfY2hlY2tfbWV0aG9kCgoxOTk5LTAzLTMxIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRtYWluLmluOiBhbHdheXMgbGluayBhIGxpYnJhcnkgYmVmb3JlIGl0cyBkZXBlbmRlbmN5IGxpYnMKCSogbWRlbW8vTWFrZWZpbGUuYW06IHRlc3QgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4CgoxOTk5LTAzLTMwIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aTogZml4ZWQgYSB0eXBvCgkqIGxpYnRvb2xpemUuaW46IGFkZCB0aGUgbGlidG9vbCBzY3JpcHRzIHRvIGxpYmx0ZGwudGFyLmd6CgkqIGxpYnRvb2wubTQ6IGRvbid0IEFDX1NVQlNUKFVTRV9TWU1CT0xfVU5ERVJTQ09SRSksCgkgIEFDX0NIRUNLX0xJQk0gc2V0cyBMSUJNLCBBQ19MSUJMVERMX0lOU1RBTExBQkxFIGRvZXNuJ3Qgd29yawoJICB3aGVuIGxpYmx0ZGwgaXMgYWxyZWFkeSBpbnN0YWxsZWQKCSogKmRlbW8vTWFrZWZpbGUuYW06IHVzZSBMSUJNCgkqICpkZW1vL2NvbmZpZ3VyZS5pbjogQUNfU1VCU1QgTElCTQoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogdXNlIGFjX2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSBpbnN0ZWFkIG9mCgkgIFVTRV9TWU1CT0xfVU5ERVJTQ09SRQoJKiBsdGNvbmZpZy5pbjogYWRkZWQgbGlua19hbGxfZGVwbGlicyB2YXJpYWJsZQoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCBpdAoJKiBsdG1haW4uaW46IGFsd2F5cyBzZWFyY2ggZm9yIGxpYm5hbWUubGEgLSBkb24ndCBldmFsIGxpYm5hbWVfc3BlYywKCSAgd2hlbiBsaW5raW5nIGxpYnJhcmllcyBhZ2FpbnN0IHN0YXRpYyBvbmVzIGp1c3QgcHJpbnQgYSB3YXJuaW5nCgkgIGFuZCBhZGQgdGhlbSB0byBkZXBlbmRlbmN5X2xpYnMsIGFkZCAtbGMgYmVmb3JlIGRlcGxpYnMsCgkgIGFsd2F5cyBsaW5rIGFsbCBkZXBlbmRlbmNpZXMgb2YgYSBzdGF0aWMgbGlicmFyeSBvciBpZgoJICBsaW5rX2FsbF9kZXBsaWJzIGlzIHllcywgaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpZgoJICBoYXJkY29kZV9pbnRvX2xpYnMgaXMgbm8sIGRvbid0IGxpbmsgYWdhaW5zdCBkZXBlbmRlbmN5X2xpYnMKCSAgdGhhdCBhbHJlYWR5IGFyZSBkZXBsaWJzCgoxOTk5LTAzLTMwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChhaXg0KiwgY29sbGVjdDJuYW1lKTogbWFrZSBzdXJlIGNvbGxlY3QyIGV4aXN0cwoJYmVmb3JlIHJ1bm5pbmcgc3RyaW5nIG9uIGl0LCB0byBhdm9pZCBlcnJvcnMgb24gb2xkIGdjY3MKCVJlcG9ydGVkIGJ5IEVyZXogWmFkb2sgPGV6a0Bjcy5jb2x1bWJpYS5lZHU+CgoJKiBsdGNvbmZpZy5pbiAoYWl4NCosIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMpOiB1bmxlc3Mgd2UncmUKCXVzaW5nIGdjYyB3aXRoIG9sZCBjb2xsZWN0MiwgdXNlIC1iIGxpYnBhdGggdG8gaGFyZGNvZGUgdGhlCglsaWJyYXJ5IHNlYXJjaCBwYXRoCgoJKiBsdG1haW4uaW4sIGx0Y29uZmlnLmluOiByZXZlcnRlZCBtb3N0IG9mIHRoZSBxdW90aW5nIGNoYW5nZXMKCWZyb20gMTk5OS0wMy0yNTsgR2FyeSdzIGRlbGF5X3ZhcmlhYmxlX3N1YnN0IHBhdGNoIGZyb20gMTk5OS0wMi0xOQoJb2J2aWF0ZXMgaXQuICBLZWVwIG9ubHkgcXVvdGluZyBvZiAkUEFUSCwgZm9yIHVuaWZvcm1pdHkgd2l0aAoJb3RoZXIgc3lzdGVtcyB0aGF0IGFscmVhZHkgZGlkIGl0CgoxOTk5LTAzLTI5ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxhZGRzZWFyY2hkaXIpOiBGb3Jnb3QgdG8gbWFsbG9jYXRlIHRoZQoJZXh0cmEgYnl0ZSBvZiBtZW1vcnkgZm9yIHRoZSB0ZW1pbmF0aW5nIE5VTCwgYW5kIGZvcmdvdCB0bwoJc3RyY3B5IHRoZSBvcmlnaW5hbCBwYXRoIGluIHRvIHRoZSBuZXcgbWVtb3J5IGJlZm9yZSBhcHBlbmRpbmcKCXRoZSBuZXcgcGF0aCBjb21wb25vbmVudC4KCjE5OTktMDMtMjcgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBORVdTOiB1cGRhdGVkCgkqIFJFQURNRTogdXBkYXRlZCAoQmVPUyBzdXBwb3J0LCBubyBsb25nZXIgc2hhcmVkIGxpYnJhcmllcwoJICBzdXBwb3J0IGZvciBBbWlnYU9TKSwgY2xlYW51cHMsIHdlIGhhdmUgbm93IHR3byBtYWlsaW5nIGxpc3RzCgkqIFJFQU1ERS1hbHBoYTogYXV0b2dlbiAtPiBib290c3RyYXAsIHdlIGhhdmUgbm93IHR3byBtYWlsaW5nIGxpc3RzCgkqIFRIQU5LUzogYWRkZWQgWGF2aWVyIFBpYW5ldAoJKiBkb2MvUExBVEZPUk1TOiBCZU9TIHdvcmtzCgkqIGRvYy9saWJ0b29sLnRleGk6IHdlIGhhdmUgbm93IHRvIHR3byBtYWlsaW5nIGxpc3RzLAoJICB1cGRhdGVkIC1kbG9wZW4gc2VsZiBkb2N1bWVudGF0aW9uLCBkb2N1bWVudGVkIGxpYmx0ZGwncyBsaWNlbnNlLAoJICBwdXQgZWFjaCBhdXRob3IgaW4gYSBzZXBhcmF0ZSBsaW5lLAoJICBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBvbiB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcyBhcmUKCSAgbm93IHN1cHBvcnRlZCwgY2xlYW51cHMgYW5kIG1pbm9yIGNvcnJlY3Rpb25zCgkqIGxpYmx0ZGwvQ09QWUlORy5MSUI6IG5ldyBmaWxlCgkqIGxpYmx0ZGwvbHRkbC5bY2hdOiBhZGRlZCBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgTEdQTCBsaWNlbnNlCgkqIGxpYnRvb2wuc3BlYzogcmVtb3ZlZCwgaXQgd2FzIG91dGRhdGVkCgkqIE1ha2VmaWxlLmFtOiByZW1vdmVkIGxpYnRvb2wuc3BlYwoJKiBsdG1haW4uaW46IHVzZSBUTVBESVIgd2hlbiBwb3NzaWJsZSwgY3JlYXRlIGEgc3ViZGlyZWN0b3J5CgkgIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBhZGRlZCAtZXhwb3J0LXN5bWJvbHMtcmVnZXggdG8gdGhlIGhlbHAsCgoxOTk5LTAzLTI1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRlbW8vTWFrZWZpbGUuYW06IGNyZWF0ZSBhIHN0YXRpYyBsaWJyYXJ5LCBsaW5rIHR3byBsaWJ0b29sCglhcmNoaXZlcyB3aXRoIGl0LCB0aGVuIGxpbmsgdGhlIHByb2dyYW0gaGVsbDAgd2l0aCBib3RoCgkqIGRlbW8vaGVsbDEuYywgZGVtby9oZWxsMi5jOiBkdW1teSBmaWxlcyB1c2VkIHRvIGNyZWF0ZSB0aGUKCWxpYnRvb2wgYXJjaGl2ZXMgd2l0aG91dCBpbnRyb2R1Y2luZyBzeW1ib2wgY29uZmxpY3RzCgkqIHRlc3RzL2RlbW8tZXhlYy50ZXN0LCB0ZXN0cy9kZW1vLWluc3QudGVzdDogcnVuIHRoZSBuZXcgcHJvZ3JhbQoJKiBsdGNvbmZpZy5pbiAoaXJpeDUqLCBpcml4NiosIGRlcGxpYnNfY2hlY2tfbWV0aG9kKTogcGFzc19hbGwKCgkqIGx0bWFpbi5pbiAoJFBBVEgpOiBpbnN0ZWFkIG9mIG1vZGlmeWluZyB0aGUgUEFUSCwgYmV0dGVyIHByZXZlbnQKCWl0cyBleHBhbnNpb24gdGhlIGZpcnN0IHRpbWUgKl9jbWRzIHZhcmlhYmxlcyBhcmUgZXZhbCdlZC4gIE1vZGlmeQoJJHNob3cgd2l0aGluIGxvb3BzIHRoYXQgZXZhbCB0aGVtIHNvIGFzIHRvIGV4cGFuZCB2YXJpYWJsZXMKCSogbHRjb25maWcuaW4gKCpfY21kcyk6IHF1b3RlICQgc28gdGhhdCB0aGV5J3JlIG5vdCBleHBhbmRlZCBieQoJdGhlIGZpcnN0IGV2YWwKCjE5OTktMDMtMjUgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbiAoJFBBVEgpOiAgRXhwYW5kIGFueSB0aWxkZXMgaW4gdGhlIHVzZXJzIHBhdGggdG8gdGhlCgljb250ZW50cyBvZiAkSE9NRSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoICpfY21kcyBzcGxpdHRpbmcgYW5kCglldmFsdWF0aW9uLgoKMTk5OS0wMy0yNCBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIFRPRE86IHN1cHBvcnQgLWRsb3BlbiBmb3IgbGlicmFyaWVzCgkqIGRvYy9QTEFURk9STVM6IEVyZXogWmFkb2sgcmVwb3J0ZWQgdGhhdCBsaWJ0b29sIHdvcmtzIG9uIGJzZGkgNC4wLjEKCSogZG9jL2xpYnRvb2wudGV4aSAobGlibHRkbCk6IGxpYmx0ZGwgc3VwcG9ydHMgQmVPUwoJKiBsaWJsdGRsL2x0ZGwuYzogc2hsaWJfZXh0IHdhcyBkZWNsYXJlZCBldmVuIGlmIExURExfU0hMSUJfRVhUCgkgIGRpZG4ndCBleGlzdCwgcGFydGlhbGx5IHJldmVydGVkIG15IHByZXZpb3VzIHBhdGNoOiBCZU9TIHdpbGwKCSAgYXV0b21hdGljYWxseSBzZWFyY2ggaW4gQURET05fUEFUSAoJKiBsdG1haW4uaW46IGRvbid0IGFsbG93IHJlbGF0aXZlIHJ1bi1wYXRocywgZml4ZWQgYSB0eXBvIGluIGEgd2FybmluZywKCSAgaWdub3JlIC1kbG9wZW4gc2VsZiBmb3IgbGlicmFyaWVzIGFuZCBvYmplY3RzLAoJICBvbmx5IGFjY2VwdCAtTCBwYXRocyB0aGF0IGV4aXN0LCBtaW5vciBjbGVhbnVwcywKCSAgYnVnZml4OiBhZGQgLWxjIGZvciBub3JtYWwgbGlicmFyaWVzLCBub3QgY29udmVuaWNlbmNlIGxpYnJhcmllcwoJICByZW1vdmVkIG9mZmVuc2l2ZSB3YXJuaW5ncy9jb21tZW50cwoKMTk5OS0wMy0yNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAobGRfc2hsaWJzLCBhbWlnYW9zKik6IGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcwoKMTk5OS0wMy0yMyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHRoZSBzZWQgZXhwcmVzc2lvbiBmb3IgZmluZGluZyB0aGUgc2hhcmVkCglsaWJyYXJ5IGV4dGVuc2lvbiB1c2VkIHRvIHRoaW5rIHRoZSAuIGluIFsuXSBmb3IgdGhlIGN5Z3dpbgoJc2hhcmVkX2xpYnJhcnlfbmFtZXNfc3BlYyB3YXMgdGhlIHN0YXJ0IG9mIHRoZSBleHRlbnNpb24hISAgV2Ugbm93CglyZW1vdmUgYW55dGhpbmcgaW4gc3F1YXJlIGJyYWNrZXRzIChhc3N1bWluZyB0aGF0IHRoZSBzcXVhcmUKCWJyYWNrZXRzIGRlbGltaXQgYSBzZWQgb3IgZXhwciBleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZQoJZXh0ZW5zaW9uKSBiZWZvcmUgbG9va2luZyBmb3IgdGhlIGV4dGVuc2lvbi4KCgkqIFRPRE8gKGN5Z3dpbik6ICBmb29kIGZvciB0aG91Z2h0IHJlOiBtdXR1YWxseSBkZXBlbmRhbnQgZGxscy4KCjE5OTktMDMtMjEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogdGVzdHMvYnVpbGQtcmVsaW5rLnRlc3Q6IGlmIHdlIHJlbGluayBhbmQgaGF2ZSBoYXJkY29kZV9kaXJlY3QsCglyZW1vdmluZyBhbiB1bmluc3RhbGxlZCBsaWJyYXJ5IGJyZWFrcyBhbiB1bmluc3RhbGxlZCBwcm9ncmFtCgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwoJKiBUT0RPOiByZW1vdmVkIGVudHJ5IGFib3V0IGl0CgoJKiB0ZXN0cy8qLXVuc3QudGVzdDogaWYgZGlyZWN0b3J5IGlzIG5vdCBjb25maWd1cmVkLCBza2lwIGl0CgkqIHRlc3RzL2RlbW8udGVzdCwgdGVzdHMvbWRlbW8udGVzdDogdW51c2VkLCByZW1vdmVkCgkqIHRlc3RzL2RlcGRlbW8udGVzdDogZGl0dG8KCjE5OTktMDMtMjAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChsaW5rIG1vZGUpOiBkb2N1bWVudGF0aW9uIGZvciAtbW9kdWxlIHVwZGF0ZWQKCSogbHRjb25maWcuaW46IGZhc3QtaW5zdGFsbCBtb2RlIGRvZXNuJ3Qgd29yayBmb3IKCSAgaGFyZGNvZGVfaW50b19saWJzPXllcwoJKiBsdG1haW4uaW46IGJ1Z2ZpeDogIi1kbG9wZW4gc2VsZiBbLWFsbF0tc3RhdGljIiB3b3VsZG4ndCB1c2UKCSAgZGxvcGVuX3NlbGZfc3RhdGljLCBhdXRvbWF0aWNhbGx5IGVuYWJsZSAtZXhwb3J0LWR5bmFtaWMgd2hlbgoJICB1c2luZyAiLWRsb3BlbiBzZWxmIiwJYWx3YXlzIG1ha2UgcnVuLXBhdGhzIGFic29sdXRlLAoJICBpZ25vcmUgLWxjIG9ubHkgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSBzdWNoIGEgbGlicmFyeSwKCSAgY2xlYW51cHMgaW4gdGhlIElMRCBjb2RlLCBmaW5kIGV2ZW4gaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzCgkgIHRoYXQgd2VyZSBtb3ZlZCwgYmVmb3JlIGdlbmVyYXRpbmcgdGhlIERMTC1pbXBvcnQgbGlicmFyeSB3ZSBuZWVkCgkgIHRvIHNldCBsaWJuYW1lLCBpbXByb3ZlZCBoYXJkY29kaW5nIG9mIHNobGlicGF0aCBmb3IgbGlicmFyaWVzLAoJICBkb24ndCBnZW5lcmF0ZSBhbiBpbnN0YWxsYWJsZSBwc2V1ZG8tbGlicmFyeSBmb3IgY29udmVuaWVuY2UKCSAgbGlicmFyaWVzLCBidWdmaXg6IGV4cG9ydF9zeW1ib2xzIHdvdWxkIGJlIHJlbW92ZWQgaW1tZWRpYXRlbHkKCSAgYmVmb3JlIGl0IGlzIHVzZWQKCjE5OTktMDMtMTkgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiB1c2UgdGhlIHNhbWUgaGVhZGVyIGluIGFsbCBjb25maWd1cmUuaW4ncyBhbmQgTWFrZWZpbGUuYW0ncwoJKiBORVdTOiBpbXByb3ZlZCBzdXBwb3J0IGZvciBCZU9TIGFuZCBDeWd3aW4KCSogVE9ETzogSUxEIGJyYW5jaCB3YXMgbWVyZ2VkLCBhbGwgaW50ZXJuYWwgdmFyaWFibGVzIGFuZCBtYWNyb3MKCSAgYXJlIG5vdyBkb2N1bWVudGVkCgkqIGRlbW8vTWFrZWZpbGUuYW06IHVzZSAkKExJQlMpIGluc3RlYWQgb2YgLWxtCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50ZWQgbmV3IHZhcmlhYmxlIGhhcmRjb2RlX2ludG9fbGlicwoJICBhbmQgdGhyZWFkX3NhZmVfZmxhZ19zcGVjLCByZW5hbWVkIGFsbCBBTV9FTkFCTEUvRElTQUJMRV8qIG1hY3JvcwoJICB0byBBQ18qLCBkb2N1bWVudGVkIEFDX0RJU0FCTEVfRkFTVF9JTlNUQUxMIGFuZCBBQ19MSUJUT09MX0RMT1BFTgoJKiBsaWJsdGRsL2x0ZGwuYzogYWRkZWQgdHdvIG5ldyBlcnJvciBtZXNzYWdlcyAoY2Fubm90X29wZW5fZXJyb3IsCgkgIGNhbm5vdF9jbG9zZV9lcnJvciksIHVzZSB0aGVtIHdoZXJlIGFwcHJvcmlhdGUsCgkgIEJlT1Mgc3VwcG9ydCAodGhhbmtzIHRvIFhhdmllciBQaWFuZXQpLCBvbiBCZU9TIHNlYXJjaCBtb2R1bGVzCgkgIGFkZGl0aW9uYWxseSBpbiBBRERPTl9QQVRICgkqIGxpYnRvb2wubTQ6IHJld3JvdGUgQUNfQ0hFQ0tfTElCTTogQmVPUyBhbmQgQ3lnd2luIGRvbid0IGhhdmUKCSAgbGlibSBhbmQgKi1uY3Itc3lzdjQuMyogcmVxdWlyZXMgbGlibXcKCSogbHRjb25maWcuaW46IGRvbid0IGNoZWNrIGZvciBMb2FkTGlicmFyeSwgaGFyZGNvZGUgZGxvcGVuCgkgIGNvbmZpZ3VyYXRpb24gZm9yIEJlT1MgYW5kIEN5Z3dpbgoJKiBsdG1haW4uaW46IGZpeCBzb3VyY2luZyBvZiAubGEgZmlsZXMgb24gU29sYXJpcwoJICAocGF0Y2ggYnkgUmFqYSBSIEhhcmluYXRoKQoKMTk5OS0wMy0xOSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoc3Vub3M0Kiwgd2l0aF9nbnVfbGQsIGhhcmRjb2RlX21pbnVzX0wpOiByZW1vdmUsCXdlCgloYXZlIC1ycGF0aAoJKGFpeDQqLCB3aXRob3V0X2dudV9sZCwgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcik6IHVuc3VwcG9ydGVkIGlzCglkZWZhdWx0CgkoaHB1eDkqLCBocHV4MTAqLCBocHV4MTEqLCBhcmNoaXZlX2NtZHMpOiBkcm9wICtzLCB1bm5lZWRlZCBoZXJlCgkoaHB1eDkqLCBocHV4MTAqLCBocHV4MTEqLCBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjKTogYWRkICtzCgliZWZvcmUgK2IKCShocHV4OSosIGhwdXgxMCosIGhwdXgxMSosIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IHNpbmNlICtzCglhcHBlYXJzIGJlZm9yZSArYiwgc2V0IGl0IHRvIHllcwoJKGhhcmRjb2RlX3NobGlicGF0aF92YXIsIGhhcmRjb2RlX2FjdGlvbik6IGRvIG5vdCB1c2UKCXNobGlicGF0aF92YXIgdG8gc3BlY2lmeSB0aGUgY29tcGlsZS10aW1lIHNlYXJjaCBwYXRoOyBpdCBsb3NlcywKCWFuZCB3ZSBtYXkgZW5kIHVwIGxpbmtpbmcgd2l0aCBwcmUtaW5zdGFsbGVkIG9sZGVyIHZlcnNpb25zIG9mCglsaWJyYXJpZXMgaW5zdGVhZCBvZiB5ZXQtdG8tYmUtaW5zdGFsbGVkIG9uZXMKCSgqLCBoYXJkY29kZV9kaXJlY3QsIGhhcmRjb2RlX21pbnVzX0wpOiByZW1vdmUgZW50cmllcyB0aGF0IHNldAoJdGhlbSB0byBubywgdGhhdCBpcyBkZWZhdWx0CgoJKiBkZW1vL01ha2VmaWxlLmFtIChoYy1kaXJlY3QsIGhjLWxpYnBhdGgsIGhjLW1pbnVzTCk6IGxpbmsgd2l0aAoJJCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBpZiBhdmFpbGFibGUsIHdpdGggbGliZGlyPSQobGliZGlyKSwKCXRvIG1ha2Ugc3VyZSB0aGUgaGFyZGNvZGVfKiB2YXJpYWJsZXMgd2lsbCBwcm9kdWNlIHRoZSBleHBlY3RlZAoJcmVzdWx0cyBldmVuIGluIHRoZSBwcmVzZW5jZSBvZiBhIGhhcmRjb2RpbmcgZmxhZzsgZGVwZW5kIG9uCglsaWJoZWxsby5sYSBoYXZpbmcgYmVlbiBpbnN0YWxsZWQgYWxyZWFkeQoJKGhjLWxpYmZsYWcpOiBsaW5rIHdpdGggdGhlIGluc3RhbGxlZCBsaWJyYXJ5LCBidXQgdHJ5IHRvCgloYXJkLWNvZGUgdGhlIHVuaW5zdGFsbGVkIG9uZQoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCB0aGUgY2hhbmdlcwoKCSogdGVzdHMvKi50ZXN0OiB3aGVuIGEgdGVzdCBmYWlscywgc2tpcCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBpdC4KCUlmIGEgY2VydGFpbiBjb25maWd1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQsIHNraXAgYWxsIGl0cyB0ZXN0cy4KCgkqIGRvYy9saWJ0b29sLnRleGk6IHJlb3JkZXIgdGVzdHMgdG8gcmVmbGVjdCBleGVjdXRpb24gb3JkZXIKCgkqIHRlc3RzL25vaW5zdC1saW5rLnRlc3Q6IG5ldyB0ZXN0CgkqIHRlc3RzL01ha2VmaWxlLmFtIChURVNUUyk6IGFkZGVkIG5vaW5zdC1saW5rLnRlc3QKCSogZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnQgaXQKCjE5OTktMDMtMTkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbiAoZGVwZW5kZW5jeV9saWJzKTogVGhlcmUgaXMgbm8gcmVhc29uIHRvIGluZmVyIHRoYXQKCXRoZSBwc2V1ZG8gbGlicmFyeSBpcyBpbnZhbGlkIGlmIGRlcGVuZGVuY3lfbGlicz0nJyBhdAoJaW5zdGFsbC10aW1lLCBvciBlbHNlIGxpYmx0ZGwvbGlibHRkbC5sYSBpcyBpbnZhbGlkISEKCjE5OTktMDMtMTggIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbWVyZ2VkIG15IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGNvZGUgZnJvbSB0aGUgSUxEIGJyYW5jaDoKCSogTkVXUzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdyBzdXBwb3J0ZWQKCSogY29uZmlndXJlLmluOiBhZGQgdGhlIGRlcGRlbW8gc3ViZGlyZWN0b3J5CgkqIGRlcGRlbW8vKjogbmV3IGRlbW8gdG8gZGVtb25zdHJhdGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMKCSogdGVzdHMvZGVwZGVtbyo6IG5ldyB0ZXN0cyBmb3IgZGVwZGVtbwoJKiBsdGNvbmZpZy5pbjogYWRkZWQgaGFyZGNvZGVfaW50b19saWJzICh3aGV0aGVyIGxpYnJhcnkgcGF0aHMKCSAgc2hvdWxkIGJlIGhhcmRjb2RlZCBpbnRvIHRoZSBsaWJyYXJpZXMpLAoJICBpdCBjdXJyZW50bHkgZGVmYXVsdHMgdG8gJ25vJwoJKiBsdG1haW4uaW46IG5ldyBpbnRlcm5hbCAncmVsaW5rJyBtb2RlIHRvIHJlbGluayBsaWJyYXJpZXMKCSAgb24gcGxhdGZvcm1zIHdpdGggaGFyZGNvZGVfaW50b19saWJzPXllcywgc2F2ZSBjb21tYW5kIGxpbmUKCSAgYXJndW1lbnRzIGluIGxpYnRvb2xfYXJncywgYWNjZXB0IHJlbGF0aXZlIC1MIGRpcmVjdG9yaWVzLAoJICBpZ25vcmUgLWxtIG9uIEJlT1MgYW5kIEN5Z3dpbiwgYWx3YXlzIGlnbm9yZSAtbGMsCgkgIGhhbmRsZSAtbCwgLUwgYW5kIC5sYSBhcmd1bWVudHMgbGF0ZXIsIGFsd2F5cyBtYWtlIHRoZSBsaWJyYXJ5CgkgIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgKC1ycGF0aCkgYWJzb2x1dGUsIGluIHJlbGluayBtb2RlIGRvbid0CgkgIGRlbGV0ZSB0aGUgbm90LXJlbGlua2VkIGxpYnJhcnkgYW5kIGV4aXQgaW1tZWRpYXRlbHkgYWZ0ZXIgcmVsaW5raW5nLAoJICB0cnkgdG8gZmluZCBhbHJlYWR5LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcyB0aGF0IHdlcmUgc3BlY2lmaWVkCgkgIHVzaW5nIC1sLCBzdXBwb3J0IGhhcmRjb2Rpbmcgb2YgbGlicmFyeSBwYXRocyBpbnRvIGxpYnJhcmllcyB0b28sCgkgIGV4cG9ydCBzaGxpYnBhdGggYmVmb3JlIGxpbmtpbmcgbGlicmFyaWVzLCBhbmQgYSBsb3Qgb2Ygb3RoZXIKCSAgYmlnIGNoYW5nZXMgdGhhdCBJIGRvbid0IHdhbnQgdG8gZGVzY3JpYmUgaGVyZS4uLiBwbGVhc2UgcmVhZAoJICB0aGUgc291cmNlLgoKCSogbWVyZ2VkIEdhcnkncyBXaW4zMiBjb2RlIGZyb20gdGhlIElMRCBicmFuY2g6CgkqIE5FV1M6IFdpbjMyIERMTHMgYXJlIG5vdyBzdXBwb3J0ZWQKCSogVE9ETzogcmVtb3ZlZCAuYSBsaWJyYXJ5IG5hbWVzcGFjZSBjbGFzaCBmb3Igd2luMzIuICBJdCBpcwoJICBub3cgcmVzb2x2ZWQuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIGxpYnJhcnlfbmFtZXNfc3BlYyk6ICByZW1vdmVkICRsaWJuYW1lLmEuCgkgIENyZWF0aW5nIGEgZGxsIHdpdGggbGlidG9vbCBubyBsb25nZXIgY3JlYXRlcyBhbiBpbXBvcnQgbGlicmFyeS4KCSogbHRjb25maWcuaW4gKGV4dHJhY3RfZXhwc3ltc19jbWRzKTogQ3JlYXRlICRvYmpkaXIgaWYgaXQgZG9lcwoJICBub3QgZXhpc3QgLS0gaS5lLiB3ZSBuZWVkIHRvIGdlbmVyYXRlIGltcG9ydCBhbiBpbXBvcnQgbGlicmFyeQoJICBpbiBhIGRpcmVjdG9yeSB3aGljaCBoYXMgbm8gbGlicyBvZiBpdHMgb3duLgoJKiBkb2MvbGlidG9vbC50ZXhpIChvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywKCSAgZXh0cmFjdF9leHBzeW1zX2NtZHMpOiBkb2N1bWVudGVkIHRoZXNlIG5ldyB2YXJpYWJsZXMuCgkqIGx0Y29uZmlnLmluIChleHRyYWN0X2V4cHN5bXNfY21kcyk6IE5ldyB2YXJpYWJsZS4gIENvbW1hbmRzIHRvCgkgIGV4dHJhY3QgdGhlIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gYSBkbGwuCgkgIChvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyk6IE5ldyB2YXJpYWJsZS4gIENvbW1hbmRzIHRvIGJ1aWxkCgkgIGFuIG9sZCBhcmNoaXZlIGZyb20gdGhlIGV4dHJhY3RlZCBleHBzeW1zIGxpc3QuCgkqIGx0bWFpbi5pbjogcnVuIHRoZSBjbWRzIGluIGV4dHJhY3RfZXhwc3ltc19jbWRzIGFuZAoJICBvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyBhcyBuZWNlc3NhcnkuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMpOiBubyBsb25nZXIKCSAgcmVxdWlyZWQuCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCk6IEknbSBub3QgZXZlbgoJICBzdXJlIHdoZXRoZXIgd2luMzIgaG9ub3VycyB0aGUgcnVucGF0aCBhdCBhbGwgd2hlbiBzZWFyY2hpbmcgZm9yCgkgIGEgZGxsIHRvIGxvYWQhICBBbnl3YXksIHdoZW4gc2V0IHRvIHllcyB0aGlzIHByZXZlbnRzIGEgZ3JhdHVpdG91cwoJICB3YXJuaW5nLgoJKiBsdG1haW4uaW4gKGRlcGxpYik6IFRoZSBjeWd3aW4gZW52aXJvbm1lbnQgZG9lc24ndCBhY3R1YWxseSBoYXZlCgkgIC1sbSwgYW5kIGFsdGhvdWdoIHRoZSBsaW5rZXIgZmFrZXMgaGF2aW5nIG9uZSwgc3BlY2lmaXlpbmcgaXQgdG8KCSAgbGlidG9vbCB3aWxsIGJyZWFrIElMRCwgc28gd2UgaWdub3JlIGl0IHdoZW4gZ2VuZXJhdGluZwoJICBkZXBlbmRlbmNpZXMuCgoxOTk5LTAzLTE3ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBkb2MvUExBVEZPUk1TOiBUaGFua3MgdG8gQWxleGFuZHJlcyBjaGFuZ2VzIGJlbG93LCBib3RoIG15CglocCBib3hlcyBwYXNzIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZS4KCjE5OTktMDMtMTcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGhwdXgqLCBoYXJkY29kZV9taW51c19MKTogc2hvdWxkIGJlIG5vLCB3ZSBoYXZlICtiCgkoaHB1eCosIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IpOiBzZXQgdG8gY29sb24KCjE5OTktMDMtMTcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZG9jL1BMQVRGT1JNUzogZWdjcyBpcyBnY2M7IHVwZGF0ZXMgZnJvbSBFcmV6IFphZG9rCgoxOTk5LTAzLTE2ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0bWFpbi5pbiAoZGVwbGlicywgYmVvcyopOiBkb24ndCBhcHBlbmQgLWxjCglSZXBvcnRlZCBieSBYYXZpZXIgUGlhbmV0IDx4YXZpZXJAeGluZ28uY29tPgoKCSogdGVzdHMvYnVpbGQtcmVsaW5rLnRlc3QgKGhhcmRjb2RlX2FjdGlvbik6IHdoZW4gc2V0IHRvIHJlbGluaywKCXNraXAgdGhlIHRlc3Qgd2l0aCBsdC1oZWxsCgoJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IGFkZCBta3N0YW1wCglSZXBvcnRlZCBieSBYYXZpZXIgUGlhbmV0IDx4YXZpZXJAeGluZ28uY29tPgoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBhZGQgQ2hhbmdlTG9nLjAKCjE5OTktMDMtMTYgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogZG9jL2xpYnRvb2wudGV4aTogc29tZSBtaW5vciBjb3JyZWN0aW9ucyB0byB0aGUgIi1kbG9wZW4gc2VsZiIKCSAgZG9jdW1lbnRhdGlvbgoJKiB0ZXN0cy9NYWtlZmlsZS5hbTogc29ydGVkIGJ5IG5hbWUsIGFkZGVkIGFzc2lnbi50ZXN0CgkqIENoYW5nZUxvZzogc3RhcnRlZCBuZXcgZmlsZQoKCSogbHRjb25maWcuaW46IHNvbWUgY29zbWV0aWNhbCBjaGFuZ2VzCgkqIGx0bWFpbi5pbjogZGl0dG8KCjE5OTktMDMtMTUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogY29uZmlndXJlLmluLCBsaWJ0b29sLnNwZWMsIE5FV1M6IGJ1bXAgdG8gMS4zYQoJKiBCcmFuY2hlZCBmb3IgcmVsZWFzZSAxLjMgKGJyYW5jaC0xLTMpCgkqIGNvbmZpZ3VyZS5pbiwgbGlidG9vbC5zcGVjLCBORVdTOiBidW1wIHRvIDEuMmcKCgkqIGNvbmZpZ3VyZS5pbiwgbGlidG9vbC5zcGVjOiBidW1wIHRvIDEuMmYKCSogZG9jL1BMQVRGT1JNUzogZGl0dG8KCSogTkVXUzogbGlidG9vbCAxLjJmIHJlbGVhc2VkCgoJKiBsdG1haW4uaW46IHNpbGVuY2UgYGB1bmJ1ZycnIDotKSBkZXRlY3RlZCBieSBzaC50ZXN0CgoxOTk5LTAzLTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIFRPRE86IHdlIG5vdyB1c2UgZnVsbCBwYXRobmFtZXMgZm9yIGBmaWxlJwoKMTk5OS0wMy0xNCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBUT0RPOiBsaWJsdGRsIGlzIG5vdyBkb2N1bWVudGVkCgkqIGRvYy9saWJsdGRsLnRleGkgKGxpbmtpbmcgd2l0aCBpbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMpOgoJICBmaXhlZCB0eXBvCgkqIGRvYy9saWJsdGRsLnRleGkgKGxpYmx0ZGwpOiBhZGRlZCBkb2N1bWVudGF0aW9uIGZvciBidWlsZGluZwoJICBsaWJ0b29sIG1vZHVsZXMgYW5kIGV4YW1wbGVzIGhvdyB0byBlbWJlZCBsaWJsdGRsCgkqIGx0bWFpbi5pbjogZG9uJ3QgaWdub3JlIHVzZXItc3BlY2lmaWVkIHJ1bi1wYXRocyAoZml4ZWQgaXQKCSAgYXQgdGhlIHJpZ2h0IHBsYWNlKQoKMTk5OS0wMy0xNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKGRlcGxpYnNfY2hlY2tfbWV0aG9kPW5vbmUpOiBkaXNjYXJkIC1MIGFuZCAtUgoJc3dpdGNoZXMgd2hlbiB0ZXN0aW5nIHdoZXRoZXIgZGVwbGlicyBjb250YWlucyBzb21lIGxpYnJhcnkKCjE5OTktMDMtMTQgIEVyZXogWmFkb2sgIDxlemtAY3MuY29sdW1iaWEuZWR1PgoKCSogY29uZmlnLnN1YjogcmVjb2duaXplIGhwcGEyLjB3LCB5ZXQgdG8gYmUgaW5zdGFsbGVkIGF0IEdOVQoKCSogY29uZmlnLmd1ZXNzOiBtaW5vciB1cGRhdGUgZm9yIEZyZWVCU0QtZWxmLCB5ZXQgdG8gYmUgaW5zdGFsbGVkCglhdCBHTlUKCjE5OTktMDMtMTQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGJzZGk0Kiwgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjLAoJc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMpOiBmaXggdGhpbmtvIGluIHZhcmlhYmxlIG5hbWVzOyBhZGQKCXN0YW5kYXJkIGRpcmVjdG9yaWVzCgoJKiBsdG1haW4uaW4gKGV4Y2x1ZGVfZXhwc3ltcyk6IGV4Y2x1ZGUgc3ltYm9scyBiZWZvcmUgc29ydGluZywKCW90aGVyd2lzZSBvbmx5IHRoZSBzb3J0ZWQgbGlzdCB3aWxsIGhhdmUgdGhlbSBleGNsdWRlZAoKCSogbHRjb25maWcuaW4gKGZpbGVfbWFnaWNfY21kLCBmaWxlX21hZ2ljX3Rlc3RfZmlsZSwgZnJlZWJzZC1lbGYqLAoJYnNkaTQqKTogdXNlIGZ1bGwgcGF0aG5hbWVzIHdoZW4gcG9zc2libGUKCgkqIE1ha2VmaWxlLmFtIChhbGwtcmVjdXJzaXZlKTogZGVwZW5kIG9uIEFDSU5DTFVERV9NNF9MSVNUCgkoYWxsLWxvY2FsLCBjaGVjay1sb2NhbCk6IHJlbW92ZSwgdW51c2VkCgoJKiBkb2MvUExBVEZPUk1TOiB1cGRhdGVkIHBsYXRmb3JtcyB0ZXN0ZWQgb24gMS4yZi1wcmU7IGNsZWFuIHVwOwoJcmVvcmRlcjsgdW50YWJpZnkKCgkqIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YjogdXBkYXRlZCBmcm9tIEdOVSBjb21tb24KCgkqIGRvYy9saWJ0b29sLnRleGk6IG5vdGVzIG9uIHRocmVhZC1zYWZldHkgcHJvYmxlbXMgb2YKCWxpYmx0ZGwvZGxvcGVuIG9uIEdOVS9MaW51eCBhbmQgRnJlZUJTRAoKCSogbHRjb25maWcuaW4gKGFpeDMqLCBhaXg0Kik6IEdOVSBsZCBvbiBBSVggaXMgdmVyeSBicm9rZW46IGl0CgljYW5ub3QgY3JlYXRlIHdvcmtpbmcgc2hhcmVkIGxpYnJhcmllcy4gIFByaW50IGEgd2FybmluZwoJc3VnZ2VzdGluZyB0aGUgdXNlciBub3QgdG8gdXNlIGl0IGFuZCBkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMuCgoxOTk5LTAzLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChnbG9iYWxfc3ltYm9sX3RvX2NkZWNsKTogd2FzIHJlc2V0IGJlZm9yZSB0cnlpbmcKCWBzeW1wcmZ4PV8nLCByZW5kZXJpbmcgdGhlIHRlc3Qgd2l0aCBgXycgdXNlbGVzcwoKCSogZG9jL2xpYnRvb2wudGV4aSAoQU1fUFJPR19MSUJUT09MKTogZWxpbWluYXRlIG92ZXJmdWxsIGJveGVzCgoJKiBkb2MvbGlidG9vbC50ZXhpOiBjb21wbGV0ZSBkbG9wZW5pbmcvbGlibHRkbCBkb2N1bWVudGF0aW9uCgoJKiBsdGNvbmZpZy5pbiAob3NmMyosIG9zZjQqLCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IHBhc3NfYWxsIGRvZXMKCW5vdCByZWFsbHkgd29yazsgdXNlIGZpbGVfbWFnaWMgaW5zdGVhZC4KCShvc2YzKiwgb3NmNCopOiBjdXN0b21pemUgc3lzX2xpYl9bZGxdc2VhcmNoX3BhdGhfc3BlYwoKCSogbHRjb25maWcuaW4gKGZpbGVfbWFnaWNfdGVzdF9maWxlKTogbmV3IHZhcmlhYmxlOyBpZiBzZXQsIGl0Cgl3aWxsIGJlIHVzZWQgYXMgYW4gYXJndW1lbnQgZm9yICRmaWxlX21hZ2ljX2NtZCB0byB0ZXN0IHdoZXRoZXIKCXRoZSByZWdleCBpbiBkZXBsaWJzX2NoZWNrX21ldGhvZCBtYXRjaGVzIGl0cyBvdXRwdXQKCShmaWxlX21hZ2ljX2NtZCk6IHVzZSBmdWxsIHBhdGhuYW1lcyB3aGVuZXZlciBwb3NzaWJsZQoKCSogbHRjb25maWcuaW4gKHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjKTogbmV3IHZhcmlhYmxlLCB0aGF0CglsaXN0cyB0aGUgc3lzdGVtICpydW4tdGltZSogc2VhcmNoIHBhdGguICBMaXN0ZWQgZGlyZWN0b3JpZXMgYXJlCglub3QgaW1wbGljaXRseSBoYXJkLWNvZGVkIGludG8gZXhlY3V0YWJsZXMuCgkqIGx0bWFpbi5pbjogdXNlIGl0LCBidXQgKm5ldmVyKiBkaXNjYXJkIC1SIGZsYWdzCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IGl0CgkqIE5FV1M6IGRpdHRvCglSZXBvcnRlZCBieSBCb2IgRnJpZXNlbmhhaG4gPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoJKiB0ZXN0cy9zaC50ZXN0OiBsb29rIGZvciBgJFhzZWQnIHdpdGhvdXQgYCRlY2hvICJYLi4uJwoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluOiBmaXhlZCBhIGZldyBzdWNoIG9jY3VycmVuY2VzCgoJKiBsdG1haW4uaW4gKC1zdGF0aWMsIC1hbGwtc3RhdGljKTogcmV2ZXJ0IE1hcmNoIDExJ3MgcGF0Y2gsIEkgd2FzCgliYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlCgoxOTk5LTAzLTEyICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGxpYmx0ZGwvbHRkbC5jOiByZW1vdmVkIEZJTEVOQU1FX01BWCBzaW5jZSBMVERMX0ZJTEVOQU1FX01BWAoJICBpcyBzdWZmaWNpZW50IGFuZCBkb2Vzbid0IGJyZWFrIEhQL1VYCgoxOTk5LTAzLTExICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluOiAoZ2xvYmFsX3N5bWJvbF9waXBlKSBleHRyYWN0IHN5bWJvbCB0YWcgZnJvbSB0aGUKCW91dHB1dCBvZiBOTSB0b28KCShnbG9iYWxfc3ltYm9sX3RvX2NkZWNsKTogbmV3IHZhcmlhYmxlOyBjb252ZXJ0IHRoZSBvdXRwdXQgb2YKCWdsb2JhbF9zeW1ib2xfcGlwZSB0byB2YWxpZCBDIGRlY2xhcmF0aW9uczsgb24gSFAvVVgsIGNvbnZlcnQKCXRleHQgc3ltYm9scyB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKCSogbGlidG9vbC5tNDogc2ltaWxhciBtb2RpZmljYXRpb25zCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IG5ldyB2YXJpYWJsZQoJKiBsdG1haW4uaW46IHVzZSBnbG9iYWxfc3ltYm9sX3RvX2NkZWNsIHRvIGdlbmVyYXRlIGx0X2RscHJlb3BlbmVkCglzeW1ib2xzOyBhdm9pZCBleHRyYWN0aW5nIHN5bWJvbCBsaXN0cyBmcm9tIGRscHJlb3BlbmVkIGZpbGVzCgl0d2ljZTsgZG8gbm90IGZpbHRlciBzeW1ib2xzIGZyb20gZGxwcmVvcGVuZWQgbGlicmFyaWVzCgkqIFRPRE86IGZpeGVkIEhQL1VYIGRscHJlb3BlbmluZyBwcm9ibGVtCgoJKiBsdG1haW4uaW4gKC1zdGF0aWMsIC1hbGwtc3RhdGljKTogc2V0IGRsb3Blbl9zZWxmIHRvCgkkZGxvcGVuX3NlbGZfc3RhdGljIHJlZ2FyZGxlc3Mgb2YgbGlua19zdGF0aWNfZmxhZyBvciBwaWNfZmxhZwoKCSogbHRtYWluLmluOiBGcmVlQlNEIGJ1ZyB0aGF0IG5lZWRzIHN5bWJvbCB0YWJsZSBjb21waWxlZCB3aXRoCgktZlBJQyBpcyBmaXhlZCBpbiByZWxlYXNlIDMuMTsgdXNlIGl0IG9ubHkgZm9yIDIuKiBhbmQgMy4wCgoxOTk5LTAzLTExICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGx0bWFpbi5pbjogd2hlbiBidWlsZGluZyBhIGxpYnJhcnkgaXQgZG9lc24ndCBtYWtlCgkgIHNlbnNlIHRvIHJlbW92ZSBhIHJlbGlua2VkIHByb2dyYW0gKCJsdC0iIHByZWZpeCkKCjE5OTktMDMtMTEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbWRlbW8vbWFpbi5jIChtYWluLCB0ZXN0X2RsLCB0ZXN0X2Rsc2VsZik6IHByb3BhZ2F0ZSBlcnJvcgoJY29uZGl0aW9ucyBiZXR0ZXIsIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcwoKCSogKi9jb25maWd1cmUuaW46IEFDX1NVQlNUKExJQlRPT0xfREVQUykKCSogKi9NYWtlZmlsZS5hbSAkKE9CSkVDVFMpOiBkZXBlbmQgb24gbGlidG9vbAoJKGxpYnRvb2wpOiByZWJ1aWxkIGF1dG9tYXRpY2FsbHkKCgkqIGx0Y29uZmlnLmluOiBzZXQgZGxvcGVuXyogdmFyaWFibGVzIHRvIHVua25vd24gd2hlbiBhcHByb3ByaWF0ZQoJKiBsdG1haW4uaW46IG9ubHkgZW1pdCB3YXJuaW5nIGFib3V0IGxhY2sgb2YgQUNfTElCVE9PTF9ETE9QRU4gaWYKCSphbGwqIGRsb3Blbl8qIHZhcmlhYmxlcyBhcmUgc2V0IHRvIHVua25vd24KCjE5OTktMDMtMTEgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRtYWluLmluOiBkZWxldGUgdGhlIG9sZCBvdXRwdXQgZmlsZXMgKGluY2wuIHRoZSByZWxpbmtlZCBiaW5hcnkpCgkgIGJlZm9yZSBsaW5raW5nLgoKCSogbHRjb25maWcuaW46IHJlcGxhY2VkIGBjb25maWd1cmUnIHdpdGggJHByb2duYW1lIGFuZCBhbGwKCSAgbGluZSBudW1iZXJzIHdpdGggQExJTkVOT0AKCjE5OTktMDMtMTEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9sdGRsLmMgKHN0cmR1cCk6IGNhbm5vdCByZXR1cm4gc3RyIHdoZW4gaXQncyBOVUxMCgliZWNhdXNlIG9mIGNvbnN0IGNvcnJlY3RuZXNzCgoxOTk5LTAzLTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvbHRkbC5jIChzdHJkdXApOiBhbHdheXMgdXNlIG91ciBvd24sIGJlY2F1c2UgdGhlCglzdGFuZGFyZCBzdHJkdXAgd29uJ3QgdXNlIGx0X2RsbWFsbG9jCgoJKiBsdGNvbmZpZy5pbiAoZGxmY24uaCk6IGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGNhdXNlIHdhcm5pbmdzOwoJZGVmaW5lIHZhcmlhYmxlIGluc3RlYWQKCgkqIGx0bWFpbi5pbjogcHJvcGVybHkgY3JlYXRlIGFuIGV4cG9ydCBmaWxlIGZvciBhIHByb2dyYW0sCglhdm9pZGluZyBlcnJvciBtZXNzYWdlcyBhYm91dCBub3QgZmluZGluZyBpdAoKCSogVE9ETzogbmVlZCB0byBkb2N1bWVudCBBQ19MSUJMVERMXyo7IHN0YXRpYyBzZWxmIGRsb3BlbmluZwoJcHJvYmxlbSBmaXhlZAoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9ETE9QRU4pOiBqdXN0IHNldCBsdF9kbG9wZW49eWVzCgkoQUNfTElCVE9PTF9TRVRVUCk6IGlmIGx0X2Rsb3Blbj15ZXMsIGFkZCAtLWVuYWJsZS1kbG9wZW4gdG8KCWxpYnRvb2xfZmxhZ3M7IGRyb3AgLS1lbmFibGUtZGxvcGVuLXNlbGYKCSogbHRjb25maWcuaW46IHBlcmZvcm0gYWxsIHRoZSBkaXJ0eSB3b3JrIG9mIHRlc3RpbmcgZm9yIGRsb3BlbmluZwoJc3VwcG9ydCwgYmVjYXVzZSB3ZSBuZWVkIHBsYXRmb3JtLWRlcGVuZGVudCBlcXVpdmFsZW50cyBmb3IKCS1leHBvcnQtZHluYW1pYywgZm9yIHNlbGYgZGxvcGVuaW5nLCBhbmQgLXN0YXRpYywgZm9yIHN0YXRpYyBzZWxmCglkbG9wZW5pbmcKCShkbG9wZW5fc2VsZl9zdGF0aWMpOiBuZXcgY29uZmlndXJhdGlvbiB2YXJpYWJsZSB0aGF0IGlzIHNldCB0bwoJeWVzIG9ubHkgaWYgc3RhdGljIHByb2dyYW1zIGNhbiBkbG9wZW4gdGhlbXNlbHZlcwoJKiBsdG1haW4uaW4gKC1zdGF0aWMsIC1hbGwtc3RhdGljKTogZGxvcGVuX3NlbGY9ZGxvcGVuX3NlbGZfc3RhdGljCgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbiAobGlibHRkbF9jdl9uZWVkX3VzY29yZSk6IGRvIG5vdCBhc3N1bWUKCWRsZmNuLmggYW5kIExURExfTEFaWSBleGlzdDsgdXNlIExURExfR0xPQkFMIGFuZCBMVERMX0xBWllfT1JfTk9XLgoJVGhpcyB0ZXN0IGlzIGxpa2VseSB0byBmYWlsIGlmIHNlbGYtZGxvcGVuaW5nIGRvZXMgbm90IHdvcmssCgllc3BlY2lhbGx5IGJlY2F1c2Ugd2UgZG8gbm90IGxpbmsgdGhlIHByb2dyYW0gd2l0aAoJLWV4cG9ydC1keW5hbWljLiAgTGV0J3MganVzdCBob3BlIHRoYXQgcGxhdGZvcm1zIHdob3NlIHN5bWJvbAoJbmFtZXMgc3RhcnQgd2l0aCB1bmRlcnNjb3JlcyB3aWxsIGFsc28gYWNjZXB0IHVuZGVyc2NvcmVzIGZvcgoJZGxvcGVuLiAgV2Ugc2hvdWxkIHByb2JhYmx5IHVzZSBsaWJ0b29sIHRvIGNvbXBpbGUgYW5kIGxpbmsgdGhpcwoJdGVzdCwgc28gdGhhdCB3ZSBjYW4gdXNlIC1leHBvcnQtZHluYW1pYy4KCgkqIG1kZW1vL01ha2VmaWxlLmFtIChATElCTFRETEApOiBkZXBlbmQgb24gLi4vbGlibHRkbC9jb25maWcuaAoKCSogY29uZmlndXJlLmluOiBmaXggQUNfT1VUUFVUX0NPTU1BTkRTIGZvciBsdGNvbmZpZyBhbmQgbHRtYWluLnNoCglzbyB0aGF0IHRoZXkgd29yayBpZiBzcmNkaXIgaXMgcmVsYXRpdmUgdG9vCgoJKiBsaWJ0b29sLm00IChBQ19MSUJMVERMX0lOU1RBTExBQkxFLCBBQ19MSUJMVERMX0NPTlZFTklFTkNFKToKCWF2b2lkIGludHJvZHVjaW5nIG11bHRpcGxlIC0tZW5hYmxlIG9wdGlvbnMgd2hlbiByZS1ydW5uaW5nCgljb25maWcuc3RhdHVzCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBpZiBlbmFibGVfbHRkbF8qIGlzIG5vdCBzZXQsIGFzc3VtZSBubwoJKiBjb25maWd1cmUuaW46IGlmIGVuYWJsZV9sdGRsX2luc3RhbGwgaXMgbm90IHNldCwgZW5hYmxlIGl0CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogb25seSBhc3N1bWUgaW1wbGljaXQgaW5zdGFsbGF0aW9uIGlmCglsaWJsdGRsIHdhcyBsaWJ0b29saXplZC4gIElmIG5vdCwgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UKCXN1Z2dlc3RpbmcgdGhlIHVzZSBvZiAtLWVuYWJsZS1sdGRsLWluc3RhbGwgb3Igb2Ygb25lIG9mIHRoZQoJQUNfTElCTFRETF8qIG1hY3Jvcy4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU0VUVVApOiBuZXcgbWFjcm8sIHRoYXQgZG9lcyBhbGwgdGhlCgljb25maWd1cmUtd29yayB0aGF0IEFDX1BST0dfTElCVE9PTCB1c2VkIHRvIGRvOyBhZGQKCS0tY2FjaGUtZmlsZT0kY2FjaGVfZmlsZSB0byBsaWJ0b29sX2ZsYWdzCgkoQUNfUFJPR19MSUJUT09MKTogY2FsbCBBQ19MSUJUT09MX1NFVFVQLCBzYXZlIHRoZSBjYWNoZSwgcnVuCglsdGNvbmZpZyBhbmQgcmVsb2FkIHRoZSBjYWNoZQoJKiBjb25maWd1cmUuaW46IHJ1biBBQ19MSUJUT09MX1NFVFVQLCB0aGVuIHNldCBMSUJUT09MX0ZMQUdTIHRvCglsaWJ0b29sX2ZsYWdzCgkqIGx0Y29uZmlnLmluOiBzdXBwb3J0IC0tY2FjaGUtZmlsZSBzd2l0Y2guICBJZiBpdCBpcyB1c2VkLCBsb2FkCgl0aGUgY2FjaGUgaW4gdGhlIGJlZ2lubmluZyBhbmQgc2F2ZSBpdCBqdXN0IGJlZm9yZSB0ZXJtaW5hdGluZwoKCSogdGVzdHMvTWFrZWZpbGUuYW0gKFRFU1RTKTogcnVuIGRlbW8tbm9mYXN0IGJlZm9yZSBkZW1vLXNoYXJlZAoKCSogY29uZmlndXJlLmluOiBjcmVhdGUgbHRjb25maWcgYW5kIGx0bWFpbi5zaCBhdCB0aGUgZW5kIG9mCgljb25maWcuc3RhdHVzLCBpZiB0aGV5IGRvIG5vdCBleGlzdC4gIFRoaXMgZml4ZXMgdGhlIGJvb3RzdHJhcAoJcHJvYmxlbSByZXBvcnRlZCBieSBFcmV6IFphZG9rIDxlemtAY3MuY29sdW1iaWEuZWR1PgoKMTk5OS0wMy0xMCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBORVdTOiBzb3J0ZWQgYnkgaW1wb3J0YW5jZQoJKiBNYWtlZmlsZS5hbTogc2V0IExJQlRPT0xfRkxBR1Mgd2hlbiBnZW5lcmF0aW5nIGxpYnRvb2wKCSogY29uZmlndXJlLmluOiBjaGVjayBmb3IgZGxvcGVuIHN1cHBvcnQgYW5kIHNldCBMSUJUT09MX0ZMQUdTCgkgIGFjY29yZGluZ2x5CgoJKiBjb25maWd1cmUuaW46IGZpeCBzcGFjaW5nIGZvciAtLWRpc2FibGUtbHRkbC1pbnN0YWxsLAoJICBhbHdheXMgY29uZmlndXJlIGxpYmx0ZGwsIGFkZCBsaWJsdGRsL2FjaW5jbHVkZS5tNCB0bwoJICBBQ0lOQ0xVREVfTTRfTElTVCwgZGlzYWJsZSBpbnN0YWxsYXRpb24gb2YgbGlibHRkbCBpZiBuZWNlc3NhcnkKCSogbGlibHRkbC9NYWtlZmlsZS5hbTogc2V0IHZlcnNpb24gaW5mbyBmb3IgbGlibHRkbC5sYQoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogZG9uJ3QgY2hlY2sgd2hldGhlcgoJICBlbmFibGVfbHRkbF9jb252ZW5pZW5jZS9pbnN0YWxsIHdhcyBzZXQgc28gdGhhdCBsaWJsdGRsCgkgIGNhbiBiZSB1c2VkIGFzIGluZGVwZW5kZW50IHBhY2thZ2UgKGxpYmx0ZGwudGFyLmd6KSB3aXRob3V0CgkgIHRoZSBuZWVkIHRvIHVzZSAtLWVuYWJsZS1sdGRsKgoJKiBsaWJsdGRsL2x0ZGwuYzogbWlub3IgY2xlYW51cHMsIGFsbG9jYXRlIHRoZSBsaW5lIGNhY2hlCgkgIGR5bmFtaWNhbGx5IChsdF9kbG9wZW4pCgoxOTk5LTAzLTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBzb21lIHByZXByb2Nlc3NvcnMgY2hva2UgaWYgdGhlIGAjJwoJb2YgYCNkZWZpbmUnIGlzIG5vdCBpbiBjb2x1bW4gMTsgbGV0J3MgZ28gYmFjayB0byBmb3J0cmFuISA6LSkKCUFkZCAjdW5kZWZzIHRvbywgdG8gYXZvaWQgcG90ZW50aWFsIHdhcm5pbmdzIG9yIGVycm9ycy4KCjE5OTktMDMtMDkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoQUNfTElCTFRETF9JTlNUQUxMQUJMRSwgQUNfTElCTFRETF9DT05WRU5JRU5DRSk6CglyZW5hbWVkIGNvbnZlbmllbmNlIGxpYmx0ZGwsIGRyb3BwZWQgdG9pbnN0IGhhY2sgZm9yIGluc3RhbGxhYmxlCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW06IGRpdHRvCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBkaXR0bzsgYWJvcnQgaWYgbm9uZSBvZiB0aGUgbWFjcm9zIGlzIHVzZWQKCgkqIGx0bWFpbi5pbjogJG91dHB1dF9vYmpkaXIvJG9iamRpci8gLT4gJG91dHB1dF9vYmpkaXIvbHQtCgoxOTk5LTAzLTA5ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBkb24ndCBoYXJkY29kZSB0aGUgbGVuZ3RoIG9mIHRoZQoJICBjb25zdGFudCBzdHJpbmdzCgoxOTk5LTAzLTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE1ha2VmaWxlLmFtIChpbnN0YWxsLWRhdGEtaG9vayk6IGluc3RhbGwgbGlibHRkbCBhcyBhIGRpcmVjdG9yeSwKCW5vdCBhcyBhIHRhci1maWxlLCBzbyB0aGF0IHdlIGRvIG5vdCBtb2RpZnkgdGhlIGJ1aWxkIHRyZWUgYXQgbWFrZQoJaW5zdGFsbCB0aW1lCgkqIGxpYnRvb2xpemUuaW4gKGx0ZGwsIGx0ZGxfdGFyKTogdXBkYXRlCgoJKiBjb25maWd1cmUuaW4sIE1ha2VmaWxlLmFtLCBORVdTOiBpbnN0YWxsIGxpYmx0ZGwgYnkgZGVmYXVsdAoKCSogbGlidG9vbC5tNCAoQUNfTElCTFRETF9JTlNUQUxMQUJMRSwgQUNfTElCTFRETF9DT05WRU5JRU5DRSk6CgluZXcgbWFjcm9zCgkqIE5FV1M6IGRpdHRvCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBpZiBub25lIG9mIHRoZSBuZXcgbWFjcm9zIG9yIGNvbmZpZ3VyZQoJYXJndW1lbnRzIGFyZSB1c2VkLCB3YXJuIGFuZCBidWlsZCBjb252ZW5pZW5jZSBsaWJyYXJ5IG9ubHkKCSogbGlibHRkbC9NYWtlZmlsZS5hbTogY29uZGl0aW9uYWxseSBidWlsZCBjb252ZW5pZW5jZSBsaWJsdGRsLmxhCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogdXNlIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UKCSogbWRlbW8vTWFrZWZpbGUuYW06IHJlZmVyIHRvIEBMSUJMVERMQAoKMTk5OS0wMy0wOSAgR2FyeSBWLiBWYXVnaGFuIDxnYXJ5QGdudS5vcmc+CgoJKiBORVdTOiB1cGRhdGVkLgoKMTk5OS0wMy0wOCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW46IGV4dHJhY3Qgc3ltYm9scyBmcm9tIHByb2dyYW0gb2JqZWN0cyB0byBubGlzdCBmaXJzdCwKCXRoZW4gdHJhbnNsYXRlIHRoZW0gdG8gdGhlIGV4cG9ydF9zeW1ib2xzIGZvcm1hdC4gIE5vdyBpdCB3b3JrcywKCWJ1dCBpdCBhcHBlYXJzIHRvIGJlIG5lZWRsZXNzbHkgZXh0cmFjdGluZyB0aGUgc3ltYm9sIGxpc3QgZnJvbQoJZGxwcmVvcGVuZWQgbGlicmFyaWVzIHR3aWNlCgoJKiBsdG1haW4uaW46IHRlbXBvcmFyaWx5IGRpc2FibGUgZGxvcGVuX3NlbGYgd2hlbiBsaW5raW5nIHdpdGgKCS1zdGF0aWMgb3IgLWFsbC1zdGF0aWMsIHVudGlsIHdlIGZpZ3VyZSBvdXQgaG93IHRvIHRlc3Qgd2hldGhlciBpdAoJd29ya3MgYXQgY29uZmlndXJlIHRpbWUKCgkqIFRPRE86IHJlbWVtYmVyIHRvIGZpeCB0aGlzIGxhdGVyCgoJKiB0ZXN0cy9idWlsZC1yZWxpbmsudGVzdDogd2hlbiBoZWxsIGlzIGV4cGVjdGVkIHRvIGZhaWwsIHJ1biBpdAoJd2l0aGluIGEgc3Vic2hlbGwgYW5kIHJlZGlyZWN0IHN0ZGVyciB0byBzdGRvdXQsIHNvIHRoYXQgZHluYW1pYwoJbGlua2VyIGVycm9ycyBhcmUgb25seSBwcmludGVkIGluIHZlcmJvc2UgbW9kZQoKCSogbHRtYWluLmluIChoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCBjb21waWxlX3JwYXRoLAoJZmluYWxpemVfcnBhdGgpOiBvbmx5IHN1YnN0aXR1dGUgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpZgoJaGFyZGNvZGVfbGliZGlycyBpcyBub24tZW1wdHkKCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfRExPUEVOKTogZG8gbm90IGRlcGVuZCBvbiB0aGUgZXhpc3RlbmNlCglvZiBkbGZjbi5oIG5vciBvbiB0aGUgZGVmaW5pdGlvbiBvZiBSVExEX0xBWlkKCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0OiBoZWxsVCB3YXMgcmVuYW1lZCB0byBsdC1oZWxsCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChAVE9JTlNUQC9saWJsdGRsLmxhKTogZG8gbm90IGhpZGUgdGhlCgljb21tYW5kIHRoYXQgY3JlYXRlcyB0aGUgVE9JTlNUIGRpcmVjdG9yeTsgcmVtb3ZlIGAtbyAkQCcgZnJvbSB0aGUKCUxJTksgY29tbWFuZCwgJChMSU5LKSBhbHJlYWR5IGNvbnRhaW5zIGl0LgoKMTk5OS0wMy0wOCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpICh0ZXN0cyk6IGRvY3VtZW50ZWQgZGVtby1ub2Zhc3QudGVzdCBhbmQKCSAgcmVuYW1lZCBjZGVtbyogdG8gZGVtbyoKCjE5OTktMDMtMDggIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9NYWtlZmlsZS5hbSwgbGlibHRkbC9jb25maWd1cmUuaW4sIG1kZW1vL01ha2VmaWxlLmFtOgoJbGlibHRkbCBtdXN0IG5vdCBiZSByZW5hbWVkOyBpZiB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIHRoZSBpbnN0YWxsCglvcHRpb24sIGxldCdzIGZpeCBpdCwgbm90IGp1c3Qgd29yayBhcm91bmQgaXQgYnkgYnJlYWtpbmcgY29kZSBvZgoJdXNlcnMgb2YgdGhlIGNvbnZlbmllbmNlIGxpYnJhcnkKCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0OiBsaW5rIGJyb2tlbiBsaWJoZWxsby5sYSB3aXRoIGF0IGxlYXN0CglvbmUgbGlidG9vbCBvYmplY3QKCjE5OTktMDMtMDggIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogVE9ETzogdXBkYXRlZCAobGlibHRkbCBidWlsZCBwcm9ibGVtIGZpeGVkKQoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJsdGRsIGludGVyZmFjZSk6IHJlbW92ZWQgdGhlIGxpbmUgd2hpY2gKCSAgcHJvbWlzZWQgdGhhdCBsdF9kbG9wZW4gd2lsbCByZXR1cm4gTlVMTCBpZiBpdCBjYW4ndCByZXNvbHZlIGFsbAoJICBzeW1ib2xzCgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW0sIGxpYmx0ZGwvY29uZmlndXJlLmluOiBmaXhlZCBidWlsZCBwcm9ibGVtOgoJICByZW5hbWVkIHRoZSBjb252ZW5pZW5jZSBsaWJyYXJ5IHRvIGxpYmx0ZGxjLmxhIGFuZCB0aGUKCSAgaW5zdGFsbGVkIHZlcnNpb24gdG8gbGlibHRkbC5sYQoJKiBsdG1haW4uaW4gKHdyYXBwZXIgc2NyaXB0KTogcmVwbGFjZWQgdGhlICJUIiBzdWZmaXggb2YgdGhlIHByb2dyYW0KCSAgZmlsZSBuYW1lIHdpdGggYSAibHQtIiBwcmVmaXgKCSogbWRlbW8vTWFrZWZpbGUuYW06IHVzZSBsaWJsdGRsYy5sYQoJKiB0ZXN0cy9NYWtlZmlsZS5hbSwgdGVzdHMvZGVtby1ub2Zhc3QudGVzdDogYWRkZWQgZGVtbyB0bwoJICB0ZXN0IC0tZW5hYmxlLWZhc3QtaW5zdGFsbD1ubwoKMTk5OS0wMy0wNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiB0ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBydW4gaGFyZGNvZGUgYmVmb3JlIGJ1aWxkLXJlbGluawoJdHJhc2hlcyBsaWJoZWxsby5sYQoJKiB0ZXN0cy9oYXJkY29kZS50ZXN0IChuZWVkX3ByZWZpeCk6IHNldCB0byB5ZXMgc28gdGhhdCBfaW5zdCBpcwoJbm90IHJlbW92ZWQKCgkqIGx0bWFpbi5pbiAoY29tcGlsZV9jb21tYW5kKTogYXBwZW5kIGZpbmFsaXplIHNlYXJjaCBwYXRoIHRvCgljb21waWxlIHNlYXJjaCBwYXRoCgoJKiB0ZXN0cy9idWlsZC1yZWxpbmsudGVzdDogbmV3OyBjaGVjayBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgKCSogdGVzdHMvTWFrZWZpbGUuYW0gKFRFU1RTKTogYWRkIGJ1aWxkLXJlbGluay50ZXN0OyByZW1vdmUKCWhhcmRjb2RlLnRlc3QgZHVwbGljYXRlcwoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCBpdAoKCSogbHRtYWluLmluIChyZWxpbmtfY29tbWFuZCk6IGRvIG5vdCBwcmVwZW5kIGNkIGBwd2RgIHRvIGl0LCB0aGUKCXNjcmlwdHMgYWxyZWFkeSBlbnRlcnMgdGhlIGNvcnJlY3QgZGlyZWN0b3J5LCBhbmQgZXhwYW5kaW5nIHRoZQoJcGF0aG5hbWUgd291bGQgcHJldmVudCB0aGUgYnVpbGQgdHJlZSBmcm9tIG1vdmluZwoKCSogbHRjb25maWcuaW4gKGVuYWJsZV9mYXN0X2luc3RhbGwpOiBmb3JjZSBpdCB0byBubyBvbmx5IGlmIHdlCgluZWVkIHJlbGluazsgaW4gdGhlIG90aGVyIGNhc2VzLCBzZXQgaXQgdG8gbmVlZGxlc3MKCSogbHRtYWluLmluIChmYXN0X2luc3RhbGwpOiBpZiBuZWVkbGVzcywgc2V0IHJlbGlua19jb21tYW5kIGVtcHR5CgkqIGRvYy9saWJ0b29sLnRleGkgKGZhc3RfaW5zdGFsbCwgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoKToKCWRvY3VtZW50IHRoZSBuZXcgYmVoYXZpb3IKCgkqIGx0Y29uZmlnLmluIChlbmFibGVfZmFzdF9pbnN0YWxsKTogdGVzdCB3aGV0aGVyIGl0IGNhbiBiZSBmb3JjZWQKCW9mZiBhZnRlciBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGggYW5kIGVuYWJsZV9zaGFyZWQgYXJlIHNldAoKMTk5OS0wMy0wNyAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBUT0RPOiB1cGRhdGVkCgkqIE5FV1M6IHVwZGF0ZWQKCgkqIFRPRE86IHNjaGVkdWxlZCBzb21lIGl0ZW1zIGZvciBuZXh0IHJlbGVhc2UvZnV0dXJlCgkqIGRlbW8vY29uZmlndXJlLmluOiB1c2UgQUNfTElCVE9PTF9ETE9QRU4KCSogbGlidG9vbC5tNDogYWRkZWQgQUNfRU5BQkxFL0RJU0FCTEVfRkFTVF9JTlNUQUxMIG1hY3JvCgkqIGx0Y29uZmlnLmluOiBhZGRlZCAtLWRpc2FibGUtZmFzdC1pbnN0YWxsIGZsYWcKCSogbHRtYWluLmluOiBwYXJ0aWFsbHkgcmV2ZXJ0ZWQgQWxleGFuZHJlJ3MgcGF0Y2ggYW5kIGltcGxlbWVudGVkCgkgIG9uLWRlbWFuZCBsaW5raW5nIGluIHN1Y2ggYSB3YXkgdGhhdCB0aGUgb2xkIGRldmVsb3Blci1mcmllbmRseQoJICBsaW5raW5nIHN0eWxlIGlzIG9wdGlvbmFsLAoJICBkb24ndCBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIHRoYXQgYXJlIGluIHRoZSBzeXN0ZW0gc2VhcmNoIHBhdGgsCgkgIGZpeGVkIGEgdHlwbyBpbiBsaWJfc2VhcmNoX3BhdGgsCgkgIGltcGxlbWVudGVkIC1leHBvcnQtc3ltYm9scy1yZWdleCBmb3IgcHJvZ3JhbXMKCjE5OTktMDMtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9sdGRsLmMgKExURExfTEFaWV9PUl9OT1cpOiByZW5hbWVkIGZyb20gTFRETF9OT1c7IHByZWZlcgoJTEFaWSBsb2FkaW5nIGJlY2F1c2UgaXQncyBtdWNoIGZhc3RlciBhbmQgTk9XIGlzIGFwcGFyZW50bHkKCXBhcnRpYWxseSBicm9rZW4gb24gRnJlZUJTRAoJUmVwb3J0ZWQgYnkgQXJjaGllIENvYmJzIDxhcmNoaWVAd2hpc3RsZS5jb20+CgoJKiBsdGNvbmZpZy5pbiAoYXJjaGl2ZV9leHBzeW1fY21kcywgc29sYXJpcywgd2l0aG91dF9nbnVfbGQpOgoJJGxpYi5leHAgYWxyZWFkeSBzdGFydHMgd2l0aCAkb2JqZGlyLwoJUmVwb3J0ZWQgYnkgR29kbWFyIEJhY2sgPGdiYWNrQGNzLnV0YWguZWR1PgoKCSogbHRtYWluLmluIChmcmVlYnNkKTogY29tcGlsZSBzeW1ib2wgdGFibGUgZmlsZSB3aXRoIHBpY19mbGFnCglvbmx5IG9uIEZyZWVCU0QgYW5kIHdoZW4gbm90IHN0YXRpYyBsaW5raW5nOyBpdCdzIGJlZW4gY2F1c2luZwoJdHJvdWJsZSBvbiBwbGF0Zm9ybXMgc3VjaCBhcyBPcGVuQlNELgoKMTk5OS0wMi0yNiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAoY3lnd2luKTogcy9cXChtaW5nd1xcfGN5Z3dpblxcKTMyL1xcMS9nLiAgTXVzdCd2ZQoJbWlzc2VkIHRoaXMgZmlsZSB3aGVuIEkgY2hhbmdlZCB0byBjeWdudXMnIG5ldyBzYW5jdGlvbiBuYW1lLgoKCSogbHRjb25maWcuaW4gKHN1Yl91bmNkcml2ZSk6IHJlbW92ZWQuICBUaGlzIHdvbid0IHdvcmsgd2l0aAoJdGhlIG5leHQgdmVyc2lvbiBvZiBjeWd3aW4uCgkoc3ViX3VuY2Rpcik6IHJlbW92ZWQuIFdlIHVzZSA8ZHJpdmU+Oi9wYXRoL3RvL2V4ZWN1dGFibGUgbm93LgoJKiBsaWJ0b29sLm00IChBQ19QUk9HX0xEKTogcmVtb3ZlZCBzdWJfdW5jZHJpdmUgYW5kIHN1Yl91bmNkaXIuCgoxOTk5LTAyLTI1ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIFRPRE86IGFkZGVkIGl0ZW1zIGZvciBuZXh0IGFscGhhIHJlbGVhc2UsIElMRCBldGMuCgkqIGxpYmx0ZGwvbHRkbC5jOiByZW1vdmVkIHVubmVjZXNzYXJ5IGNoZWNrIGZyb20gcHJlc3ltX3N5bSwKCSAgZml4ZWQgYnVnIGluIGx0X2RsY2xvc2UsIGFsbG93IGx0X2Rsb3BlbmV4dChOVUxMKSwKCSAgc2V0IGRlcGxpYnMgZm9yIGx0X2Rsb3BlbihOVUxMKQoKMTk5OS0wMi0yNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKGZpbGVfbWFnaWNfcmVnZXgpOiBzZWQgYDEwcScgaXMgZmFzdGVyIHRoYW4gYDExLCRkJwoKMTk5OS0wMi0yMiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsdGNvbmZpZy5pbiAoZGxvcGVuLCBkbG9wZW5fc2VsZik6IGRlZmF1bHQgaXMgdW5rbm93bgoJKiBsdG1haW4uaW46IGZpeGVkIC1kbG9wZW4gc2VsZiwgcHJpbnQgYSB3YXJuaW5nCgkgIGlmIC1kbG9wZW4gaXMgdXNlZCB3aXRob3V0IEFDX0xJQlRPT0xfRExPUEVOCgkqIG1kZW1vL01ha2VmaWxlLmFtOiB1c2UgLWRsb3BlbiBzZWxmCgoxOTk5LTAyLTIyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0bWFpbi5pbjogYWRkZWQgbWlzc2luZyBta2RpciAkcHJvZ2RpciBmb3Igb24tZGVtYW5kIGV4ZWN1dGFibGUKCgkqIGx0bWFpbi5pbjogY3JlYXRlIG9uLWRlbWFuZCBleGVjdXRhYmxlIGFzICRwcm9nZGlyLyQkLSRwcm9ncmFtLAoJYW5kIHJlbmFtZSBpdCB0byAkcHJvZ2Rpci8kcHJvZ3JhbSBvbmx5IHdoZW4gaXQncyBmaW5pc2hlZCwgdG8KCWF2b2lkIHJhY2UgY29uZGl0aW9ucy4gIFdlIGNhbiBzdGlsbCBnZXQgdGhlIHByb2dyYW0gbGlua2VkCgltdWx0aXBsZSB0aW1lcywgaWYgbXVsdGlwbGUgaW5zdGFuY2VzIGFyZSBzdGFydGVkIHNpbXVsdGFuZW91c2x5CglhbmQgdGhlIHByb2dyYW0gZG9lcyBub3QgZXhpc3QsIGJ1dCB0aGV5IGFyZSB2ZXJ5IHVubGlrZWx5IHRvCglpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyLiAgVGhlcmUncyBzdGlsbCBhIHBvc3NpYmlsaXR5IHRoYXQgb25lCglwcm9jZXNzIHJlbW92ZXMgdGhlICRwcm9ncmFtIGFub3RoZXIgaGFzIGp1c3QgY3JlYXRlZCwgYW5kIGRvZXNuJ3QKCXJlcGxhY2UgaXQgYmVmb3JlIHRoZSBvdGhlciB0cmllcyB0byBydW4gaXQsIGluIGEgc3lzdGVtIHdob3NlCglgbXYnIGlzIG5vdCBhdG9taWMsIHNvIGl0IHdpbGwgJHJtIHRoZW4gJG12LCBidXQgc28gd2hhdD8gOi0pCglMb2NraW5nIGZpbGVzIGhhdmUgYmVlbiBhdm9pZGVkIHRvIHByZXZlbnQgZGVhZC1sb2NrcyBpbiBjYXNlIHRoZXkKCWFyZSBsZWZ0IG92ZXIgYWZ0ZXIgYSByZWJvb3Qgb3IgY3Jhc2guCgoJKiBUT0RPOiByZW1vdmVkIElMRCwgc29vbiB0byBiZSBtZXJnZWQsIGFuZCBhZGRlZCBjb252ZW5pZW5jZQoJbGlicmFyaWVzIGRvY3MKCgkqIGx0Y29uZmlnLmluIChpcml4NSosIGlyaXg2Kiwgc2hsaWJwYXRoX292ZXJpZGVzX3J1bnBhdGgpOiB5ZXMKCgkqIGx0bWFpbi5pbjogcmVtb3ZlIG9uLWRlbWFuZCBleGVjdXRhYmxlIGluIHRoZSBwcm9wZXIgcGxhY2UsIGFuZAoJanVzdCB3YXJuIGlmIGl0IGNhbid0IGJlIHJlbW92ZWQ7IGFkZCB3cmFwcGVyIGNvZGUgdG8gdGVzdCB3aGV0aGVyCgl0aGUgaW5zdGFsbC1leGVjdXRhYmxlIGlzIG5ld2VyIHRoYW4gdGhlIGJ1aWxkLWV4ZWN1dGFibGUsIHRvCglyZWxpbmsgaXQgd2hlbiBpdCBhcHBlYXJzIHRvIGJlIG91dC1vZi1kYXRlCgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogY2hlY2sgZm9yIGRsZC5oCgkqIGxpYmx0ZGwvbHRkbC5jOiBpbmNsdWRlIGRsZC5oCgkoZGxkX29wZW4pIGl0J3Mgc3BlbGxlZCBtZW1vcnlfZXJyb3IsIG5vdCBub19tZW1vcnlfZXJyb3IKCVJlcG9ydGVkIGJ5IFN0ZWZhbiBCdXJzdHJvZW0gPGY5NHNidUBlZmQubHRoLnNlPgoKCSogbHRtYWluLmluOiBmaXggdHlwb3MgaW4gbXkgbGFzdCBjaGFuZ2UgKHMvb2NtcGlsZS9jb21waWxlLykKCjE5OTktMDItMjEgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsb3Blbik6IHVzZSBuZXdoYW5kbGUgaW5zdGVhZCBvZiBoYW5kbGUKCSAgd2hlbiBkbG9wZW5pbmcgdGhlIGV4ZWN1dGFibGUKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9ETE9QRU4pOiByZW1vdmVkIHRoZSByZWR1bmRhbnQgInllczogIgoJICBwcmVmaXggZm9yIGx0X2N2X2Rsb3BlbiwgcmVuYW1lZCBsdF9jdl9kbG9wZW5fTElCUwoJICB0byBsdF9jdl9kbG9wZW5fbGlicyAobW9yZSBjb25zaXN0ZW50KQoJKiBsdG1haW4uaW46IGltcGxlbWVudGVkIC1kbFtwcmVdb3BlbiBzZWxmLCBuZWNlc3NhcnkgZm9yCgkgIGx0X2Rsb3BlbihOVUxMKSwgZ2VuZXJhdGlvbiBvZiBleHBvcnRlZCBzeW1ib2xzIHdhcyBicm9rZW4KCjE5OTktMDItMjAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluOiBhdm9pZCBkdXBsaWNhdGlvbiBvZiAtTCBzd2l0Y2hlcywgaXQgc29tZXRpbWVzIGJyZWFrcwoJSVJJWCA1LjIncyBsaW5rZXIKCgkqIGx0Y29uZmlnLmluIChmcmVlYnNkKiwgZmluaXNoX2NtZHMpOiBleHBhbmQgb2JqZm9ybWF0IGhlcmUKCVJlcG9ydGVkIGJ5IFZsYWRpbWlyIEt1c2huaXIgPGt1c2huQG1haWwua2FyLm5ldD4KCjE5OTktMDItMjAgIFZsYWRpbWlyIEt1c2huaXIgPGt1c2huQG1haWwua2FyLm5ldD4KCgkqIGx0Y29uZmlnLmluIChmcmVlYnNkLWVsZiosIG5lZWRfdmVyc2lvbiwgbmVlZF9saWJfcHJlZml4KTogbm8KCShmcmVlYnNkLWVsZiosIGxpYnJhcnlfbmFtZXNfc3BlYyk6IGFkZCAkbGlibmFtZS5zbyBpbnN0ZWFkIG9mCgkkbGlibmFtZS5zbyR2ZXJzdWZmaXg7IGFkZCAkbGlibmFtZSRyZWxlYXNlLnNvCgoxOTk5LTAyLTIwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGRvYy9saWJ0b29sLnRleGk6IHJlbW92ZSB0aWNrcyBmcm9tIG1lbnUgaXRlbXM7IGl0IGJyZWFrcyBUZVgKCVJlcG9ydGVkIGJ5IEVyZXogWmFkb2sgPGV6a0Bjcy5jb2x1bWJpYS5lZHU+CgoJKiBsdG1haW4uaW46IGZpeGVzIGZvciBleHBvcnQtc3ltYm9scyBkcnktcnVuCgoJKiBsdGNvbmZpZy5pbiAoc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoKTogbmV3IHZhcmlhYmxlOwoJZGV0ZXJtaW5lcyB3aGV0aGVyIExEX0xJQlJBUllfUEFUSCBvciBlcXVpdmFsZW50IGNhbiBiZSB1c2VkIHRvCglvdmVycmlkZSBhIGhhcmQtY29kZWQgbGlicmFyeSBzZWFyY2ggcGF0aDsgZGVmYXVsdCB0byB1bmtub3duCgkobGludXgtZ251Kik6IHNldCBpdCB0byBubwoJKHNvbGFyaXMqLCBzdW5vczQqKTogc2V0IGl0IHRvIHllcwoJKiBsdG1haW4uaW4gKGJ1aWxkX2xpYmRpcnNfZmxhZ3MsIGJ1aWxkX2xpYmRpcnMsIGJ1aWxkX3JwYXRoKTogaWYKCXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCBpcyBub3QgeWVzLCBhcnJhbmdlIHRoYXQgd3JhcHBlcgoJc2NyaXB0cyBjcmVhdGUsIG9uIGRlbWFuZCwgcHJvZ3JhbXMgdGhhdCB1c2UgdW5pbnN0YWxsZWQgbGlicmFyaWVzCgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCBpdAoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9ETE9QRU4pOiBjaGVjayBmb3IgZGxvcGVuIGluIGxpYmMgYmVmb3JlCgl0cnlpbmcgaW4gZGwuICBBZGQgdGhlIGFjdHVhbCBkbG9wZW5pbmcgdHlwZSB0byBsdF9jdl9kbG9wZW4sIGFuZAoJYWRkIGFueSBuZWVkZWQgbGlicmFyaWVzIHRvIGx0X2N2X2Rsb3Blbl9MSUJTLiAgQWRkIHRlc3QgZm9yCglNUy1XaW5kb3dzJyBMb2FkTGlicmFyeS4gIENoZWNrIHdoZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4KCWl0c2VsZiBvbmx5IGlmIHdlIHJlYWxseSBoYXZlIGRsb3BlbigpLCBub3Qgc29tZSBlcXVpdmFsZW50CglmdW5jdGlvbiwgYnV0IGxlYXZlIHJvb20gZm9yIHRlc3Rpbmcgd2l0aCBvdGhlciBtZWNoYW5pc21zLgoJKEFDX1BST0dfTElCVE9PTCk6IGFzc3VtZSBzb21lIGZvcm0gb2YgZGxvcGVuLCBidXQgbm90CglkbG9wZW4oTlVMTCksIGlzIGF2YWlsYWJsZSBpZiBBQ19MSUJUT09MX0RMT1BFTiBpcyBub3QgdXNlZCwgZm9yCgliYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoKMTk5OS0wMi0yMCAgQXJjaGllIENvYmJzICA8YXJjaGllQHdoaXN0bGUuY29tPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsb3Blbik6IHVzZSBuZXdoYW5kbGUgaW5zdGVhZCBvZiBoYW5kbGUKCXdoZXJlIGFwcHJvcHJpYXRlLCB3aGVuIGRsb3BlbmluZyBhIG5vbi1saWJ0b29sIGxpYnJhcnkKCjE5OTktMDItMTkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluIChleHBvcnRfc3ltYm9sc19jbWRzKTogcmVuYW1lZCBmcm9tCglleHBvcnRfc3ltYm9sc19jbWQuCgkoY3lnd2luLCBtaW5ndyk6IEJlIHN1cmUgdG8gY29tcGlsZSB0aGUgbHRkbGwuYyBvYmplY3QgYmVmb3JlCglleHRyYWN0aW5nIHRoZSBleHBvcnRlZCBzeW1ib2wgbGlzdC4gIEV4dHJhY3Qgb25seSB0aGUgbmFtZXMKCW9mIHRoZSBleHBvcnRlZCBzeW1ib2xzIGZyb20gdGhlIGRlZiBmaWxlIFtvdGhlcndpc2Ugd2UgbWlnaHQKCXJ1biBpbnRvIHRyb3VibGUgd2l0aCAtZXhwb3J0LXN5bWJvbHMtcmVnZXhdLgoJKGFyY2hpdmVfZXhwc3ltX2NtZHMpOiBSZWdlbmVyYXRlIHRoZSBkZWYgZmlsZSBmcm9tIHRoZSBzeW1ib2wKCWV4cG9ydCBsaXN0LgoJKGRlbGF5X3ZhcmlhYmxlX3N1YnN0KTogTmV3IHNlZCBleHByZXNzaW9uIHRvIGFsbG93IHVzIHRvIGRlbGF5CglldmFsdWF0aW9uIG9mICRmb28gaW4gYSBkb3VibGVfcXVvdGVfc3Vic3QgZXZhbHVhdGVkIHZhcmlhYmxlIGJ5Cgl1c2luZyBcJC4KCSogbHRtYWluLmluIChleHBvcnRfc3ltYm9sc19jbWRzKTogZXZhbHVhdGUgZWFjaCB+IGRlbGltaXR0ZWQgY21kCglzZXBhcmF0ZWx5LgoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJ0b29sIHNjcmlwdCBjb250ZW50cyk6IG5ldyBwYXJhZ3JhcGggdG8KCWV4cGxhaW4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBfY21kIGFuZCBfY21kcyBzdWZmaXhlcyBmb3IKCXZhcmlhYmxlIG5hbWVzLgoJKGV4cG9ydF9zeW1ib2xzX2NtZHMpOiByZW5hbWVkIGZyb20gZXhwb3J0X3N5bWJvbHNfY21kLgoKMTk5OS0wMi0xOCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAobGRfc2hsaWJzKTogbW92ZSAtc29uYW1lIGFuZCBzaW1pbGFyIGZsYWdzIHRvIHRoZQoJZW5kIG9mIGFyY2hpdmVfY21kcyBhbmQgYXJjaGl2ZV9leHBzeW1fY21kcywgc28gYXMgdG8gcHJldmVudAoJZ2NjJ3MgY29sbGVjdDIgZnJvbSBpbnNlcnRpbmcgYW4gb2JqZWN0IGZpbGUgYmV0d2VlbiAtc29uYW1lIGFuZAoJdGhlIGxpYnJhcnkgbmFtZQoKCSogbHRjb25maWcuaW4gKG9wZW5ic2QqLCBuZXRic2QqLCBsaWJyYXJ5X25hbWVzX3NwZWMpOiBhcHBlbmQKCWFsdGVybmF0ZSBuYW1lIHdpdGhvdXQgJHtyZWxlYXNlfSwgb3RoZXJ3aXNlIGJ1aWxkIGZhaWxzIHdoZW4KCS1yZWxlYXNlIGlzIHVzZWQKCjE5OTktMDItMTggIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluIChhcmNoaXZleyxfc3ltfV9jb21tYW5kcyk6IEJlIGNhcmVmdWwgbm90IHRvCglyZS1leHBvcnQgdGhlIGRsbCBlbnRyeSBwb2ludHMgRGxsTWFpbkAxMiwgX2N5Z3dpbl9kbGxfZW50cnlAMTIgYW5kCglfY3lnd2luX25vbmN5Z3dpbl9kbGxfZW50cnlAMTIgdG8gYXZvaWQgYnVncyB3aXRoIHRoZSB3cm9uZyBlbnRyeQoJZnVuY3Rpb24gYmVpbmcgY2FsbGVkIHdpdGggaW50ZXItZGxsIGRlcGVuZGVuY2llcy4KCVJlcG9ydGVkIGJ5IERKIERlbG9yaWUgPGRqQGRlbG9yaWUuY29tPgoJKiBUSEFOS1M6IEFkZGVkIERKIERlbG9yaWUsIHNpbmNlIGhpcyBjb2RlIGluc3BpcmVkIHRoZSBpbXBnZW4uYwoJcHJvZ3JhbSBhbmQgYmVjYXVzZSBoZSBoYXMgcGF0aWVudGx5IGFuc3dlcmVkIGFsbCBvZiB0aGUKCWlycml0YXRpbmcgZGxsIGFuZCB3aW4zMiBxdWVzdGlvbnMgSSBoYXZlIGZpcmVkIGF0IGhpbS4KCgkqIGx0bWFpbi5pbiAodmVyc2lvbl90eXBlKTogIE9vcHMuICBJcml4IHZlcnNpb25pbmcgaW1wbGllcyB0aGF0CgltYWpvciB2ZXJzaW9uIG51bWJlcnMgYXJlIDEgYmFzZWQgKG5vdCB6ZXJvIGJhc2VkKS4gIEZpeGVkLgoKCSogbHRtYWluLmluICh2ZXJzaW9uX3R5cGUpOiBJbXBsZW1lbnQgaXJpeCB2ZXJzaW9uaW5nLgoJKiBsdGNvbmZpZy5pbiAoaXJpeHs1LDZ9Kik6IFVzZSBuZXcgaXJpeCBzaGFyZWQgb2JqZWN0IHZlcnNpb25pbmcuCgkqIFRPRE86IHJlbW92ZSBpcml4IHZlcnNpb25pbmcgZnJvbSBUT0RPIGxpc3QuCgoJKiBsdG1haW4uaW4gKGltcGdlbi5jKTogQWRkZWQgYSBuZXcgZW1iZWRkZWQgQyBmaWxlIHRoYXQgY2FuIGJlCgl1c2VkIHVuZGVyIHdpbjMyIHRvIGV4dHJhY3QgYSBkZWYgZmlsZSAoc3ltYm9sIGV4cG9ydCBsaXN0KSBmcm9tIGEKCWRsbCB0aGF0IGhhcyBub25lLiAgQ29kZSB0byB1c2UgaXQgbWlnaHQgbmVlZCB0byB3YWl0IGZvciB0aGUgSUxECgltZXJnZSBiZWZvcmUgaXQgd2lsbCBiZSB1c2VmdWwuLi4KCjE5OTktMDItMTggIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogVE9ETzogdXBkYXRlZAoJKiBhdXRvZ2VuOiBvbmx5IGxpYmx0ZGwgbmVlZHMgYXV0b2hlYWRlcgoJKiBkb2MvbGlidG9vbC50ZXhpIChsaW5rIG1vZGUpOiBkb2N1bWVudGVkIC1leHBvcnQtc3ltYm9scy1yZWdleAoJICBhbmQgdXBkYXRlZCAtZXhwb3J0LXN5bWJvbHMKCSogZG9jL2xpYnRvb2wudGV4aSAoc2NyaXB0IGNvbnRlbnRzKTogZG9jdW1lbnRlZAoJICBhbHdheXNfZXhwb3J0X3N5bWJvbHMsIGV4cG9ydF9zeW1ib2xzX2NtZCwgZXhjbHVkZV9leHBzeW1zLAoJICBpbmNsdWRlX2V4cHN5bXMsIGRsb3BlbiBhbmQgZGxvcGVuX3NlbGYKCSAgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBuZWVkX2xpYl9wcmVmaXgKCSogbHRjb25maWcuaW46IGEgIiciIHdhcyBtaXNzaW5nIGluIHRoZSBkZWZhdWx0IHZhbHVlCgkgIG9mIGV4cG9ydF9zeW1ib2xzX2NtZAoJKiBsdG1haW4uaW46IGltcGxlbWVudGVkIC1leHBvcnQtc3ltYm9scy1yZWdleAoKMTk5OS0wMi0xNyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbjogKGZyZWVic2QyKiwgc3Vub3M0KiwgZXhjbHVkZV9leHBzeW1zKTogZXhjbHVkZQoJX0dMT0JBTF9PRkZTRVRfVEFCTEVfCgkqIGx0bWFpbi5pbjogaW1wbGVtZW50IGV4Y2x1ZGVfZXhwc3ltcyB3aXRoIGVncmVwCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxtYWxsb2MsIGx0X2RsZnJlZSk6IFN1bk9TJyBjYyBjYW4ndCBjb3BlCgl3aXRoIGFyZ3VtZW50IGxpc3RzLCB3ZSBfX1AgZXZlbiBpbiB0aGUgZGVmaW5pdGlvbgoKMTk5OS0wMi0xNSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBjZGVtby9NYWtlZmlsZS5hbTogcmVuYW1lZCAqZm9vMSB0byAqZm9vLCByZW1vdmVkICQoTUFUSF9MSUIpCgkqIGNkZW1vL2ZvbzEuYzogcmVuYW1lZCB0byBmb28uYwoJKiBsaWJsdGRsL2x0ZGwuYzogZWxpbWluYXRlZCBsdF9kbHR5cGUsIGluIHByZXN5bV9vcGVuKCk6CgkgIHNlYXJjaCBmb3IgQFBST0dSQU1AIGlmIGZpbGVuYW1lID09IDAsIGluIGx0X2Rsb3BlbigpOgoJICBmaXhlZCBidWcgZm9yIGZpbGVuYW1lID09IDAKCSogbGlibHRkbC9sdGRsLmg6IHVzZSBfX1AgbWFjcm8gZm9yIGx0X2RsbWFsbG9jL2ZyZWUKCSogbGlidG9vbC5tNDogbmV3IG1hY3JvIEFDX0xJQlRPT0xfRExPUEVOOiBjaGVja3MgZm9yIGRsb3BlbgoJICBhbmQgZGxvcGVuKE5VTEwpIHN1cHBvcnQKCSogbHRjb25maWcuaW46IGFkZGVkIG5ldyB2YXJpYWJsZXMgZGxvcGVuIGFuZCBkbG9wZW5fc2VsZiwKCSAgLS1lbmFibGUtZGxvcGVuWy1zZWxmXSBmbGFncyBmb3IgQUNfTElCVE9PTF9ETE9QRU4KCSogbHRtYWluLmluOiB1c2UgZGxvcGVuW19zZWxmXSwgZGxwcmVvcGVuIGZpbGVzIGlmIHRoZXJlJ3Mgbm8KCSAgZGxvcGVuIHN1cHBvcnQsIGJ1aWxkIGx0X3ByZWxvYWRlZF9zeW1ib2xzIG9ubHkgaWYKCSAgLWRsW3ByZV1vcGVuIHdhcyB1c2VkLCBpbmNsdWRlIHByb2dyYW0gc3ltYm9scyBpZiAtZXhwb3J0LWR5bmFtaWMKCSAgd2FzIHNwZWNpZmllZCBhbmQgdGhlcmUncyBubyBkbG9wZW4oTlVMTCkgc3VwcG9ydAoJKiBtZGVtby9jb25maWd1cmUuaW46IHVzZSBBQ19MSUJUT09MX0RMT1BFTgoJKiBtZGVtby9tYWluLmM6IGRlbW9uc3RyYXRlIGx0X2Rsb3BlbigwKQoKMTk5OS0wMi0xNSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogZGVtby9kbG1haW4uYyAoX1dJTjMyKTogVGhlIGx0X3N5bWxpc3Qgc3RydWN0dXJlIGlzIG5vdyBjb25zdCwKCXNvIG15IG9yaWdpbmFsIGhvcnJpYmxlIHRlbXBvcmFyeSB3aW4zMiBoYWNrIG5vIGxvbmdlciB3b3JrZWQuCglIZXJlIGlzIGEgbmV3IGhvcnJpYmxlIHRlbXBvcmFyeSBoYWNrIHRvIHByZXZlbnQgaGVsbGRsIGZyb20gU0VHVmluZwoJb24gd2luMzIuICBJIHdpbGwgZml4IHRoaXMgcHJvcGVybHkgd2hlbiB3ZSBmaWd1cmUgb3V0IGhvdyB0byBkbwoJZGF0YSBleHBvcnRzIGZyb20gZGxscy4KCjE5OTktMDItMTQgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoQUNfQ0hFQ0tfTElCTSk6IGRvIG5vdCBzZXQgTUFUSExJQiBvciBBQ19TVUJTVCBpdCwKCXRoaXMgaGFzIGEgbmVnYXRpdmUgc2lkZS1lZmZlY3Qgb2YgY2F1c2luZyBhdXRvbWFrZSB0byBhZGQgTUFUSExJQgoJdG8gZXZlcnkgc2luZ2xlIE1ha2VmaWxlLiAgTGV0J3MgdXNlIHBsYWluIEFDX0NIRUNLX0xJQiwgc28gdGhhdAoJTElCUyBnZXQgc2V0LCB1bnRpbCB3ZSBmaW5kIGEgYmV0dGVyIGFsdGVybmF0aXZlCgkqICpkZW1vL01ha2VmaWxlLmFtOiByZW1vdmUgJChNQVRITElCKQoKCSogbGlibHRkbC9jb25maWd1cmUuaW46IGFkZCBhIERFU0NSSVBUSU9OIGFyZ3VtZW50IHRvIEFDX0RFRklORXMKCXdoZXJlIGFwcHJvcHJpYXRlLCBzbyBhcyB0byBnZXQgcmlkIG9mIGFjY29uZmlnLmgKCSogbGlibHRkbC9hY2NvbmZpZy5oOiByZW1vdmVkCgoxOTk5LTAyLTEzICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqICpkZW1vL01ha2VmaWxlLmFtOiB1c2UgJChNQVRITElCKQoJKiAqZGVtby9jb25maWd1cmUuaW46IHVzZSBBQ19DSEVDS19MSUJNCgkqIGRvYy9saWJ0b29sLnRleGk6IHJlbmFtZWQgZmlsZV9tYWdpY19jb21tYW5kIHRvIGZpbGVfbWFnaWNfY21kLAoJICByZW5hbWVkIGFyY2hpdmVfc3ltX2NtZHMgdG8gYXJjaGl2ZV9leHBzeW1fY21kcwoJKiBsdGNvbmZpZy5pbjogZGl0dG8KCSogbHRtYWluLmluOiBkaXR0bwoJKiBsaWJsdGRsL2x0ZGwuYzogdXNlIGx0X2RsbWFsbG9jL2ZyZWUKCSogbGlibHRkbC9sdGRsLmg6IGRlZmluZSBsdF9kbG1hbGxvYy9mcmVlCgkqIGxpYnRvb2wubTQ6IGFkZGVkIEFDX0NIRUNLX0xJQk0gbWFjcm8KCSogbHRjb25maWcuaW46IHJlbmFtZWQgYXJjaGl2ZV9zeW1fY21kcyB0byBhcmNoaXZlX2V4cHN5bV9jbWRzLAoJICBhZGRlZCBhbHdheXNfZXhwb3J0X3N5bWJvbHMsIGV4cG9ydF9zeW1ib2xzX2NtZCwgZXhjbHVkZV9leHBzeW1zLAoJICBpbmNsdWRlX2V4cHN5bXMsIHJlbW92ZWQgYXJjaGl2ZV9jbWRzIGZvciBjeWd3aW4vbWluZ3cgYW5kIEFJWCwKCSAgb24gU29sYXJpcyBzdG9yZSB0aGUgZXhwb3J0ZWQgc3ltYm9scyBsaXN0IGluIG9iamRpcgoJKiBsdG1haW4uaW46IGFsbG93IC1leHBvcnQtc3ltYm9scyBmb3IgbW9kdWxlcywgdXNlIHRocmVhZF9zYWZlIGZsYWcsCgkgIGFkZCBpbmNsdWRlX2V4cHN5bXMgdG8gdGhlIGV4cG9ydGVkIHN5bWJvbHMKCjE5OTktMDItMTIgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5oIChfTFRETExfRVhURVJOKTogbGlibHRkbCBpcyBubyBsb25nZXIgbGlua2VkIGFzIGEKCXNoYXJlZCBsaWJyYXJ5LCBzbyB0aGUgX2RlY2xzcGVjJ3Mgd2VyZSBwcmV2ZW50aW5nIHRoZSBsaW5rZXIgZnJvbQoJcmVzb2x2aW5nIHN5bWJvbHMgb24gd2luMzIuICBUaGV5IGhhdmUgYmVlbiByZW1vdmVkIG5vdy4KCjE5OTktMDItMTIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluOiBkb24ndCB0cnkgdG8gcmVhZCBvYmpkaXIvbGlibmFtZS5sYSBiZWZvcmUgaXQgaXMKCWNyZWF0ZWQhCgoJKiBsdG1haW4uaW46IGNyZWF0ZSBsaWJuYW1lLmxhaSBhdCBsaW5rIHRpbWUsIG5vdCBhdCBpbnN0YWxsIHRpbWUsCiAJYnV0IHN0aWxsIGNyZWF0ZSBpdCBhdCBpbnN0YWxsIHRpbWUgaWYgaXQgaXMgbWlzc2luZwoJUmVwb3J0ZWQgYnkgQWtpbSBEZW1haWxsZSA8ZGVtYWlsbGVAaW5mLmVuc3QuZnI+CgoJKiBsaWJsdGRsL2x0ZGwuYyAodHJ5YWxsX2Rsb3Blbik6IHN0cmNtcCBmaWxlbmFtZXMgd2FzIHJldmVyc2VkCgoxOTk5LTAyLTExICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGF1dG9nZW46IGxpYmx0ZGwgbmVlZHMgYXV0b2hlYWRlcgoJKiBkZW1vL01ha2VmaWxlLmFtOiByZW5hbWVkIGhlbGwuZGVidWcgdG8gaGVsbC5zdGF0aWMKCSAgKHdlJ3JlIGRlbW9uc3RyYXRpbmcgc3RhdGljIGxpbmtpbmcsIG5vdCBkZWJ1Z2dpbmcpCgkqIHRlc3RzL2RlbW8qOiBkaXR0bwoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJsdGRsKTogZG9jdW1lbnRlZCBuZXcgbHRfZGxvcGVuKE5VTEwpCgkgIGZlYXR1cmUKCSogbGlibHRkbC9hY2NvbmZpZy5oOiByZXF1aXJlZCBmb3IgY29uZmlnLmgKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHVzZSBjb25maWcuaAoJKiBsaWJsdGRsL2x0ZGwuYzogdXNlIGNvbmZpZy5oLCBzdXBwb3J0IGx0X2Rsb3BlbihOVUxMKQoJICAocmV0dXJucyBhIGhhbmRsZSBmb3IgdGhlIHByb2dyYW0gaXRzZWxmKQoJKiBsdGNvbmZpZy5pbjogbWlub3IgcmVmb3JtYXR0aW5nCgkqIGx0bWFpbi5pbjogaW4gbHRfcHJlbG9hZGVkX3N5bWJvbHMgYWx3YXlzIGRlZmluZQoJICB0aGUgcHJvZ3JhbSdzIHN5bWJvbHMgZmlyc3QsIGZvciAtZXhwb3J0LWR5bmFtaWMgbGlzdCBhbGwKCSAgcHJvZ3JhbSBzeW1ib2xzIHRvZ2V0aGVyLCAtZXhwb3J0LXN5bWJvbHMgd2FzIGJyb2tlbiBmb3IKCSAgcHJvZ3JhbXMsIG1pbm9yIHJlZm9ybWF0dGluZwoJKiBtZGVtby9NYWtlZmlsZS5hbTogcmVuYW1lZCBtZGVtby5kZWJ1ZyB0byBtZGVtby5zdGF0aWMKCSogdGVzdHMvbWRlbW8qOiBkaXR0bywgbWRlbW8udGVzdCB3YXMgY29tcGxldGVseSBicm9rZW4KCjE5OTktMDItMTAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKGlyaXg1KiwgaXJpeDYqLCBvc2YzKiwgb3NmNCopOiBkbyBub3QgdXNlCgktc2V0X3ZlcnNpb24gaW4gYXJjaGl2ZV9jbWRzIGlmIHZlcnN0cmluZyBpcyBlbXB0eQoJKGlyaXg2Kiwgc2hsaWJwYXRoX3Zhciwgc3lzX2xpYl9zZWFyY2hfcGF0aC1zcGVjLAoJZGVwbGlic19jaGVja19tZXRob2QpOiBzZXQgYXBwcm9wcmlhdGUgdmFsdWVzIGRlcGVuZGluZyBvbgoJc2VsZWN0ZWQgQUJJLCAtMzIsIC1uMzIgb3IgLTY0LCBhcyBzZXQgaW4gTEQgYnkgbGlidG9vbC5tNAoJKHV0czQqKTogcmVtb3ZlIGRvdCBiZXR3ZWVuIC5zbyBhbmQgdmVyc3VmZml4CgoxOTk5LTAyLTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0Y29uZmlnLmluIChpcml4NSosIGlyaXg2KiwgZGVwbGlic19jaGVja19tZXRob2QpOiB1c2UKCWZpbGVfbWFnaWMgZm9yIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jeSB0cmFja2luZwoKCSogbHRjb25maWcuaW4gKGlyaXg1KiwgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcik6IHNldCBpdCB0byBhCgljb2xvbiwgYmVjYXVzZSBvbiBJUklYIDUgb25seSB0aGUgbGFzdCAtcnBhdGggc3dpdGNoIHByZXZhaWxzLCBhbmQKCWl0IGNhbiBiZSBhIGxpc3Qgb2YgY29sb24tc2VwYXJhdGVkIGRpcmVjdG9yaWVzLiAgVGhpcyBjaGFuZ2Ugd2lsbAoJYWZmZWN0IGlyaXg2IHRvbywgYnV0IHRoYXQncyBub3QgYSBwcm9ibGVtLgoKCSogbHRjb25maWcuaW4gKGlyaXg1KiwgbGlicmFyeV9uYW1lc19zcGVjKTogYWRkIHNvbmFtZV9zcGVjLAoJb3RoZXJ3aXNlIHdlIGNhbid0IGRsb3BlbgoKMTk5OS0wMi0wOCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsdGNvbmZpZy5pbjogYWNjb3JkaW5nIHRvIE1hcmN1cyBTdW5kYmVyZyA8bWFja2FuQHN0YWNrZW4ua3RoLnNlPgoJICBIUC9VWCwgSVJJWCwgT3BlbkJTRCwgRGlnaXRhbCBVbml4IGFuZCBTdW5PUyBzdXBwb3J0CgkgIG5lZWRfdmVyc2lvbj1ubyBhbmQgbmVlZF9saWJfcHJlZml4PW5vLAoJICBmaXhlZCBhIGJ1ZyBpbiBTb2xhcmlzJyBhcmNoaXZlX3N5bV9jbWRzCgoxOTk5LTAyLTA0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2wubTQgKGFjX2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUpOiBhY2NlcHQgVEFCIGluCglhZGRpdGlvbiB0byBzcGFjZSBhcyBzZXBhcmF0b3IsIGFuZCBhbGxvdyBtb3JlIHRoYW4gb25lIHNwYWNlCgliZXR3ZWVuIHRoZSBzeW1ib2wgY29kZSBhbmQgdGhlIHN5bWJvbCBuYW1lOyBIUC9VWCdzIG5tLCBmb3IKCWV4YW1wbGUsIHVzZXMgdHdvIHNwYWNlcwoJKiBsdGNvbmZpZy5pbiAoZ2xvYmFsX3N5bWJvbF9waXBlKTogZGl0dG8KCShic2RpNCwgZGVwbGlic19jaGVja19tZXRob2QpOiB2YXJpYWJsZSBuYW1lIHdhcyBtaXNzcGVsbGVkCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluIChsaWJsdGRsX2N2X3ByZWxvYWRlZF9zeW1ib2xzKTogcmV3cml0ZQoJdGVzdCwgc28gYXMgbm90IHRvIGRlcGVuZCBvbiB0aGUgd2F5IGdsb2JhbF9zeW1ib2xfcGlwZSBpcwoJaW5pdGlhbGl6ZWQ7IHRoZSBjdXJyZW50IHRlc3Qgd291bGQgZ2V0IGZhbHNlIHBvc2l0aXZlcywgYXMKCWdsb2JhbF9zeW1ib2xfcGlwZSB3YXMgaW5pdGlhbGl6ZWQgYHg9IiInLCBub3QgYHg9JwoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfbW9kdWxlKTogaW5pdGlhbGl6ZSBmaWxlbmFtZSBpZiBkaXIgaXMgTlVMTAoJUmVwb3J0ZWQgYnkgR29kbWFyIEJhY2sgPGdiYWNrQGNzLnV0YWguZWR1PgoKMTk5OS0wMi0wNCAgR29kbWFyIEJhY2sgIDxnYmFja0Bjcy51dGFoLmVkdT4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW5leHQpOiBtaXNzaW5nIHNwYWNlIGZvciB0ZXJtaW5hdG9yIHdoZW4KCWFsbG9jYXRpbmcgbWVtb3J5IGZvciBzaGxpYl9leHQKCjE5OTktMDItMDMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsb3BlbmV4dCk6IHRtcCB3b3VsZCBiZSB0cmFzaGVkIGlmIHNobGliX2V4dAogCXdhcyBsb25nZXIgdGhhbiAzIGNoYXJhY3RlcnMKCjE5OTktMDItMDIgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluOiBuZXcgY29uZmlnLmd1ZXNzIHJldHVybnMgKi0qLWN5Z3dpbiBub3cgaW5zdGVhZCBvZgoJKi0qLWN5Z3dpbjMyLiAgc2VkIC1lICdzJVwoY3lnd2luXHxtaW5nd1wpMzIlXDElZycgbHRjb25maWcuaW4KCSogbHRtYWluLmluOiAgIHNlZCAtZSAncyVcKGN5Z3dpblx8bWluZ3dcKTMyJVwxJWcnIGx0bWFpbi5pbgoKCSogbHRjb25maWcuaW4gKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIGFsbG93X3VuZGVmaW5lZF9mbGFnLAoJYXJjaGl2ZV9jbWRzLCBhcmNoaXZlX3N5bV9jbWRzLCBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzKToKCXJlbW92ZWQgZHVwbGljYXRpb24gb2YgY29uZmlnIGJ5IGFzc3VtaW5nIHRoYXQgYHRlc3QgJHdpdGhfZ2NjID0KCXllcycgaW1wbGllcyBnbnUgbGQsIG90aGVyd2lzZSBNU1ZDKysgKHdoaWNoIEkgaGF2ZW4ndCB0ZXN0ZWQKCXNpbmNlIEkgaW5oZXJpdHRlZCB0aGUgY29kZSBmcm9tIElhbiBMYW5jZSBUYXlsb3IgYnR3ISkgaXMgaW1wbGllZC4KCjE5OTktMDEtMjggIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbjogUmV2ZXJ0ZWQgdGhpcyBjaGFuZ2Ugb2YgQWxleGFuZHJlJ3MgZnJvbSB0aGUKCTE5OTktMDEtMjU7ICJkb24ndCB0cnkgdG8gdXNlIC5vIGluc3RlYWQgb2YgLmxvIGp1c3QgYmVjYXVzZQoJdGhlcmUncyBubyBQSUMgZmxhZy4gIEl0IGxvc2VzIGlmIC0tZGlzYWJsZS1zdGF0aWMsIGFuZCB0aGVyZSdzCglub3QgbXVjaCBwb2ludCBpZiB3ZSdyZSByZWZlcnJpbmcgdG8gdGhlIHNhbWUgZmlsZSBhbnl3YXkuLi4iLAoJYmVjYXVzZSBub3QgYWxsIGxpbmtlcnMgd2lsbCBhY2NlcHQgLmxvIG9iamVjdCBuYW1lcy4KCSogbHRtYWluLmluOiBJbiB0aGUgY2FzZSB3aGVyZSAtLWRpc2FibGUtc3RhdGljIGlzIHNwZWNpZmllZCAoYXMKCW5vdGVkIGluIEFsZXhhbmRyZSdzIGxvZyBlbnRyeSksIHdlIGp1c3QgbGluayBzb21lIC5vIGZpbGVzIHRvCglwcmV2ZW50IHRoZSBvcmlnaW5hbCBlcnJvci4KCVJlcG9ydGVkIGJ5IEFuZHJleSBTbGVwdWhpbiA8cG9vaEBtc3UucnU+CgoxOTk5LTAxLTI3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYnRvb2xpemUuaW46IHNlYXJjaCBmb3IgQVtNQ11fUFJPR19MSUJUT09MLCBub3QKCUFNX1BST0dfTElCVE9PTAoJUmVwb3J0ZWQgYnkgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgoKMTk5OS0wMS0yNyAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogVEhBTktTOiBOb3cgdGhhdCB3ZSBoYXZlIGEgcG9saWN5LCBhcHBsaWVkIGl0IHRvIHRoZSBleGlzdGluZwoJbGlzdC4gIFRoaXMgaW4gbm8gd2F5IGRlbWVhbnMgdGhlIHdvcmsgb2YgdGhvc2UgcGVvcGxlIHJlbW92ZWQKCWZyb20gdGhlIFRIQU5LUyBmaWxlLCB3aG8gYXJlIHN0aWxsIGNyZWRpdGVkIGluIHRoZSBDaGFuZ2VMb2dzIGFuZAoJd2l0aG91dCB3aG8ncyB3b3JrLCBsaWJ0b29sIHdvdWxkIG5vdCB3b3JrIHNvIHdlbGwgb24gbWFueQoJcGxhdGZvcm1zLCBidXQgc2VydmVzIHRvIGhpZ2hsaWdodCB0aGUgb3V0c3RhbmRpbmcgYW5kIGNvbnRpbnVlZAoJY29udHJpYnV0aW9uIHRoZSByZW1haW5pbmcgcGVvcGxlIGhhdmUgbWFkZS4gIEFuZCBJIHF1b3RlLCAiV2UKCXJlc2VydmUgVEhBTktTIGZvciBwZW9wbGUgd2hvIGhhdmUgbWFkZSBtYWpvciBjb250cmlidXRpb25zLCBhbmQKCWxlYXZlIHRoZSBjcmVkaXQgdG8gdGhlIG90aGVycyBmb3IgdGhlIENoYW5nZUxvZyBvbmx5LiIKCgkqIFRIQU5LUzogYWRkZWQgU2FtIFZpbGFpbi4KCSogbHRjb25maWcuaW4gKCRlY2hvKTogIFdoZW4gdXNpbmcgcHJpbnRmIHRvIHJlcGxhY2UgZWNobyB0aGUgc2hlbGwKCWV4cGFuZHMgJXNcbiB0byAlc24uICBDaGFuZ2VkIHRvIHVzZSAiJXNcbiIgKHdpdGggcXVvdGVzKS4KCVJlcG9ydGVkIGJ5IFNhbSBWaWxhaW4gPHNhbS52aWxhaW5AbnoudW5pc3lzLmNvbT4KCjE5OTktMDEtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfZmlsZSk6IGZpeCBlbmRsZXNzIGxvb3AgY29uZGl0aW9uCgkoZmluZF9tb2R1bGUpOiBmaWxlbmFtZSBhbGxvY2F0aW9uIHdhcyBvZmYgYnkgMQoKCSogbGlibHRkbC9NYWtlZmlsZS5hbSAoZGlzdGNsZWFuLWxvY2FsKTogcmVuYW1lZCBmcm9tCglkaXN0Y2xlYW4taG9vaywgdGhhdCBkaWRuJ3Qgd29yawoKCSogbGlibHRkbC9sdGRsLmMgKGx0X2Rsb3Blbiwgbm9uLS5sYSk6IGZpbmRfZmlsZSBub3cgcmV0dXJucyAwIG9uCglmYWlsdXJlCgoJKiBNYWtlZmlsZS5hbSAobHRjb25maWcsIGx0bWFpbi5zaCk6IHNvbWUgYnJva2VuIG1ha2VzIGRvbid0IGxpa2UKCW1hY3JvcyBpbiB0YXJnZXRzOyByZXBsYWNlICQoc3JjZGlyKSB3aXRoIEBzcmNkaXJACgkqIGNvbmZpZ3VyZS5pbiAoQUNJTkNMVURFX000X0xJU1QpOiBzYW1lIHByb2JsZW07IGV4cGFuZCAkc3JjZGlyCgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChAVE9JTlNUQC9saWJsdGRsLmxhKTogaWYgaW5zdGFsbGF0aW9uIGlzCgllbmFibGVkLCBjcmVhdGUgdG8tYmUtaW5zdGFsbGVkIGxpYmx0ZGwubGEgd2l0aGluIEBUT0lOU1RACglkaXJlY3RvcnkKCShub2luc3RfTFRMSUJSQVJJRVMpOiBldmVuIGlmIGluc3RhbGxhdGlvbiBpcyBlbmFibGVkLCBidWlsZAoJY29udmVuaWVuY2UgbGlibHRkbC5sYSwgb3RoZXJ3aXNlIGJ1aWxkcyBvZiByYW5kb20gcGFja2FnZXMgbWF5CglmYWlsIGlmIHRoZSB1c2VyIGhhcHBlbnMgdG8gZW5hYmxlIGluc3RhbGxhdGlvbgoJKGRpc3RjbGVhbi1ob29rKTogd2lwZSBvdXQgJChUT0lOU1QpCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluOiBzZXQgVE9JTlNUIGFuZCBMSUJMSUJTIGFzIGFwcHJvcHJpYXRlOwoJZG9uJ3Qgc2V0IE5PSU5TVExJQlMgYW55IG1vcmUKCSogbWRlbW8vTWFrZWZpbGUuYW06IHVzZSBsaWJsdGRsLmxhCgoJKiBsaWJsdGRsL2x0ZGwuYyAoZmluZF9maWxlKTogb29wcywgZmlsZW5hbWVzaXplIHdhcyBtaXNjb21wdXRlZAoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfZmlsZSk6IGFsbG9jYXRlIGZpbGVuYW1lIGR5bmFtaWNhbGx5CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbiAoQUNfUFJPR19MSUJUT09MKTogYXV0b21ha2UgZG9lcyBub3QKCXJlY29nbml6ZSBpdCBhbmQgZmFpbCwgYmV0dGVyIGtlZXAgdXNpbmcgQU1fUFJPR19MSUJUT09MIHVudGlsIHRoZQoJbmV4dCByZWxlYXNlIG9mIGF1dG9tYWtlCgkqIGRlbW8vY29uZmlndXJlLmluLCBjZGVtby9jb25maWd1cmUuaW46IGRpdHRvCgkqIGRlcGRlbW8vY29uZmlndXJlLmluLCBtZGVtby9jb25maWd1cmUuaW46IGRpdHRvCgoJKiBsaWJsdGRsL2x0ZGwuYzogbWFrZSBhbGwgZ2xvYmFsIHN0cmluZ3MgY2hhcltdLCBub3QgY2hhcio7IGNoZWNrCgl0aGF0IGFsbCBjYWxscyB0byBtYWxsb2MoKSBhcmUgcHJvcGVybHkgY2FzdAoJKHN0cmR1cCwgc3RyY2hyLCBzdHJyY2hyLCB0cmltLCBmcmVlX3ZhcnMpOiBkZWNsYXJlIGFzIGlubGluZQoJKGZpbmRfbW9kdWxlKTogYWxsb2NhdGUgZmlsZW5hbWUgZHluYW1pY2FsbHk7IHN1cHBvcnQgbnVsbCBkaXIKCShmcmVlX3ZhcnMpOiBmcmVlIGRpciBhbmQgbmFtZSBvbmx5IGlmIG5vbi1udWxsCgkobHRfZGxvcGVuKToga2VlcCBkaXIgYXMgTlVMTCBpZiBub3QgZ2l2ZW47IGZpeCBleHByZXNzaW9uIHRoYXQKCWNhbGN1bGF0ZWQgdGhlIHNpemUgb2YgbmFtZTsgb25seSBmcmVlIGFuZCBuYW1lIGlmIG5vbi1udWxsCgkobHRfZGxvcGVuZXh0KTogYWxsb2NhdGUgdG1wIGR5bmFtaWNhbGx5CgoJKiBjb25maWd1cmUuaW4gKHBrZ2RhdGFkaXIpOiBleHBhbmQgJHtQQUNLQUdFfSBhdCBjb25maWd1cmUtdGltZSwKCWp1c3QgbGlrZSBhdXRvbWFrZSBkb2VzCgoJKiBjb25maWd1cmUuaW4gKHBrZ2RhdGFkaXIpOiBkZWZpbmUgcGtnZGF0YWRpciBleHBsaWNpdGx5LCBhbmQKIAljb21tZW50IHRoYXQgYXV0b21ha2UgZG9lcyBub3QgbmVlZCBpdCwgYnV0IGxpYnRvb2xpemUgZG9lcwoKCSogTWFrZWZpbGUuYW0gKGFjbG9jYWxkaXIpOiBkbyBub3Qgc2V0IGl0IGV4cGxpY2l0bHksIGF1dG9tYWtlCglkb2VzIGFscmVhZHkKCgkqIGNvbmZpZ3VyZS5pbiAoVElNRVNUQU1QKTogdXNlIG1rc3RhbXAgaGVyZSB0b28KCjE5OTktMDEtMjcgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogY2RlbW8vY29uZmlndXJlLmluOiByZW5hbWVkIEFNX1BST0dfTElCVE9PTCB0byBBQ19QUk9HX0xJQlRPT0wKCSogZGVtby9jb25maWd1cmUuaW46IGxpa2V3aXNlCgkqIGRlcGRlbW8vY29uZmlndXJlLmluOiBsaWtld2lzZQoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogbGlrZXdpc2UKCSogbWRlbW8vY29uZmlndXJlLmluOiBsaWtld2lzZQoJKiBsaWJsdGRsL2x0ZGwuYzogaW4gZmluZF9tb2R1bGUoKSBjaGVjayB3aGV0aGVyIGxpYmRpciBpcyBkZWZpbmVkLAoJICB0cnlhbGxfZGxvcGVuKCk6IG1vdmUgZGVhbGxvY2F0aW9uIG9mIGFuIGFscmVhZHkgb3BlbmVkIGhhbmRsZQoJICB0byBsdF9kbG9wZW4oKSwgYWxsb2NhdGUgdGhlIGRpcmVjdG9yeSBpbiBsdF9kbG9wZW4oKSBkeW5hbWljYWxseSwKCSAgbWlub3IgY2xlYW51cHMsIGZpeGVkIG1lbW9yeSBsZWFrIChuYW1lKQoJKiBsaWJ0b29sLm00OiByZW5hbWVkIGFsbCBBTV8gbWFjcm9zIHRvIEFDXyBhbmQgYWRkZWQgYWxpYXNlcyBmb3IKCSAgY29tcGF0aWJpbHR5LCB1cGRhdGVkIEFDX1NZU19OTV9QQVJTRSAobm8gdW5kZWZpbmVkIHN5bWJvbHMsCgkgIGRvbid0IGNvdW50IHRoZSBzeW1ib2xzKQoJKiBsdGNvbmZpZy5pbjogYWRkZWQgdGhyZWFkX3NhZmVfZmxhZ19zcGVjIChub3QgdXNlZCB5ZXQpLAoJICBhZGRlZCBnZW5lcmljIHZhcmlhYmxlIGZvciBsaW5rZXIgb3B0aW9ucyAibGlua29wdHMiIGluCgkgIGFsbCBhcmNoaXZlX2NtZHMKCSogbHRtYWluLmluOiBhZGRlZCAtdGhyZWFkLXNhZmUgZmxhZyAodW51c2VkKQoKMTk5OS0wMS0yNiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdGNvbmZpZy5pbiAoTFRDT05GSUdfVkVSU0lPTik6IGRhbW4hLCBhZGRpbmcgVElNRVNUQU1QIGRvZXNuJ3QKIAlhbHdheXMgd29yaywgYmVjYXVzZSB0aGVuIGRpZmZlcmVudCBDaGFuZ2VMb2cgdGltZXN0YW1wcyBmYWlsIHRvCiAJcGFzcyB0aGUgdmVyc2lvbiB0ZXN0LiAgSW5zdGVhZCBvZiBmb3JjaW5nIGJvdGggbHRjb25maWcgYW5kCglsdG1haW4uc2ggdG8gYmUgdXBkYXRlZCBldmVyeSB0aW1lIENoYW5nZUxvZyBjaGFuZ2VzLCBiZXR0ZXIKCXJldmVydCBpdAoKCSogbHRjb25maWcuaW4gKExUQ09ORklHX1ZFUlNJT04pOiBhZGQgVElNRVNUQU1QLCByZW1vdmUKCWV4cGxpY2l0IHF1b3RlcyBhbmQgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHZhcmlhYmxlcyB0byBxdW90ZQoKCSogbHRtYWluLmluOiByZXdvcmRlZCBgZHJvcHBlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcycKCW1lc3NhZ2UsIGFuZCBhZGRlZCBhIHdhcm5pbmcgYWJvdXQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgZXZlbgoJZm9yIG5vbi1tb2R1bGUgYnVpbGRzCgoxOTk5LTAxLTI2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBNYWtlZmlsZS5hbSAoaW5zdGFsbC1kYXRhLWhvb2spOiBEb24ndCBzaG93IHRoZSBpZiBleHByZXNzaW9uCgl0aGF0IHRlc3RzIGZvciBnemlwIHdpdGggYSBjb25kaXRpb25hbCBlcnJvciBtZXNzYWdlOyBqdXN0IGRvIGl0CglxdWlldGx5IGFuZCBzaG93IHRoZSBlcnJvciBpZiBpdCBmYWlscywgb3IgdGhlIG5leHQgYWN0aW9uIGlmIGl0CglzdWNjZWVkcy4KCgkqIGNvbmZpZ3VyZS5pbjogIEl0IHNlZW1zIEFsZXhhbmRyZSBhY2NpZGVudGFsbHkgcmVtb3ZlZCB0aGUKCUFDX1NVQlNUKHBrZ2RhdGFkaXIpIGxpbmUgcmVjZW50bHkgd2hpY2ggYnJlYWtzIGxpYnRvb2xpemUuCglSZXZlcnRlZCB0aGF0IHNtYWxsIGNoYW5nZS4KCjE5OTktMDEtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9sdGRsLmMgKGZpbmRfbW9kdWxlKTogdGVzdCBvbGRfbmFtZSBhbmQgZGxuYW1lIGZvciBOVUxMLAoJbm90IGxlbj09MAoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKGxpYmx0ZGxfY3Zfb2JqZGlyKTogeWVzLCBhcHBlbmRpbmcgdGhlICIvIgoJaW4gY29uZmlndXJlLmluIHdhcyBtdWNoIHNpbXBsZXIKCSogbGlibHRkbC9sdGRsLmMgKG9iamRpcik6IGRpdHRvCgoJKiBsaWJsdGRsL2x0ZGwuYyAob2JqZGlyKTogc3RyaW5nIGNvbGxhdGlvbiBpc24ndCBwb3J0YWJsZTsgc3RyY2F0CgkiLyIgZXhwbGljaXRseS4gIE9yIHNob3VsZCB0aGlzIGJlIG1vdmVkIHRvIGNvbmZpZ3VyZS5pbj8KCjE5OTktMDEtMjUgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbGlibHRkbC9sdGRsLmM6IGFsbG9jYXRlIHRoZSB2YXJpYWJsZXMgaW4gbHRfZGxvcGVuKCkgZHluYW1pY2FsbHkKCjE5OTktMDEtMjUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChmaWxlX21hZ2ljKTogdXNlIGVncmVwIGluc3RlYWQgb2YgZXhwciB0byBzdXBwb3J0Cgltb3JlIGdlbmVyYWwgcmVndWxhciBleHByZXNzaW9ucwoJKGZpbGVfcmVnZXgpOiByZW1vdmUgaXQ7IHRoZSBuYW1lIGlzIG1pc2xlYWRpbmcsIGl0J3Mgbm90IHVzZWQKIAlhbnl3aGVyZSwgYW5kIHByb2JhYmx5IHdpbGwgbmV2ZXIgYmUKCSogbHRjb25maWcuaW4sIGRvYy9saWJ0b29sLnRleGk6IGRpdHRvCgkqIGx0Y29uZmlnLmluIChsaW51eC1nbnUqLCBkZXBsaWJzX2NoZWNrX21ldGhvZCk6IGV4dGVuZCByZWdleCB0bwoJc3VwcG9ydCBgTFNCIGR5bmFtaWMgbGliJyBpbiB0aGUgb3V0cHV0IG9mIGBmaWxlJwoJUmVwb3J0ZWQgYnkgU2NvdHQgRC4gSGVhdm5lciA8c2RoQHBvLmN3cnUuZWR1PgoKCSogbHRtYWluLmluIChkZXBlbmRlbmN5X2xpYnMsIHhycGF0aCk6IGFkZCAtUiBzd2l0Y2hlcyB0bwoJZGVwZW5kZW5jeV9saWJzIG9ubHkganVzdCBiZWZvcmUgY3JlYXRpbmcgdGhlIC5sYSBmaWxlOyB0aGV5CglzaG91bGQgbm90IGJlIHBhc3NlZCB0byB0aGUgQyBjb21waWxlciBvciBsaW5rZXIgYXQKCWxpYnJhcnktY3JlYXRpb24gdGltZSwgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGV0aGVyIGl0IGlzIHN1cHBvcnRlZAoKCSogbHRjb25maWcuaW4gKGZyZWVic2QyLjIqLCBoYXJkY29kZV9taW51c19MKTogZm9yIEZyZWVCU0QgMi4yLjYsCgl0aGlzIG11c3QgYmUgYG5vJwoKCSogbWtzdGFtcDogbW92ZSB0aGUgc2VkIHNjcmlwdCB0byBleHRyYWN0IHJldmlzaW9uIGFuZCBkYXRlCglpbmZvcm1hdGlvbiBpbnRvIGEgc2VwYXJhdGUgc2hlbGwtc2NyaXB0LCBzbyB0aGF0IHdlIGNhbiBicmVhawoJbGluZXMgYmV0d2VlbiBjb21tYW5kczsgRnJlZUJTRCdzIHNlZCBkb2Vzbid0IGxpa2UgYDsnIGFmdGVyIGB0JwoJUmVwb3J0ZWQgYnkgQXhlbCBUaGltbSA8QXhlbC5UaGltbUBwaHlzaWsuZnUtYmVybGluLmRlPgoJKiBNYWtlZmlsZS5hbTogdXNlIG1rc3RhbXAKCSogVEhBTktTOiBhZGRlZCBBeGVsIFRoaW1tCgoJKiBsdG1haW4uaW46IGRvbid0IHRyeSB0byB1c2UgLm8gaW5zdGVhZCBvZiAubG8ganVzdCBiZWNhdXNlCgl0aGVyZSdzIG5vIFBJQyBmbGFnLiAgSXQgbG9zZXMgaWYgLS1kaXNhYmxlLXN0YXRpYywgYW5kIHRoZXJlJ3MKCW5vdCBtdWNoIHBvaW50IGlmIHdlJ3JlIHJlZmVycmluZyB0byB0aGUgc2FtZSBmaWxlIGFueXdheS4uLgoKCSogbHRtYWluLmluIChwYXNzX2FsbD1ub25lLCBkcm9wcGVkZGVwcyk6IHNldCBvbmx5IGlmIGRlcGxpYnMgd2FzCglub24tZW1wdHkKCjE5OTktMDEtMjQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbGlibHRkbC9sdGRsLmM6IG1pbm9yIGJ1Z2ZpeGVzLCBhcHBlbmQgYSAiLyIgdGhlIHNlYXJjaAoJICBkaXJlY3Rvcnkgb25seSBpZiBuZWNlc3NhcnkKCSogbHRjb25maWcuaW46IGFkZGVkIHN1cHBvcnQgZm9yIEZyZWVCU0QgPj0gMy4wCgkgIChwYXRjaCBmcm9tIEt1cnQgRC4gWmVpbGVuZ2EpCgkqIFRIQU5LUzogYWRkZWQgS3VydCBELiBaZWlsZW5nYQoKMTk5OS0wMS0yNCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChsaWJsdGRsKTogbGlzdCBzdXBwb3J0ZWQgZGxvcGVuIG1lY2hhbmlzbXMsCgkgIGFkZGVkIGZ1bmN0aW9uIGx0X2Rsb3BlbmV4dCgpLCByZW1vdmVkIHJlZmVyZW5jZSB0bwoJICBMVERMX1BSRUxPQURFRF9TWU1CT0xTIGluIExURExfU0VUX1BSRUxPQURFRF9TWU1CT0xTCgkqIGxpYmx0ZGwvbHRkbC5jOiBwYXJ0aWFsbHkgcmV2ZXJ0ZWQgQWxleGFuZHJlJ3MgZHluYW1pYyBzdHJpbmcKCSAgYWxsb2NhdGlvbiBjaGFuZ2UgKGl0IHdhcyBub3QgbmVjZXNzYXJ5IGFuZCB0aGUgY29kZSB3YXMgdW5yZWFkYWJsZSksCgkgIGNsZWFudXBzLCByZW1vdmVkIHVzcl9zZWFyY2hfcGF0aF9zaXplLCByZW5hbWVkIHVzcl9zZWFyY2hfcGF0aAoJICB0byB1c2VyX3NlYXJjaF9wYXRoLCBpbiBmaW5kX21vZHVsZSgpIGFsc28gY2hlY2sgZm9yIG1vdmVkCgkgIG1vZHVsZXMsIG1lcmdlZCBmaW5kX2ZpbGUoKSBhbmQgZmluZF9saWJyYXJ5KCksCgkgIGFkZGVkIGx0X2Rsb3BlbmV4dCgpLCBpbiBsdF9kbGFkZHNlYXJjaGRpcigpIG5vIGxvbmdlciByZXNldAoJICB0aGUgc2VhcmNoIHBhdGggaWYgJ3NlYXJjaF9kaXInID09IE5VTEwgYW5kIGRvbid0IHVzZSByZWFsbG9jKCkKCSAgKG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyksCgkgIHJlbW92ZWQgX19QKCh2b2lkKSkgaW4gdGhlIGRlY2xhcmF0aW9uIG9mIGx0X2RsZ2V0c2VhcmNocGF0aCgpCgkqIGxpYmx0ZGwvbHRkbC5oOiBhZGRlZCBsdF9kbG9wZW5leHQoKQoJKiBsdGNvbmZpZy5pbjogQUlYIGFyY2hpdmUgY29tbWFuZHMgd2VyZSBicm9rZW4sCgkgIGZpeGVkIGEgTUFKT1IgYnVnIGluIGdsb2JhbF9zeW1ib2xfcGlwZSB3aGljaCBjYXVzZWQKCSAgImRlbW8tc2hhcmVkLnRlc3Q7ZGVtby1tYWtlLnRlc3QiIHRvIGZhaWwgKGxpYnRvb2wgbXVzdCBub3QgZXh0cmFjdAoJICB1bmRlZmluZWQgc3ltYm9scyBvZiBsaWJyYXJpZXMsIGkuZS4gc3ltY29kZSBtdXN0IG5vdCBjb250YWluICdVJykKCSogdGVzdHMvTWFrZWZpbGUuYW0gKGNsZWFuLWxvY2FsKTogIm1ha2UgZGlzdGNsZWFuIiBpbiBjZGVtbywgdG9vCgoxOTk5LTAxLTIyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE1ha2VmaWxlLmFtIChsdGNvbmZpZywgbHRtYWluLnNoKTogYWRkIENoYW5nZUxvZyBSZXZpc2lvbiB0bwoJVElNRVNUQU1QCgkqIGNvbmZpZ3VyZS5pbjogZ2V0IHZhbHVlcyBvZiBQQUNLQUdFIGFuZCBWRVJTSU9OIHNldCBieQoJQU1fSU5JVF9BVVRPTUFLRSwgYW5kIGV4dHJhY3Qgb25seSBUSU1FU1RBTVAgZnJvbSB0aGUgQ2hhbmdlTG9nCgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxvcGVuKTogaWYgd2UncmUgcmV1c2luZyBhIHByZXZpb3VzbHkgb3BlbmVkCgloYW5kbGUsIGRvbid0IHJlc2V0IGl0cyBuYW1lIG5vciBhZGQgaXQgdG8gdGhlIGxpc3QsIGFuZCBmcmVlIHRoZQoJbmFtZSB3ZSBoYXZlIGFsbG9jYXRlZAoJUmVwb3J0ZWQgYnkgRWRvdWFyZCBHLiBQYXJtZWxhbiA8RWRvdWFyZC5QYXJtZWxhbkBGcmFuY2UuTkNSLkNPTT4KCgkqIE1ha2VmaWxlLmFtIChsdGNvbmZpZywgbHRtYWluLnNoLCBUSU1FU1RBTVApOiBsZXQncyBub3QgYXNzdW1lCglhbnl0aGluZyBhYm91dCB0aGUgZm9ybWF0IG9mIHRoZSBkYXRlLCBqdXN0IHRoYXQgaXQgZG9lcyBub3QKCWNvbnRhaW4gYCQnCgoxOTk5LTAxLTIyICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBjb25maWd1cmUuaW4gKGRhdGUpOiBlY2hvIHRoZSB2ZXJzaW9uIG51bWJlciBkdXJpbmcKCWNvbmZpZ3VyYXRpb24sIGFuZCBzaG93ICRkYXRlIGZvciBjdnMgdmVyc2lvbnMuCgoJKiBNYWtlZmlsZS5hbSAoJChzcmNkaXIpL2x0Y29uZmlnKTogT29wcy4gIGN2cyBjbyBrZXl3b3JkCglleHBhbnNpb24gYXRlIHRoZSBzZWQgZXhwcmVzc2lvbiEgQ2hhbmdlZCBzZWQgc2VwYXJhdG9yIHRvICclJwoJYmVjYXVzZSB0aGVyZSBhcmUgJy8nIGluIHRoZSBkYXRlLiAgQWRkZWQgbWlzc2luZyAnXCgnIHRvIHNlYXJjaAoJZXhwcmVzc2lvbi4gIEluc2VydGVkIGEgbnVsbCBzdHJpbmcgdG8gc3RvcCBjdnMgZnJvbSBleHBhbmRpbmcgaXQKCW5leHQgdGltZSA9KU98CgkoJChzcmNkaXIpL2x0bWFpbi5zaCk6IGRpdHRvLgoKMTk5OS0wMS0yMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBNYWtlZmlsZS5hbSAoVFNERVBTX0RJU1QpOiBkaXN0LXRpbWUgZGVwZW5kZW5jaWVzIGZvciB0aW1lc3RhbXBzCgkodGltZXN0YW1wcywgdXBkYXRlLXRpbWVzdGFtcHMpOiBjaGVjayB3aGV0aGVyIFRTREVQU19ESVNUIGFyZQoJdXAtdG8tZGF0ZSBhbmQgdXBkYXRlIGx0Y29uZmlnIGFuZCBsdG1haW4uc2ggaWYgbmVlZGVkCgkobHRjb25maWcsIGx0bWFpbi5zaCk6IGRlcGVuZCBvbiBUU0RFUFM7IHJlcGxhY2UgQFRJTUVTVEFNUEAgd2l0aAoJdGhlIERhdGUgdGFnIGluIHRoZSBDaGFuZ2VMb2cKCShUU0RFUFMpOiBlbXB0eSB1bmxlc3Mgb3ZlcnJpZGRlbiBieSB1cGRhdGUtdGltZXN0YW1wcwoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluIChUSU1FU1RBTVApOiBhcHBlbmQgdGltZXN0YW1wIHRvIG1vc3QKCXJlZmVyZW5jZXMgdG8gVkVSU0lPTgoKMTk5OS0wMS0yMiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogbHRtYWluLmluIChpbGQpOiBSZXZlcnQgdGhlIGNoYW5nZSB3aGljaCBhbGxvd2VkIGxpYnRvb2wgdG8KCWxpbmsgbGlicmFyaWVzIHdpdGggZGVwZW5kZW5jaWVzIG9uIC5sYSBsaWJzLgoJKiBORVdTOiBSZW1vdmVkIHJlZmVyZW5jZSB0byB3aW4zMiwgaW5jYXNlIDEuMyBzaGlwcyBiZWZvcmUKCWlsZCBpcyByZWFkeS4KCSogZG9jL1BMQVRGT1JNUzogUmVtb3ZlZCBpNjg2LXBjLWN5Z3dpbjMyLCBmb3IgdGhlIHNhbWUgcmVhc29uLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBSZW1vdmVkIHdpbjMyIHJlZnMsIGZvciB0aGUgc2FtZSByZWFzb24uCgoxOTk5LTAxLTIyICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGx0bWFpbi5pbiAoWHNlZCk6IGFkZCAxIHRvIFhzZWQgZGVmaW5pdGlvbiB0aGF0IGdvZXMgaW50bwoJdGVtcG9yYXJ5IHdyYXBwZXIgc2NyaXB0cwoJKiBsaWJ0b29sLm00OiB3ZSBkb24ndCBoYXZlIFhzZWQgaGVyZSwgZXhwYW5kIGl0IG1hbnVhbGx5CglSZXBvcnRlZCBieSBQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgoKMTk5OS0wMS0yMiAgRWRvdWFyZCBHLiBQYXJtZWxhbiAgPEVkb3VhcmQuUGFybWVsYW5ARnJhbmNlLk5DUi5DT00+CgoJKiBsdG1haW4uaW4gKGZpbmFsaXplX2hhcmRjb2RlX2xpYmRpcnMsIGZpbmFsaXplX3JwYXRoKTogaW4KCXBsYXRmb3JtcyB0aGF0IHVzZSAtcnBhdGgsIHByb2dyYW1zIG11c3QgYmUgZmluYWxpemVkIGF0CglpbnN0YWxsYXRpb24gdGltZSwgb3RoZXJ3aXNlIGJ1aWxkLXRyZWUgcHJvZ3JhbXMgd2lsbAoJcHJlZmVyIGluc3RhbGxlZCBsaWJyYXJpZXMgb3ZlciBidWlsZC10cmVlIG9uZXMKCjE5OTktMDEtMjIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbWRlbW8vTWFrZWZpbGUuYW0gKC4uL2xpYmx0ZGwvbGlidG9vbCk6IGlmIGl0IGRvZXMgbm90IGV4aXN0LAoJdGhlIHN1Yi1tYWtlIGZvciBsaWJsdGRsYy5sYSB3aWxsIHRha2UgY2FyZSBvZiBpdCwgYnV0IHdlIG11c3QgYXQKCWxlYXN0IHByb3ZpZGUgYW4gZW1wdHkgcnVsZSBmb3IgaXQsIG90aGVyd2lzZSB0aGUgc3ViLW1ha2Ugd2lsbAoJbmV2ZXIgcnVuCgoJKiBkZW1vL2NvbmZpZ3VyZS5pbiwgZGVtby9NYWtlZmlsZS5hbSAoRExQUkVPUEVOKTogcmV2ZXJ0ZWQ7IGl0CglkaWRuJ3QgbWFrZSBhbnkgZGlmZmVyZW5jZS4KCjE5OTktMDEtMjEgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIFRIQU5LUzogQWRkZWQgQ2hyaXMgTGFhcyA8Z29sZW1ATUlULkVEVT4KCglGcm9tIENocmlzIExhYXMgPGdvbGVtQE1JVC5FRFU+CgkqIGx0bWFpbi5pbiAoY29tcGlsZSk6ICBjb3JyZWN0ZWQgYSB0eXBvIGluIGNvbXBpbGUgbW9kZSB3aGljaAoJY2F1c2VkICJnY2M6IHVucmVjb2duaXplZCBvcHRpb24gLWMtZlBJQyIgZXJyb3JzIGR1ZSB0byBhIG1pc3NpbmcKCXNwYWNlLgoKMTk5OS0wMS0yMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbjogcmVpbnRyb2R1Y2UgY29kZSB0byBkZXRlY3QgbmF0aXZlIGxpYnJhcnkKCWV4dGVuc2lvbgoJKiBsaWJsdGRsL2x0ZGwuYyAobHRfZGxvcGVuKTogaWYgYSAubGEgZmlsZSBuYW1lIGlzIGdpdmVuLCB0aGF0J3MKCWFsbC4gIE90aGVyd2lzZSwgbHRfZGxvcGVuIG5vdyB0cmllcyB0byBhcHBlbmQgLmxhIGZpcnN0LiAgSWYgdGhpcwoJZmFpbHMsIGl0IHRyaWVzIHRoZSBnaXZlbiBmaWxlbmFtZSwgYW5kLCBhdCBsYXN0LCB0cmllcyB0byBhcHBlbmQKCXRoZSBuYXRpdmUgbGlicmFyeSBleHRlbnNpb24gdG8gdGhlIGdpdmVuIGZpbGVuYW1lLgoJKiBkb2MvbGlidG9vbC50ZXhpIChsdF9kbG9wZW4pOiBleHBsYWluIG5ldyBsb29rdXAgc3RyYXRlZ3kKCgkqIGxpYmx0ZGwvbHRkbC5jOiBtYWpvciByZXdyaXRlIHRvIGF2b2lkIGFsbW9zdCBhbGwgZml4ZWQtc2l6ZQoJYnVmZmVyczsgb25seSBgdG1wJyBpbiBsdF9kbG9wZW4gcmVtYWluZWQuICBCdXQgdGhlIGNvZGUgZ290IHVnbHkKCTotKAoKCSogbHRjb25maWcuaW4gKGxpbnV4LWdudSosIGZpbmlzaF9jbWRzKTogcmVtb3ZlIGVycm9uZW91cyBiYWNrc2xhc2gKCgkqIGRlbW8vY29uZmlndXJlLmluOiBzZXQgRExQUkVPUEVOIHRvIC1kbG9wZW4gaWYgd2UgZG9uJ3QgaGF2ZQoJc2hhcmVkIGxpYnJhcmllcwoJKiBkZW1vL01ha2VmaWxlLmFtIChETFBSRU9QRU4pOiB1c2UgaW5zdGVhZCBvZiAtZGxwcmVvcGVuCgkoU1RBVElDKTogdXNlICQoU1RBVElDKSwgbm90IEBTVEFUSUNACgkqIG1kZW1vL01ha2VmaWxlLmFtIChTVEFUSUMpOiBkaXR0bwoKCSogdGVzdHMvZGVtby1zaGFyZWQudGVzdCwgdGVzdHMvZGVtby1zdGF0aWMudGVzdDogbmV3IHRlc3RzCgkqIHRlc3RzL21kZW1vLXNoYXJlZC50ZXN0LCB0ZXN0cy9tZGVtby1zdGF0aWMudGVzdDogZGl0dG8KCSogdGVzdHMvTWFrZWZpbGUuYW06IGRpdHRvCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IHRoZW0KCSogZGVtby9NYWtlZmlsZS5hbSwgbWRlbW8vTWFrZWZpbGUuYW0gKFNUQVRJQyk6IGRvIG5vdCB1c2UKCS1zdGF0aWMgdW5jb25kaXRpb25hbGx5LCBpdCBjYW4ndCB3b3JrIHdpdGggLS1kaXNhYmxlLXN0YXRpYwoJKiBkZW1vL2NvbmZpZ3VyZS5pbiwgbWRlbW8vY29uZmlndXJlLmluOiBjaGVjayB3aGV0aGVyIGxpYnRvb2wgd2FzCgljb25maWd1cmVkIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMgYW5kLCBpZiBub3QsIHNldCBTVEFUSUMgdG8gYW4KCWVtcHR5IHN0cmluZwoKMTk5OS0wMS0yMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKG1vZHVsZSwgZHJvcHBlZGRlcHMpOiBpZiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5CglhbGwgZGVwZW5kZW5jaWVzIG9mIGEgbW9kdWxlLCBpdCB3aWxsIG9ubHkgYnVpbGQgYSBzdGF0aWMgdmVyc2lvbgoJb2YgaXQsIGFuZCBkaXNwbGF5IGEgd2FybmluZyBtZXNzYWdlCgoxOTk5LTAxLTIwICBFcmV6IFphZG9rIDxlemtAc2hla2VsLm1jbC5jcy5jb2x1bWJpYS5lZHU+CgoJKiBsdGNvbmZpZy5pbiAoYWl4NCosIHdpdGhfZ2NjLCBhcmNoaXZlX2NtZHMpOiBmaXggdHlwbyBpbiBBbmRyZXkKCVNsZXB1aGluJ3MgbGFzdCBwYXRjaAoKMTk5OS0wMS0yMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBNYWtlZmlsZS5hbSAoQERJU1RfTUFLRUZJTEVfTElTVEApOiB3b3JrIGFyb3VuZCBVbHRyaXggL2Jpbi9zaCBidWcKCSogdGVzdHMvbm9tb2RlLnRlc3QgKG11c3Qgc3BlY2lmeSBhIE1PREUpOiBkaXR0bwoJUmVwb3J0ZWQgYnkgUmFpbmVyIE9ydGggPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCSogVEhBTktTOiBBZGRlZCBSYWluZXIgT3J0aAoKMTk5OS0wMS0yMCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBsdGNvbmZpZy5pbjogTm8ga25vd24gdmVyc2lvbiBvZiBTb2xhcmlzIDIgaGFyZGNvZGVkIC1MIHBhdGhzLgoKMTk5OS0wMS0yMCAgRXJleiBaYWRvayA8ZXprQHNoZWtlbC5tY2wuY3MuY29sdW1iaWEuZWR1PgoKCSogbHRtYWluLmluOiBzL25cJ3QvIG5vdC8KCSogZG9jL1BMQVRGT1JNUzogdXBkYXRlcyBmb3Igc3Vub3M0L202OGsgYW5kIGFpeAoKMTk5OS0wMS0yMCAgQW5kcmV5IFNsZXB1aGluICA8cG9vaEBtc3UucnU+CgoJKiBsdGNvbmZpZy5pbiAoYWl4NCopOiBjaGVjayBmb3IgcmV3b3JrZWQgY29sbGVjdDIsIGFsd2F5cyBwYXNzCgktYm5vZW50cnkgb3B0aW9uIHRvIGxpbmtlciB3aGVuIGJ1aWxkaW5nIGEgc2hhcmVkIGxpYnJhcnkKCjE5OTktMDEtMjAgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChmaWxlX21hZ2ljKTogZm9sbG93IHNvZnQtbGlua3MgYmVmb3JlIHJ1bm5pbmcgYGZpbGUnCglvbiB0aGUgY2FuZGlkYXRlIGxpYnJhcnk7IHRyeSB0byBhdm9pZCBlbnRlcmluZyBlbmRsZXNzIGxvb3AKCVN1Z2dlc3RlZCBieSBOaXggPG5peEBlc3BlcmkuZGVtb24uY28udWs+CgoJKiBsdGNvbmZpZy5pbiAobGludXgqLCBzb2xhcmlzKiwgYnNkaTQqLCBzeXNfbGliX3NlYXJjaF9wYXRoKToKCXJlbW92ZSBleHBhbnNpb24gb2YgJExEX0xJQlJBUllfUEFUSAoJKiBsdG1haW4uaW4gKGxpYl9zZWFyY2hfcGF0aCk6IGFwcGVuZCB0aGUgZXhwYW5zaW9uIG9mICRzaGxpYnBhdGhfdmFyCgkqIGRvYy9saWJ0b29sLnRleGk6IGRvY3VtZW50IGl0CgoJKiBUSEFOS1M6IEFkZGVkIFN0ZXZlbiBTY2h1bHR6CgoxOTk5LTAxLTIwICBTdGV2ZW4gTS4gU2NodWx0eiA8c21zQHdsdi5paXBvLmd0ZWdzYy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoYnNkaTQqLCBjaGVja19zaGFyZWRfZGVwbGlic19tZXRob2QpOiBmaWxlX21hZ2ljCgkoYnNkaTQqLCBzeXNfbGliX3NlYXJjaF9wYXRoKTogYWRkIC9zaGxpYiBhbmQgb3RoZXIgZGlycwoKMTk5OS0wMS0yMCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBjZGVtby9tYWluLmMgKG1haW4pOiB1c2UgSyZSIGRlZmluaXRpb24gc3ludGF4CgkqIG1kZW1vL21haW4uYyAodGVzdF9kbCwgbWFpbik6IGRpdHRvCgkodGVzdF9kbCk6IGNhc3RzIHJldHVybiB2YWx1ZSBvZiBsdF9kbHN5bSB0byBhcHByb3ByaWF0ZSB0eXBlcwoKCSogbHRtYWluLmluIChkbHN5bXMpOiAjZGVmaW5lIGNvbnN0IHRvIG5vdGhpbmcgaWYgbm90IF9fU1REQ19fCgoJKiBsdGNvbmZpZy5pbiAoZ2xvYmFsX3N5bWJvbF9waXBlKTogI2RlZmluZSBjb25zdCB0byBub3RoaW5nIGlmCglub3QgX19TVERDX18KCgkqIGRlbW8vZGxtYWluLmMgKG1haW4pOiBjYXN0IHMtPmFkZHJlc3MgdG8gdGhlIGFwcHJvcHJpYXRlIHBvaW50ZXIKIAl0eXBlcywgb3RoZXJ3aXNlIFN0dW5PUzQncyBjYyByZWZ1c2VzIHRvIGNvbXBpbGUgaXQKCgkqIGx0Y29uZmlnLmluIChzdW5vczQqLCB3aXRob3V0X2dudV9sZCwgd2l0aF9nY2MsIGFyY2hpdmVfY21kcyk6CiAJYWRkIC1mUElDLCBiZWNhdXNlIGxpYmdjYyBpcyBtdWx0aWxpYmJlZCwgYW5kIHdlIHdhbnQgdGhlIFBJQwogCXZlcnNpb24gb2YgaXQgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIG90aGVyd2lzZSBsZCBjb21wbGFpbnMKCgkqIGRlbW8vZGxtYWluLmMgKG1haW4pOiBhZGQgbWlzc2luZyBjb25zdCB0byBkZWNsYXJhdGlvbiBvZiBuYW1lCgoJKiBsaWJsdGRsL2x0ZGwuYyAoZmluZF9tb2R1bGUpOiByZW1vdmUgdGhlIGxpYmRpciBhcmd1bWVudCwgYW5kCgl0cnkgdG8gIG9wZW4gbGlicmFyeSBvbmx5IGFzIG9sZF9uYW1lIGFuZCBkaXIvZGxuYW1lCgkobHRfZGxvcGVuKTogdXNlIGBpbnN0YWxsZWQnIHZhcmlhYmxlIGluIC5sYSBmaWxlIHRvIGRlY2lkZQoJd2hldGhlciB0byB1c2UgbGliZGlyIG9yIG9iamRpcgoKCSogZGVtby9jb25maWd1cmUuaW4gKEFDX0NfQ09OU1QpOiBhZGRlZCwgZm9yIHBvcnRhYmlsaXR5CgkqIG1kZW1vL2NvbmZpZ3VyZS5pbiAoQUNfQ19DT05TVCk6IGRpdHRvCgkqIGxpYmx0ZGwvY29uZmlndXJlLmluIChBQ19DX0NPTlNULCBBQ19DX0lOTElORSk6IGRpdHRvCgkqIGxpYmx0ZGwvbHRkbC5jIChMVERMX0ZJTEVOQU1FX01BWCk6IHVzZSBGSUxFTkFNRV9NQVggaWYgZGVmaW5lZAoJKEZJTEVOQU1FX01BWCk6IHJlcGxhY2UgYWxsIGV4cGxpY2l0IHVzZXMgd2l0aCBMVERMX0ZJTEVOQU1FX01BWAoJKHByZXN5bV9mcmVlX3N5bWxpc3RzLCB0cmltKTogZG9uJ3QgcmV0dXJuIHZvaWQsIGZvciBwb3J0YWJpbGl0eQoJKGx0X2RsZ2V0c2VhcmNocGF0aCk6IHJlcGxhY2UgKHZvaWQpIHdpdGggX19QKCh2b2lkKSkKCgkqIGx0bWFpbi5pbiAoY29tcGlsZSk6IHdoZW4gY29tcGlsaW5nIGJvdGggUElDIGFuZCBub24tUElDLCB3cml0ZQogCXRoZSBQSUMgb2JqZWN0IHRvIC5saWJzLy5sbyBhbmQgb25seSByZW5hbWUgaXQgdG8gLmxvIGFmdGVyCiAJY29tcGlsaW5nIHRoZSAubywgdG8gYXZvaWQgZm9vbGluZyBtYWtlIGRlcGVuZGVuY2llcwoKCSogbWRlbW8vbWFpbi5jIChMVERMX1BSRU9QRU5FRF9TWU1CT0xTKTogcmVtb3ZlCgoxOTk5LTAxLTIwICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBUT0RPOiBBZGRlZCBpbnRlci1saWJyYXJ5IGRlcHMgZm9yIGx0bGlicy4KCgkqIFRIQU5LUzogQWRkZWQgVmxhZGltaXIgS3VzaG5pci4KCjE5OTktMDEtMjAgIFZsYWRpbWlyIEt1c2huaXIgIDxrdXNobkBtYWlsLmthci5uZXQ+CgoJKiBsdGNvbmZpZy5pbiAoZnJlZWJzZDMqKTogRGVmaW5lIGBkZXBsaWJzX2NoZWNrX21ldGhvZCcgYW5kCglgZmlsZV9tYWdpY19jb21tYW5kJyBmb3IgZnJlZWJzZC1lbGYuCgoxOTk5LTAxLTIwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIFRPRE86IHNob3VsZCB3ZSBhbHNvIGJ1aWxkIGEgYHN0YXRpYycgY29weSBvZiBhIGNvbnZlbmllbmNlCiAJbGlicmFyeSBvdXQgb2YgLm8gZmlsZXM/CgoJKiBsdGNvbmZpZy5pbiAoYnNkaTQqLCBuZXRic2QqLCB1dHM0KiwgbGlicmFyeV9uYW1lc19zcGVjLAoJc29uYW1lX3NwZWMpOiByZW1vdmVkIGR1cGxpY2F0ZSBkb3QgYmVmb3JlICRtYWpvcgoJUmVwb3J0ZWQgYnkgU3RldmVuIE0uIFNjaHVsdHogPHNtc0B3bHYuaWlwby5ndGVnc2MuY29tPiAoYnNkaTQqKQoKCSogVEhBTktTOiBhZGRlZCBNYW5mcmVkIFdlaWNoZWwKCjE5OTktMDEtMjAgIE1hbmZyZWQgV2VpY2hlbCAgPE1hbmZyZWQuV2VpY2hlbEBwZGIuc2llbWVucy5kZT4KCgkqIGx0Y29uZmlnLmluIChzeXN2NSopOiBzYW1lIGFzIHN5c3Y0LjMqCgoxOTk5LTAxLTIwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBwcm9wZXJseSBkZXRlY3QgZXJyb3IgY29uZGl0aW9uIHdoZW4KCWZ1bGwgcGF0aG5hbWUgb2Ygbm9uLWxpYnRvb2wgbGlicmFyeSBpcyBwcm92aWRlZAoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKGxpYmx0ZGxfY3ZfcHJlbG9hZGVkX3N5bWJvbHMsCglIQVZFX1BSRUxPQURFRF9TWU1CT0xTKTogdGVzdCB3aGV0aGVyIHdlIHN1cHBvcnQgLWRsKm9wZW4KCSogbGlibHRkbC9sdGRsLmMgKCFIQVZFX1BSRUxPQURFRF9TWU1CT0xTLCBsdF9wcmVsb2FkZWRfc3ltYm9scyk6CglkZWZpbmUgaXQgdG8gYW4gZW1wdHkgbGlzdCBpZiBsaWJ0b29sIHdvbid0IGdlbmVyYXRlIGl0LCBzbyBhcyB0bwoJYXZvaWQgbGluayBlcnJvcnMuICBUaGlzIHdpbGwgY2F1c2Ugc2lsZW50IGRsb3BlbmluZyBmYWlsdXJlcywgYnV0CgltYXliZSB0aGlzIGlzIGJldHRlciB0aGFuIGZhaWxpbmcgdG8gbGluayB0aGUgcHJvZ3JhbS4uLgoKCSogbGlibHRkbC9sdGRsLmggKExURExfUFJFTE9BREVEX1NZTUJPTFMpOiByZW1vdmUgaXQ7IGJldHRlciB0bwoJZGVjbGFyZSBsdF9wcmVsb2FkZWRfc3ltYm9scwoJKiBkb2MvbGlidG9vbC50ZXhpIChMVERMX1BSRUxPQURFRF9TWU1CT0xTKTogZGl0dG8KCgkqIGx0bWFpbi5pbiAoZGxwcmVkZXBzKTogcmVtb3ZlZCwgcmV2ZXJ0aW5nIDE5OTktMDEtMTcncyBjaGFuZ2UKCjE5OTktMDEtMTkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9NYWtlZmlsZS5hbSAoTWFrZWZpbGUpOiBkZXBlbmQgb24gbGlidG9vbAoKCSogbHRtYWluLmluIChsdF9wcmVsb2FkZWRfc2V0dXApOiBmdW5jdGlvbiBhZGRlZCB0byBzeW1ib2wgbGlzdAoJc291cmNlIGZpbGUgdG8gd29yayBhcm91bmQgRnJlZUJTRCBwcm9ibGVtCgoJKiBNYWtlZmlsZS5hbSAoY2hlY2stbG9jYWwpOiBkZXBlbmQgb24gbGlibHRkbC9NYWtlZmlsZQoKCSogbWRlbW8vTWFrZWZpbGUuYW0gKG1kZW1vX0xERkxBR1MsIG1kZW1vX0xEQUREKTogbW92ZWQgLWRsb3BlbgoJZmxhZ3MgdG8gTERBREQKCSogZG9jL2xpYnRvb2wudGV4aSAoVXNpbmcgQXV0b21ha2UpOiBob3cgdG8gYWRkIC1kbG9wZW4gdG8gTERBREQKCjE5OTktMDEtMTkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCglGcm9tIEFuZHJleSBTbGVwdWhpbiA8cG9vaEBtc3UucnU+CgkqIGx0bWFpbi5pbiAoaGFyZGNvZGVfYWN0aW9uKSBPb3BzLCBtaXNhcHBsaWVkIHRoZSBwYXRjaCEKCgkqIGx0Y29uZmlnLmluIChjb21waWxlX2RlcGVuZGVuY3lsYnMpOiByZW1vdmVkIHRoaXMKCXZhcmlhYmxlIGFuZCBwaWNrIHVwIHRoZSBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tICRkZXBsaWJzLgoJKiBsdG1haW4uaW4gKGNvbXBpbGVfZGVwZW5kZW5jeWxpYnMpOiByZW1vdmVkIHRoaXMKCXZhcmlhYmxlLCB1c2UgZGVwbGlicyB0byBob2xkIHRoZXNlIGRlcGVuZGVuY2llcy4KCglGcm9tIEFuZHJleSBTbGVwdWhpbiA8cG9vaEBtc3UucnU+CgkqIGx0bWFpbi5pbiAoaGFyZGNvZGVfYWN0aW9uKSBtYWtlIHN1cmUgZGVwbGlicyBpcyBzZXQgdG8gaW5jbHVkZQoJYWxsIHRoZQlleHRyYSBsaWJzIGFkZGVkIHRvIGNvbXBpbGVfY29tbWFuZC4KCjE5OTktMDEtMTggIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlidG9vbC5tNCAoTElCVE9PTF9ERVBTKTogc2V0IGl0CgkqIGxpYmx0ZGwvY29uZmlndXJlLmluIChMSUJUT09MX0RFUFMpOiBBQ19TVUJTVCBpdAoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChsaWJ0b29sKTogdXNlIGl0CgkqIGRvYy9saWJ0b29sLnRleGkgKEFNX1BST0dfTElCVE9PTCk6IGRvY3VtZW50IGl0CgoJKiBNYWtlZmlsZS5hbSAobGlibHRkbC50YXIuZ3opOiBkb24ndCBjcmVhdGUgaXQgYXMgcGFydCBvZiB0aGUKCWJ1aWxkLCBzaW5jZSBpdCBpcyBsaWtlbHkgdG8gYmVjb21lIHN0YWxlIGlmIHdlIGRvCgkoaW5zdGFsbC1kYXRhLWhvb2spOiBjcmVhdGUgYW5kIGluc3RhbGwgbGlibHRkbC50YXIuZ3osIHdpdGhvdXQKCWRlcGVuZGluZyBvbiBHTlUgdGFyCglSZXBvcnRlZCBieSBNYW5mcmVkIFdlaWNoZWwgPE1hbmZyZWQuV2VpY2hlbEBwZGIuc2llbWVucy5kZT4KCjE5OTktMDEtMTcgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogTWFrZWZpbGUuYW06IGFkZGVkIGxpYmx0ZGwudGFyLmd6IHRvIENMRUFORklMRVMKCSogQ2hhbmdlTG9nOiBzb21lIHJlZm9ybWF0dGluZwoJKiBUT0RPOiBkb2N1bWVudGF0aW9uIHVwZGF0ZXMKCSogZG9jL2xpYnRvb2wudGV4aTogYWRkZWQgcHJlbGltaW5hcnkgbGlibHRkbCBkb2N1bWVudGF0aW9uLAoJICB1cGRhdGVkIGRsb3BlbiBhbmQgLW1vZHVsZSBkb2N1bWVudGF0aW9uLAoJICByZW5hbWVkIC1hdm9pZC12ZXJzaW9uaW5nIHRvIC1hdm9pZC12ZXJzaW9uCgkgIGRvY3VtZW50ZWQgdGhlIGxpYnRvb2wgc2NyaXB0IHZhcmlhYmxlcyBjb21waWxlcl9jX28sCgkgIGNvbXBpbGVyX29fbG8sIG5lZWRfbG9ja3MsIG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMsCgkgIHBvc3R1bmluc3RhbGxfY21kcywgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjLAoJICBmaXhfc3JjZmlsZV9wYXRoLCBvYmpkaXIsIG9iamV4dCwgbGliZXh0LAoJICBkb2N1bWVudGVkIHRoZSB0d28gbmV3IGZsYWdzICgtLWx0ZGxbLXRhcl0pIG9mIGxpYnRvb2xpemUKCSogbGlibHRkbC9NYWtlZmlsZS5hbTogaW5jcmVtZW50ZWQgdGhlIHZlcnNpb24sIHJlbW92ZWQKCSAgbGlidG9vbCBkZXBlbmRlbmN5IHNvIHRoYXQgaXQgY2FuIGJlIGJ1aWxkIGluZGVwZW5kZW50bHkKCSogbGlibHRkbC9jb25maWd1cmUuaW46IHJlbW92ZWQgTFRETF9TSExJQl9FWFQgaGFjaywKCSAgc2V0IHZlcnNpb24gdG8gMS4wLCB1c2UgQU1fTUFJTlRBSU5FUl9NT0RFLAoJICBETFBSRU9QRU4gaXMgYWx3YXlzIHN1cHBvcnRlZCwgY2hlY2sgZm9yIGxpYnRvb2wncyBvYmpkaXIgdmFyaWFibGUKCSAgKExURExfT0JKRElSKQoJKiBsaWJsdGRsL2x0ZGwuYzogc29tZSBjbGVhbnVwcyAobW92ZWQgY29uc3RhbnRzIHRvIHRoZSBiZWdpbm5pbmcKCSAgb2YgdGhlIGZpbGUgYW5kIHByZWZpeGVkIGFsbCBvZiB0aGVtIHdpdGggTFRETF8sIG1pbm9yIG9wdGltaXphdGlvbnMKCSAgaW4gZmluZF9maWxlKCkgYW5kIGZpbmRfbW9kdWxlKCkpLCByZW5hbWVkIGx0X2RscHJlb3BlbiogdG8KCSAgbHRfZGxwcmVsb2FkKiBmb3IgY29uc2lzdGVuY3ksIHJlbW92ZWQgTFRETF9TSExJQl9FWFQgaGFjaywKCSAgd2UgZG9uJ3QgbmVlZCB1bmlzdGQuaCwgRExQUkVPUEVOIGlzIF9hbHdheXNfIHN1cHBvcnRlZCwKCSAgcmV2ZXJ0ZWQgQWxleGFuZHJlJ3MgbHRfZGxwcmVvcGVuX2RlZmF1bHRfIGNoYW5nZSwKCSAgdHJ5IHRvIG9wZW4gdGhlIG5vdC1pbnN0YWxsZWQgbW9kdWxlIGJlZm9yZSB0aGUgaW5zdGFsbGVkIG9uZSwKCSAgcmVwbGFjZWQgbHRfZGxzZWFyY2hwYXRoKCkgd2l0aCBsdF9kbGFkZHNlYXJjaGRpcigpLAoJICBsdF9kbHNldHNlYXJjaHBhdGgoKSBhbmQgbHRfZGxnZXRzZWFyY2hwYXRoKCkKCSogbGlibHRkbC9sdGRsLmg6IHJlbmFtZWQgbHRfZGxwcmVvcGVuKiB0byBsdF9kbHByZWxvYWQqCgkgIGZvciBjb25zaXN0ZW5jeSwgcmVtb3ZlZCB0aGUgZGVjbGFyYXRpb24gb2YgbHRfcHJlbG9hZGVkX3N5bWJvbHMKCSAgKHNob3VsZCBiZSBpbXBvcnRlZCBieSBwcm9ncmFtcyksCgkgIHJldmVydGVkIEFsZXhhbmRyZSdzIGx0X2RscHJlb3Blbl9kZWZhdWx0XyBjaGFuZ2UgYW5kIGFkZGVkCgkgIHR3byBuZXcgbWFjcm9zIExURExfUFJFTE9BREVEX1NZTUJPTFMgYW5kCgkgIExURExfU0VUX1BSRUxPQURFRF9TWU1CT0xTKCksCgkgIGFkZGVkIGx0X2RsYWRkc2VhcmNoZGlyKCksIGx0X2Rsc2V0c2VhcmNocGF0aCgpIGFuZAoJICBsdF9kbGdldHNlYXJjaHBhdGgoKQoJKiBsaWJ0b29sLm00OiBzb21lIHJlZm9ybWF0dGluZwoJKiBsaWJ0b29saXplLmluOiBpbXBsZW1lbnRlZCAtLWx0ZGwsIGJ1Z2ZpeCB3aGVuIGNoZWNraW5nIGZvcgoJICB0aGUgbGlidG9vbCBwYWNrYWdlIGRpcmVjdG9yeQoJKiBsdGNvbmZpZy5pbjogcmVtb3ZlZCAkdGhyZWFkX3NhZmVfZmxhZ3MgZnJvbSBBbmRyZXkgU2xlcHVoaW4ncwoJICBBSVggcGF0Y2gsIHJlbmFtZWQgc3lzX2xpYl9zZWFyY2hfcGF0aCB0byBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMsCgkgIHNvbWUgcmVmb3JtYXR0aW5nLCBmaXhlZCB0eXBvIGluIGRlcGxpYnNfY2hlY2tfbWV0aG9kICh1bmt3bm9uKQoJKiBsdG1haW4uaW46IGRvY3VtZW50ZWQgLW8gZm9yIGNvbXBpbGUgbW9kZSwgc29tZSByZWZvcm1hdHRpbmcsCgkgIHJlbmFtZWQgLWF2b2lkLXZlcnNpb25pbmcgdG8gLWF2b2lkLXZlcnNpb24KCSAgcmVuYW1lZCBzeXNfbGliX3NlYXJjaF9wYXRoIHRvIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwoJKiBtZGVtby9NYWtlZmlsZS5hbTogdXNlIC1hdm9pZC12ZXJzaW9uCgkqIG1kZW1vL21haW4uYzogdXNlIExURExfUFJFTE9BREVEX1NZTUJPTFMgYW5kCgkgIExURExfU0VUX1BSRUxPQURFRF9TWU1CT0xTKCkKCjE5OTktMDEtMTcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRjb25maWcuaW4gKHdsYXJjKTogc2V0IHRvIGVpdGhlciAnJHt3bH0nIG9yIGFuIGVtcHR5IHN0cmluZywKIAlkZXBlbmRpbmcgb24gd2hldGhlciBhcmNoaXZlX2NtZHMgcnVucyBDQyBvciBMRAoJKGdudV9sZD15ZXMsIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjKTogIiR3bGFyYyIgaW5zdGVhZCBvZiAnJHt3bH0nCgoJKiBtZGVtby9NYWtlZmlsZS5hbSAoLi4vbGlibHRkbC9saWJsdGRsYy5sYSk6IGRlcGVuZCBvbgoJLi4vbGlidG9vbCwgYmVjYXVzZSAuLi9saWJsdGRsL2xpYnRvb2wgZGVwZW5kcyBvbiBpdAoJKG1kZW1vX2RlYnVnXyopOiBjb3B5IGZyb20gbWRlbW9fKiwgYWRkaW5nIC1zdGF0aWMgdG8gTERGTEFHUwoKCSogbHRtYWluLmluIChkbHByZWRlcHMpOiBhcHBlbmQgZGVwZW5kZW5jaWVzIGZyb20gZGxvcGVuZWQgbW9kdWxlcwoJKGJ1dCBub3QgZGxwcmVvcGVuZWQgb25lcykgYWZ0ZXIgYWxsIGV4cGxpY2l0bHkgbGlua2VkIGxpYnJhcmllcwoKCSogbHRjb25maWcuaW4gKG5lZWRfbGliX3ByZWZpeCwgbmVlZF92ZXJzaW9uLAogCWRlcGxpYnNfY2hlY2tfbWV0aG9kKTogZGVmYXVsdCB0byB1bmtub3duLCBzbyB0aGF0IHdlJ3JlCiAJcmVtZW1iZXJlZCB0aGF0IHRoaXMgbmVlZHMgcG9ydGluZzsgdW5rbm93biBpcyBpbnRlcnByZXRlZCBhcyB5ZXMsCiAJeWVzIGFuZCBub25lLCByZXNwZWN0aXZlbHkKCShmcmVlYnNkMiosIGZyZWVic2QzKiwgc3Vub3M0KiwgbmVlZF92ZXJzaW9uKTogc2V0IHRvIHllcwoJKGZyZWVic2QyKiwgZnJlZWJzZDMqLCBsaWJyYXJ5X25hbWVzX3NwZWMpOiBsaWJyYXJpZXMgd2l0aG91dCBhCgl2ZXJzaW9uIG51bWJlciBhcmUgbm90IHVzZWQgYnkgYGxkJzsgYWRkICR2ZXJzdWZmaXg7CglSZXBvcnRlZCBieSBCZW4gSmFja3NvbiA8YmVuQGJlbi5jb20+CgkqIGx0bWFpbi5pbiAoZGVwbGlic19jaGVja19tZXRob2QpOiBhbGlhcyB1bmtub3duIHRvIG5vbmUKCShuZWVkX3ZlcnNpb24pOiBpZiB2aW5mbyB3YXMgbm90IHByb3ZpZGVkIGFuZCByZWxlYXNlIGluZm8gd2FzLAoJemVybyBvdXQgdmVyc3VmZml4IG9ubHkgaWYgd2UgZG9uJ3QgbmVlZF92ZXJzaW9uLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCB3aGF0IGB1bmtub3duJyBtZWFucwoKCSogbGlibHRkbC9sdGRsLmggKGx0X2RscHJlb3Blbl9kZWZhdWx0KTogcmV2ZXJ0ZWQgdG8gYSBtYWNybwoJd2l0aG91dCBhcmd1bWVudHMsIHRoYXQgY2FsbHMgbHRfZGxwcmVvcGVuX2RlZmF1bHRfIHdpdGgKCWx0X2RscHJlbG9hZGVkX3N5bWJvbHMKCSogbGlibHRkbC9sdGRsLmMgKGx0X2RscHJlb3Blbl9kZWZhdWx0Xyk6IHJlbmFtZWQgZnJvbQoJbHRfZGxwcmVvcGVuX2RlZmF1bHQKCShmaW5kX21vZHVsZSkgdHJ5YWxsX2Rsb3BlbiBvbGRfbmFtZSBmaXJzdCwgc28gdGhhdCB3ZSBkb24ndAogCW92ZXJyaWRlIHN0YXRpY2FsbHkgbGlua2VkIHN5bWJvbHMgd2l0aCBkbG9wZW5lZCBvbmVzCgoxOTk5LTAxLTE1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJRnJvbSBBbmRyZXkgU2xlcHVoaW4gPHBvb2hAbXN1LnJ1PgoJKiBsaWJ0b29saXplLmluIChjZCAkcGtnZGF0YWRpcik6IE1ha2Ugc3VyZSB3ZSByZXR1cm4gdGhlIHRoZQoJd29ya2luZyBkaXJlY3Rvcnkgd2hlbiB0aGlzIGlzIGRvbmUuCgoJRnJvbSBBbmRyZXkgU2xlcHVoaW4gPHBvb2hAbXN1LnJ1PgoJKiBsdGNvbmZpZy5pbiAoYWl4KTogVXNlIHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQgY29ycmVjdGx5IG9uCglhaXg0KiwgYW5kIHR3ZWFrIHRoZSBjb25maWcgZm9yIGFpeDMuCgkqIE5FV1M6IGFkZGVkIGFpeDMgYW5kIGFpeDQgdG8gbGlzdCBvZiBob3N0cyB3aXRoIGltcHJvdmVkCglzdXBwb3J0LgoJKiBUSEFOS1M6IGFkZGVkIEFuZHJleSBTbGVwdWhpbiA8cG9vaEBtc3UucnU+LgoKMTk5OS0wMS0xNSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBNYWtlZmlsZS5hbSAoQERJU1RfTUFLRUZJTEVfTElTVEApOiBhZGRlZCBhIHNlY29uZCAnJCcKCSAgYmVmb3JlIGFic19zY3JkaXIsIHJlbW92ZWQgbHRjb25maWcgYW5kIGx0bWFpbi5zaCBmcm9tCgkgIEVYVFJBX0RJU1QgKGF1dG9tYWtlIGRpc3RyaWJ1dGVzIHRoZW0gYnkgZGVmYXVsdCkKCjE5OTktMDEtMTQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogYXV0b2dlbjogbW92ZWQgZmFraW5nIG9mIHRoZSBsaWJ0b29sIHNjcmlwdHMgYmVmb3JlCgkgIHRoZSBjYWxsIG9mIGF1dG9tYWtlLCBzbyB0aGF0IGx0Y29uZmlnIGFuZCBsdG1haW4uc2gKCSAgYXJlIGluY2x1ZGVkIGluIHRoZSBkaXN0cmlidXRpb24KCSogbHRjb25maWcuaW46IHdoZW4gY2hlY2tpbmcgd2hldGhlciBQSUMgaXMgc3VwcG9ydGVkIGFzc3VtZQoJICBvbmx5IG9uIEhQL1VYIHRoYXQgd2FybmluZ3MgZHVyaW5nIGNvbXBpbGF0aW9uIG1lYW4gdGhhdAoJICBQSUMgaXMgbm90IHN1cHBvcnRlZCAoVGhhbmtzIHRvIFJvbiBPJ0hhcmEpCgkqIFRIQU5LUzogYWRkZWQgUm9uIE8nSGFyYQoKMTk5OS0wMS0xNCAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBNYWtlZmlsZS5hbTogTW92ZWQgbHRjb25maWcgYW5kIGx0bWFpbi5zaCBiYWNrIGludG8gc3JjZGlyLCBhbmQKCWFkZCB0aGVtIHRvIHRoZSBkaXN0cmlidXRpb24uICBBZGRlZCB3b3JrLWFyb3VuZCBpZiBgbXYgLWYnIGZhaWxzLgoJZml4IEBBSU5DTFVERV9NNF9MSVNUQCBhbmQgQERJU1RfTUFLRUZJTEVfTElTVEAgZm9yIHJlbGF0aXZlIGFuZAoJYWJzb2x1dGUgc3BlY2lmaWNhdGlvbnMgb2Ygc3JjZGlyCgoxOTk5LTAxLTE0ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGxpYmx0ZGwvbHRkbC5jOiBhZGRlZCB2YXJpYWJsZSBzeW1ib2wgcHJlZml4LCBhZGRlZCB1c2VyLWRlZmluZWQKCSAgbGlicmFyeSBzZWFyY2ggcGF0aCAoY2FuIGJlIHNldCB1c2luZyBsdF9kbHNlYXJjaHBhdGgoKSksCgkgIGFkZGVkIGRlZmF1bHRfcHJlbG9hZGVkX3N5bWJvbHMgd2hpY2ggYXJlIGluZGVwZW5kZW50IG9mCgkgIGx0X2RsaW5pdC9leGl0CgkqIGxpYmx0ZGwvbHRkbC5oOiBhZGRlZCBsdF9kbHNlYXJjaHBhdGgoKSBhbmQKCSAgbHRfZGxwcmVvcGVuX2RlZmF1bHQoKQoJKiBtZGVtby9NYWtlZmlsZS5hbTogdXNlIC1leHBvcnQtZHluYW1pYyB1bnRpbCBsaWJ0b29sCgkgIGFuZCBsaWJsdGRsIGFyZSBhYmxlIHRvIGhhbmRsZSBtb2R1bGUgZGVwZW5kZW5jaWVzCgoxOTk5LTAxLTE0ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBUSEFOS1M6IGFkZGVkIE1hcmsgRWxicmVjaHQuCgkqIGx0Y29uZmlnLmluIChQQVRIX1NFUEFSQVRPUik6IG5ldyB2YXJpYWJsZSB0byBob2xkIHZhbGlkICRQQVRICglzZXBhcmF0b3IgY2hhcmFjdGVycyBmb3IgdGhlIGJ1aWxkIGhvc3QsIHRvIHN1cHBvcnQgREpHUFAKCWVudmlyb25tZW50LgoJKiBsdGNvbmZpZy5pbjogVXNlIFBBVEhfU0VQQVJBVE9SIGluc3RlYWQgb2YgaGFyZGNvZGVkIGA6Jy4KCVJlcG9ydGVkIGJ5IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0B1c2EubmV0PgoKCSogY2RlbW8vUkVBRE1FOiB0eXBvOiBtZGVtby0+Y2RlbW8KCjE5OTktMDEtMTQgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogYXV0b2dlbjogZmFrZSB0aGUgbGlidG9vbCBzY3JpcHRzIHRvIGhlbHAgZml4aW5nCgkgIHRoZSBib290c3RyYXBwaW5nIHByb2JsZW0KCSogTWFrZWZpbGUuYW06IGFsd2F5cyBjb25maWd1cmUgbGlibHRkbCwgaG93ZXZlciBhZnRlciBidWlsZGluZwoJICB0aGUgbGlidG9vbCBzY3JpcHRzLAoJICBidWlsZCB0aGUgbGlidG9vbCBzY3JpcHRzIGluIGJ1aWxkZGlyLCBub3Qgc3JjZGlyCgkgICh1bmZvcnR1bmF0ZWx5IHRoaXMgYnJlYWtzIGJ1aWxkaW5nIHdoZW4gc3JjZGlyIT1vYmpkaXIsCgkgICBidXQgaXQgd2FzIGp1c3QgcGxhaW4gd3JvbmcgLSBuZWVkcyB0byBiZSBmaXhlZCksCgkgIGJ1aWxkIGFuZCBpbnN0YWxsIGxpYmx0ZGwudGFyLmd6LAoJICBjb3B5IGFjaW5jbHVkZS5tNCBpbnN0ZWFkIG9mIGxpbmtpbmcgdGhlbSwgc28gdGhhdCB3ZQoJICBjYW4gJ21ha2UgZGlzdCcgaW4gbGlibHRkbCwKCSAgZml4ZWQgY29uZmlndXJpbmcgb2Ygc3ViZGlyZWN0b3JpZXMKCSogY29uZmlndXJlLmluOiByZW1vdmVkIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCAtIGxpYmx0ZGwgaXMgc3VwcG9zZWQKCSAgdG8gYmUgaW5zdGFsbGVkIGJ5IHBhY2thZ2VzLCBub3QgYnkgbGlidG9vbCBpdHNlbGYKCSogbGlidG9vbGl6ZS5pbjogbmV3IGZsYWdzIC0tbHRkbCBhbmQgLS1sdGRsLXRhciB0byBpbnN0YWxsIGxpYmx0ZGwKCSAgaW4gcGFja2FnZXMgKC0tbHRkbCBkb2Vzbid0IHdvcmsgeWV0KSwKCSAgaW5zdGFsbCBvbmx5IHRoZSBuZWNlc3NhcnkgbGlidG9vbCBzY3JpcHRzLCBub3QganVzdCBhbGwKCSAgZmlsZXMgaW4gcGtnZGF0YWRpcgoJKiBtZGVtby9NYWtlZmlsZS5hbTogcmVtb3ZlZCB0aGUgcnVsZSBmb3IgbGlibHRkbCBjb25maWd1cmF0aW9uCgoxOTk5LTAxLTEzICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIG1kZW1vL01ha2VmaWxlLmFtICguLi9saWJsdGRsL2xpYnRvb2wpOiBta2RpciBhbmQgY29uZmlndXJlCgkuLi9saWJsdGRsCgoxOTk5LTAxLTEzICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIGRlbW8vZGxtYWluLmMsIGxpYmx0ZGwvbHRkbC5jLCBsdGNvbmZpZy5pbiwgbHRtYWluLmluLAoJICBkb2MvbGlidG9vbC50ZXhpOiByZW5hbWVkIGRsZF9wcmVsb2FkZWRfc3ltYm9scyB0bwoJICBsdF9wcmVsb2FkZWRfc3ltYm9scywgc3ltYm9sIGxpc3RzIGFyZSAnY29uc3QnCgkqIGNkZW1vL2NvbmZpZ3VyZS5pbjogZG9uJ3QgY2hlY2sgZm9yIHN0cmluZy5oCgkqIGRlbW8vZGxtYWluLmM6IHJlbmFtZWQgZGxkX3N5bWxpc3QgdG8gbHRfc3ltbGlzdCwKCSAgcHJlbG9hZGVkIHN5bWJvbHMgYXJlICdjb25zdCcsIHVzZSBsdF9wdHJfdCBpbnN0ZWFkIG9mIHZvaWQqCgkqIGRlbW8vZm9vLmg6IGRlZmluZSBsdF9wdHJfdAoJKiBkb2MvbGlidG9vbC50ZXhpOiBkb2N1bWVudCBsdF9wcmVsb2FkZWRfc3ltYm9scyBjb3JyZWN0bHkKCSogbGlibHRkbC9NYWtlZmlsZS5hbSwgbWRlbW8vTWFrZWZpbGUuYW06IHJlbmFtZWQgbGlidGVzdCB0byBsaWJsdGRsYwoJKiBsaWJsdGRsL2x0ZGwuYzogZml4ZWQgc29tZSBtaW5vciB0eXBvcywgcmVuYW1lZCBkbGRwcmUgdG8gcHJlc3ltLAoJICBidWdmaXg6IHNlYXJjaCBpbiBzZWFyY2hfcGF0aCBvbmx5IGlmIHdlIGhhdmUgbm8gZGlyZWN0b3J5CgkgIGFuZCBhIHNlYXJjaF9wYXRoLCBpbiBsdF9kbHN5bSgpIGNoZWNrIHdoZXRoZXIgc3ltYm9sICE9IDAKCSogbGlibHRkbC9sdGRsLmg6IHJlbW92ZWQgbHRfZGxwcmVvcGVuX2RlZmF1bHQoKQoJKiBsdGNvbmZpZy5pbiAoZGxwcmVvcGVuKTogcmVtb3ZlZCBkbGRfcHJlbG9hZGVkX3N5bWJvbF9jb3VudAoJKiBsdG1haW4uaW46IGFkZGVkIGhlbHAgZm9yIC1hdm9pZC12ZXJzaW9uaW5nLCAtZXhwb3J0LXN5bWJvbHMsCgkgIC1tb2R1bGUsIGFkZCBAU1lNRklMRUAgaWYgb25lIG9mIC1leHBvcnQtZHluYW1pYywgLWRsb3BlbiBvcgoJICAtZGxwcmVvcGVuIGlzIHVzZWQKCSogbWFpbC9kZXBsaWJzLmh0bWw6IGFkZGVkIEdvcmRvbiBNYXR6aWdrZWl0J3MgaW50ZXItbGlicmFyeQoJICBkZXBlbmRlbmNpZXMgYXJ0aWNsZQoJKiBtZGVtby9NYWtlZmlsZS5hbTogcmVtb3ZlZCAtZXhwb3J0LWR5bmFtaWMgZnJvbSBMREZMQUdTCgkgIChubyBsb25nZXIgbmVjZXNzYXJ5LCBzaW5jZSBsaWJ0b29sIGRlZmluZXMgbHRfcHJlbG9hZGVkX3N5bWJvbHMKCSAgd2hlbiAtZGxvcGVuIGlzIHVzZWQpLCBpbml0aWFsaXplIHdpdGggbHRfcHJlbG9hZGVkX3N5bWJvbHMKCjE5OTktMDEtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZG9jL2xpYnRvb2wudGV4aSAoVGVzdCBkZXNjcmlwdGlvbnMpOiBjZGVtby1zdGF0aWMgd29ya3MsIHRoYW5rcwoJdG8gRWRvdWFyZCBQYXJtZWxhbiEKCgkqIFRIQU5LUzogYWRkZWQgU2ViYXN0aWFuIFdpbGhlbG1pCgoJKiBsdGNvbmZpZy5pbiAoc29sYXJpcyk6IGRlZmluZSBgbmVlZF92ZXJzaW9uJyB0byBubwoKMTk5OS0wMS0xMyAgU2ViYXN0aWFuIFdpbGhlbG1pICA8d2lsaGVsbWlAaXJhLnVrYS5kZT4KCgkqIGx0Y29uZmlnLmluIChzb2xhcmlzKTogRGVmaW5lIGBkZXBsaWJzX2NoZWNrX21ldGhvZCcsCglgZmlsZV9tYWdpY19jb21tYW5kJywgYG5lZWRfbGliX3ByZWZpeCcgYW5kIGBzeXNfbGliX3NlYXJjaF9wYXRoJwoJKiBsdG1haW4uaW4gKGZpbGVfbWFnaWNfcmVnZXgpOiBBZGQgc3BhY2UgYmVmb3JlIG1hdGNoaW5nIHBhdHRlcm4sCglzdWNoIHRoYXQgaXQgd29ya3Mgb24gc29sYXJpcyAoc29sYXJpcyBoYXMgYSB0YWIgYmV0d2VlbiB0aGUKCWxpYnJhcnkgbmFtZSAoaW5jbHVkaW5nIHRoZSBjb2xvbikgYW5kIHRoZSBgRUxGJyBhbmQgc3VjaCB0aGUKCWBFTEYnIHdpbGwgbmV2ZXIgYmUgbWF0Y2hlZCkuCgoxOTk5LTAxLTEzICBFZG91YXJkIEcuIFBhcm1lbGFuICA8RWRvdWFyZC5QYXJtZWxhbkBGcmFuY2UuTkNSLkNPTT4KCgkqIGx0Y29uZmlnLmluIChOTSk6IFBBVEggc2VhcmNoIHdhcyBub3QgdXBkYXRlZCBsaWtlIGluCglsaWJ0b29sLm00LCBpbiBsYXN0IEFsZXhhbmRyZSBPbGl2YSdzIGNoYW5nZSB0byBpdAoJKHN5c3Y0KiwgbmNyKTogcGFzcyBhbGwgbGlicmFyeSBkZXBlbmRlbmNpZXMKCSogbHRtYWluLmluIChkZXBlbmRlbmN5X2xpYnMsIC1SKTogdXNlIGBkZXBsaWInIGluc3RlYWQgb2YgYGFyZycgdG8KCWl0ZXJhdGUsIG90aGVyd2lzZSB3ZSdkIG92ZXJ3cml0ZSBgYXJnJwoJKGNvbnZlbmllbmNlLCBvbGRfbGlicyk6IGlmIC0tZGlzYWJsZS1zaGFyZWQsIGNvbnZlbmllbmNlCglsaWJyYXJpZXMgYXJlIGp1c3Qgb2xkIGFyY2hpdmVzLCBhcyAubG8ncyBhcmUgb2Ygbm8gdXNlCgkqIHRlc3RzL2NkZW1vLXN0YXRpYy50ZXN0OiBwcmludCAtLWRpc2FibGUtc2hhcmVkIGhlcmUKCjE5OTktMDEtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbGlibHRkbC9jb25maWd1cmUuaW4gKGxpYmx0ZGxfY3Zfc2hsaWJleHQsIExURExfU0hMSUJfRVhUKToKCXN5c3RlbS1kZXBlbmRlbnQgZXh0ZW5zaW9uIG9mIHNoYXJlZCBsaWJyYXJpZXMKCShsaWJsdGRsX2N2X3NobGlicGF0aF92YXIsIExURExfU0hMSUJQQVRIX1ZBUik6IHN5c3RlbS1kZXBlbmRlbnQKCXJ1bi10aW1lIHNoYXJlZCBsaWJyYXJ5IHNlYXJjaCBwYXRoCgkqIGxpYmx0ZGwvbHRkbC5jIChkbGRwcmVfaW5pdCwgZGxkcHJlX2V4aXQpOiB1bnJlbGF0ZSBpbml0L2V4aXQKCWZyb20gYWRkL3JlbW92ZSBzeW1saXN0cywgc28gb25lIG1heSBhZGQgZGxkX3ByZWxvYWRlZF9zeW1ib2xzCglmcm9tIG1haW4oKSwgd2hlbiBvbmx5IGEgbGlicmFyeSB3aWxsIGNhbGwgZGxkcHJlX2luaXQKCShsdF9kbG9wZW4pOiB1c2UgTFRETF9TSExJQlBBVEhfVkFSLCBpZiBkZWZpbmVkLCBhcyBzZWNvbmRhcnkKCXNlYXJjaCBwYXRoLiAgQWxzbywgaWYgYSByZXF1ZXN0ZWQgLmxhIGZpbGUgY2Fubm90IGJlIGZvdW5kLCB0cnkKCXdpdGggdGhlIExURExfU0hMSUJfRVhUZW5zaW9uIGluc3RlYWQuCgoJKiBsdG1haW4uaW4gKG9sZF9hcmNoaXZlcywgb2xkb2Jqcyk6IHVzZSBmaW5kIHRvIFNZTURFRiBoZXJlIHRvbwoKCSogTWFrZWZpbGUuYW0gKEBESVNUX01BS0VGSUxFX0xJU1RAKTogYCQnIG11c3QgYmUgZG91YmxlZAoKCSogY29uZmlndXJlLmluIChBQ19DT05GSUdfRElSUyk6IGNvbmZpZ3VyZSBvbmx5IGxpYmx0ZGwsIGFuZCB0aGVuLAoJb25seSBpZiAtLWVuYWJsZS1sdGRsLWluc3RhbGwKCShDT05GX1NVQkRJUlMpOiBsaXN0IGRpcmVjdG9yaWVzIHRoYXQgYXJlIGNvbmZpZ3VyZWQgb24gZGVtYW5kLAoJYnV0IHRoYXQgbXVzdCBiZSBpbmNsdWRlZCBpbiB0aGUgZGlzdHJpYnV0aW9uCgkoQUNJTkNMVURFX000X0xJU1QsIERJU1RfTUFLRUZJTEVfTElTVCk6IGdlbmVyYXRlZCBmcm9tIENPTkZfU1VCRElSUwoJKiBNYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IGFkZGVkIHZlcnNpb24gMS4zZSBhbmQKCXJlYWRtZS1hbHBoYSwgdG8gaGFuZGxlIFJFQURNRS1hbHBoYSBhdXRvbWF0aWNhbGx5CgkoRVhUUkFfRElTVCk6IHJlbW92ZWQgUkVBRE1FLWFscGhhCgkoQlVJTERfU1VCRElSUyk6IHN1YmRpcmVjdG9yaWVzIHRoYXQgYXJlIGFsd2F5cyBidWlsdAoJKFNVQkRJUlMpOiBCVUlMRF9TVUJESVJTIHBsdXMgQlVJTERfTFRETAoJKERJU1RfU1VCRElSUyk6IEJVSUxEX1NVQkRJUlMgcGx1cyBDT05GX1NVQkRJUlMsIGZyb20gY29uZmlndXJlCgkoYWxsLWxvY2FsLCBjaGVjay1sb2NhbCk6IGRlcGVuZCBvbiAkKEFDSU5DTFVERV9NNF9MSVNUKSwgZnJvbQoJY29uZmlndXJlLCBhbmQgbGlidG9vbCwgc28gdGhhdCBpdCBpcyBidWlsdCBiZWZvcmUgc3ViZGlycwoJKGNvbmZpZ3VyZS1zdWJkaXJzKTogbmV3IHRhcmdldAoJKGNvbmZpZ3VyZS1zdWJkaXJzLCBkaXN0ZGlyKTogZGVwZW5kIG9uICQoRElTVF9NQUtFRklMRV9MSVNUKSwKCWZyb20gY29uZmlndXJlCgkoQERJU1RfTUFLRUZJTEVfTElTVEApOiBjcmVhdGUgc3ViZGlyIGlmIG5lZWRlZCwgdGhlbiBydW4KCWNvbmZpZ3VyZS4KCU9uLWRlbWFuZCBjb25maWd1cmF0aW9uIG9mIHN1YmRpcnMgYXQgZGlzdHJpYnV0aW9uIHRpbWUgd2FzCglzdWdnZXN0ZWQgYnkgR2FyeSBWLiBWYXVnaGFuIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00LCBsdGNvbmZpZy5pbiAoTk0pOiBzZWFyY2ggZm9yIE5NIGluIFBBVEggYmVmb3JlCgkvdXNyL2Njcy9iaW4sIC91c3IvdWNiIGFuZCAvYmluLiAgSG93ZXZlciwgaWYgdGhlIGZvdW5kIG9uZSBpc24ndAoJQlNELWNvbXBhdCBrZWVwIHNlYXJjaGluZy4gIElmIG5vIEJTRC1jb21wYXQgaXMgZm91bmQsIHVzZSB0aGUKCWZpcnN0IHdlIGZvdW5kLgoKCSogVEhBTktTOiBhZGRlZCBSYWZmYWVsZSBTZW5hCgoxOTk5LTAxLTEzICBSYWZmYWVsZSBTZW5hICA8cmFmZkBhcm9tYXRpYy5jb20+CgoJKiBsaWJsdGRsL2x0ZGwuYzogcmVwbGFjZWQgUlRETCB3aXRoIFJUTEQKCjE5OTktMDEtMTMgIE1hbmlzaCBTaW5naCAgPHlvc2hAZ2ltcC5vcmc+CgoJKiBsdGNvbmZpZy5pbiAob3NmMyosIG9zZjQqLCBpcml4NiopOiBpbmNsdWRlCgkke2xpYm5hbWV9e3JlbGVhc2V9LnNvIGZvciBsaWJyYXJ5X25hbWVzX3NwZWMKCjE5OTktMDEtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogY29uZmlndXJlLmluIChBQ19DT05GSUdfU1VCRElSUyk6IGFkZGVkIGNkZW1vCgkqIE1ha2VmaWxlLmFtIChESVNUX1NVQkRJUlMpOiBkaXR0bwoJKEFDSU5DTFVERV9NNF9MSVNUKTogZGl0dG8KCSogdGVzdHMvTWFrZWZpbGUuYW0gKFRFU1RTKTogYWRkZWQgY2RlbW8tc2hhcmVkLnRlc3QKCSogdGVzdHMvY2RlbW8tc3RhdGljLnRlc3Q6IGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBoZXJlCgkqIHRlc3RzL2NkZW1vLXNoYXJlZC50ZXN0OiBkaXNhYmxlIHN0YXRpYyBsaWJyYXJpZXMgaGVyZQoJKiBkb2MvbGlidG9vbC50ZXhpIChUZXN0IGRlc2NyaXB0aW9ucyk6IGFkZGVkIGNkZW1vIHRlc3RzCgkqIFRIQU5LUzogYWRkZWQgRWRvdWFyZCBHLiBQYXJtZWxhbgoKMTk5OS0wMS0xMyAgRWRvdWFyZCBHLiBQYXJtZWxhbiAgPEVkb3VhcmQuUGFybWVsYW5ARnJhbmNlLk5DUi5DT00+CgoJKiBsdG1haW4uaW46IGZpeCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgd2hlbiBzdGF0aWMgbGlicmFyaWVzCglhcmUgZGlzYWJsZXMuCgkqIGNkZW1vL1JFQURNRSwgY2RlbW8vTWFrZWZpbGUuYW0sIGNkZW1vL2NvbmZpZ3VyZS5pbiwgY2RlbW8vZm9vLmgsCgljZGVtby9mb28xLmMsIGNkZW1vL21haW4uYywgY2RlbW8vLmN2c2lnbm9yZSwgdGVzdC9jZGVtby1jb25mLnRlc3QsCgl0ZXN0L2NkZW1vLW1ha2UudGVzdCwgdGVzdC9jZGVtby1leGVjLnRlc3QsIHRlc3QvY2RlbW8tc3RhdGljLnRlc3Q6CgluZXcgdGVzdHMgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcy4KCSogYXV0b2dlbiwgTWFrZWZpbGUuYW0sIHRlc3QvTWFrZWZpbGUuYW06IGRpdHRvLgoKCSogbHRjb25maWcuaW4sIGRvYy9QTEFURk9STVM6IEFkZGVkIHN1cHBvcnQgZm9yIE5DUiBNUC1SQVMKCShpNTg2LW5jci1zeXN2NC4zKikgd2l0aCBuYXRpdmUgY29tcGlsZXIuCgkqIFJFQURNRSwgZG9jL2xpYnRvb2wudGV4aTogQWRkZWQgbm90ZSBmb3IgTkNSIE1QLVJBUyBjb21waWxlci4KCjE5OTktMDEtMTIgIFRob21hcyBUYW5uZXIgIDx0YW5uZXJAZ214LmRlPgoKCSogbHRtYWluLmluOiBiZWZvcmUgdXNpbmcgTE5fUyByZW1vdmUgdGhlIHN5bWxpbmsKCSogbGlibHRkbC9sdGRsLmM6IHN1cHBvcnQgbXVsdGlwbGUgc3ltYm9sIGxpc3RzLCBtb3ZlZCBsaWJyYXJ5LQoJICBhbmQgZmlsZSBzZWFyY2hpbmcgdG8gc2VwYXJhdGUgZnVuY3Rpb25zLCByZW5hbWVkICJwcmVsb2FkX2xpYnMiCgkgIHRvICJkbF9kZXBlbmRlbmN5X2xpYnMiLCBzZXQgdGhlIExUX1NZTUJPTF9PVkVSSEVBRCB0byB0aGUgY29ycmVjdAoJICB2YWx1ZSAoNyksIGZpeCB0byBzdXBwb3J0IGx0X2Rsc3ltKCkgZm9yIG5vdC1saWJ0b29sIG1vZHVsZXMgYWdhaW4sCgkgIGNoZWNrIGZvciBpbnZhbGlkIGhhbmRsZXMsIHdoZW4gdXNpbmcgc3RyZHVwKCkgY2hlY2sgd2hldGhlcgoJICBpdCBmYWlscwoJKiBsaWJsdGRsL2x0ZGwuaDogZGVjbGFyZSB0aGUgbHRfZGxzeW1saXN0IHR5cGUgZm9yIGx0X2RscHJlb3BlbigpCgkqIG1kZW1vL1JFQURNRTogcmV3cml0dGVuCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogY2hlY2sgb25seSBmb3IgbWF0aC5oIChzdHJpbmcuaCBpcyBubyBsb25nZXIKCSAgbmVjZXNzYXJ5KQoKMTk5OS0wMS0xMiAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogY29uZmlndXJlLmluIChsdGRsLWluc3RhbGwpOiBGaXhlZCB1cCB0aGUgaW5kZW50YXRpb24gc28gdGhhdAoJYGNvbmZpZ3VyZSAtLWhlbHAnIGlzIHByZXR0eSBhZ2Fpbi4KCjE5OTktMDEtMTEgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluLCBORVdTLCBkb2MvbGlidG9vbC50ZXhpOiBBZGRlZCBzdXBwb3J0IGZvciAtUiBmbGFnCgkqIGx0bWFpbi5pbiwgZG9jL2xpYnRvb2wudGV4aTogZG9jdW1lbnRlZCB0aGF0IC1ycGF0aCBpcyB0aGUgc2FtZQoJYXMgLVIgZm9yIHByb2dyYW1zCgkqIGx0bWFpbi5pbjogc29mdGVuZWQgdGhlIGluc3RydWN0aW9ucyBmb3IgbGlua2luZyB3aXRoIGluc3RhbGxlZAoJbGlicmFyaWVzLCBhbmQgbm90ZWQgdGhhdCBsaWJ0b29sIGNhbiBiZSB1c2VkIHRvIGxpbmsgd2l0aCB0aGVtOwoJZG9jdW1lbnRlZCB0aGF0IC1ycGF0aCBpcyBub3QgcmVxdWlyZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcwoKCSogbHRjb25maWcuaW4gKHN5bXhmcm0pOiBkb24ndCBwcmludCAkcGlwZV93b3JrcyB0d2ljZSwgb25jZSBmb3IKCWVhY2ggJGFjX3N5bXByZngKCVJlcG9ydGVkIGJ5IEdvZG1hciBCYWNrIDxnYmFja0Bjcy51dGFoLmVkdT4KCgkqIGx0bWFpbi5pbiAoY29udmVuaWVuY2UsIGxpYm9ianMpOiBnZXQgb25seSAubyBhbmQgLmxvIGZpbGVzIGZyb20KCXRoZSBmaWxlcyBleHRyYWN0IGZyb20gdGhlIGNvbnZlbmllbmNlIGxpYnJhcnkuICBTb21lIHN5c3RlbXMsCglzdWNoIGFzIEZyZWVCU0QyLCB3aWxsIGFkZCBhIFNZTURFRiBmaWxlLCB0aGF0IGlzIG5vdCBhbiBvYmplY3QKCWZpbGUsIGFuZCB0aGVyZWZvcmUgc2hvdWxkIG5vdCBiZSBmZWQgdG8gdGhlIGxpbmtlcgoKCSogbGlidG9vbC5tNCAoQU1fU1lTX05NX1BBUlNFKTogd2hpbGUgd2UgYXJlIGF0IGl0LCB3ZSBtYXkgd2VsbAoJY2FjaGUgdGhlIHZhbHVlIG9mIGFjX2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZQoKCSogbGlidG9vbC5tNCAoQU1fU1lTX05NX1BBUlNFKTogbmVlZCBmb3IgdW5kZXJzY29yZSBwcmVmaXggaXMgbm93CglhdXRvLWRldGVjdGVkLCBieSB0cnlpbmcgZmlyc3Qgd2l0aG91dCwgdGhlbiB3aXRoIGl0LgoKCSogbHRjb25maWcuaW46IGRpdHRvCgoxOTk5LTAxLTEwICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ09ORklHX1NVQkRJUlMpOiBhZGQgbGlibHRkbCwgZGVtbywgbWRlbW8gYW5kCglkZXBkZW1vIGNvbW1lbnRlZCBvdXQsIHNvIHRoYXQgYGRpc3QnIHdvcmtzIGJlZm9yZSBgY2hlY2snCgkoQlVJTERfTFRETCk6IHdpbGwgY29udGFpbiBsaWJsdGRsIGlmIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbAoJKiBNYWtlZmlsZS5hbSAoRElTVF9TVUJESVJTKTogZXhwYW5kIFNVQkRJUlMgYW5kIGFkZCBkZXBkZW1vLAoJY29tbWVudGVkIG91dAoJKFNVQkRJUlMpOiBhZGQgJChCVUlMVF9MVERMKQoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChFWFRSQV9MVExJQlJBUklFUyk6IGFkZCBsaWJ0ZXN0LmxhLCB0aGUKCXNhbWUgYXMgbGlibHRkbCBidXQgYWx3YXlzIGEgY29udmVuaWVuY2UgbGlicmFyeS4gIE5vdCBidWlsdCBieQoJZGVmYXVsdC4gIEJvdGggbGlicmFyaWVzIG5vdyBkZXBlbmQgb24gdGhlIGxpYnRvb2wgc2NyaXB0LCB0aGF0CglkZXBlbmRzIG9uIC4uL2xpYnRvb2wgYW5kIGlzIHJlYnVpbHQgd2hlbiBuZWVkZWQKCSogbWRlbW8vTWFrZWZpbGUuYW0gKG1kZW1vLCBtZGVtby5kZWJ1Zyk6IGRlcGVuZCBvbiBhbmQgbGluayB3aXRoCgkuLi9saWJsdGRsL2xpYnRlc3QubGEsIHRoYXQgaXMgcmVidWlsdCBpZiBuZWVkZWQKCShtZGVtb19MREFERCk6IHJlbW92ZWQgJChMSUJBRERfTSksIHRvIGF2b2lkIHNpbGVudCBmYWlsdXJlcwoJKGZvbzEubGEpOiByZW5hbWVkIGZyb20gbGliZm9vMS5sYTsgdGVzdCByZW1vdmluZyB0aGUgbGliIHByZWZpeAoJKiBtZGVtby9mb28xLmM6IHJlbmFtZWQgbGliZm9vMV9MVFggc3ltYm9scyB0byBmb28xX0xUWAoJKiBtZGVtby9tYWluLmM6IGRvbid0IGluY2x1ZGUgc3RyaW5nLmggbm9yIG1hdGguaCwgbm9yIHJlZmVyIHRvCglzaW4gbm9yIGNvcwoJKiB0ZXN0cy9tZGVtby1leGVjLnRlc3Q6IHJlbmFtZWQgbGliZm9vMS5sYSB0byBmb28xLmxhCgkqIHRlc3RzL21kZW1vLWluc3QudGVzdDogZGl0dG8KCgkqIGxpYmx0ZGwvbHRkbC5jIChGSUxFTkFNRV9NQVgpOiB1c2UgaXQgaW5zdGVhZCBvZiBNQVhfRklMRU5BTUUsCglhbmQgZG9uJ3QgcmVkZWZpbmUgaXQgaWYgYWxyZWFkeSBkZWZpbmVkOyBkZWZhdWx0IHRvIDEwMjQsIGFzIG9uCgltb3N0IHN5c3RlbXMKCShMVF9TWU1CT0xfTEVOR1RIKTogcmVuYW1lZCBmcm9tIE1BWF9TWU1CT0xfTEVOR1RICgkoTFRfU1lNQk9MX09WRVJIRUFEKTogbmV3IG1hY3JvLCB0aGF0IGFjY291bnRzIGZvciB0aGUgc2l6ZSBvZgoJdGhlIF9MVFhfIHNlcGFyYXRvciBhbmQgdGhlIGluaXRpYWwgdW5kZXJzY29yZQoJKGx0X2Rsc3ltKTogc3ltIG5vdyBwb2ludHMgdG8gYSBzdGFjayBidWZmZXIgKGxzeW0pIGlmIHBvc3NpYmxlLAoJb3IgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiAgSWYgYWxsb2NhdGlvbiBmYWlscywgYQoJYnVmZmVyX292ZXJmbG93X2Vycm9yIGlzIHJldHVybmVkLgoKMTk5OS0wMS0xMCAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBsdG1haW4uaW46IGRlZmluZSBkbGRfcHJlbG9hZGVkX3N5bWJvbHMgaWYgYXQgbGVhc3Qgb25lIG9mCgkgIC1leHBvcnQtZHluYW1pYywgLWRsb3BlbiBvciAtZGxwcmVvcGVuIHdhcyBzcGVjaWZpZWQsCgkgIGRvIG5vdCBpbmNsdWRlIHByb2dyYW0gb2JqZWN0cyBpbiB0aGUgc3ltYm9sIGxpc3QKCSAgaWYgLWV4cG9ydC1keW5hbWljIHdhcyBub3QgZW5hYmxlZAoJKiBsaWJsdGRsL2x0ZGwuYzogbGltaXQgc3ltYm9scyB0byBtYXguIDI1NiBieXRlcwoJKiBtZGVtby9NYWtlZmlsZS5hbTogYnVpbGQgbGlibHRkbCBpbiBhIHN1YmRpcmVjdG9yeSwKCSAgZG8gbm90IHVzZSAtZXhwb3J0LWR5bmFtaWMgZm9yIG1kZW1vIGFuZCBtZGVtby5kZWJ1ZwoJKiB0ZXN0cy9tZGVtby1jb25mLnRlc3QsdGVzdHMvbWRlbW8tbWFrZS50ZXN0LHRlc3RzL21kZW1vLWluc3QudGVzdDoKCSAgZG8gbm90IGNoZWNrIGZvciBsaWJsdGRsCgoxOTk5LTAxLTA5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW4pOiBtaXNzaW5nIHN0cmxlbiBpbiBib3VuZCB0ZXN0CgoxOTk5LTAxLTA5ICBUaG9tYXMgVGFubmVyICA8dGFubmVyQGdteC5kZT4KCgkqIE5FV1M6IHN1cHBvcnQgZm9yIEJTRC9PUyA0Lnggd2FzIG5vdCBkb2N1bWVudGVkCgkqIGRlbW8vTWFrZWZpbGUuYW06IGxpbmsgYWdhaW5zdCBsaWJtIG9ubHkgaWYgYXZhaWxhYmxlCgkqIG1kZW1vL01ha2VmaWxlLmFtOiBsaWtld2lzZSwgdXNlIC1hdm9pZC12ZXJzaW9uaW5nIGZsYWcKCSAgaW5zdGVhZCBvZiAtYXZvaWQtdmVyc2lvbiAodHlwbykKCSogZGVtby9jb25maWd1cmUuaW46IGNoZWNrIGZvciBsaWJtLCBzdHJpbmcuaCBhbmQgbWF0aC5oCgkqIG1kZW1vL2NvbmZpZ3VyZS5pbjogbGlrZXdpc2UKCSogZGVwZGVtby9jb25maWd1cmUuaW46IGNoZWNrIGZvciBsaWJtIGFuZCBtYXRoLmgKCSogbGlibHRkbC9jb25maWd1cmUuaW46IGNoZWNrIGZvciBkbGVycm9yCgkqIGxpYmx0ZGwvbHRkbC5jOiBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cywgaW1wbGVtZW50ZWQKCSAgZGxlcnJvciwgZml4ZWQgYSBzZXZlcmUgYnVnIHdoaWNoIG9jY3VyZWQgd2hlbiBvcGVuaW5nCgkgIG5vbi1saWJ0b29sIG1vZHVsZXMsIGRsb3BlbiB3aXRoIHRoZSBmbGFncyBHTE9CQUwgYW5kIE5PVwoJKiBtZGVtby9tYWluLmM6IHJlcG9ydCB0aGUgZXJyb3IgdXNpbmcgbHRfZGxlcnJvcigpCgoxOTk5LTAxLTA4ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChvbGRfYXJjaGl2ZV9mcm9tX25ld19jb21tYW5kcyk6IERvY3VtZW50ZWQKCXRoaXMgbHRjb2ZpZyB2YXJpYWJsZS4KCjE5OTktMDEtMDcgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGx0bWFpbi5zaCAoY3lnd2luLCBhbGxvd191bmRlZmluZWQpOiBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUKCXByb2JsZW1zIHdpdGggdGhpcyB2YXJpYWJsZSB3aGVuIHRyeWluZyB0byBtYWtlIGEgZGxsIHdoaWNoIGhhcwoJdW5kZWZpbmVkIHN5bWJvbHMsIGluIHdoaWNoIGNhc2Ugbm90IGV2ZW4gYSBzdGF0aWMgbGlicmFyeSBpcwoJYnVpbHQuICBGb3Igbm93LCB3ZSBuZWVkIHRvIHNwZWNpZnkgLW5vLXVuZGVmaW5lZCBvbiB0aGUgbGlidG9vbAoJbGluayBsaW5lIHdoZW4gd2UgY2FuIGJlIGNlcnRhaW4gdGhhdCBhbGwgc3ltYm9scyBhcmUgc2F0aXNmaWVkLAoJb3RoZXJ3aXNlIHdlIGdldCBhIHN0YXRpYyBsaWJyYXJ5LgoKMTk5OS0wMS0wNiAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBDaGFuZ2VMb2c6IG1lcmdlZCBpbiB0ZXN0cy9DaGFuZ2VMb2cKCSogdGVzdHMvQ2hhbmdlTG9nOiBkZWxldGVkCgkqIGxpYmx0ZGwvbHRkbC5jOiBhc3NpZ25lZCBjb3B5cmlnaHQgdG8gdGhlIEZTRgoJKiBsaWJsdGRsL2x0ZGwuaCwgbWRlbW8vZm9vKixtYWluLmM6IGxpa2V3aXNlCgoxOTk5LTAxLTA2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsdG1haW4uaW4gKGRsbHNlYXJjaHBhdGgpOiBhZGQgYWJzb2x1dGUgZGlyZWN0b3J5IHBhdGhzIHRvCglkbGxzZWFyY2hwYXRoIHNvIHRoYXQgdGhlIHdyYXBwZXIgc2NyaXB0cyBjYW4gYmUgY2FsbGVkIGZyb20gYW55CglkaXJlY3RvcnkgKGUuZy4gdGVzdHMpIG9uIGN5Z3dpbi4KCgkqIGx0Y29uZmlnLmluIChjeWd3aW4sIGxpYnJhcnlfbmFtZXNfc3BlYyk6IHJldmVydCBBbGV4YW5kcmUncwoJY2hhbmdlIGZyb20geWVzdGVyZGF5IHRvIHVzZSBgLWRsbC5hJyBzdWZmaXguICBUaGF0IGNoYW5nZSBjYXVzZWQKCSRsaWJuYW1lLWRsbC5hIHRvIGJlIGEgc3ltbGluayB0byAkc29uYW1lLCB3aGljaCBpc24ndCBldmVuIGFuCglgYXInIGFyY2hpdmUuICBCZWZvcmUgdGhlIGltcG9ydCBsaWJyYXJ5IHN1ZmZpeCBjYW4gYmUgY2hhbmdlZCwgd2UKCW5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaGFuZGxlIGJ1aWxkaW5nIG9iamVjdHMgZGlmZmVyZW50bHkgZm9yCglsaW5raW5nIHdpdGggYW4gaW1wb3J0IGxpYnJhcnkgdmVyc3VzIGFuIGVxdWl2YWxlbnQgc3RhdGljIGxpYnJhcnkuCgoJKiBUT0RPOiBBZGRlZCBkZXRhaWxzIG9mIGEgTGludXggd3JhcHBlciBzY3JpcHQgYnVnLgoJUmVwb3J0ZWQgYnkgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPi4KCjE5OTktMDEtMDUgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogbHRtYWluLmluIChsaWJvYmpzX3NhdmUsIG9sZG9ianMpOiB3aGVuIGJ1aWxkaW5nIGFuCglvbGQtZmFzaGlvbmVkIGFyY2hpdmUsIHVzZSBhIGNvcHkgb2YgbGlib2JqcyBzYXZlZCBiZWZvcmUKCWNvbnZlbmllbmNlIGxpYnJhcmllcyBhcmUgYXBwZW5kZWQKCgkqIGxpYmx0ZGwvbHRkbC5oIChfTFRETExfRVhQT1JULCBfTFRETExfSU1QT1JUKTogdXNlIGN5Z3dpbiBvcgoJdW5peCBsaWJyYXJ5IGltcG9ydC9leHBvcnQgcHJpbWl0aXZlczsgdGhpcyBtYXkgYmUgY29udmVuaWVudCBmb3IKCXBlb3BsZSB3aWxsaW5nIHRvIGNyZWF0ZSBETExzCgkoX0xURExMX0VYVEVSTik6IHNlbGVjdCBfTFRETExfRVhQT1JUIG9yIF9MVERMTF9JTVBPUlQgZGVwZW5kaW5nCglvbiBfTFRETF9DT01QSUxFXwoJKiBsaWJsdGRsL2x0ZGwuaCwgbGlibHRkbC9sdGRsLmMgKGx0X2RscHJlb3Blbik6IG5ldyBmdW5jdGlvbiwKCXRoYXQgcmVwbGFjZXMgdGhlIGN1cnJlbnQgcHJlbG9hZGVkX3N5bWJvbHMgbGlzdCB3aXRoIGl0cwoJYXJndW1lbnQsIGFuZCByZXR1cm5zIHRoZSBvbGQgdmFsdWUsIGluaXRpYWxseSBOVUxMCgkoZGxkcHJlX2luaXQpOiBkb24ndCByZWZlciB0byBkbGRfcHJlbG9hZGVkX3N5bWJvbHMgYW55IG1vcmUKCShkbGRwcmVfb3BlbiwgZGxkcHJlX3N5bSk6IHNlYXJjaCBwcmVsb2FkZWRfc3ltYm9scwoJKGx0X2RscHJlb3Blbl9kZWZhdWx0KTogY2FsbCBsdF9kbHByZW9wZW4gd2l0aAoJZGxkX3ByZWxvYWRlZF9zeW1ib2xzLCB0aGF0IGlzIGRlY2xhcmVkIGFzIGV4dGVybjsgaXQgc2hvdWxkIGJlCgljYWxsZWQgZnJvbSB0aGUgbWFpbiBwcm9ncmFtIG9yIGZyb20gc29tZSBzdGF0aWMgbGlicmFyeSB3aXRob3V0Cgktbm8tdW5kZWZpbmVkCgkobHRfZGxlcnJvcik6IG5ldyBmdW5jdGlvbiwgdGhhdCByZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGUKCWxhc3QgZXJyb3Igb2NjdXJyZWQ7IHRoZSBlcnJvciBtZXNzYWdlIGlzIGtlcHQgaW4gdGhlIHN0YXRpYwoJdmFyaWFibGUgbGFzdF9lcnJvcgoJKiBsaWJsdGRsL2NvbmZpZ3VyZS5pbiAoZW5hYmxlLWx0ZGwtaW5zdGFsbCk6IG1vdmVkIGJhY2sgZnJvbQoJZW5hYmxlLWluc3RhbGw7IG90aGVyIHBhY2thZ2VzIG1pZ2h0IHVzZSBlbmFibGUtaW5zdGFsbCBhbHJlYWR5LAoJYmV0dGVyIGhhdmUgZmluZSBncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGlzLgoJKiBsaWJsdGRsL01ha2VmaWxlLmFtIChsaWJsdGRscy5sYSk6IGRpc2NhcmRlZAoKMTk5OS0wMS0wNSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBjb25maWd1cmUuaW46IGRvIG5vdCBjb25maWd1cmUgbGlibHRkbCBieSBkZWZhdWx0CgkqIE1ha2VmaWxlLmFtOiBkbyBub3QgYnVpbGQgbGlibHRkbCBieSBkZWZhdWx0CgkqIGxpYmx0ZGwvTWFrZWZpbGUuYW06IGx0ZGxzLmxvIGRlcGVuZHMgb24gbGlidG9vbAoJKiB0ZXN0cy9NYWtlZmlsZS5hbTogYmVmb3JlIHN0YXJ0aW5nIHRoZSB0ZXN0cwoJICBtYWtlIHN1cmUgdGhhdCBsaWJ0b29sIHdhcyBidWlsZAoJKiB0ZXN0cy9tZGVtby1jb25mLnRlc3Q6IGNvbmZpZ3VyZSBsaWJsdGRsCgkqIHRlc3RzL21kZW1vLW1ha2UudGVzdDogYnVpbGQgbGlibHRkbAoKMTk5OS0wMS0wNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsdG1haW4uaW4gKFNQMk5MLCBOTDJTUCk6IERvbid0IGRlbGV0ZSBlbXB0eSBsaW5lcywgYXMgdGhpcwoJd291bGQgbG9zZSBmb3IgZmlsZXMgd2l0aCBlbWJlZGRlZCBibGFua3MuCgoJKiBsdGNvbmZpZy5pbiAoY3lnd2luLCBhcmNoaXZlX2NtZHMsIGFyY2hpdmVfc3ltX2NtZHMpOiBNb3ZlZAoJbHRkbGwuYyBpbnRvIGx0bWFpbi5pbiwgdG8gYXZvaWQgaXRzIGR1cGxpY2F0aW9uLCBhbmQgYWRkZWQgYSBzZWQKCXNjcmlwdCB0byBleHRyYWN0IGl0LiAgQWxzbywgY3JlYXRlIGRlZiBhbmQgYmFzZSBmaWxlcyBpbiAkb2JqZGlyLAoJYW5kIGRvbid0IHJlbW92ZSB0aGVtIGFmdGVyIHRoZSBjb21waWxhdGlvbi4KCShjeWd3aW4sIGxpYnJhcnlfbmFtZXNfc3BlYyk6IENyZWF0ZSBzdGF0aWMgcGFydCBvZiB0aGUgZGxsIHdpdGgKCXN1ZmZpeCAtZGxsLmEsIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGFjdHVhbCBzdGF0aWMgbGlicmFyaWVzLgoJKiBsdG1haW4uaW46IEFkZGVkIGx0ZGxsLmMsIGFzIGNvbW1lbnRlZCBvdXQgdGV4dAoKMTk5OS0wMS0wMSAgVGhvbWFzIFRhbm5lciAgPHRhbm5lckBnbXguZGU+CgoJKiBORVdTOiBuZXcgQmVPUyBzdXBwb3J0CgkqIFRIQU5LUzogYWRkZWQgSm9zZXBoIEJlY2tlbmJhY2gKCSogbGlibHRkbC9sdGRsLmg6IHVzZSBkbGxpbXBvcnQvZXhwb3J0IG9uIFdpbjMyCgpDb250aW51ZWQgaW4gQ2hhbmdlTG9nLjE5OTgK