MTk5OC0wOS0yNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHRyaWNrLmZpZy5vcmc+CgoJKiBsdG1haW4uaW4gKGxpbmspOiBGaXggcHJvYmxlbXMgd2hlbiBidWlsZGluZyBvbmx5IHN0YXRpYwoJbGlicmFyaWVzLiAgRnJvbSBPd2VuIFRheWxvci4KCjE5OTgtMDgtMjAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogbHRtYWluLmluIChpbnN0YWxsKTogV2hlbiBsaWJyYXJ5X25hbWVzX3NwZWMgaGFzIHJlZHVuZGFuY2llcywKCWF2b2lkIGRlbGV0aW5nIHRoZSBtYWluIGxpYnJhcnkgd2hlbiBpbnN0YWxsaW5nIHN5bWxpbmtzLiAgRnJvbQoJSmVmZiBEYWlyaWtpLgoJKGxpbmspOiBHZXQgcmlkIG9mIGJhY2t0aWNrcyBpbiBhIGhlcmUgZG9jIGNvbW1lbnQuCglUaGlzIGNhdXNlcyBzZWdmYXVsdHMgb24gU29sYXJpcyAyLiAgRnJvbSBBbGVrc2FuZGFyIEJha2ljLgoJKGZpbmlzaCk6IERvbid0IGRpc3BsYXkgbWVzc2FnZXMKCgkqIGx0Y29uZmlnLmluIChhcmNoaXZlX2NtZHMpOiBPbiBIUC1VWCA5LCBtYWtlIHN1cmUgd2UgZG9uJ3QgdHJ5Cgl0byBtb3ZlIGEgZmlsZSB0byBpdHNlbGYuICBGcm9tIEplZmYgRGFpcmlraS4KCjE5OTgtMDgtMTkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogbHRjb25maWcuaW46IE1ha2UgY2hhbmdlcyB0byBhY2NvbW9kYXRlIGx0bWFpbi5jLgoKCSogTWFrZWZpbGUuYW0gKGNsaWJ0b29sKTogTmV3IHRhcmdldCBmb3IgdGhlIEMgdmVyc2lvbiBvZiBsaWJ0b29sLgoKCSogbHRtYWluLmM6IEV4cGVyaW1lbnRhbCBDIHZlcnNpb24gb2YgbGlidG9vbC4KCjE5OTgtMDctMTAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGx0bWFpbi5pbiAoaW5zdGFsbCk6IFRlc3QgYWdhaW5zdCBib3RoICRTSEVMTCBhbmQgL2Jpbi9zaC4KCjE5OTgtMDYtMzAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEB0cmljay5maWcub3JnPgoKCSogbHRtYWluLmluOiBDb252ZW5pZW5jZSBhcmNoaXZlIHN1cHBvcnQuICBGcm9tIFVscmljaCBEcmVwcGVyLgoKCSogbHRjb25maWcuaW4gKHBvc3RpbnN0YWxsX2NvbW1hbmRzKTogQ2hhbmdlIGxpYnJhcmllcyB0byBiZQoJZXhlY3V0YWJsZSBvbiBTb2xhcmlzIGluIG9yZGVyIHRvIHByZXZlbnQgbGRkIGZyb20gbW9hbmluZy4gIEZyb20KCUp1bGlhbiBHb3NuZWxsLgoJKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjKTogTmV3IHZhcmlhYmxlIHRvIHNob3J0Y3V0IGNvbnZlbmllbmNlCglhcmNoaXZlIGV4cGFuc2lvbi4gIEZyb20gVWxyaWNoIERyZXBwZXIuCgoxOTk4LTA2LTExICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4sIGx0bWFpbi5pbjogQ2hhbmdlIGdsb2JzIHRvIGFjY2VwdCBmb3J3YXJkIHNsYXNoZXMKCWluIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcyB1c2VkIG9uIERPUy1saWtlIHN5c3RlbXMuICBGcm9tIFJvYmVydAoJUy4gTWFpZXIuCgpUaHUgTWF5IDI4IDE4OjU5OjA4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGx0Y29uZmlnLmluOiBVc2UgJFNIRUxMIHdoZW4gaW52b2tpbmcgc2hlbGwgc2NyaXB0cy4KCjE5OTgtMDUtMjEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW4gKGNvbXBpbGUpOiBEb24ndCBoYXZlIGAtc3RhdGljJyB0dXJuIG9mZiBsaWJ0b29sCglsaWJyYXJpZXMsIHNvIHRoYXQgcGVvcGxlIGNhbiB1c2UgaXQganVzdCB0byBndWFyYW50ZWUgdGhhdCBgLm8nCglmaWxlcyBleGlzdC4gIFN1Z2dlc3RlZCBieSBEYXZpZCBNb3NiZXJnZXItVGFuZy4KCjE5OTgtMDUtMTggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW4gKGxpbmspOiBQb3NzaWJseSByZWV4ZWMgdGhlIHNoZWxsIGZyb20gd2l0aGluIHRoZQoJd3JhcHBlciBzY3JpcHQuCglBbGxvdyBgLXZlcnNpb24taW5mbycgYW5kIGAtcmVsZWFzZScgdG8gY29leGlzdCBhZ2Fpbi4gIElmIHBlb3BsZQoJd2FudCB0byBzaG9vdCB0aGVtc2VsdmVzIGluIHRoZSBmb290LCBJJ2QgYmV0dGVyIGxldCB0aGVtIGRvIHNvLAoJc28gdGhhdCBwZW9wbGUgd2hvIGFyZSBzbWFydCBlbm91Z2ggbm90IHRvIGNhbiBzcXVlZXplIG91dCBhbm90aGVyCglvdW5jZSBvZiBmdW5jdGlvbmFsaXR5LiAgRnJvbSBUaW0gSmFuaWsuCgkodmVyc2lvbl92YXJzKTogRGVsZXRlIGRlYWQgdmFyaWFibGUuCgoJKiBsdGNvbmZpZy5pbiAoaGFyZGNvZGVfbWludXNfTCk6IEZyZWVCU0QgMy4wIGRvZXNuJ3QgaGFyZGNvZGUsIGF0CglsYXN0LiAgUmVwb3J0ZWQgYnkgSmFzb24gTm9yZHdpY2suCgoJKiBsaWJ0b29saXplLmluLCBsdGNvbmZpZy5pbiwgbHRtYWluLmluOiBDaGFuZ2UgYSBidW5jaCBvZiBgaWYKCXRlc3QgLi4uOyB0aGVuIDogOyBlbHNlIC4uLicgY29uc3RydWN0cyB0byBgaWYgdGVzdCAhIC4uLjsgdGhlbgoJLi4uJywgZm9yIGNsYXJpdHkuCgoxOTk4LTA1LTE3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluIChMQ19BTEwsIExBTkcpOiBTYXZlIHRoZXNlIHZhbHVlcyBhbmQgcmVzdG9yZSB0aGVtCglkdXJpbmcgZXhlY3V0ZSBtb2RlLiAgRnJvbSBQYXZlbCBLYW5rb3Zza3kuCgkobW9kZSk6IEFjY2VwdCBzdHJhY2UgYW5kIHRydXNzIGFzIHByb2dyYW1zIHRoYXQgdGhyb3cgdXMgaW50bwoJZXhlY3V0ZSBtb2RlLiAgRnJvbSBQYXZlbCBLYW5rb3Zza3kuCgoxOTk4LTA1LTA3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsdGNvbmZpZy5pbjogRG9uJ3QgdXNlIC4kdmVyc3VmZml4IG9yIC4kbWFqb3IuICBJbnN0ZWFkLCBhc3N1bWUKCXRoZSB2YXJpYWJsZSB3aWxsIGluY2x1ZGUgYW55IHJlcXVpcmVkIHByZWZpeC4KCSogbHRtYWluLmluOiBJZiBubyAtdmVyc2lvbi1pbmZvIG9wdGlvbiB3YXMgdXNlZCwgcHJvZHVjZSBlbXB0eQoJdmVyc2lvbiBzdHJpbmdzIHJhdGhlciB0aGFuIDAuMC4wLiAgV2hlbiBtYWtpbmcgbGlicmFyeSBzeW1saW5rcywKCWF2b2lkIG1ha2luZyBhIHN5bWxpbmsgaWYgdGhlIG5hbWUgd291bGQgYmUgdGhlIHNhbWUuCgoxOTk4LTA0LTI3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluIChsaW5rKTogU3VwcG9ydCBgdW5zdXBwb3J0ZWQnIGFzIGEgaGFyZGNvZGVfYWN0aW9uLgoJUmVwb3J0ZWQgYnkgTGFycyBIZWNraW5nLgoJKGxpYl9saW5rZWQpOiBEbyBzb21lIHNhbml0eSBjaGVja2luZyB0byBtYWtlIHN1cmUgdGhhdCB3ZQoJYWN0dWFsbHkgZG8gbGluayBsaWJ0b29sIGxpYnJhcmllcyBpbnRvIHRoZSBwcm9ncmFtIHRvIHByZXZlbnQgdGhlCglhYm92ZSBwcm9ibGVtIGZyb20gaGFwcGVuaW5nIGFnYWluLgoKMTk5OC0wNC0yMCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0bWFpbi5pbjogTWF5YmUgcmVleGVjIHVuZGVyICRTSEVMTCwgaWYgJGVjaG8gZG9lc24ndCB3b3JrLgoJUmVwb3J0ZWQgYnkgTGFycyBIZWNraW5nLgoKMTk5OC0wNC0xOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChtYWludGFpbmVyLXJla2V5KTogTmV3IHJ1bGUgdG8gZm9yY2UgdXMgdG8gY2hhbmdlCglQcm9qZWN0LVZlcnNpb24gYWZ0ZXIgd2UgbWFrZSBhIHJlbGVhc2UuICBUaGlzIGtlZXBzIGFsbCB2ZXJzaW9uCgludW1iZXJzIGluIHN5bmMsIHJhdGhlciB0aGFuIGJyYW5jaGluZyBqdXN0IGJlZm9yZSB0aGUgcmVsZWFzZS4KCShtYWludGFpbmVyLXJlbGVhc2UsIG1haW50YWluZXItY2hlY2tpbik6IFVzZSBtYWludGFpbmVyLXJla2V5LgoKCSogbHRtYWluLmluIChmaW5pc2gpOiBOb3RpY2Ugd2hlbiBhIGZpbmlzaCBjb21tYW5kIGZhaWxzLCBzbyB0aGF0Cgl3ZSBjYW4gYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHJlY29tbWVuZGF0aW9ucy4KCjE5OTgtMDQtMTcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsaWJ0b29sLm00IChBTV9QUk9HX0xJQlRPT0wpOiBBcHBlbmQgZmlsZSBkZXNjcmlwdG9yIDUgdG8KCWNvbmZpZy5sb2csIHNvIHRoYXQgY29uZmlndXJlIGRvZXNuJ3QgY2xvYmJlciB0aGUgbWVzc2FnZXMgdGhhdAoJbHRjb25maWcgcHV0IHRoZXJlLiAgRnJvbSBEYXZpZCBUYXlsb3IuCgoxOTk4LTA0LTE1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4gKGFyY2hpdmVfY21kcyk6IFRyeSB1c2luZyBgJENDIC1zaGFyZWQnIHdoZW4KCWNvbmZpZ3VyaW5nIGZvciBHQ0MgdW5kZXIgaXJpeDUgYW5kIGlyaXg2LiAgRnJvbSBXb2xmcmFtIEdsb2dlci4KCShvZmlsZSk6IEFkZCBgLS1vdXRwdXQnIGZsYWcgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQKCWxpYnRvb2wuICBTdWdnZXN0ZWQgYnkgV29sZnJhbSBHbG9nZXIuCgoxOTk4LTA0LTE0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluOiBSZW1vdmUgYWxsIGhhcmRjb2RlZCByZWZlcmVuY2VzIHRvIGx0bWFpbi5pbiBpbgoJZmF2b3VyIG9mICRQQUNLQUdFIGFuZCAkUFJPR1JBTS4KCShpbnN0YWxsKTogQ29tcHV0ZSB0aGUgaW5zdGFsbGF0aW9uIG5hbWUgZm9yIHByb2dyYW1zLCBpbiBjYXNlIHdlCglpbnN0YWxsIGEgcmVsaW5rZWQgZmlsZSB3aGljaCBoYXMgYSBkaWZmZXJlbnQgbmFtZS4gIFJlcG9ydGVkIGJ5CglQaWV0ZXIgU2Nob2VubWFrZXJzLgoKCSogbHRjb25maWcuaW4gKGVjaG8pOiBUcnkgdXNpbmcgdGhlIGtzaCgxKSBgcHJpbnQgLXInIGJ1aWx0aW4KCWNvbW1hbmQsIGJlZm9yZSByZXZlcnRpbmcgdG8gcHJpbnRmKDEpLgoKCSogTWFrZWZpbGUuYW0gKGxpYnRvb2wpOiBVc2UgJChTSEVMTCkgd2hlbiBpbnZva2luZyBsdGNvbmZpZy4KCgkqIGx0Y29uZmlnLmluIChlY2hvKTogUmV3cml0ZSB0aGUgdGVzdCBmb3IgYSB3b3JraW5nIGVjaG8gc28gdGhhdAoJd2Ugd2luIG9uIFNvbGFyaXMgYnkgYXZvaWRpbmcgcHJpbnRmKDEpLCBpZiBwb3NzaWJsZS4KCjE5OTgtMDQtMTMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFNX1BST0dfTk0pOiBEb24ndCBvdmVycmlkZSBOTSBpbiB0aGUgZW52aXJvbm1lbnQuCgoxOTk4LTA0LTEzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluOiBOZXcgYC0tY29uZmlnJyBmbGFnIHRvIHByaW50IG91dCBhbGwgY29uZmlndXJlZAoJdmFyaWFibGVzLgoKCSogbGlidG9vbC5tNDogUGFzcyBsdGNvbmZpZyB0aGUgdW5kb2N1bWVudGVkIC0tbm8tcmVleGVjIGZsYWcsCglzaW5jZSB3ZSBjYWxsIGl0IGV4cGxpY2l0bHkgdXNpbmcgQ09ORklHX1NIRUxMLgoKCSogbHRjb25maWcuaW46IFJlc3RhcnQgdGhlIHNjcmlwdCB1bmRlciBhIGRpZmZlcmVudCBzaGVsbCBpZgoJQ09ORklHX1NIRUxMIGlzIG5vdCAvYmluL3NoLiAgVGhpcyB3YXksIHBlb3BsZSBjYW4gdXNlIEJhc2ggaWYKCXRoZXkgZG9uJ3QgaGF2ZSBhIHdvcmtpbmcgZWNobyBwcm9ncmFtLgoKCSogbHRtYWluLmluLCBsdGNvbmZpZy5pbjogVXNlICRTSEVMTCBpbnN0ZWFkIG9mIC9iaW4vc2ggd2hlbgoJZ2VuZXJhdGluZyBleGVjdXRhYmxlIHNjcmlwdHMuCgoJKiBsaWJ0b29saXplLmluLCBsdGNvbmZpZy5pbiwgbHRtYWluLmluOiBJbXBsZW1lbnQgdGhlIGAtLWRlYnVnJwoJZmxhZyB0byBiZWdpbiBzaGVsbCB0cmFjaW5nLgoKCSogbHRjb25maWcuaW4gKGFyY2hpdmVfY21kcyk6IERvbid0IHVzZSBgZ2NjIC1zaGFyZWQnLCBldmVuIGlmIHdlCgloYXZlIEdOVSBsZC4gIFJlcG9ydGVkIGJ5IFJvYmVydCBTLiBNYWllci4KCjE5OTgtMDQtMDYgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAocGljX2ZsYWcpOiBDcmVhdGUgbW9yZSB0aGFuIGp1c3QgYSBudWxsIEMgZmlsZSwgc28KCXRoYXQgdGhlIFN1blBSTyA0LjIgY2MgZG9lc24ndCBjb21wbGFpbi4gIEZyb20gQm9iIEZyaWVzZW5oYWhuLgoJKGdudV9sZF9hY3RzX25hdGl2ZSk6IERlbGV0ZSB0aGlzIHZhcmlhYmxlLiAgVGhlcmUgaXMganVzdCB0b28KCW11Y2ggdmVyc2lvbiBza2V3IHRvIHRyeSB0byBwcmV0ZW5kIEdOVSBsZCBpcyB0aGUgc2FtZSBhcyB0aGUKCXN5c3RlbSBsZC4gIFJlcG9ydGVkIGJ5IElhbiBMYW5jZSBUYXlsb3IuCgkoaGFyZGNvZGVfYWN0aW9uKTogRG9uJ3QgYm90aGVyIHJlbGlua2luZyBvciBhYm9ydGluZyBvbiBzeXN0ZW1zCgl0aGF0IGFyZSB0b28gZHluYW1pYyB0byBoYXZlIGEgY29uc2lzdGVudCBoYXJkY29kZSBtZXRob2QuCglSZXBvcnRlZCBieSBEb3VnIFdpbnRlcmJ1cm4uCgoxOTk4LTAzLTI0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogZG9jL2xpYnRvb2wudGV4aTogQSBsaXR0bGUgcHJvb2ZyZWFkaW5nLiAgRnJvbSBBbGJlcnQKCUNoaW4tQS1Zb3VuZy4KCjE5OTgtMDMtMjMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogVHJlYXQgSFAtVVggMTEganVzdCBsaWtlIEhQLVVYIDEwLiAgRnJvbSBKZWZmIExhdy4KCjE5OTgtMDMtMjEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAocmVsb2FkX2ZsYWcpOiBDb3JyZWN0IGEgdGlueSBidWcgd2hlcmUgYC0tc2lsZW50JwoJd291bGQgc3RpbGwgcHJpbnQgb3V0IHRoZSByZWxvYWQgZmxhZy4gIEZyb20gU3RlcGhhbiBLdWxvdy4KCjE5OTgtMDMtMjAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYnRvb2wubTQ6IFVzZSBjaGFuZ2VxdW90ZSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIHNxdWFyZQoJYnJhY2tldCBwYXR0ZXJucy4KCjE5OTgtMDMtMjAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBSZWxlYXNlIDEuMi4KCjE5OTgtMDMtMTggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW46IFJlYXJyYW5nZSBzb21lIG9mIHRoZSBlY2hvcyB0byBtYWtlIHRoZW0gbW9yZQogCWNvbnNpc3RlbnQuCgoxOTk4LTAzLTE0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluOiBCcmVhayB1cCBhbiBlY2hvIGNvbW1hbmQgdGhhdCBjYXVzZXMgU29sYXJpcyBwcmludGYKIAl0byBkdW1wIGNvcmUuICBBcHBhcmVudGx5IHRoZSBTb2xhcmlzIHBlb3BsZSBoYXJkY29kZWQgYSAyMTEwLWJ5dGUKIAlidWZmZXIgaW50byB0aGVpciBwcmludGYoMSkuICBGZWguICBGcm9tIEpvaG4gSnVkZ2UuCgoxOTk4LTAzLTExICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW46IENoYW5nZSB0aGUgdGVzdCBmb3IgdGhlIFBJQyBjb21waWxlciBmbGFnIHNvIHRoYXQKIAl3ZSBhc3N1bWUgaXQgZG9lc24ndCB3b3JrIGlmIHRoZXJlIGFyZSBhbnkgd2FybmluZyBtZXNzYWdlcy4gIFRoaXMKIAlmaXhlcyBhIGJ1ZyB1c2luZyBvbGQgR0NDJ3Mgb24gSFAtVVguICBSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlLgoKMTk5OC0wMy0xMCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgogICAgICAgICogTWFrZWZpbGUuYW0gKCQoc3JjZGlyKS9sdGNvbmZpZyk6IFJlbW92ZSBib2d1cyBjb21tYW5kIHRvIGNyZWF0ZQogICAgICAgIGEgZmlsZSBsdGNvbmZpZyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LgoKMTk5OC0wMy0wOSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgogICAgICAgICogbHRtYWluLmluOiBBdm9pZCB1bm5lY2Vzc2FyeSB1c2Ugb2YgY29tbWFuZCBzdWJzdGl0dXRpb24sCiAJcmVwbGFjaW5nIGZvbz1gZXZhbCBcXCRlY2hvIFwiJG11bWJsZVwiYCBieSBldmFsIGZvbz1cIiRtdW1ibGVcIi4KCgkobGluayk6IFVzZSAkezErIiRAIn0gaW4gd3JhcHBlciBzY3JpcHRzIGluIG9yZGVyIHRvIHBhc3MKCWFyZ3VtZW50cyBzYWZlbHkgdG8gYSBwcm9ncmFtLgoKICAgICAgICAqIGx0Y29uZmlnLmluOiBVc2UgLWZwaWMgaW5zdGVhZCBvZiAtZlBJQyBpZiAkaG9zdF9jcHUgbWF0Y2hlcwogICAgICAgIG02OCouCgoxOTk4LTAzLTA4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogUmVsZWFzZSAxLjEuCgoJKiBsdG1haW4uaW46IDxzaWdoPiBJIGxpa2UgYGhlcmUgZG9jdW1lbnRzJyBhIGxvdCwgYnV0IGFwcGFyZW50bHkKIAl0aGV5IGFyZSBzbyBiYWRseSBoYW5kbGVkIGJ5IG9sZCBhbmQgYnVnZ3kgL2Jpbi9zaCdzLCB0aGF0CiAJcmVwbGFjaW5nIGBjYXQgPDxFT0YgLi4uIEVPRicgYnkgYCRlY2hvICIuLi4iJyBpbXByb3ZlcyBsaWJ0b29sJ3MKIAlzcGVlZCBieSBhIGZhY3RvciBvZiA1LiAgU28sIEkndmUgZWxpbWluYXRlZCBoZXJlIGRvY3MgZnJvbSB0aGUKIAlhbGwtaW1wb3J0YW50IGx0bWFpbi5pbi4gIEZyb20gVG9tIExhbmUuCgoxOTk4LTAzLTA3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW46IENvcHkgdGhlIGNvbnRlbnRzIG9mIGx0bWFpbi5zaCBpbnRvIHRoZSBnZW5lcmF0ZWQKCWxpYnRvb2wuICBUaGlzIHNob3VsZCBtb3JlIHRoYW4gaGFsdmUgdGhlIGV4ZWN1dGlvbiB0aW1lcyBvbiBvbGQKCW9yIGJ1Z2d5IC9iaW4vc2ggc3lzdGVtcywgc3VjaCBhcyBIUC1VWCA5IGFuZCBTdW5PUyA0LjEuNC4gIEZyb20KCVRvbSBMYW5lLgoKMTk5OC0wMy0wNSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFNX0VOQUJMRV9TSEFSRUQsIEFNX0VOQUJMRV9TVEFUSUMpOiBBZGQgc3VwcG9ydCBmb3IKIAl0aGUgYGRlZmF1bHQnIHBhY2thZ2UsIHNvIHRoYXQgcGVvcGxlIGNhbiBjb250cm9sIHVubmFtZWQKIAlwYWNrYWdlcy4KCShMRCk6IE9ubHkgYWRkIGFuIEFCSSBmbGFnIHVuZGVyIElSSVggNi54LCBzaW5jZSBJUklYIDUueCBkb2Vzbid0CglzdXBwb3J0IHRoZW0uICBGcm9tIEFsZXhhbmRyZSBPbGl2YS4KCjE5OTgtMDMtMDEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogUG9ydCB0byBVbml4V2FyZSAyLnguICBGcm9tIENocmlzdG9waGVyIE9sc2VuLgoKMTk5OC0wMi0yNSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0bWFpbi5pbiAoY29tcGlsZSk6IEZvciBjb25zaXN0ZW5jeSwgaG9ub3VyIHRoZSBgLXN0YXRpYycgZmxhZwogCWR1cmluZyBjb21waWxhdGlvbi4KCjE5OTgtMDItMjMgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBsaWJ0b29sLm00IChBTV9FTkFCTEVfU0hBUkVELCBBTV9FTkFCTEVfU1RBVElDKTogRm9yCiAJLS1lbmFibGUtc2hhcmVkLCBoZWVkIHRoZSB2YWx1ZSBvZiAkUEFDS0FHRSBmcm9tIEFNX0lOSVRfQVVUT01BS0UKIAlpZiBnaXZlbiBhcyB0aGUgYXJndW1lbnQgZm9yIHRoZSBsaWJyYXJ5IHRvIGJlIGJ1aWx0IHNoYXJlZC4KCjE5OTgtMDItMjAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsaWJ0b29sLm00LCBsdGNvbmZpZy5pbiAoTk0pOiBGaXggdXAgYSB0eXBvIGNvbmZ1c2lvbiBiZXR3ZWVuCiAJJGFjX2RpciBhbmQgJGRpci4gIFJlcG9ydGVkIGJ5IEFraW0gRGVtYWlsbGUuCgoJKiBsdG1haW4uaW4gKGxpbmspOiBEb24ndCBhbGxvdyBib3RoIGAtdmVyc2lvbi1pbmZvJyBhbmQKCWAtcmVsZWFzZScuICBSZXBvcnRlZCBieSBEYW5ueSBCYWNreC4KCjE5OTgtMDItMTggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBNYWtlZmlsZS5hbSAobm9pbnN0X1NDUklQVFMpOiBSZW1vdmUgbGluZW5vIGZyb20gZGlzdHJpYnV0aW9uLgoKCSogbGluZW5vOiBSZW1vdmUgZnJvbSBkaXN0cmlidXRpb24sIGFzIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBNYWtlZmlsZS5hbSAoJChzcmNkaXIpL2x0Y29uZmlnLmluLCAkKHNyY2RpcikvbHRtYWluLnNoKToKIAlSZXdyaXRlIHRoZXNlIHJ1bGVzIG5vdCB0byB1c2UgY29uZmlnLnN0YXR1cyBvciBsaW5lbm8uICBUaGlzCiAJbWFrZXMgdGhpbmdzIHNpbXBsZXIsIGFuZCByZWR1Y2VzIGRlcGVuZGVuY2llcywgc28gdGhhdCB0aGUKIAlzY3JpcHRzIGFyZSByZWJ1aWx0IGFuZCBpbnN0YWxsZWQgaW4gc3JjZGlyIG9ubHkgd2hlbiBuZWNlc3NhcnkuCiAgCVJlcG9ydGVkIGJ5IFN0ZXBoYW4gS3Vsb3cuCgoxOTk4LTAyLTE2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbGlidG9vbC5tNCwgbHRtYWluLmluLCBsdGNvbmZpZy5pbjogQ29ycmVjdGx5IGlkZW50aWZ5IGFic29sdXRlCiAJZGlyZWN0b3J5IG5hbWVzIG9uIE1TLURPUy4gIFN1Z2dlc3RlZCBieSBCb2IgRnJpZXNlbmhhaG4uCgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluLCBsaWJ0b29sLm00OiBDaGFuZ2UgYSBidW5jaCBvZiBgc2VkIE4hZCcKIAljb21tYW5kcyB0byBgc2VkIE5xJywgZm9yIGVmZmljaWVuY3kuCgoJKiBsdG1haW4uaW46IE9ubHkgZWdyZXAgdGhlIGZpcnN0IGZldyBsaW5lcyBvZiBmaWxlcyBpbiBvcmRlciB0bwogCWRldGVybWluZSBpZiB0aGV5IHdlcmUgbGlidG9vbC1nZW5lcmF0ZWQuICBUaGlzIHByZXZlbnRzIGVncmVwKDEpCiAJZnJvbSB0YWtpbmcgZm9yZXZlciB0byBsb29rIGF0IGEgMTBNQiBiaW5hcnkgb24gU29sYXJpcy4gIEZyb20KIAlTdGVwaGFuIEt1bG93LgoKMTk5OC0wMi0xMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGx0Y29uZmlnLmluIChub191bmRlZmluZWRfZmxhZyk6IEFkZCBhIGZsYWcgdG8gZGVjbGFyZSB1bmRlcgoJU29sYXJpcyB0aGF0IHRoZSBsaWJyYXJ5IHNob3VsZCBub3QgaGF2ZSBhbnkgdW5kZWZpbmVkCglyZWZlcmVuY2VzLiAgU3VnZ2VzdGVkIGJ5IEJvYiBGcmllc2VuaGFobi4KCgkqIGx0bWFpbi5pbiAobWtkaXIpOiBGaXggb25lIG1vcmUgbWtkaXIgcmFjZS4gIEZyb20gSC5KLiBMdS4KCjE5OTgtMDItMDggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluIChzdHJpcGxpYiwgb2xkX3N0cmlwbGliKTogRGl0dG8uCgoJKiBsdGNvbmZpZy5pbiAocHJvZmlsZV9mbGFnX3BhdHRlcm4pOiBHZXQgcmlkIG9mIGRlYWQgY29kZS4KCjE5OTgtMDItMDcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsaWJ0b29sLm00IChBTV9FTkFCTEVfU0hBUkVELCBBTV9FTkFCTEVfU1RBVElDKTogTmV3IG1hY3JvcyB0bwogCW1vZGlmeSB0aGUgYC0tZW5hYmxlLXNoYXJlZCcgYW5kIGAtLWVuYWJsZS1zdGF0aWMnIGRlZmF1bHRzIGluIHRoZQogCWNvbmZpZ3VyZSBzY3JpcHQuICBUaGlzIHdvcmtzIGEgbG90IGJldHRlciB0aGFuIHRoZSBvbGQKIAlgZW5hYmxlX3NoYXJlZCcgYW5kIGBlbmFibGVfc3RhdGljJyB2YXJpYWJsZXMgZGlkLiAgUmVwb3J0ZWQgYnkKIAlCb2IgRnJpZXNlbmhhaG4uCgoxOTk4LTAyLTA3ICBTYW11ZWwgVGFyZGlldSAgPHNhbUBpbmYuZW5zdC5mcj4KCgkqIGx0bWFpbi5pbjogUmVjb2duaXplIC5hZGEsIC5hZHMgYW5kIC5hZGIgYXMga25vd24gc3VmZml4ZXMgKHRoZXkKCWFyZSB1c2VkIGJ5IEdOQVQsIHRoZSBHTlUgQWRhIGNvbXBpbGVyKS4KCjE5OTgtMDItMDYgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogVHVybiBvbiBJUklYIHNoYXJlZCBsaWJyYXJpZXMgYWdhaW4hCgoJKiBsaWJ0b29sLm00IChMRCk6IFVzZSBmaWxlKDEpIHRvIGRpc2NvdmVyIHdoaWNoIEFCSSB3ZSdyZSB1c2luZwogCW9uIElSSVgsIGFuZCBwcm9wYWdhdGUgdGhlIGNvcnJlY3QgbGlua2VyIGZsYWcuICBGcm9tIEppbSBXaWxzb24uCgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluIChYc2VkKTogYGFyZz0tbjsgZWNobyAiJGFyZyIgfCBzZWQgLi4uJwogIAlnaXZlcyBwcm9ibGVtcywgYmVjYXVzZSB0aGUgYC1uJyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvcHRpb24gdG8KIAllY2hvKDEpLiAgU28sIHVzZSBgZWNobyAiWCRhcmciIHwgc2VkIC1lICdzL15YLy8nIC4uLicgZXZlcnl3aGVyZSwKCXZpYSB0aGUgJFhzZWQgY29udmVuaWVuY2UgdmFyaWFibGUuICBTdWdnZXN0ZWQgYnkgSC5KLiBMdS4KCjE5OTgtMDItMDIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbjogVHVybiBvZmYgSVJJWCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0IHVudGlsIDMyLWJpdAoJYW5kIDY0LWJpdCBBQkkgZGlmZmVyZW5jZXMgY2FuIGJlIHJlc29sdmVkLgoKMTk5OC0wMS0yOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQHByb2ZpdHByZXNzLmNvbT4KCgkqIGxpYnRvb2wubTQgKExEKTogUmV2ZXJzZSB5ZXN0ZXJkYXkncyBjaGFuZ2UgYmVjYXVzZSBgLW9sZF9sZCcKCWlzbid0IGFjY2VwdGVkIGJ5IEdDQy4KCjE5OTgtMDEtMjcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAoc29uYW1lX3NwZWMpOiBBZGQgaW4gdXNlci1zcGVjaWZpZWQgcmVsZWFzZSBudW1iZXJzCglmb3IgZXZlcnkgaG9zdCBzeXN0ZW0gdGhhdCBzdXBwb3J0cyBhbiBzb25hbWUgdGhhdCBkaWZmZXJzIGZyb20KCXRoZSBsaW5rbmFtZS4KCgkqIGxpYnRvb2wubTQgKExEKTogQWRkIGAtb2xkX2xkJyB0byB0aGUgbGlzdCBvZiBmbGFncyB0aGF0IG5lZWQgdG8KCWJlIHBhc3NlZCB0aHJvdWdoIG9uIFNHSS4gIFJlcG9ydGVkIGJ5IENocmlzIExlZS4KCgkqIGx0bWFpbi5pbiAocmVsZWFzZSk6IFByZXBlbmQgYSBoeXBoZW4gdG8gdGhlIHJlbGVhc2UgbnVtYmVyLCBhbmQKIAlmaXggYSB0eXBvIGJlY2F1c2UgYC12ZXJzaW9uLWluZm8nIHRha2VzIG9ubHkgMyBhcmdzLiAgRnJvbQogCUguSi4gTHUuCgoxOTk4LTAxLTI1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRjb25maWcuaW4gKGxpYnJhcnlfbmFtZXNfc3BlYyk6IE9uIExpbnV4LCB1c2UgdGhlCiAJdXNlci1zcGVjaWZpZWQgcmVsZWFzZS4KCgkqIGx0bWFpbi5pbiAobGluayk6IEFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkgYSByZWxlYXNlIG51bWJlciBmb3IKIAl0aGUgbGlicmFyeSB1c2luZyB0aGUgYC1yZWxlYXNlJyBmbGFnLiAgU3VnZ2VzdGVkIGJ5IEguSi4gTHUgYW5kCiAJSWFuIExhbmNlIFRheWxvci4KCjE5OTgtMDEtMTkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAob2xkX3Bvc3R1bmluc3RhbGxfY21kcyk6IFJlb3JkZXIgc28gdGhhdCBjaG1vZAoJaGFwcGVucyBhZnRlciByYW5saWIuICBGcm9tIE1hcmt1cyBGLlguSi4gT2Jlcmh1bWVyLgoKCSogbHRtYWluLmluIChtb2RlKTogQWRkZWQgYGdjYyonIGFuZCBgKi1nY2MqJyB0byB0aGUgcGF0dGVybnMgdGhhdAoJcmVjb2duaXplIGNvbXBpbGVycy4gIEZyb20gUGlldGVyIFNjaG9lbm1ha2Vycy4KCShsaW5rKTogUmVjb2duaXplIGAuYScgZmlsZXMgYWdhaW4uICBTdWdnZXN0ZWQgYnkgUGlldGVyCglTY2hvZW5tYWtlcnMuCgoxOTk4LTAxLTE4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluIChjb21waWxlKTogUmVjb2duaXplIGAuYXNtJyBleHRlbnNpb24sIGZvciB1c2Ugd2l0aAoJdGhlIG5hc20gYXNzZW1ibGVyLiAgRnJvbSBNYXJrdXMgRi5YLkouIE9iZXJodW1lci4KCjE5OTgtMDEtMTIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiAocnVucGF0aF92YXIpOiBVc2UgaW5zdGVhZCBvZgoJYGhhcmRjb2RlX3J1bnBhdGhfdmFyJy4KCjE5OTgtMDEtMTEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdG1haW4uaW4gKGZpbmlzaCk6IEFkZCBhIGJldHRlciAtLWZpbmlzaCBtZXNzYWdlLiAgU3VnZ2VzdGVkIGJ5CglLZW5uZXRoIEFsYmFub3dza2kuCgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluOiBGaXggYSBmZXcgdHlwb3MuCgoxOTk4LTAxLTAzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluIChsaW5rKTogUXVvdGUgdGhlIGRlZmluaXRpb24gb2YgJGVjaG8gaW4gdGhlIHdyYXBwZXIKCXNjcmlwdC4KCgkqIGx0Y29uZmlnLmluIChleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpOiBVc2UgYC0tZXhwb3J0LWR5bmFtaWMnCglpbnN0ZWFkIG9mIGAtZXhwb3J0LWR5bmFtaWMnLCB3aGljaCBpcyBub3QgYWNjZXB0ZWQgYnkgYWxsIEdOVQoJbGQncy4gIEZyb20gRWlpY2hpIFRha2Ftb3JpLgoKCSogbHRtYWluLmluIChpbnN0YWxsKTogRG9uJ3QgcHJpbnQgc2lsbHkgYGxpYnJhcnkgc3RyaXBwaW5nJwoJd2FybmluZ3MuICBSZXBvcnRlZCBieSBGcmFu529pcyBQaW5hcmQuCgoxOTk3LTEyLTE5ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAcHJvZml0cHJlc3MuY29tPgoKCSogbHRtYWluLmluOiBEb24ndCBmb3JnZXQgdG8gcXVvdGUgdGhlIENEUEFUSCBzdWJzdGl0dXRpb24uICBGcm9tCiAJVG9yIExpbGxxdmlzdC4KCjE5OTctMTItMTggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBwcm9maXRwcmVzcy5jb20+CgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluIChDRFBBVEgpOiBVbnNldCB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlCiAJc28gdGhhdCBIUC1VWCBzaGVsbHMsIGF0IGxlYXN0LCBkb24ndCBwcmludCBvdXQgdGhlIGRpcmVjdG9yeSBuYW1lCiAJYWZ0ZXIgYSBgY2QnIGNvbW1hbmQuICBGcm9tIFRvciBMaWxscXZpc3QuCgoxOTk3LTEyLTEwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251Lm9yZz4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGhhcmRjb2RlKTogQ2hhbmdlIGEgYnVuY2ggb2YgcmVmZXJlbmNlcyB0bwoJYCQoTElCUyknIHRvIGAtbG0nLCBzaW5jZSB3ZSBubyBsb25nZXIgcHV0IC1sbSBpbiBMSUJTLgoKCSogZGVtby9jb25maWd1cmUuaW46IERlbGV0ZSB0aGUgdGVzdCBmb3IgbGlibSwgc2luY2UgaXQgaXMKCXN0YW5kYXJkIG9uIGV2ZXJ5IHN5c3RlbS4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGxpYmhlbGxvX2xhX0xERkxBR1MpOiBDaGFuZ2UgdG8gaW5jbHVkZSAtbG0sCglpbiBhY2NvcmRhbmNlIHdpdGggbmV3IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jeSBjb2RlLgoKCSogbHRtYWluLmluIChkZXBlbmRlbmN5X2xpYnMpOiBBZGRlZCB0byBoZWxwIHBlb3BsZSBsaW5rIHByb2dyYW1zCgl3aXRob3V0IGhhdmluZyB0byBleHBsaWNpdGx5IHNwZWNpZnkgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMuCgoJKiBsdGNvbmZpZy5pbiAoQ09MTEVDVF9OQU1FUyk6IE9vcHMuLi4gSSBmb3Jnb3QgdG8gYXBwbHkgdGhlIEFJWCAzCiAJcmVzdHJpY3Rpb24gdG8gdGhlIGdlbmVyYXRlZCBsaWJ0b29sIHNjcmlwdC4gIFJlcG9ydGVkIGJ5IFN0ZWZhbgogCVdlc3RlcmZlbGQuCgoxOTk3LTEyLTA1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluICh0aGlzZGlyKTogUXVvdGUgJGVjaG8gaW4gdGhlIGdlbmVyYXRlZCBsaWJ0b29sCglzY3JpcHQgZm9yIEhQLVVYLiAgRnJvbSBNYXJrdXMgRi5YLkouIE9iZXJodW1lci4KCgkqIGx0bWFpbi5pbiAobGluayk6IFJlY29nbml6ZSB0aGUgYC5zJyBzdWZmaXguICBGcm9tIE1hcmt1cwoJRi5YLkouIE9iZXJodW1lci4KCgkqIGx0Y29uZmlnLmluIChsaW5rX3N0YXRpY19mbGFnKTogRG9uJ3QgcXVvdGUgJHt3bH0gb24gSFAtVVgKIAliZWNhdXNlIGxpbmtfc3RhdGljX2ZsYWcgaXMgbmV2ZXIgZXZhbGVkLiAgRnJvbSBFcmljIEJhY2t1cy4KCjE5OTctMTItMDEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogZGVtby9NYWtlZmlsZS5hbSAoaGVsbGRsX0RFUEVOREVOQ0lFUyk6IEFkZCBgbGliaGVsbG8ubGEnIHRvIG91cgoJZGVwZW5kZW5jaWVzIHNvIHRoYXQgcGFyYWxsZWwgYnVpbGRzIHdvcmsgY29ycmVjdGx5LiAgRnJvbSBKaW0KCU1leWVyaW5nLgoKCSogTWFrZWZpbGUuYW0gKCQoc3JjZGlyKS9sdGNvbmZpZywgJChzcmNkaXIpL2x0bWFpbi5zaCk6IFJld3JpdGUKCXRoZXNlIHJ1bGVzIHNvIHRoYXQgdGhleSBhcmUgcGFyYWxsZWxpemFibGUuICBSZXBvcnRlZCBieSBKaW0KCU1leWVyaW5nLgoKCSogbHRjb25maWcuaW4gKGx0ZWNobyk6IFdlIG5lZWQgc3BlY2lhbCBoYW5kbGluZyB0byBxdW90ZSB0aGUKCWBlY2hvJyB2YXJpYWJsZSBpdHNlbGYuICBGcm9tIEFsZXhhbmRyZSBPbGl2YS4KCjE5OTctMTEtMjkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKENPTExFQ1RfTkFNRVMpOiBFbmFibGUgdGhpcyB3b3JrYXJvdW5kIGZvciBhIGJyb2tlbgogCWNvbGxlY3QyIG9ubHkgb24gQUlYIDMuICBUaGlzIGF2b2lkcyBwcm9ibGVtcyBvbiBvdGhlciBBSVgKIAl2ZXJzaW9ucy4gIFJlcG9ydGVkIGJ5IFN0ZWZhbiBXZXN0ZXJmZWxkLgoKCSogbHRtYWluLmluLCBsdGNvbmZpZy5pbiAoZmluaXNoX2V2YWwpOiBWYXJpYWJsZSBsaWtlIGZpbmlzaF9jbWRzLAoJZXhjZXB0IGl0IGlzIGEgc2luZ2xlIGNvbW1hbmQgd2hpY2ggaXMgZXZhbGVkLCBhbmQgbm90IHNob3duLgoKCSogbHRjb25maWcuaW46IFBvcnQgdG8gQW1pZ2FPUy4gIEZyb20gSm9vcCB2YW4gZGUgV2VnZS4KCgkqIGx0bWFpbi5pbiAoZWNobyk6IERlbGV0ZSBwcmVhbWJsZSB0byBjaGVjayBmb3IgYSB3b3JraW5nIGVjaG8sCiAJc2luY2Ugd2UganVzdCB1c2UgdGhlIG9uZSBpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhdGVkIGxpYnRvb2wuCgoJKiBsdGNvbmZpZy5pbiAoZWNobyk6IEluY2x1ZGUgdGhpcyBkZWZpbml0aW9uIGluIHRoZSBnZW5lcmF0ZWQKCWxpYnRvb2wgc2NyaXB0LgoKMTk5Ny0xMS0yOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbiwgbGlidG9vbC5tNCAoTk0pOiBBZGQgL3Vzci9jY3MvYmluIHRvIHRoZSBQQVRICgliZWZvcmUgY2hlY2tpbmcuICBGcm9tIEthdmVoIFIuIEdoYXppLgoJKE5NKTogRGVsZXRlIGFuIGV4dHJhbmVvdXMgZWdyZXAgZnJvbSBsdGNvbmZpZy4KCgkqIGx0Y29uZmlnLmluIChmaW5pc2hfY21kcyk6IENoYW5nZSBiYWNrIHRvIHVzaW5nIGBsZGNvbmZpZyAtbicuCglUaGlzIG1ha2VzIExpbnV4IGJlaGF2ZSBsaWtlIG90aGVyIHN5c3RlbXMsIHdoaWNoIGlzIG1vcmUgaW4gbGluZQoJd2l0aCB3aGF0IGxpYnRvb2wgbmVlZHMuCgoxOTk3LTExLTI3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbjogQ2hhbmdlIGEgd2hvbGUgYnVuY2ggb2YgYHByb2duYW1lJyB2YXJpYWJsZXMgdG8KCWBtb2RlbmFtZScuICBUaGlzIGlzIGZvciBjbGFyaXR5LCBhbmQgdG8gZml4IGEgdGlueSB0eXBvIGluIGZpbmlzaAoJbW9kZS4KCgkqIGxpYnRvb2wuc3BlYyAoTmFtZSwgVmVyc2lvbik6IERpdHRvLgoKCSogY29uZmlndXJlLmluIChBTV9JTklUX0FVVE9NQUtFKTogVXNlIFBSQ1MgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZQoJdGhlIHByb3BlciBwYWNrYWdlIG5hbWUgYW5kIHZlcnNpb24gbnVtYmVyLgoKCSogbHRjb25maWcuaW4gKGdudV9sZF9hY3RzX25hdGl2ZSk6IFRyZWF0IEdOVSBsZCBsaWtlIHRoZSBuYXRpdmUKCWxpbmtlciBvbiBTdW5PUyA0LnguICBTdWdnZXN0ZWQgYnkgQWxleGFuZHJlIE9saXZhLgoJKGRlcGxpYnMpOiBDaGFuZ2UgdGhlIGRlZmF1bHRzIGFsbCBvdmVyLCBzaW5jZSBtb3N0IHN5c3RlbXMgY2Fubm90CgloYW5kbGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMuCgoJKiBsaWJ0b29sLm00LCBsdGNvbmZpZy5pbiAoTk0pOiBPbmx5IGxvb2sgYXQgdGhlIGZpcnN0IGxpbmUgb2YgdGhlCiAJb3V0cHV0IGZyb20gTk0gd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIGl0IHN1cHBvcnRzIGEgY29tbWFuZCBsaW5lCiAJb3B0aW9uLiAgVGhpcyBwcmV2ZW50cyBmYWxzZSBwb3NpdGl2ZXMgb24gT1NlcyB3aGljaCBpZ25vcmUKIAlpbnZhbGlkIGZsYWdzLCBsaWtlIEhQLVVYLCB3aGljaCBwcmludHMgYG5tOiB1bmtub3duIG9wdGlvbiAiQiIKIAlpZ25vcmVkJy4gIFJlcG9ydGVkIGJ5IEthdmVoIFIuIEdoYXppLgoKCSogbHRjb25maWcuaW4gKGZpbmlzaF9jbWRzKTogT24gTGludXgsIHVwZGF0ZSBsZC5zby5jYWNoZSBieQogCXJlbW92aW5nIHRoZSBgLW4nIGZsYWcgZnJvbSBsZGNvbmZpZy4gIFN1Z2dlc3RlZCBieSBLZW5uZXRoCiAJQWxiYW5vd3NraS4KCgkqIE1ha2VmaWxlLmFtIChtYWludGFpbmVyLWNoZWNraW4sIG1haW50YWluZXItcmVsZWFzZSk6IE5ldwoJY29tbWFuZHMgdG8gcmVhcCB0aGUgZnVsbCBiZW5lZml0IG9mIHVzaW5nIFBSQ1MgdG8gbWFpbnRhaW4KCWxpYnRvb2wgdmVyc2lvbiBudW1iZXJzLgoKCSogbHRjb25maWcuaW4sIGx0bWFpbi5pbiAoZ2xvYmFsX3N5bWJvbF9waXBlKTogRXhwbGljaXRseSBjYXN0IGFsbAoJYWRkcmVzc2VzIHRvIF9fcHRyX3QuICBUaGlzIGZpeGVzIGEgYnVnIGR1ZSB0byBhIHN0cmljdCBJUklYCgljb21waWxlci4gIFN1Z2dlc3RlZCBieSBLYXZlaCBSLiBHaGF6aS4KCjE5OTctMTEtMjMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogbHRtYWluLmluIChlY2hvKTogRm9yIGFlc3RoZXRpY3MsIGF2b2lkIHVzaW5nIGAkZWNobycgd2hlbgogCWBlY2hvJyB3aWxsIGRvICpleGFjdGx5KiB0aGUgc2FtZSB0aGluZy4gIFRoaXMgcHJldmVudHMgdWdseQogCWBwcmludGYgJXNcbiB0aW1lc3RhbXAgPiBzb21lLmxvJyBjb21tYW5kcyBmcm9tIGFwcGVhcmluZyBpbiB0aGUKIAlsaWJ0b29sIG91dHB1dC4KCShsaW5rKTogRGVsZXRlIHRoZSBgLWFsbG93LXVuZGVmaW5lZCcgZmxhZyBiZWNhdXNlIGl0IGlzIG5vdyB0aGUKIAlkZWZhdWx0LiAgTWFrZSBgLW5vLXVuZGVmaW5lZCcgaW4gb3JkZXIgZm9yIHBlb3BsZSB0byBkZWNsYXJlIHRoYXQKIAlhIGxpYnJhcnkgaXMgZW50aXJlbHkgc2VsZi1jb250YWluZWQuICBUaGlzIHByZXZlbnRzIG1haW50YWluZXJzCiAJZnJvbSBhY2NpZGVudGFsbHkgY3JlYXRpbmcgc2hhcmVkIGxpYnJhcmllcyB0aGF0IHdvbid0IHdvcmsgb24KIAlBSVguICBSZXBvcnRlZCBieSBTdGVmYW4gV2VzdGVyZmVsZCBhbmQgRGFubnkgQmFja3guCgoJKiBsdGNvbmZpZy5pbiAoZWNobyk6IFVzZSBhbiBlY2hvIHZhcmlhYmxlLCBqdXN0IGFzIGluIGx0bWFpbi5pbiwKCWJlY2F1c2Ugd2UgbmVlZCBpdCBmb3IgcXVvdGluZyBzdWJzdGl0dXRpb25zLiAgRm9yIG1vc3Qgb2YgdGhlCglzY3JpcHQsIHRob3VnaCwgdXNlIHRoZSBkZWZhdWx0IGVjaG8sIGp1c3QgbGlrZSBBdXRvY29uZiBkb2VzLgoJV2l0aG91dCB0aGlzIHBhdGNoLCBjaGFyYWN0ZXIgXDAwMSBlbmRzIHVwIGluIGdsb2JhbF9zeW1ib2xfcGlwZS4KCVJlcG9ydGVkIGJ5IExhcnMgSGVja2luZyBhbmQgSvxyZ2VuIEZsdWsuCgoJKiBsdG1haW4uaW4gKGVjaG8pOiBTZXQgZGVmYXVsdCB0byBgZWNobz1lY2hvJy4gIE9vb3BzLiAgVGhhdCdzCgl3aGF0IHlvdSBnZXQgZm9yIHRlc3Rpbmcgb2JzY3VyZSBjb2RlIHBhdGhzIGFuZCBmb3JnZXR0aW5nIHRvCglyZXZlcnQgdG8gdGhlIG9yaWdpbmFsIHZlcnNpb24uICBSZXBvcnRlZCBieSBEYW5ueSBCYWNreC4KCjE5OTctMTEtMTQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMpOiBTZXQgdG8gYC1SJyBmb3IgRnJlZUJTRAogCTIuMi4gIEZyb20gU2VhbiBLZWxseS4KCShwb3N0dW5pbnN0YWxsX2NtZHMsIG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMpOiBDb21tYW5kcyB0byBydW4KIAlhZnRlciB1bmluc3RhbGwgbW9kZSBkZWxldGVzIHRoZSBsaWJyYXJpZXMuICBTdWdnZXN0ZWQgYnkgSm9vcCB2YW4KCWRlIFdlZ2UuCgkoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjKTogT24gSFAtVVgsIGFkZCB0aGUgYCR7d2x9LUUnCglleHBvcnRfZHluYW1pY19mbGFnX3NwZWMuICBSZXBvcnRlZCBieSBNYXR0aGlhcyBIb2VsemVyLgoKMTk5Ny0xMS0xMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5vcmc+CgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluIChzZWRfcXVvdGVfc3Vic3QpOiBPb3BzLiAgV2UgZm9yZ290IHRvCiAJcXVvdGUgYmFja3RpY2tzLiAgUmVwb3J0ZWQgYnkgSm9vcCB2YW4gZGUgV2VnZS4KCjE5OTctMTEtMDkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKHN5bWNvZGUpOiBPbiBJUklYLCBkb24ndCBleHRyYWN0IHVuZGVmaW5lZAoJc3ltYm9scy4gIFdoZW4gYSBmdW5jdGlvbiBpcyBpbmxpbmVkIGJ5IEcrKywgcmVmZXJlbmNlcyB0byBpdCBhcmUKCXN0aWxsIG1hcmtlZCBhcyB1bmRlZmluZWQgaW4gdGhlIG9iamVjdCBmaWxlLiAgVGhpcyBtZWFucyB0aGF0IG91cgoJc3ltYm9sIGZpbGUgY2F1c2VzIHVuZGVmaW5lZCByZWZlcmVuY2VzLCBiZWNhdXNlIHRoZXJlIGFyZQoJYWN0dWFsbHkgbm8gbWF0Y2hpbmcgZ2xvYmFsIHN5bWJvbHMuICBSZXBvcnRlZCBieSBQYXVsIEtlbmRhbGwuCgoxOTk3LTExLTA4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluOiBEb24ndCBmb3JnZXQgdG8gcmVkaXJlY3QgdGhlIENPTExFQ1RfTkFNRVMgbGlidG9vbAoJc2NyaXB0IGZyYWdtZW50IHRvIHRoZSBnZW5lcmF0ZWQgbGlidG9vbCwgcmF0aGVyIHRoYW4gdG8gc3Rkb3V0LgoKMTk5Ny0xMS0wNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChMRCk6IEFkZCBhIG1vcmUgc29waGlzdGljYXRlZCB0ZXN0IHRvIGRldGVybWluZSB0aGUKIAlBQkkgZmxhZyBvbiBJUklYIDYuICBTdWdnZXN0ZWQgYnkgTGFycyBIZWNraW5nIGFuZCBJYW4gTGFuY2UKIAlUYXlsb3IuCgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluIChDT0xMRUNUX05BTUVTKTogT25seSBleHBvcnQgdGhpcwoJdmFyaWFibGUgaWYgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgQUlYLiAgT3RoZXJ3aXNlLCB3ZSB0aWNrbGUgYSBnKysKCWJ1ZyB1bmRlciBJUklYLiAgRnJvbSBQYXVsIEtlbmRhbGwuCgoJKiBDaGFuZ2UgYnVnIHJlcG9ydGluZyBhZGRyZXNzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KCgkqIGx0Y29uZmlnLmluIChhbGxvd191bmRlZmluZWRfZmxhZyk6IE9TRi8xIDMueCBhbHNvIHJlcXVpcmVzIGEKIAl3aWxkY2FyZCBhcmd1bWVudCB0byBgLWV4cGVjdF91bnJlc29sdmVkJy4gIEZyb20gU3RlcGhhbiBLdWxvdy4KCjE5OTctMTEtMDYgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogbHRtYWluLmluIChsaW5rKTogVXNlIGxpYm5hbWVfc3BlYy4KCgkqIGx0Y29uZmlnLmluIChwaWNfZmxhZyk6IFNvbWVob3csIHRoZSBIUC1VWCBwaWNfZmxhZyAoYCtaJykgd2FzCiAJZHJvcHBlZCBiZXR3ZWVuIGxpYnRvb2wtMS4wIGFuZCBub3cuICBBZGQgaXQgYmFjayBpbi4gIFJlcG9ydGVkIGJ5CglBa2ltIERlbWFpbGxlLgoJSW50ZWdyYXRlZCBtb3JlIHBhdGNoZXMgZm9yIE9TLzIuICBGcm9tIEplZmYgRnJlZWRtYW4uCgkobGlibmFtZV9zcGVjKTogTmV3IHZhcmlhYmxlIGZvciBPU2VzIHRoYXQgZG9uJ3QgcmVxdWlyZSB0aGVpcgoJbGlicmFyaWVzIHRvIGxvb2sgbGlrZSBgbGliTkFNRS5hJy4KCgkqIGx0bWFpbi5pbiAobGluayk6IE9ubHkgdXNlIGdsb2JhbF9zeW1ib2xfcGlwZSBpZiBpdCBoYXMgYmVlbgoJZGVmaW5lZC4gIEZyb20gU3RlcGhhbiBLdWxvdy4KCgkqIGx0Y29uZmlnLmluIChnbG9iYWxfc3ltYm9sX3BpcGUpOiBQcm90ZWN0IEMgZnJhZ21lbnQgdW5kZXIgQysrCgljb21waWxlcnMuICBGcm9tIFN0ZXBoYW4gS3Vsb3cuCgoJKiBNYWtlZmlsZS5hbSAoJChzcmNkaXIpL2FjaW5jbHVkZS5tNCwKCSQoc3JjZGlyKS9kZW1vL2FjaW5jbHVkZS5tNCk6IENoYW5nZSBydWxlcyB0byB1c2UgTE5fUyBzbyB0aGF0Cgl0aGV5IGNhbiBiZSBydW4gb24gYW55IHN5c3RlbS4KCgkqIGx0Y29uZmlnLmluIChhcmNoaXZlX2NtZHMpOiBGb3IgTmV0QlNELCBkb24ndCBpbmNsdWRlIGRlcGxpYnMuCglGcm9tIERpZXRlciBCYXJvbi4KCgkqIGx0bWFpbi5pbiAobWtkaXIpOiBDaGVjayB0aGF0IHRoZSBkaXJlY3RvcnkgZG9lc24ndCBleGlzdCBiZWZvcmUKIAl3ZSBleGl0IHdpdGggZXJyb3IsIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHJhY2VzIGR1cmluZyBwYXJhbGxlbAogCWJ1aWxkcy4gIEZyb20gSC5KLiBMdS4KCShmYnNkX2hpZGVvdXNfc2hfYnVnKTogQXBwYXJlbnRseSwgc29tZSBGcmVlQlNEIC9iaW4vc2gncyBoYXZlIGEKIAlidWcgdGhhdCB3aWxsIGVtcHR5IGJhc2VfY29tcGlsZSB1bmxlc3Mgd2UgZG8gdGhpcyBkdW1teQogCWFzc2lnbm1lbnQuICBGcm9tIE1hcmMgdmFuIEtlbXBlbi4KCjE5OTctMTAtMjIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogbGlidG9vbC5tNCAobGlidG9vbF9zaGFyZWQsIGxpYnRvb2xfc3RhdGljKTogRml4ZWQgbG9naWMgZXJyb3IKCXRvIHJlZW5hYmxlIG92ZXJyaWRlIG9mIGxpYnRvb2wncyBkZWZhdWx0cyBieSBzZXR0aW5nCgllbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaW4gY29uZmlndXJlLmluLiAgUmVwb3J0ZWQgYnkgVG9tCglUcm9tZXkgYW5kIFN0ZXBoYW4gS3Vsb3cuCgoJKiBsdG1haW4uaW4gKGxpbmspOiBBZGQgZXhwbGljaXQgc3VwcG9ydCBmb3IgY29tcGlsZXIgb3B0aW9ucyB0aGF0CiAJYmVnaW4gd2l0aCBgKycuICBSZXBvcnRlZCBieSBBdWJlcnQgUGllcnJlLgoKMTk5Ny0xMC0yMCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5vcmc+CgoJKiBsdG1haW4uaW46IFNpbGx5IG1lLiAgQ2hhbmdlIGEgYnVuY2ggb2Ygb2NjdXJhbmNlcyBvZiAiKiAkZGlyICoiCglpbnRvICoiICRkaXIgIiouCgoJKiBsdGNvbmZpZy5pbiAocGljX2ZsYWcpOiBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIEFJWC4gIEZyb20gTWFyawoJS2V0dGVuaXMuICBJdCBpcyBhbHNvIHRoZSBkZWZhdWx0IGZvciBPU0YvMS4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKG9iamRpcik6IFF1b3RlIGRvdWJsZS1xdW90ZXMuICBGcm9tIE1hcmsKCUtldHRlbmlzLgoKCSogbHRjb25maWcuaW4gKGdsb2JhbF9zeW1ib2xfcGlwZSk6IFRoaXMgdmFyaWFibGUgaXMgbm90CiAJZG91YmxlLWV2YWxlZCwgc28gaXQgc2hvdWxkIG5vdCBiZSBkb3VibGUgcXVvdGVkLiAgRnJvbSBNYXJrCiAJS2V0dGVuaXMuCgoxOTk3LTEwLTE5ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251Lm9yZz4KCgkqIGx0Y29uZmlnLmluIChMRCk6IFNhbWUgYXMgYmVsb3cuCgoJKiBsaWJ0b29sLm00IChMRCk6IFNldCBMRCBpZiB3ZSBkaXNjb3ZlciBhbiBhYnNvbHV0ZSBwYXRoIHRvIEdOVQogCWxkLiAgVGhpcyBwcmV2ZW50cyBicmVha2FnZSB3aGVuIGAkQ0MgLXByaW50LXByb2ctbmFtZT1sZCcgcmV0dXJucwogCWFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lLiAgUmVwb3J0ZWQgYnkgVWxyaWNoIERyZXBwZXIuCgoJKiBsdGNvbmZpZy5pbjogUG9ydCB0byBPUy8yIHVzaW5nIEVNWC4gIEZyb20gSmVmZiBGcmVlZG1hbi4KCgkqIGx0bWFpbi5pbiAobGluayk6IFVzZSBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLgoKCSogbHRjb25maWcuaW4gKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMpOiBOZXcgdmFyaWFibGUgdG8KCXN1cHBvcnQgRExMIGxpYnJhcmllcy4KCgkqIGx0bWFpbi5pbiAobGluayk6IE9ubHkgYGV2YWwnIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyBpZiBpdCBpcwoJbm90IGVtcHR5LiAgUmVwb3J0ZWQgYnkgU3RlcGhhbiBLdWxvdy4KCjE5OTctMTAtMTggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUub3JnPgoKCSogbHRjb25maWcuaW4gKG9iamRpcik6IFVzZSB0aGUgLmxpYnMgZGlyZWN0b3J5IG9uIGFsbCBzeXN0ZW1zIGZvcgogCXdoaWNoIHRoYXQgbmFtZSBpcyB2YWxpZCwgYW5kIF9saWJzIG9uIHRoZSBvdGhlcnMgKGxpa2UgTVMtRE9TKS4KICAJU3VnZ2VzdGVkIGJ5IEp1ZXJnZW4gRXJoYXJkLgoKMTk5Ny0xMC0xNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5vcmc+CgoJKiBsdG1haW4uaW4gKGxpbmspOiBBZGRlZCBhIGJpdCBtb3JlIGludGVyLWxhbmd1YWdlIHN1cHBvcnQgdG8gdGhlCiAJc3ltYm9sIGZpbGUgZ2VuZXJhdGlvbiBwcm9jZXNzLgoJSW5zdGVhZCBvZiBjb21wbGFpbmluZyBhYm91dCB1bnJlY29nbml6ZWQgYXJndW1lbnQgc3VmZmljZXMsIHBhc3MKCXRoZW0gdG8gdGhlIGxpbmtlci4gIFRoaXMgcHJldmVudHMgbGlidG9vbCBmcm9tIGJhcmZpbmcgb24KCW1hbmRhdG9yeSBhcmd1bWVudHMgdG8gbGlua2VyIGZsYWdzLiAgUmVwb3J0ZWQgYnkgTWljaGFlbAoJVGllbWFubi4KCjE5OTctMTAtMDkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5pbiAobGluayk6IENoYW5nZSB0aGUgd3JhcHBlciBzY3JpcHQgdG8gZm9sbG93IHN5bWxpbmtzCglpbiBvcmRlciB0byBmaW5kIHRoaXNkaXIuICBUaGlzIHNob3VsZCBwdXQgdGhlIGZpbmFsIG5haWwgaW4gdGhlCgljb2ZmaW4gZm9yIHByb2JsZW1zIHdpdGggd3JhcHBlciBzY3JpcHRzLiAgRnJvbSBJYW4gTGFuY2UgVGF5bG9yLgoKMTk5Ny0xMC0wNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLmluOiBDaGFuZ2UgYSBmZXcgYCRlY2hvJyBjb21tYW5kcyBpbnRvIGAkc2hvdycgdG8gbWFrZQoJLS1zaWxlbnQgbW9kZSBiZWhhdmUgYXMgYWR2ZXJ0aXNlZC4KCgkqIGx0Y29uZmlnLmluIChhbGxvd191bmRlZmluZWRfZmxhZyk6IE9uIE9TRi8xIDQueCwgdXNlCiAJYC1leHBlY3RfdW5yZXNvbHZlZCBcKicuICBGcm9tIENocmlzdGlhbiBNb25kcnVwLgoKCSogbHRtYWluLmluIChpbnN0YWxsKTogQ2hhbmdlIGluc3RhbGwgbW9kZSB0byBhbGxvdyBhIHNwZWNpZmllZAoJL2Jpbi9zaCBhcmd1bWVudCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbnN0YWxsX3Byb2cuICBBbHNvLAoJc3BlY2lmeSB0aGUgc2hlbGwgdG8gcnVuIHdoZW4gaW52b2tpbmcgbGlidG9vbCByZWN1cnNpdmVseSBmb3IKCWZpbmlzaCBtb2RlLiAgRnJvbSBDaHJpcyBQcm92ZW56YW5vLgoKCSogbGlidG9vbC5tNCAoTElCVE9PTCk6IENoYW5nZSBkZWZpbml0aW9uIHRvIGluY2x1ZGUgJChTSEVMTCkuCglGcm9tIENocmlzIFByb3Zlbnphbm8uCgoJKiBsdGNvbmZpZy5pbjogUG9ydCB0byBVVFMgNC54LiAgRnJvbSBBbGlzdGFpciBDcm9va3MuCgoJKiBkZW1vL01ha2VmaWxlLmFtIChoYy1saWJmbGFnKTogQWRkIHJ1bGVzIHRvIG1ha2UgdGhpcyBiaW5hcnkgZm9yCgloYXJkY29kZS50ZXN0LgoKMTk5Ny0wOS0yNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW4gKExEKTogQXMgd2l0aCBsaWJ0b29sLm00LCBkb24ndCBvdmVycmlkZSBMRC4KCURvIGEgd2hvbGUgYnVuY2ggb2YgYWNfdCBxdW90aW5nLgoKMTk5Ny0wOS0yNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGlidG9vbC5tNCAoQU1fUFJPR19MRCk6IERvbid0IG92ZXJyaWRlIExEIGluIHRoZSBlbnZpcm9ubWVudC4KCjE5OTctMDktMjEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGxpYnRvb2wubTQsIGx0Y29uZmlnLmluIChOTSk6IEFyZ3VtZW50cyB0byB0aGUgZm9yIGxvb3AgbXVzdCBiZQoJd2hpdGVzcGFjZSBzZXBhcmF0ZWQuICBUaGlzIGZpeGVzIGEgYnVnIHVuZGVyIEZyZWVCU0QncyAvYmluL3NoLgoJRnJvbSBHZW9yZ2UgU2NvdHQuCgoxOTk3LTA5LTIwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uaW4gKGRlcGxpYnMpOiBXaGVuIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMsIGFsd2F5cyBhZGQKCS1sYyB0byBkZXBsaWJzLiAgUmVwb3J0ZWQgYnkgQW5kcmVhcyBKZWxsaW5naGF1cy4KCjE5OTctMDktMTUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluLCBsdG1haW4uaW4gKENPTExFQ1RfTkFNRVMpOiBJZiB0aGUgQ09MTEVDVF9OQU1FUwoJZW52aXJvbm1lbnQgdmFyaWFibGUgaGFzIG5vdCBiZWVuIHNldCwgc2V0IGl0IHRvIGVtcHR5LiAgVGhpcwoJYXBwYXJlbnRseSBmaXhlcyB0aGUgQUlYIGJ1ZyB3aXRoIEdDQydzIGNvbGxlY3QyLiAgUmVwb3J0ZWQgYnkKCU1hcmsgS2V0dGVuaXMuCgoJKiBkZW1vL01ha2VmaWxlLmFtLCBsdG1haW4uaW4sIHRlc3RzL2hhcmRjb2RlLnRlc3QgKG9iamRpcik6CiAJQ2hhbmdlZCBvYmpkaXIgdmFyaWFibGUgLmxpYnMgdG8gX2xpYnMuICBUaGlzIGlzIGFub3RoZXIgTVMtRE9TCiAJcG9ydGFiaWxpdHkgZml4LiAgU3VnZ2VzdGVkIGJ5IFJvYmVydCBIb2VobmUuCgoxOTk3LTA5LTEzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLmluIChoYXJkY29kZV9taW51c0wpOiBGaXggdHlwbyBieSByZW5hbWluZwogCWhhcmRjb2RlX21pbnVzTCB0byBoYXJkY29kZV9taW51c19MLiAgQWxzbyBhZGQgRnJlZUJTRAogCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMuIEZyb20gUGF1bCBUcmFpbmEuCgoJKiBsdG1haW4uaW4gKGxpbmspOiBIb25vdXIgbXVsdGlwbGUgYC1ycGF0aCcgZmxhZ3Mgd2hlbiBsaW5raW5nCglwcm9ncmFtcy4gIFN1Z2dlc3RlZCBieSBCZW5ndCBNYXJ0ZW5zc29uLgoJUXVvdGUgYXBwZWFyYW5jZXMgb2YgJGVjaG8gaW4gdGhlIHdyYXBwZXIgc2NyaXB0LiAgRnJvbSBBbGV4YW5kcmUKCU9saXZhLgoKCSogTWFrZWZpbGUuYW0sIGNvbmZpZ3VyZS5pbiwgdGVzdHMvdGxpYnRvb2w6IFVzZSBsdG1haW4uaW4gaW5zdGVhZAogCW9mIGx0bWFpbi5zaC5pbi4KCgkqIGx0bWFpbi5pbjogUmVuYW1lIGx0bWFpbi5zaC5pbiB0byBsdG1haW4uaW4uICBUaGlzIGZpeGVzIGEKCXBvcnRhYmlsaXR5IHByb2JsZW0gKG9uIE1TLURPUywgb2YgYWxsIHBsYWNlcyEpLiAgRnJvbSBSb2JlcnQKCUhvZWhuZS4KCjE5OTctMDktMTEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IERvIG5vdCB0cmFuc2Zvcm0gbGlidG9vbCBvYmplY3RzIHRvIHJlZ3VsYXIKCW9iamVjdHMgaWYgd2UgZGlkIG5vdCBidWlsZCBvbGQgbGlicy4gIFJlcG9ydGVkIGJ5IFRvbWFzIEhpbGxlci4KCjE5OTctMDktMDUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGhlbGxfZGVidWdfTERGTEFHUyk6IENoYW5nZSBoZWxsLnN0YXRpYyB0bwoJaGVsbC5kZWJ1ZyBpbiBvcmRlciB0byByZWZsZWN0IHRoZSBuZXcgc3RhdGljIGxpbmtpbmcgc2VtYW50aWNzLgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogQWRkIG5ldyBgLWFsbC1zdGF0aWMnIGZsYWcgdG8gcHJldmVudCBhbGwKCWR5bmFtaWMgbGlua2luZy4gIFRoZSBvbGQgYC1zdGF0aWMnIGZsYWcganVzdCBwcmV2ZW50cyBkeW5hbWljCglsaW5raW5nIGFnYWluc3QgbGlidG9vbCBsaWJyYXJpZXMuICBTdWdnZXN0ZWQgYnkgQmVuZ3QKCU1hcnRlbnNzb24uCgoJKiBsdGNvbmZpZy5pbiAod2l0aF9nbnVfbGQpOiBBZGQgYSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGFyZQoJYWN0dWFsbHkgdXNpbmcgR05VIGxkLiAgVGhpcyBmaXhlcyBhbiBpbmNvbnNpc3RlbmN5IHdoZW4gcnVubmluZwoJbHRjb25maWcgd2l0aG91dCB1c2luZyBsaWJ0b29sLm00LiAgUmVwb3J0ZWQgYnkgVWxyaWNoIERyZXBwZXIuCgkoZ2xvYmFsX3N5bWJvbF9waXBlKTogRGVsZXRlIHN5bWJvbHMgdGhhdCBhcmUgbm90IHZhbGlkIEMKCWlkZW50aWZpZXJzLiAgUmVwb3J0ZWQgYnkgSm9oYW4gRGFuaWVsc3NvbiBhbmQgQmVuZ3QgTWFydGVuc3Nvbi4KCjE5OTctMDktMDQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAoZWNobyk6IFF1b3RlIGFsbCB0aGUgdXNlcyBvZiBgZWNobycgaW4gYWxsIGV2YWwKCXN0YXRlbWVudHMuICBSZXBvcnRlZCBieSBCZW5ndCBNYXJ0ZW5zc29uIGFuZCBBbGV4YW5kcmUgT2xpdmEuCgkoZWNobyk6IE5lZWQgdG8gc3Vycm91bmQgdGVzdCBhcmdzIHdpdGggZG91YmxlIHF1b3Rlcywgb3IgdGhlIGVjaG8KCXRlc3QgZmFpbHMgb24gRGlnaXRhbCBVbml4IDQuMC4gIEZyb20gVG9kZCBLb3Zlci4KCjE5OTctMDgtMjggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAoZWNobyk6IENoYW5nZSB0ZXN0IHRvIG9uZSB0aGF0IHVzZXMgcHJpbnRmLgoJVGhpcyB3b3JrcyBvbiBBSVgsIHdoaWNoIGhhcyB0aGUgc2FtZSBwcm9ibGVtcyB0aGF0IFNvbGFyaXMgZG9lcywKCWJ1dCBubyB3b3JraW5nIGVjaG8gcHJvZ3JhbS4KCjE5OTctMDgtMjcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IE1ha2Ugc3VyZSB0aGF0IGNvbXBpbGVfY29tbWFuZCBhbmQKIAlmaW5hbGl6ZV9jb21tYW5kIGFyZSBhbHdheXMgZXZhbGVkLiAgUXVvdGUgYW55IHVua25vd24gbGlua2VyCiAJZmxhZ3Mgd2UgbmVlZCB0byBwYXNzIHRocm91Z2guCgkoY29tcGlsZSk6IFVzZSBxdW90aW5nIGZvciBmbGFncyB3ZSBwYXNzLgoJKGVjaG8pOiBJIGhhdGUgU3VuISAgVGhlIC91c3IvYmluL2VjaG8gb24gU29sYXJpcyBoYW5kbGVzCgliYWNrc2xhc2ggc2VxdWVuY2VzLCB3aGljaCBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGRvIGJhY2tzbGFzaAoJcXVvdGluZyB1c2luZyBlY2hvIGFuZCBzZWQuICBTbywgd2Ugc2VhcmNoIGZvciBhbiBlY2hvIHRoYXQgb2JleXMKCXRoZSBgZWNobyAnXHQnYCA9ICdcdCcgZXF1YWxpdHkuICBUaGVuIHdlIHVzZSBgJGVjaG8nIGV2ZXJ5d2hlcmUKCWluIGx0bWFpbi5zaC4KCVB1dCB0YWJzIGJhY2sgaW50byB0aGUgJHtJRlM9IAl9IHNlcXVlbmNlcy4gIEVtYWNzIHVudGFiaWZ5IGlzCglsaWJ0b29sIGJhbmUuCgoJKiBsdGNvbmZpZy5pbjogUXVvdGUgYWxsIHZhcmlhYmxlIHZhbHVlcyB0aGF0IG1heSBjb250YWluCgltZXRhY2hhcmFjdGVycyBjcmVhdGluZyB0aGUgbGlidG9vbCBzY3JpcHQuICBUaGlzIHByb3ZpZGVzCgljb21wbGV0ZSBwcm90ZWN0aW9uLCBzbyB0aGF0IGV2ZW4gc2luZ2xlLXF1b3RlcyBtYXkgYXBwZWFyIGluc2lkZQoJYSBsaWJ0b29sIHZhcmlhYmxlIHZhbHVlLgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogUXVvdGUgZmluYWxpemVfY29tbWFuZCBiZWZvcmUgcHV0dGluZyBpdCBpbgogCXRoZSB3cmFwcGVyIHNjcmlwdC4KCjE5OTctMDgtMjYgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAoc2VkX3F1b3RlX3N1YnN0KTogQ2hhbmdlIHRoZSBxdW90aW5nIHByb2NlZHVyZQogCWFnYWluLiAgSSB0aGluayB0aGF0IHRoZSBuZXcgb25lIGlzIHJvYnVzdCBmb3IgKmFsbCogY2hhcmFjdGVycywKIAlpbmNsdWRpbmcgd2hpdGVzcGFjZSBhbmQgbWV0YWNoYXJhY3RlcnMuCgoxOTk3LTA4LTI1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW46IENoYW5nZSBxdW90aW5nIHByb2NlZHVyZSBiZWNhdXNlIHNvbWUgc2hlbGxzCiAJY2Fubm90IGhhbmRsZSBgXScgaW4gc2NhbiBzZXRzLiAgRnJvbSBJYW4gRGFsbC4KCjE5OTctMDgtMjIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAoZXhlY3V0ZSk6IEFkZGVkIC1kbG9wZW4gZmxhZyBoYW5kbGluZy4gIFN1Z2dlc3RlZAoJYnkgQWxleGFuZHJlIE9saXZhLgoKMTk5Ny0wOC0yMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogQ2hhbmdlIGV4ZWN1dGFibGUgd3JhcHBlciB0byBmaXggdXAgdmFsdWUKCW9mIHRoaXNkaXIsIGFzIHdlbGwgYXMgcHJvZ2RpciwgaWYgdGhlICQwIHBhdGggZG9lc24ndCB3b3JrLiAgVGhpcwoJZ3VhcmFudGVlcyB0aGF0IHNobGlicGF0aF92YXIgaXMgc2V0IGNvcnJlY3RseS4gIEFkZCBzdXBwb3J0IGZvcgoJZXhlY3V0ZSBtb2RlLgoKCSogbHRtYWluLnNoLmluIChleGVjdXRlKTogTmV3IG1vZGUgdG8gYXV0b21hdGljYWxseSBzZXQKIAlzaGxpYnBhdGhfdmFyLCB3aGljaCBhbGxvd3MgZWFzeSBkZWJ1Z2dpbmcgb2YgdW5pbnN0YWxsZWQKIAlleGVjdXRhYmxlcyBhbmQgbGlicmFyaWVzLiAgU3VnZ2VzdGVkIGJ5IEtlbm5ldGggQWxiYW5vd3NraS4KCjE5OTctMDgtMjAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIE1ha2VmaWxlLmFtICgkKHNyY2RpcikvbHRjb25maWcpOiBVc2UgbGluZW5vLgoKCSogY29uZmlndXJlLmluOiBBZGQgQU1fUFJPR19BV0sgZm9yIGxpbmVuby4KCgkqIGxpbmVubzogTmV3IHByb2dyYW0gdG8gYXV0b21hdGljYWxseSBwdXQgbGluZSBudW1iZXJzIGluCglsdGNvbmZpZy4KCgkqIGxpYnRvb2wubTQsIGx0Y29uZmlnLmluIChBTV9QUk9HX0xEKTogWWV0IEFub3RoZXIgUmV3cml0ZSwgd2hpY2gKCWluY29ycG9yYXRlcyB0aGUgcmVzdWx0cyBvZiBgZ2NjIC1wcmludC1wcm9ncmFtLW5hbWU9bGQnLgoJU3VnZ2VzdGVkIGJ5IEFsZXhhbmRyZSBPbGl2YS4KCjE5OTctMDgtMTQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbjogQWNjZXB0IGAtLXF1aWV0JyBhbmQgYC0tc2lsZW50JyBmbGFncyB0byB0dXJuIG9mZgogCWNvbW1hbmQgZWNob2luZy4gIEZyb20gSnVlcmdlbiBBLiBFcmhhcmQuCgoJKGNvbXBpbGUpOiBSZWNvZ25pemUgdGhlIE9iamVjdGl2ZSBDIGAubScgZXh0ZW5zaW9uLiAgRnJvbSBKdWVyZ2VuCiAJQS4gRXJoYXJkLgoKCShjb21waWxlKTogU3VwcHJlc3MgZXJyb3Igb3V0cHV0IGZyb20gdGhlIHNlY29uZCBjb21waWxhdGlvbiAoaWYKIAlhbnkpIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHRob3NlIGZydXN0cmF0aW5nIGR1cGxpY2F0ZSBlcnJvcgogCW1lc3NhZ2VzLgoKMTk5Ny0wOC0xMiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW46IEFkZGVkIG1lc3NhZ2VzIHRvIGNvbmZpZy5sb2cgdG8gZGVzY3JpYmUgd2hhdCBzb3J0CiAJb2YgdGVzdCB3ZSBhcmUgcnVubmluZy4KCShwaWNfZmxhZyk6IEFkZGVkIGEgc2FuaXR5IGNoZWNrIGZvciBwaWNfZmxhZy4gIFRoaXMgc2hvdWxkIGZpeAogCWJ1Z3MgcmVwb3J0ZWQgdXNpbmcgdGhlIGNjIGJ1bmRsZWQgd2l0aCBIUC1VWCAxMC4gIFN1Z2dlc3RlZCBieQogCUJydW5vIEhhaWJsZSBhbmQgQWtpbSBEZW1haWxsZS4KCjE5OTctMDgtMDEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IEFkZCAtZGxvcGVuIGFuZCAtZGxwcmVvcGVuIHN1cHBvcnQgZm9yCglsaWJ0b29sIG9iamVjdHMuICBUaGlzIG1lYW5zIHRoYXQgZGxvcGVuZWQgbW9kdWxlcyBubyBsb25nZXIgbmVlZAoJdG8gYmUgc2hhcmVkIGxpYnJhcmllcy4KCgkqIGx0Y29uZmlnLmluIChwaWNfZmxhZyk6IEdDQyBvbiBJUklYIDYgYWx3YXlzIGJ1aWxkcyBQSUMuCglSZXBvcnRlZCBieSBJYW4gTGFuY2UgVGF5bG9yLgoKCSogbGlidG9vbC5tNCAoTEQpOiBBbHdheXMgYWRkIGAtbjMyJyB0byB0aGUgbGlua2VyIGlmIHdlIGFyZSB1c2luZwoJR0NDIG9uIElSSVggNi4gIFJlcG9ydGVkIGJ5IElhbiBMYW5jZSBUYXlsb3IuCgoxOTk3LTA3LTMwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsaWJ0b29sLm00IChBTV9QUk9HX0xJQlRPT0wpOiBFeHBsaWNpdGx5IGNoZWNrIGVuYWJsZV9zaGFyZWQgYW5kCiAJZW5hYmxlX3N0YXRpYyByYXRoZXIgdGhhbiBqdXN0IGVuYWJsZXZhbC4gIFRoaXMgYWxsb3dzCiAJY29uZmlndXJlLmluIHNjcmlwdHMgdG8gc2V0IHRoZWlyIG93biBkZWZhdWx0cy4gIFN1Z2dlc3RlZCBieQogCVRvbW15IFJlaWxseS4KCjE5OTctMDctMjkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbjogQWRkIE5MUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBoYW5kbGluZyBjb3BpZWQgZnJvbQoJbHRjb25maWcuaW4uICBSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlLgoJKGxpbmspOiBJZiBhbGxvd191bmRlZmluZWRfZmxhZyBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIHR1cm4gb24gb2xkCglsaWJyYXJpZXMuICBSZXBvcnRlZCBieSBBa2ltIERlbWFpbGxlLgoKCSogZGVtby9kbG1haW4uYyAobWFpbik6IFVzZSBkbGRfcHJlbG9hZGVkX3N5bWJvbF9jb3VudCB0byBkaXNwbGF5CglhIG1lc3NhZ2UgYWJvdXQgdGhlIHNvcnRlZG5lc3Mgb2YgdGhlIHN5bWJvbCB0YWJsZS4KCgkqIGx0Y29uZmlnLmluIChubGlzdCk6IFVzZSBhbiBubGlzdCBjb252ZW5pZW5jZSB2YXJpYWJsZSwgc28gdGhhdAogCWNvZGUgY2FuIGJlIHNoYXJlZCBkaXJlY3RseSB3aXRoIGx0bWFpbi5zaC5pbi4KCgkqIGx0Y29uZmlnLmluLCBsdG1haW4uc2guaW4gKGRsZF9wcmVsb2FkZWRfc3ltYm9sX2NvdW50KTogQ291bnQgdXAKIAl0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gdGhlIGRsZF9wcmVsb2FkZWRfc3ltYm9scy4gIFNldCB0byBgLTEnCiAJaWYgdGhlIGxpc3Qgd2Fzbid0IGJvdGggc29ydGVkIGFuZCBjb3VudGVkLiAgVGhpcyBhbGxvd3MKIAlhcHBsaWNhdGlvbnMgdG8gZG8gYSBxdWljayBiaW5hcnkgc2VhcmNoLCBpZiB0aGV5IGFyZSBzbyBpbmNsaW5lZC4KCjE5OTctMDctMjUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IFJlbW92ZSBjb2RlIGZvciBgLXZlcnNpb24tZmlsZScsIHNpbmNlIGl0CiAJaGFzIGJlZW4gbG9uZy1kZXByZWNhdGVkLgoKCURpc2FibGUgc3RhdGljIGxpbmtpbmcgaWYgaGFyZGNvZGVfZGlyZWN0IGlzIHVuc3VwcG9ydGVkIGFuZCB0aGVyZQogCWlzIG5vIHdvcmtpbmcgbGlua19zdGF0aWNfZmxhZy4gIFRoaXMgcHJvdmlkZXMgY29ycmVjdCBiZWhhdmlvdXIKIAlmb3IgYWxsIGNhc2VzIG9uIEFJWCAzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgY29sbGVjdDIgaXMgYnJva2VuCiAJb3Igbm90LiAgUmVwb3J0ZWQgYnkgTWFyayBLZXR0ZW5pcy4KCgkqIGx0Y29uZmlnLmluOiBGaXggdHlwbyBpbiB0ZXN0IHBvbGFyaXR5LiAgRnJvbSBNYXJrIEtldHRlbmlzLgoKMTk5Ny0wNy0yNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW4gKGhhcmRjb2RlX2RpcmVjdCk6IFNldCB0byBgdW5zdXBwb3J0ZWQnIGlmIGFpeDMgdXNlcwoJYSBicm9rZW4gY29sbGVjdDIuICBBZGFwdGVkIG91dCBvZiB0ZXN0IHJlc3VsdHMgZnJvbSBNYXJrCglLZXR0ZW5pcy4KCShsaW5rX3N0YXRpY19mbGFnKTogTWFrZSBzdXJlIHRoZSBsaW5rX3N0YXRpY19mbGFnIGFjdHVhbGx5IHdvcmtzCgl3aXRoIGEgdHJpdmlhbCBiaW5hcnkuCgoJKiBsdG1haW4uc2guaW4sIGx0Y29uZmlnLmluIChleHBvcnRfZHluYW1pY19mbGFnX3NwZWMpOiBSZW5hbWVkCiAJZnJvbSBleHBvcnRfZHluYW1pY19mbGFnIGJlY2F1c2Ugd2UgZXZhbCBpdCBpbiBsdG1haW4uc2guCgoJKiBsdG1haW4uc2guaW4gKGxpbmtfc3RhdGljKTogRG9uJ3QgZXZhbCBsaW5rX3N0YXRpY19mbGFnLgoKCSogZGVtby9kbG1haW4uYyAobWFpbik6IENoYW5nZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8gYmUgS05SCiAJY29tcGF0aWJsZS4gIEZyb20gS2F2ZWggUi4gR2hhemkuCgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBVc2Ugbm9fYnVpbHRpbl9mbGFnLiAgVGhpcyB3b3JrcyBhcm91bmQKCWNvbmZsaWN0aW5nIGRlZmluaXRpb25zIG9mIGJ1aWx0aW4gZnVuY3Rpb25zIHdpdGggYXQgbGVhc3QgR0NDLgoJUmVwb3J0ZWQgYnkgS2F6dWhpcm8gU2FzYXlhbWEuCgoJKiBsdGNvbmZpZy5pbiAobm9fYnVpbHRpbl9mbGFnKTogTmV3IGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbgoJZnVuY3Rpb25zIHdoZW4gY29tcGlsaW5nIGFuIG9iamVjdCBmaWxlLgoJKHBpcGVfd29ya3MpOiBVc2UgaXQuCgoxOTk3LTA3LTIzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbiAocGljX2ZsYWcpOiBBY2NvcmRpbmcgdG8gdGhlIGxpYmcrKyAyLjcuMiBjb25maWd1cmUKIAlzY3JpcHQsIERFQyBhbHBoYSBDUFVzIGFyZSBQSUMtb25seSwgYXMgd2VsbC4gIFJlcG9ydGVkIGJ5IEtldmluCiAJSmFjb2JzLgoKMTk5Ny0wNy0yMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW4sIGx0bWFpbi5zaC5pbjogUmVwbGFjZSBhbGwgb2NjdXJhbmNlcyBvZiAic2VkICdYOwogCVknIiB3aXRoICJzZWQgLWUgJ1gnIC1lICdZJyIuCgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBGaW5pc2ggZnVsbCBpbnRlZ3JhdGlvbiBmb3IgYC1kbG9wZW4nIGFuZAogCWAtZGxwcmVvcGVuJy4KCglGaXggdHdvIHNpbGx5IHR5cG9zIHdoZXJlIEkgdXNlZCBhIGNvbXBpbGVfY29tbWFuZCBpbiBwbGFjZSBvZiBhCglmaW5hbGl6ZV9jb21tYW5kLCBhbmQgdmljZSB2ZXJzYS4KCglDaGFuZ2UgdGhlIHdyYXBwZXIgc2NyaXB0IHRvIGNoZWNrIGEgaGFyZGNvZGVkIHBhdGggb25seSBpZiB0aGUKCWFyZ3ZbMF0gbWV0aG9kIGZhaWxzLiAgVGhpcyBpcyBhIGNvbXByb21pc2UgZm9yIHRoZSBwcmV2aW91cyB0d28KCXBhdGNoZXMsIGFuZCBzaG91bGQgc29sdmUgdGhlIG1ham9yaXR5IG9mIHByb2JsZW1zIHdpdGggd3JhcHBlcgoJc2NyaXB0cy4gIEZyb20gS2VubmV0aCBBbGJhbm93c2tpLgoKCShsaW5rKTogQ2hhbmdlIGEgcmVmZXJlbmNlIHRvIGhhcmRjb2RlX2xpYmRpcl9jb2xvbl9zZXBhcmF0ZWQgdG8KCXVzZSB0aGUgbmV3IGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgdmFyaWFibGUuCgoJKiBkZW1vL01ha2VmaWxlLmFtIChoZWxsZGxfTERGTEFHUyk6IEFkZCBgLWV4cG9ydC1keW5hbWljJyBhbmQKCWAtZGxwcmVvcGVuJyBmb3IgYnVpbGRpbmcgaGVsbGRsLgoKCSogZGVtby9kbG1haW4uYyAobWFpbik6IFN1Y2NlZWQsIGV2ZW4gaWYgbm9uZSBvZiB0aGUgbGliaGVsbG8KCXN5bWJvbHMgaGF2ZSBiZWVuIHByZWxvYWRlZC4KCjE5OTctMDctMjAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluIChnbG9iYWxfc3ltYm9sX3BpcGUpOiBBZGQgYFUnIHRvIHRoZSBhY2NlcHRlZCBnbG9iYWwKIAlzeW1ib2wgdHlwZXMuICBUaGlzIG1lYW5zIHRoYXQgd2Ugd2lsbCBnZXQgZHVwbGljYXRlIHN5bWJvbHMsIGJ1dAogCXdlJ2xsIGFsc28gYmUgc3VyZSB0byBnZXQgYWxsIGdsb2JhbCBzeW1ib2xzIHVzZWQgYnkgdGhlIHByb2dyYW0uCgoJKiBsdGNvbmZpZy5pbiAocGlwZV93b3JrcyksIGx0bWFpbi5zaC5pbiAobGluayk6IFNvcnQgYW5kIG1ha2UKCXN5bWJvbCBvdXRwdXQgdW5pcXVlLgoKMTk5Ny0wNy0xOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW4gKHBpcGVfd29ya3MpOiBDaGVjayB0byBtYWtlIHN1cmUgb3VyIGd1ZXNzZWQKCWdsb2JhbF9zeW1ib2xfcGlwZSBhY3R1YWxseSB3b3Jrcy4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IFJldmVydCBjaGFuZ2UgZnJvbSBLZW5uZXRoIEFsYmFub3dza2kuICBUaGUKIAl3cmFwcGVyIHNjcmlwdHMgYXJlIG1vcmUgcmVsaWFibGUgd2hlbiB0aGV5IGp1c3QgdXNlIHRoZSBhcmd2WzBdCiAJdmFsdWUuICBHZW5lcmFsbHksIHdoZW4gdGhlIGFyZ3ZbMF0gbWV0aG9kIGRvZXNuJ3Qgd29yaywgdGhlIHVzZXIKIAlpcyB0cnlpbmcgdG8gZG8gc29tZXRoaW5nIHdlaXJkIHdpdGggYW4gdW5pbnN0YWxsZWQgYmluYXJ5LCBhbmQKIAlzaG91bGQgdHJ5IGEgZGlmZmVyZW50IGFwcHJvYWNoLgoKCSogbHRjb25maWcuaW4sIGx0bWFpbi5zaC5pbiAoQ0MpOiBBbHdheXMgdXNlIGAkQ0MnIGluc3RlYWQgb2YKIAlgJGNjJy4gIFRoaXMgZml4ZXMgYSBGcmVlQlNEIGJ1Zy4gIFJlcG9ydGVkIGJ5IENodWNrIFJvYmV5LCBhbmQKIAlvdGhlcnMuCgoxOTk3LTA3LTE0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBJbiB3cmFwcGVyIHNjcmlwdHMsIGhhcmRjb2RlIHRoZSBjdXJyZW50CiAJZGlyZWN0b3J5IHRvIHByZXZlbnQgcGhvbnkgYXJndlswXSB2YWx1ZXMgZnJvbSBzY3Jld2luZyB1cCBvdXIKCXByb2dyYW0uICBGcm9tIEtlbm5ldGggQWxiYW5vd3NraS4KCjE5OTctMDctMTMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIE1ha2VmaWxlLmFtIChkZW1vX2Rpc3RmaWxlcyk6IEFkZCBkZW1vL2RsbWFpbi5jIHRvIHRoZQoJZGlzdHJpYnV0aW9uLgoKMTk5Ny0wNy0xMiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogZGVtby9NYWtlZmlsZS5hbTogQWRkIGhlbGxkbCwgbWFkZSBmcm9tIGRsbWFpbi5jLCB0byBkZW1vc3RyYXRlCglgLWRsb3BlbicgdXNhZ2UuCgoJKiBkZW1vL2RsbWFpbi5jOiBOZXcgZmlsZSB0byBkZW1vbnN0cmF0ZSBwcmVsb2FkZWQgbW9kdWxlcy4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IEFkZCBgLWRsb3BlbicgZmxhZyB0byBwcmVsb2FkIGR5bmFtaWMKIAltb2R1bGVzLCBldmVuIG9uIHN0YXRpYyBwbGF0Zm9ybXMuICBVc2UgYCROTScgYW5kCglgJGdsb2JhbF9zeW1ib2xfY21kJyB0byBleHRyYWN0IHN5bWJvbHMgZnJvbSByZXF1aXJlZCBmaWxlcy4KCShkbG5hbWUpOiBEZWxldGUgZGxuYW1lIG1vZGUgZW50aXJlbHkuICBJdCBpcyByZW5kZXJlZCBvYnNvbGV0ZQoJYmVjYXVzZSB0aGUgYC5sYScgZmlsZSBmb3JtYXQgaXMgbm93IGEgcHVibGljIGludGVyZmFjZS4KCgkqIGx0Y29uZmlnLmluIChOTSk6IE5ldyB2YXJpYWJsZSBmb3IgQlNELWNvbXBhdGlibGUgbm0gcHJvZ3JhbS4KCShnbG9iYWxfc3ltYm9sX2NtZCk6IFBpcGVsaW5lIHRvIGV4dHJhY3QgZ2xvYmFsIHN5bWJvbHMgZnJvbSB0aGUKCW5tIG91dHB1dC4KCgkqIGx0bWFpbi5zaC5pbjogVGhlIC5sYSBmaWxlIGhlYWRlciBzaG91bGQgZGVwZW5kIG9uIGBsdG1haW4uc2gnLAogCW5vdCBgJFBST0dSQU0nLgoJKGxpbmspOiBNYWtlIHN1cmUgJGV4cG9ydF9keW5hbWljX2ZsYWcgaXMgZXZhbCdlZCBiZWZvcmUgaXQgaXMKIAl1c2VkLgoKMTk5Ny0wNy0xMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbGlidG9vbC5zcGVjOiBOZXcgUmVkIEhhdCBQYWNrYWdlIE1hbmFnZXIgc3BlY2lmaWNhdGlvbiBmaWxlIGluCglvcmRlciB0byBoZWxwIHBlb3BsZSBwcmVwYXJlIGRpc3RyaWJ1dGlvbnMgb2YgbGlidG9vbCBmb3IgTGludXguCgoJKiBsdG1haW4uc2guaW46IEVsaW1pbmF0ZSB0d28gYWNjaWRlbnRhbCB1c2VzIG9mIHRoZSBOT05FIG1hZ2ljCiAJdmFsdWUuICBUaGVzZSB3ZXJlIGJyZWFraW5nIGxpYnRvb2wncyBiZWhhdmlvdXIgd2hlbiBubyBtb2RlIGlzCiAJc3BlY2lmaWVkLgoKMTk5Ny0wNy0wOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogUmVsZWFzZSAxLjAuCgoJKiBsdGNvbmZpZy5pbjogT24gU3VuT1MsIGFwcGVuZCAvdXNyL2V0YyB0byB0aGUgUEFUSCBiZWZvcmUKIAlydW5uaW5nIGxkY29uZmlnOyBvbiAqQlNELCBhcHBlbmQgL3NiaW4uICBUaGlzIHdhcyBkb25lIGluIGxpbmUKIAl3aXRoIHRoZSBMaW51eCBjaGFuZ2Ugc3VnZ2VzdGVkIGJ5IEtlbm5ldGggQWxiYW5vd3NraS4KCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGhhcmRjb2RlX3Rlc3RzKTogQWVzdGhldGljIGNoYW5nZSB0bwoJYWxwaGFiZXRpemUgb3JkZXIgb2YgY29tcGlsaW5nIHRoZSBoYXJkY29kZSB0ZXN0cy4KCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogRGVsZXRlIFJFQURNRS1hdXRvbWFrZS4KCgkqIFJFQURNRS1hdXRvbWFrZTogUmVtb3ZlIGZyb20gZGlzdHJpYnV0aW9uLgoKMTk5Ny0wNy0wMiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogSW4gdGhlIGV4ZWN1dGFibGUgd3JhcHBlciwgc3RyaXAgdHJhaWxpbmcKIAljb2xvbnMgZnJvbSB0aGUgc2hsaWJwYXRoX3ZhciBiZWNhdXNlIHNvbWUgbGQuc28ncywgbm90YWJseQogCU9wZW5CU0QgMi4wJ3MgKCEpLCBkb24ndCBwYXJzZSBjb2xvbi10ZXJtaW5hdGVkIHZhbHVlcyBjb3JyZWN0bHkuCiAgCUZyb20gVGltIFBpZXJjZS4KCjE5OTctMDctMDEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiwgbHRjb25maWcuaW46IEVsaW1pbmF0ZSB1c2VzIG9mIHRoZSBOT05FIG1hZ2ljCgl2YXJpYWJsZSB2YWx1ZS4gIFVzZSBhbiBlbXB0eSB2YXJpYWJsZSBpbnN0ZWFkLgoKCSogbHRjb25maWcuaW4gKHdpdGhfZ2NjLCB3aXRoX2dudV9sZCk6IERvIHRoZSB0ZXN0cyBmb3IgdGhlIEMKCWNvbXBpbGVyIGFuZCBsaW5rZXIgaWYgdGhlIHZhcmlhYmxlcyBhcmUgdW5zZXQsIG9yIGlmIHRoZXkgYXJlIG5vdAoJR05VIEMgYW5kIGxkLgoJKFJBTkxJQik6IEVsaW1pbmF0ZSByZWR1bmRhbnQgYGlmJyBzdGF0ZW1lbnQuCgoJKiBjb25maWd1cmUuaW46IFVzZSBBTV9QUk9HX0xELgoKCSogbGlidG9vbC5tNCAoQU1fUFJPR19MRF9HTlUpOiBOZXcgbWFjcm8gdG8gZGV0ZXJtaW5lIGlmIExEIGlzIEdOVQoJbGQuCgkoQU1fUFJPR19MRCk6IFJlbmFtZSBBTV9QQVRIX1BST0dfTEQgdG8gQU1fUFJPR19MRC4gIFBhcmFtZXRlcml6ZQoJc28gdGhhdCB0aGUgdXNlciBjYW4gc3BlY2lmeSBgLS13aXRoLWdudS1sZCcgb3IgYC0td2l0aG91dC1nbnUtbGQnCgl0byBpbmRpY2F0ZSBoaXMgcHJlZmVyZW5jZS4KCShBTV9QUk9HX0xJQlRPT0wpOiBVc2UgaXQuCgoxOTk3LTA2LTMwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogQXBwZW5kIC9zYmluIHRvIHRoZSBwYXRoIGJlZm9yZSBydW5uaW5nIGxkY29uZmlnIG9uCiAJTGludXguICBUaGlzIGhlbHBzIHN1cGVydXNlcnMgd2hvIGhhdmVuJ3Qgc2V0IHRoZWlyIFBBVEgKIAljb3JyZWN0bHkuICBTdWdnZXN0ZWQgYnkgS2VubmV0aCBBbGJhbm93c2tpLgoKMTk5Ny0wNi0yOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluOiBDaGFuZ2UgYWxsIHRoZSBgZXZhbCAiJHJ1biAuLi4iJyBzZXF1ZW5jZXMgdG8KIAlgJHJ1biAiZXZhbCAuLi4iJy4KCglDaGFuZ2UgYWxsIGAkbG5fcyAuLi4nIHNlcXVlbmNlcyB0byB1c2UgYChjZCAvZGlyICYmICRMTl9TIC4uLiknLgoJVGhpcyBpcyB0aGUgc2VxdWVuY2UgcmVjb21tZW5kZWQgYnkgdGhlIEF1dG9jb25mIG1hbnVhbCwgYW5kCglzaG91bGQgYXZvaWQgYW55IHByb2JsZW1zIG9uIG9sZGVyIG1hY2hpbmVzLiAgRWxpbWluYXRlIGFsbCB1c2VzCglvZiBgY3AgLXAnLiAgUmVwb3J0ZWQgYnkgQWtpbSBEZW1haWxsZS4KCgkoaW5zdGFsbCk6IFVzZSBgdGVzdCAkIyAtZ3QgMCcgaW5zdGVhZCBvZiBgdGVzdCAtbiAiJDEiJy4KCgkqIGx0Y29uZmlnLmluIChMTl9TKTogQWRkIHRlc3QgdG8gc2VlIGlmIGBsbiAtcycgd29ya3MuCgoJKiBsaWJ0b29sLm00OiBJbmNyZW1lbnQgc2VyaWFsIG51bWJlciwgYW5kIHJlcXVpcmUgQUNfUFJPR19MTl9TLgoKMTk5Ny0wNi0yNiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogQWRkIG1pc3NpbmcgYHRlc3QnIHN0YXRlbWVudC4gIFJlcG9ydGVkIGJ5CglBa2ltIERlbWFpbGxlLgoKMTk5Ny0wNi0yNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbGlidG9vbC5tNCAoTEQpOiBDb25zaXN0ZW50bHkgdXNlIGFjX2N2X3BhdGhfbGQgaW5zdGVhZCBvZgoJYW1fY3ZfcGF0aF9sZC4gIEZyb20gVGltIFBpZXJjZS4KCjE5OTctMDYtMjAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbjogUmVkbyB0d28gcm9idXN0bmVzcyBmaXhlcy4gIEFsZXhhbmRyZSBoYWQgdGhlCiAJY29ycmVjdCBhcHByb2FjaCwgYnV0IEkgYm90Y2hlZCB0aGVtLgoKCSogbHRjb25maWcuaW4gKGR5bmFtaWNfbGlua2VyKTogRGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIG9uCiAJTWtMaW51eCB1bmxlc3MgR05VIGxpYmMgaXMgaW4gdXNlLiAgUmVwb3J0ZWQgYnkgQWtpbSBEZW1haWxsZS4KCjE5OTctMDYtMTkgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAoaW5zdGFsbCk6IEFkZCBhIG1pc3NpbmcgYHRlc3QnIGNvbW1hbmQuICBSZXBvcnRlZAoJYnkgSm9lbCBXZWJlci4KCU1pc2NlbGxhbmVvdXMgZml4ZXMgdG8gaW1wcm92ZSByb2J1c3RuZXNzLiAgRnJvbSBBbGV4YW5kcmUgT2xpdmEuCgoxOTk3LTA2LTE0ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBDcmVhdGUgaW52YWxpZCBsaWJ0b29sIG9iamVjdHMgd2hlbiBwYXJ0aWFsCglsaW5raW5nIGlmIHdlIGRvbid0IGhhdmUgUElDLiAgRnJvbSBKZWZmIERhaXJpa2kuCgkoaW5zdGFsbCk6IEZpeCBidWcgaWYgbGlidG9vbCBvYmplY3QgaXMgaW5zdGFsbGVkIHRvIGEgZmlsZSBuYW1lCgl3aXRob3V0IGRpcmVjdG9yeSBjb21wb25lbnRzLiAgRnJvbSBKZWZmIERhaXJpa2kuCgoxOTk3LTA2LTEzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBNYWtlZmlsZS5hbSAoZGVtby9jb25maWd1cmUpOiBGaXggdXAgcnVsZXMgdG8gcnVuIGF1dG9jb25mLgoJKGFjbG9jYWwubTQpOiBOb3cgd2UgZGVwZW5kIG9uIG91ciBvd24gbGlidG9vbC5tNC4KCgkqIGNvbmZpZ3VyZS5pbiAoQU1fUEFUSF9QUk9HX0xEKTogVXNlIGl0LgoKCSogbGlidG9vbC5tNCAoQU1fUEFUSF9QUk9HX0xEKTogTmV3IG1hY3JvIHRvIGZpbmQgdGhlIGxpbmtlciB1c2VkCglieSB0aGUgQyBjb21waWxlci4KCShBTV9QUk9HX0xJQlRPT0wpOiBVc2UgaXQuCgoJKiBsdG1haW4uc2guaW4gKGluc3RhbGwsIHVuaW5zdGFsbCk6IFN1cHBvcnQgaW5zdGFsbGluZyBhbmQKCXVuaW5zdGFsbGluZyBgLmxvJyBmaWxlcy4gIEZyb20gSmVmZiBEYWlyaWtpLgoKMTk5Ny0wNi0xMSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogTWFrZWZpbGUuYW0gKGx0Y29uZmlnLCBsdG1haW4uc2gpOiBPbmx5IG1vdmUgaWYgJChzcmNkaXIpIGlzIG5vdAoJdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgRG9uJ3QgcmVnZW5lcmF0ZSBldmVyeSB0aW1lIHRoZSBwYWNrYWdlIGlzCglyZWNvbmZpZ3VyZWQuICBSZXBvcnRlZCBieSBUb20gVHJvbWV5LgoJKE1BSU5UQUlORVJDTEVBTkZJTEVTKTogQWRkZWQgbHRjb25maWcsIGx0bWFpbi5zaCwgc28gdGhhdAoJJChzcmNkaXIpIGlzIG5vdCBtZXNzZWQgd2l0aCBkdXJpbmcgYSByZWd1bGFyIGNsZWFuLgoKMTk5Ny0wNi0xMCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogTWFrZWZpbGUuYW0gKGx0Y29uZmlnLCBsdG1haW4uc2gpOiBCZSBzdXJlIHRvIG1vdmUgdGhlc2UgZmlsZXMKCWludG8gJChzcmNkaXIpIG9uY2UgdGhleSBhcmUgY3JlYXRlZC4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IERpc2FibGUgYnVpbGRpbmcgc3RhdGljIGxpYnJhcmllcy4KCVBlb3BsZSBzaG91bGQgdXNlIHRoZWlyIGZhdm91cml0ZSBBUiBhbmQgUkFOTElCIGNvbW1hbmRzLgoJRGlzYWJsZSBidWlsZGluZyBvbGQtc3R5bGUgb2JqZWN0cyBpZiBgLS1kaXNhYmxlLXN0YXRpYycgaXMKCWdpdmVuLiAgU3VnZ2VzdGVkIGJ5IFRvbSBMZWVzIGFuZCBTdGVwaGFuIEt1bG93LgoKMTk5Ny0wNi0wOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW4gKGhvc3RfY3B1LCBob3N0X3ZlbmRvciwgaG9zdF9vcyk6IFBhdGNoIHVwCiAJZGVmaW5pdGlvbnMsIHRvIGFsbG93IGZvciB0aGUgZmFjdCB0aGF0IHRoZSBob3N0X29zIG1heSBjb250YWluCiAJaHlwaGVucyAoYXMgaW4gbGludXgtZ251KS4gIEZyb20gU2NvdHQgR29laHJpbmcuCgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBNb3ZlIHRoZSBgZGxuYW1lJyBzZXR0aW5nIGNsb3NlciB0byB0aGUgdG9wCglvZiB0aGUgZmlsZS4gIFN1Z2dlc3RlZCBieSBEYXZpZCBNb3NiZXJnZXItVGFuZy4KCVN5bWxpbmsgdGhlIGxpYnRvb2wgYXJjaGl2ZSBpbnRvIHRoZSBgLmxpYnMnIGRpcmVjdG9yeSBzbyB0aGF0IGl0CgljYW4gYmUgZm91bmQgYnkgcHJvZ3JhbXMgdGhhdCB3YW50IHRvIGZpbmQgYSBsaWJyYXJ5J3MgZGxuYW1lIGJ5CglzZWFyY2hpbmcgTERfTElCUkFSWV9QQVRILiAgUmVwb3J0ZWQgYnkgRGF2aWQgTW9zYmVyZ2VyLVRhbmcuCgoxOTk3LTA2LTA2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBUZWxsIHBlb3BsZSB0byByZXBvcnQgYnVncyB0byB0aGUgbmV3IGxpYnRvb2wgbWFpbGluZyBsaXN0LAoJPGJ1Zy1saWJ0b29sQGdudS5haS5taXQuZWR1Pi4KCjE5OTctMDYtMDUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluIChhbGxvd191bmRlZmluZWRfZmxhZyk6IE5ldyB2YXJpYWJsZSB0aGF0IGltcGxlbWVudHMKCWAtYWxsb3ctdW5kZWZpbmVkJy4KCShhcmNoaXZlX2NtZHMpOiBFbmFibGUgQysrIGNvbnN0cnVjdG9ycyBmb3IgRnJlZUJTRCAyLjIuICBGcm9tCglEYXZpZCBOdWdlbnQuCgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBBY2NlcHQgbmV3IGAtYWxsb3ctdW5kZWZpbmVkJyBmbGFnIHdoZW4KIAlidWlsZGluZyBsaWJ0b29sIGxpYnJhcmllcy4gIFRoaXMgdGVsbHMgbGlidG9vbCB0byBhbGxvdwogCXVucmVzb2x2ZWQgc3ltYm9scyB0byBleGlzdCBpbiBzaGFyZWQgbGlicmFyaWVzLiAgQmFzaWNhbGx5LCB0aGlzCiAJdHVybnMgb2ZmIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLiAgU3VnZ2VzdGVkIGJ5IElhbiBMYW5jZSBUYXlsb3IuCgoxOTk3LTA1LTI2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsaWJ0b29sLm00IChMRCk6IE9uIGF0IGxlYXN0IElSSVgsIG1hbnkgZGlmZmVyZW50IGZsYWdzIG5lZWQgdG8KCWJlIHByb3BhZ2F0ZWQgdG8gdGhlIGxpbmtlciBpZiB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBjb21waWxlcgoJY29tbWFuZCBsaW5lLiAgUmVwb3J0ZWQgYnkgQW50aG9ueSBHcmVlbi4KCjE5OTctMDUtMTAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBUcml2aWFsIHBvcnQgdG8gRnJlZUJTRCAzLiAgRnJvbSBEYXZpZCBOdWdlbnQuCgoxOTk3LTA0LTI1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBSZW1vdmUgYWxsIHRyYWNlcyBvZiBgLXdob2xlLWFyY2hpdmUnLAoJYC1uby13aG9sZS1hcmNoaXZlJywgYW5kIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyaWVzLiAgVGhleSB3ZXJlCgltb3JlIHRyb3VibGUgdGhhbiB0aGV5J3JlIHdvcnRoLiAgSWYgdGhlc2UgYXJlIGV2ZXIgcmVpbXBsZW1lbnRlZCwKCXRoZXkgbmVlZCBtb3JlIGNhcmVmdWwgYXR0ZW50aW9uIHRvIG1ha2UgcG9ydGFibGUuCgoJKiBsaWJ0b29sLm00LCBsdGNvbmZpZy5pbjogQWRkZWQgYSBgLS1kaXNhYmxlLXN0YXRpYycgZmxhZyB0byB0dXJuCglvZmYgc3RhdGljIGxpYnJhcnkgY3JlYXRpb24uICBGcm9tIFRvbSBMZWVzICh3aG8gZmluYWxseSBjb252aW5jZWQKCW1lIHRoYXQgaXQgd2FzIHRoZSBSaWdodCBUaGluZyB0byBkbykuCgoxOTk3LTA0LTIyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGhhcmRjb2RlX3J1bnBhdGhfdmFyLCBydW5wYXRoX3Zhcik6IFVzZSB0aGVtLCBpZgoJdGhlIGxpbmtlciBoYXMgbm8gLXJwYXRoIGZsYWcuCglRdW90ZSB0aGUgdmFsdWVzIHdlIHVzZSB0byBzZXQgcnVucGF0aF92YXIgYW5kIHNobGlicGF0aF92YXIuCgkobGluayk6IFVzZSBsaWJvYmpsaWJzIGZvciBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcmllcy4KCgkqIGx0Y29uZmlnLmluIChoYXJkY29kZV9ydW5wYXRoX3ZhciwgcnVucGF0aF92YXIpOiBBZGQgbmV3Cgl2YXJpYWJsZXMgdG8gZGVzY3JpYmUgbGlua2VycyB0aGF0IGhvbm91ciBgTERfUlVOX1BBVEgnLgoJKGhvc3RfY3B1LCBob3N0X29zKTogVXNlIHRoZXNlIG1vcmUgc3BlY2lmaWMgdmFyaWFibGVzLCByYXRoZXIKCXRoYW4gdGhlIGZ1bGwgY2Fub25pY2FsIGhvc3Qgc3lzdGVtIG5hbWUuCgoJKiBsdG1haW4uc2guaW4gKGRsbmFtZSk6IERpc3Rpbmd1aXNoIGJldHdlZW4gbWlzc2luZwogCWAtZXhwb3J0LWR5bmFtaWMnIGFuZCB3aGVuIHRoZSBsaWJyYXJ5IGlzIG9ubHkgc3RhdGljYWxseSBsaW5rZWQuCgoxOTk3LTA0LTIxICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogVHJpdmlhbCBwb3J0IHRvIE9wZW5CU0QgYnkgbWFraW5nIGl0IGFuIGFsaWFzIGZvcgoJTmV0QlNELiAgRnJvbSBUaW0gUGllcmNlLgoKMTk5Ny0wNC0xNiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW46IFRlbXBvcmFyeSBtZWFzdXJlcyB0byBjaGVjayBmb3IgYSBicm9rZW4gY29sbGVjdDIKCXByb2dyYW0uICBSaWdodCBub3csIHdlIGp1c3Qgc2VlIGlmIHdlJ3JlIHVzaW5nIEdDQyBvbiBBSVggMy4KCjE5OTctMDQtMTMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobW9kZSk6IFVzZSBgZWdyZXAgLWUnIHdoZW4gaW5mZXJyaW5nIHRoZSBvcGVyYXRpb24KCW1vZGUuCgoxOTk3LTA0LTEyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbiAobGlua2VyKTogU29tZSBHTlUgbGQncyBkb24ndCBhY2NlcHQgYC0tdmVyc2lvbicsCglidXQgZG8gYWNjZXB0IGAtdicuICBGcm9tIEp1a2thIEhvbmtlbGEuCgkobGRfc2hsaWJzKTogQUlYIGxvc3NhZ2UgbWF5IGJlIHNldHRsaW5nIGRvd24uICBBSVggMy4yLjUgbGQgZG9lcwogCSpub3QqIGhhcmRjb2RlIGRpcmVjdCBsaWJyYXJpZXMsIGJ1dCBBSVggNC4xLls0NV0gbGQgZG9lcy4KCjE5OTctMDQtMDcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluIChoYXJkY29kZV9hY3Rpb24pOiBGaXggc2lsbHkgbG9naWMgZXJyb3IuICBGcm9tCglCcnVubyBIYWlibGUuCgoxOTk3LTA0LTA1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGluc3RhbGwpOiBSZWxpbmsgaWYgaGFyZGNvZGVfYWN0aW9uIGlzIGByZWxpbmsnLAoJcmF0aGVyIHRoYW4gdXNpbmcgY29tcGxleCBjb25kaXRpb25hbHMgYmFzZWQgb24gdGhlIG90aGVyCgloYXJkY29kZSB2YXJpYWJsZXMuCgoJKiBsdGNvbmZpZy5pbiAoaGFyZGNvZGVfYWN0aW9uKTogU2V0IHRvIGByZWxpbmsnLCBub3QgYGltbWVkaWF0ZScsCiAJaWYgd2UgY2FuIG9ubHkgaGFyZGNvZGUgZXhpc3RpbmcgZGlyZWN0b3JpZXMuICBSZWFycmFuZ2UKIAljb25kaXRpb25hbHMgdG8gbWFrZSB0aGUgaW50ZW50IGNsZWFyZXIsIG90aGVyd2lzZSB0aGlzIGNhbiBiZSBvbmUKIAloZWxsaXNoIHBpZWNlIG9mIGNvZGUgZm9yIHRoZSBhbHJlYWR5LWRpenp5IGxpYnRvb2wgbWFpbnRhaW5lci4KCjE5OTctMDQtMDIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIHJlcGxmdW5jLm00OiBEZWxldGUgZnJvbSB0aGUgZGlzdHJpYnV0aW9uLiAgRG9jdW1lbnRhdGlvbiBub3cKCWRlc2NyaWJlcyBob3cgdG8gc2V0IExUQUxMT0NBIGFuZCBMVExJQk9CSlMgaW4geW91ciBvd24KCWNvbmZpZ3VyZS5pbi4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IE1ha2Ugc3VyZSBhIGxpYnRvb2wgbGlicmFyeSBvbmx5IGNvdW50cyBhcwoJYSBzaGFyZWQgbGlicmFyeSBpZiBpdHMgbGlicmFyeV9uYW1lcyBhcmUgbm9uLW51bGwuCglVc2UgdGltZXN0YW1wcyBmb3IgLmxvJ3Mgd2hlbiBQSUMgaXMgdHVybmVkIG9mZiwgcmF0aGVyIHRoYW4KCXN5bWxpbmtpbmcgdG8gdGhlIHJlYWwgb2JqZWN0LiAgVGhpcyBoZWxwcyBpbnZhbGlkIG1peHR1cmVzIG9mIFBJQwoJYW5kIG5vbi1QSUMgdG8gZmFpbC4KCjE5OTctMDQtMDEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogRGlzdHJpYnV0ZSBsaWJ0b29sLnByai4KCgkqIFNoYW1lbGVzcyBwbHVnOiBDaGFuZ2VkIHNvdXJjZSBjb2RlIG1hbmFnZW1lbnQgc3lzdGVtIGZyb20gQ1ZTCgl0byBQUkNTLgoKCSogbGlidG9vbC5zY206IEluaXRpYWwgR3VpbGUgaW1wbGVtZW50YXRpb24gb2YgbGlidG9vbC4KCgkqIGx0bWFpbi5zaC5pbjogQW4gdW5leHBlY3RlZCBpbmNvbnNpc3RlbmN5IGluIG15IHdob2xlIGFwcHJvYWNoCiAJdG8gc2hhcmVkIGxpYnJhcmllcyBoYXMgcHJvdmVuIHRoYXQgbGlidG9vbCBuZWVkcyB0byBiZSBjb21wbGV0ZWx5CiAJcmV3cml0dGVuIGlmIEknbSBnb2luZyB0byBnaXZlIGZ1bGwgc2hhcmVkIGxpYnJhcnkgc3VwcG9ydCBmb3IKIAlwbGF0Zm9ybXMgdGhhdCBkb24ndCB1c2UgdGhlIEdOVSBDIGxpYnJhcnkgdmVyc2lvbiAyICh3aGljaCB0byBteQogCWtub3dsZWRnZSBjdXJyZW50bHkgb25seSB3b3JrcyBvbiBHTlUgSHVyZCBhbmQgTGludXgvR05VIHN5c3RlbXMpLgogIAlQb3J0aW5nIHRoZSBHTlUgQyBsaWJyYXJ5IHNob3VsZCBub3QgYmUgZGlmZmljdWx0LCB0aG91Z2guCgoJUGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgZGxvcGVuKDMpIGZhbWlseSBvZiBmdW5jdGlvbnMgd2lsbAogCW5lZWQgdG8gaW5zdGFsbCBHTlUgRExEIHZlcnNpb24gNCBpbiBvcmRlciB0byBidWlsZCBhbnkga2luZCBvZgogCWxpYnJhcmllcyBhdCBhbGwuICBVbmZvcnR1bmF0ZWx5LCBETEQgNCB3b24ndCBiZSByZWxlYXNlZCBmb3IgYQogCXdoaWxlLCBiZWNhdXNlIEkgbWFpbnRhaW4gaXQsIGFuZCBJJ20gdG9vIGJ1c3kgd29ya2luZyBvbiBsaWJ0b29sLgoKCUknbGwga2VlcCB0aGUgb2xkIGx0Y29uZmlnL2x0bWFpbi5zaCBpbXBsZW1lbnRhdGlvbiBhcm91bmQgZm9yIGFzCiAJbG9uZyBhcyBJIGNhbiwgYW5kIGNvbnRpbnVlIGFwcGx5aW5nIGJ1ZyBmaXhlcywgc28gdGhhdCBJJ2xsIGhhdmUKIAlhIHJlYXNvbmFibGUgc3RhcnRpbmcgcG9pbnQgZm9yIHRoaXMgbmV3IGxpYnRvb2wgaW1wbGVtZW50YXRpb24uCgoJSXQgbG9va3MgbGlrZSB0aGlzIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgZXZlbiBtb3JlIGNvbXBsZXggdGhhbgogCXRoZSBvcmlnaW5hbCAocHJlLTAuNykgbGlidG9vbC4gIEluaXRpYWwgZXN0aW1hdGVzIHNob3cgdGhhdCBpdAogCW1heSBiZSB1cCB0byAzIHRpbWVzIHNsb3dlciwgYW5kIDUgdGltZXMgbGFyZ2VyIHRoYW4gbGlidG9vbC0wLjkuCiAgCUknbGwgcHJvYmFibHkgaGF2ZSB0byByZXdyaXRlIGl0IGluIEd1aWxlIHRvIGdldCByZWFzb25hYmxlCiAJcGVyZm9ybWFuY2UsIHdoaWNoIHdpbGwgc2V2ZXJlbHkgbGltaXQgaXRzIHBvcnRhYmlsaXR5IGZvciBhCiAJd2hpbGUuCgoJVGhhdCB3aWxsIGFsc28gaW50cm9kdWNlIGEgYm9vdHN0cmFwcGluZyBpc3N1ZSwgc2luY2UgdGhlIG5leHQKIAlyZWxlYXNlIG9mIEd1aWxlIHdpbGwgdXNlIGxpYnRvb2wgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcy4gIFNvLAogCWlmIHVzZXJzIHdhbnQgdG8gaGF2ZSBzaGFyZWQgR3VpbGUgbGlicmFyaWVzLCB0aGV5IHdpbGwgaGF2ZSB0bwogCWNvbmZpZ3VyZSBHdWlsZSB3aXRoIGAtLWRpc2FibGUtc2hhcmVkJywgY29tcGlsZSBpdCwgaW5zdGFsbCBpdCwKIAl0aGVuIHJlY29uZmlndXJlIEd1aWxlIHdpdGggYC0tZW5hYmxlLXNoYXJlZCcgYW5kIHJlcGVhdC4KCglJIHdhcyBob3BpbmcgdG8gZ2V0IGxpYnRvb2wgMS4wIG91dCB0aGUgZG9vciBieSBlYXJseSBBcHJpbCwgYnV0CiAJbm93IGl0IGxvb2tzIGxpa2UgaXQgd2lsbCB0YWtlIGF0IGxlYXN0IGFub3RoZXIgeWVhciBiZWZvcmUgaXQnbGwKIAliZSB1c2FibGUgYnkgdGhlIHB1YmxpYyBhdCBsYXJnZS4gIEFwcmlsIGZvb2xzLiAgbGlidG9vbC5zY20KCWRvZXNuJ3QgZXhpc3QgeWV0LCBlaXRoZXIuCgoJKiBsdGNvbmZpZy5pbiAodmVyaWZ5X2hvc3QpOiBSZW1vdmUgcmVkdW5kYW50IGBUcmFuc2Zvcm0gKi0qLWxpbnV4KgoJdG8gKi0qLWxpbnV4LWdudSonLiAgRnJvbSBCcnVubyBIYWlibGUuCgoxOTk3LTAzLTMxICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBNYWtlZmlsZS5hbTogVXNlIHRoZSBuZXcgQVVUT01BS0UgYW5kIEFDTE9DQUwgdmFyaWFibGVzLgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogT25seSBmYWlsIGlmIGEgY29udmVuaWVuY2UgbGlicmFyeSBkb2Vzbid0CglleGlzdCwgYW5kIHRoZSB1c2VyIHNwZWNpZmllZCAtd2hvbGUtYXJjaGl2ZS4KCUZpeCBzaGVsbCBxdW90aW5nIHRoYXQgd2FzIGJyZWFraW5nIEBPVVRQVVRAIHN1YnN0aXR1dGlvbi4KCjE5OTctMDMtMjggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IFVzZSB0aGUgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvci4KCUNvbnZlbmllbmNlIGxpYnJhcmllcyBhcmUgbGlidG9vbCBvYmplY3RzIGlmIHdlJ3JlIG5vdCBidWlsZGluZwoJbGlidG9vbCBsaWJzLgoKCSogbHRjb25maWcuaW4gKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IpOiBBZGRlZCBpbiBjYXNlIHRoZQogCWxpbmtlciBvbmx5IGhvbm91cnMgdGhlIGxhc3Qgb2YgdGhlIC1ycGF0aCBmbGFncyAoYnV0IGl0IGNhbgogCWNvbnRhaW4gbXVsdGlwbGUgY29sb24tc2VwYXJhdGVkIGRpcmVjdG9yaWVzKSwgc3VjaCBhcyBvbiBPU0YvMS4KICAJUmVwb3J0ZWQgYnkgQ2FybCBELiBSb3RoLgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogU2V0IHRoZSBkbG5hbWUgaWYgLWV4cG9ydC1keW5hbWljIGlzIGdpdmVuLgoJKGluc3RhbGwsIHVuaW5zdGFsbCk6IEhhbmRsZSB0aGUgZGxuYW1lIGZpbGUgc2VwYXJhdGVseS4KCgkqIGx0Y29uZmlnLmluIChleHBvcnRfZHluYW1pY19mbGFnKTogQWRkZWQgdG8gYWxsb3cgcHJvZ3JhbXMgdG8KCXVzZSByZWZsZXhpdmUgZGxvcGVucy4KCgkqIGx0bWFpbi5zaC5pbjogSW5jbHVkZSB0aGUgbW9kZSBuYW1lIGluIGFueSBoZWxwIG1lc3NhZ2VzLgoJKGRsbmFtZSk6IE5ldyBtb2RlIHRvIGdpdmUgdGhlIG5hbWUgdG8gYmUgdXNlZCB3aXRoIGRsb3BlbigzKS4KCgkqIGx0Y29uZmlnLmluIChBUik6IEFsbG93IEFSIHRvIGJlIHNldCBieSB0aGUgdXNlciwgYW5kIGV4cG9ydCBpdAoJdG8gbHRtYWluLnNoLgoKCSogbHRtYWluLnNoLmluOiBSZW1vdmUgYnJva2VuIHByb2ZpbGVkIGxpYnJhcnkgc3VwcG9ydC4KCUFkZGVkIGAtd2hvbGUtYXJjaGl2ZScgYW5kIGAtbm8td2hvbGUtYXJjaGl2ZScgdG8gbWFuaXB1bGF0ZQoJY29udmVuaWVuY2UgbGlicmFyaWVzLgoKMTk5Ny0wMy0yNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogQWxsb3cgdGhlIGNyZWF0aW9uIG9mIHN0YXRpYyBjb252ZW5pZW5jZQoJbGlicmFyaWVzIG1hZGUgb2YgbGlidG9vbCBvYmplY3RzLiAgU3VnZ2VzdGVkIGJ5IERhdmlkCglNb3NiZXJnZXItVGFuZy4KCjE5OTctMDMtMjUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBPbiBBSVgsIGxpYnRvb2wgYWxzbyBuZWVkcyB0byBsb29rIGZvciBgQicgc3ltYm9scwogCWluIG5tIG91dHB1dC4gIFRoZXNlIGFyZSBnbG9iYWwgdmFyaWFibGUgZGVmaW5pdGlvbnMuCgoJKiBsdG1haW4uc2guaW46IExpbmtpbmcgd2l0aCAtc3RhdGljIHNob3VsZCBsaW5rIGFnYWluc3QgdGhlCglsaW5rbGliIGlmIG9sZF9saWJyYXJ5IGlzIGVtcHR5IChsaWtlIGl0IGlzIG9uIEFJWCkuCgoJKiBsdGNvbmZpZy5pbjogQ2hhbmdlIHRoZSBvcmRlciBvZiBPUyBkZXRlY3Rpb24sIHNvIHRoYXQKIAlsaW51eC1nbnUqIGlzIGRldGVjdGVkIGJlZm9yZSBnbnUqLgoKCSogTWFrZWZpbGUuYW0gKGxpYnRvb2wpOiBVc2UgdGhlIGNvcnJlY3QgQ0MsIFJBTkxJQiwgTEQsIHdoZW4KCWdlbmVyYXRpbmcgbGlidG9vbC4gIEZyb20gQ2FybCBELiBSb3RoLgoKCSogY29uZmlndXJlLmluOiBGaW5kIG91dCB0aGUgdXNlci1zdXBwbGllZCBDQywgTEQsIFJBTkxJQi4gIEZyb20KCUNhcmwgRC4gUm90aC4KCjE5OTctMDMtMjQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbjogTGlua2luZyB3aXRoIC1zdGF0aWMgc2hvdWxkIGxpbmsgYWdhaW5zdCB0aGUgb2xkCglsaWJyYXJ5LCBub3QgbGlua2xpYi4KCgkqIFJFQURNRS1hdXRvbWFrZTogVXBkYXRlZCB0byBwb2ludCB0byBBdXRvbWFrZSAxLjFtLgoKMTk5Ny0wMy0xNSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogZGVtby9tYWluLmM6IFVzZSBpdC4KCgkqIGRlbW8vZm9vLmg6IERlY2xhcmUgaXQuCgoJKiBkZW1vL2Zvby5jOiBBZGRlZCBkZWZpbml0aW9uIG9mIGBub3RoaW5nJyBzbyB0aGF0IHdlIGhhdmUgYW4KCWdsb2JhbCB2YXJpYWJsZSBkZWZpbml0aW9uLCBhcyB3ZWxsIGFzIGZ1bmN0aW9ucy4KCjE5OTctMDMtMTIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBNYWtlIHN1cmUgZWl0aGVyIGVuYWJsZV9zaGFyZWQgb3IgZW5hYmxlX3N0YXRpYyBpcwoJY29uZmlndXJlZC4gIFJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkuCgoJKiBsdG1haW4uc2guaW46IEJvbWIgb3V0IGlmIG5vIGxpYnJhcnkgdHlwZXMgYXJlIGNvbmZpZ3VyZWQuCgoxOTk3LTAyLTIyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLnNoLmluIChoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjKTogUmVuYW1lZAogCWZyb20gYGhhcmRjb2RlX2xpYmRpcl9mbGFnJy4KCShsaWJyYXJ5X25hbWVzX3NwZWMpOiBSZW5hbWVkIGZyb20gYGxpYl9uYW1lcycuCgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLnNoLmluIChoYXJkY29kZV9hY3Rpb24pOiBDaGFuZ2UgdmFsdWUgZnJvbQogCWBycGF0aCcgdG8gYGltbWVkaWF0ZScuCgoJKiByZXBsZnVuYy5tNDogQWRkIEFNX0ZVTkNfQUxMT0NBLCBBTV9GVU5DX01FTUNNUCwgYW5kCiAJQU1fU1RSVUNUX1NUX0JMT0NLUy4KCjE5OTctMDItMTggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBUcmFuc2Zvcm0gKi0qLWxpbnV4KiB0byAqLSotbGludXgtZ251KiB0byBzdXBwb3J0CglvbGQtc3R5bGUgY29uZmlnLmd1ZXNzIHNjcmlwdHMuCgoxOTk3LTAyLTE3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW46IENyZWF0ZSBvYmpkaXIgKmJlZm9yZSogbGlua2luZyBhIHByb2dyYW0gaW50byBpdC4KCjE5OTctMDItMTIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBBbnkgbGQgLS12ZXJzaW9uIHRoYXQgcmV0dXJucyBHTlUgaXMgcHJvYmFibHkgYSBHTlUKCWxkLiAgRnJvbSBNYXJjdXMgRGFuaWVscy4KCgkqIGxpYnRvb2wubTQ6IEFkZGVkIEFNX1JFUExBQ0VfRlVOQ1MuCgoxOTk3LTAyLTExICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogVHJpdmlhbCBwb3J0IHRvICotKi1vc2Y0LiAgRnJvbSBCcnVubyBIYWlibGUuCgoxOTk3LTAyLTEwICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogQUlYIDMgYW5kIDQgbGQgb25seSBoYXJkY29kZXMgTElCUEFUSCBpZiAtTCBpcyBub3QKIAlzcGVjaWZpZWQuICBUaGlzIGJlaGF2aW91ciBpcyB0aGUgc2FtZSB3aXRoIGJvdGggeGxjIGFuZCBnY2MuCgoxOTk3LTAyLTA3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBkb2MvcGxhdGZvcm1zLnRleGk6IFlhYXkhICBXZSBmb3VuZCBhIHdvcmthcm91bmQgZm9yIEhQLVVYCgkvYmluL3NoIGJ1ZmZlciBvdmVyZmxvd3MuICBGcm9tIEVyaWMgQmFja3VzLgoKMTk5Ny0wMi0wMyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogUmVsZWFzZSAwLjkuCgoJKiBQTEFURk9STVMsIGRvYy9wbGF0Zm9ybXMudGV4aSwgTWFrZWZpbGUuYW0sIGRvYy9NYWtlZmlsZS5hbToKCU1vdmUgUExBVEZPUk1TIHRvIGRvYy9wbGF0Zm9ybXMudGV4aS4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IFVzZSBoYXJkY29kZV9saWJkaXJfZmxhZyB0byBnZXQgYSBsaWJyYXJ5CglkaXJlY3RvcnkgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeS4KCVVzZSBoYXJkY29kZV9hY3Rpb24sIGFuZCBtYWtlIG1hbnkgc2ltcGxpZnlpbmcgY2hhbmdlcyB0byBoYXZlCgljb21waWxhdGlvbiBhbmQgZmluYWxpemF0aW9uIGJlIGNvbnNpc3RlbnQgd2l0aCBlYWNoIG90aGVyLgoKCSogbHRjb25maWcuaW46IE5vdCBzbyBhbWF6aW5nISAgSXQncyBBSVggY2MgdGhhdCBoYXJkY29kZXMgZGlyZWN0CglsaWJyYXJpZXMuLi4gZ2NjIGRvZXNuJ3QsIHRob3VnaC4KCShsaW5rX3JwYXRoX2ZsYWcpOiBDaGFuZ2UgbGlua19ycGF0aF9mbGFnIHRvIGJlCgloYXJkY29kZV9saWJkaXJfZmxhZy4KCShoYXJkY29kZV9hY3Rpb24pOiBOZXcgdmFyaWFibGUgdG8gc2ltcGxpZnkgbHRtYWluLnNoLgoKMTk5Ny0wMS0yOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluOiBDaGFuZ2UgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgbGlua2VycyB0aGF0IGRvbid0CgloYXJkY29kZSBkaXJlY3QgbGlicmFyaWVzLgoKCSogbHRjb25maWcuaW46IEFtYXppbmchICBBSVggMyBsaW5rZXIgZG9lc24ndCBoYXJkY29kZSBkaXJlY3QKCWxpYnJhcmllcywgd2hpY2ggbWFrZXMgaXQgbGVzcyBidWdneSB0aGFuIEFJWCA0LiAgUmVwb3J0ZWQgYnkgTWFyawoJS2V0dGVuaXMuCgoJKiBkZW1vL2NvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIHRoZSBtYXRoIGxpYnJhcnkuCgoJKiBkZW1vL2Zvby5jIChmb28pOiBDaGFuZ2UgdG8gdXNlIHRoZSBgY29zJyBmdW5jdGlvbiwgc28gdGhhdCB3ZQoJbmVlZCB0byBsaW5rIGFnYWluc3QgYW5vdGhlciBsaWJyYXJ5LgoKMTk5Ny0wMS0yOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogRXhwb3J0IHRoZSBQQVRIIHZhcmlhYmxlIGluIG9yZGVyIHRvIGZpbmQKCXRoZSBwcm9ncmFtLCByYXRoZXIgdGhhbiBnaXZpbmcgYSBmdWxsIHBhdGguICBUaGlzIGhlbHBzIGdpdmUgdGhlCglwcm9ncmFtIGEgbGVzcyBjb25mdXNpbmcgdmFsdWUgZm9yIGFyZ3ZbMF0uCgoxOTk3LTAxLTI2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBSZWxlYXNlIDAuOC4KCjE5OTctMDEtMjQgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIE1ha2VmaWxlLmFtIChkZW1vX2Rpc3RmaWxlcyk6IEFkZCBkZW1vL2FjaW5jbHVkZS5tNCB0byB0aGUKIAlkaXN0cmlidXRpb24uCgoxOTk3LTAxLTIyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsaWJ0b29sLm00OiBGb3IgSVJJWCA2LCBsZCBuZWVkcyAtbjMyIGlmIGNjIHVzZXMgaXQuICBSZXBvcnRlZAoJYnkgQnJ1bm8gSGFpYmxlLgoKCSogbHRjb25maWcuaW46IElSSVggbGQgZG9lcyBub3QgaGFyZGNvZGUgZGlyZWN0IGxpYnJhcmllcy4KICAJUmVwb3J0ZWQgYnkgQnJ1bm8gSGFpYmxlLgoKMTk5Ny0wMS0xOCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW4sIGx0bWFpbi5zaC5pbiAoaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcik6IEFsbG93IG5ldwoJdmFsdWUsIGB1bnN1cHBvcnRlZCcsIHNpbmNlIG1vc3QgbGlua2VycyBkbyBub3QgYWxsb3cgeW91IHRvIHVzZQoJc2hsaWJwYXRoX3ZhciBmb3IgaW5pdGlhbCBsaW5raW5nLgoKCSogbHRjb25maWcuaW46IExvdHMgb2YgYnVnIGZpeGVzIGZyb20gQnJ1bm8gSGFpYmxlLiAgU2V0IHdsIG9uCglPU0YvMSwgZml4IGRlZmluaXRpb25zIG9mIGhhcmRjb2RlXyogdmFyaWFibGVzLgoJKGFyY2hpdmVfY21kcyk6IEZpeCBub3QgdG8gdXNlICtoIG9uIEhQLVVYIDkueC4gIFJlcG9ydGVkIGJ5IEJydW5vCglIYWlibGUuCgoxOTk3LTAxLTE3ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsaWJ0b29saXplLmluOiBIYW5kbGUgZXhwbGljaXQgQUNfQ09ORklHX0FVWF9ESVIgc2V0dGluZ3MuCglTdWdnZXN0ZWQgYnkgQWtpbSBEZW1haWxsZS4KCgkqIGxpYnRvb2wubTQ6IENoYW5nZSBsdGNvbmZpZyBsaW5lIHRvIHVzZSAkQ09ORklHX1NIRUxMIHdoZW4gaXQgaXMKIAlzcGVjaWZpZWQuICBSZXBvcnRlZCBieSBCcnVubyBIYWlibGUuCgoxOTk3LTAxLTE2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBkZW1vL01ha2VmaWxlLmFtIChoYy1kaXJlY3QpOiBEbyBiZXR0ZXIgc2VhcmNoaW5nIGZvciB0aGUgcHJvcGVyCgluYW1lIHRvIGRvIGEgZGlyZWN0IGxpbmsuCgkoaGMtbGlicGF0aCk6IE1ha2UgYWxsb3dhbmNlcyBpZiBzaGxpYnBhdGhfdmFyIGNhbm5vdCBiZSB1c2VkCgl0byBmaW5kIGxpYnJhcmllcyBhdCBsaW5rIHRpbWUsIHN1Y2ggYXMgb24gQUlYLgoKCSogTWFrZWZpbGUuYW0gKGRlbW9fZGlzdGZpbGVzKTogUmVtb3ZlIGFuc2kya25yLjEgYW5kIGFuc2kya25yLmMuCgoJKiBkZW1vL2Zvby5jLCBkZW1vL2hlbGxvLmMsIGRlbW8vbWFpbi5jOiBDaGFuZ2UgQU5TSSBwcm90b3R5cGVzIHRvCiAJS05SIGZvcm0sIGZvciBiZXR0ZXIgcG9ydGFiaWxpdHksIGFuZCBsZXNzIGFuc2kya25yIGhhaXIuCgoJKiBkZW1vL2NvbmZpZ3VyZS5pbjogUmVtb3ZlIEFNX0ZVTkNfUFJPVE9UWVBFUy4KCgkqIGRlbW8vTWFrZWZpbGUuYW06IFJlbW92ZSBhbnNpMmtuciBmcm9tIHRoZSBBVVRPTUFLRV9PUFRJT05TLgoKCSogZGVtby9hbnNpMmtuci4xLCBkZW1vL2Fuc2kya25yLmM6IFJlbW92ZWQgdGhlc2UgZmlsZXMuCgoJKiBsdG1haW4uc2guaW46IFVzZSAxPiYyIGNvbnNpc3RlbnRseSB0byBkaXJlY3QgZXJyb3JzIGFuZAoJd2FybmluZ3MgdG8gc3RkZXJyLgoJKGNvbXBpbGUpOiBGaXggbWlzc2luZyBzaW5nbGUgcXVvdGUuCgoJKiBsdGNvbmZpZy5pbiAoaGFyZGNvZGVfZGlyZWN0KTogT24gU29sYXJpcyBhdCBsZWFzdCwgdXNpbmcKIAlESVIvbGliTkFNRS5zbyBkb2VzIG5vdCBoYXJkY29kZSBESVIsIHNvIGludHJvZHVjZSBhIG5ldyBoYXJkY29kZQogCXZhcmlhYmxlIHRvIHJlZmxlY3QgdGhhdC4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IElmIGxpbmtpbmcgd2l0aCAkbGlua19zdGF0aWNfZmxhZyBmYWlscywKIAl0aGVuIHJldHJ5IHdpdGhvdXQgaXQsIGJ1dCBzdGlsbCB1c2UgdGhlIC5hIHZlcnNpb25zIG9mCiAJdW5pbnN0YWxsZWQgbGlidG9vbCBhcmNoaXZlcy4KCjE5OTctMDEtMTUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IEV2YWwgJGxpbmtfc3RhdGljX2ZsYWcuICBSZXBvcnRlZCBieSBCcnVubwoJSGFpYmxlLgoKCSogUExBVEZPUk1TOiBBZGQgdG8gZGlzdHJpYnV0aW9uLiAgU3VnZ2VzdGVkIGJ5IEJydW5vIEhhaWJsZS4KCjE5OTctMDEtMTMgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBBZGQgc3VwcG9ydCBmb3IgU0NPIE9wZW5TZXJ2ZXIgNS54LiAgRnJvbQoJQ2hyaXN0b3BoZXIgT2xzZW4uCgoJKGNhbl9idWlsZF9zaGFyZWQpOiBJbml0aWFsaXplIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUsIHNvIHRoYXQKIAlzaGFyZWQgbGlicmFyaWVzIGFyZW4ndCBidWlsdCBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0CiAJdGhlbS4KCjE5OTctMDEtMTEgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiwgbHRjb25maWcuaW4sIGxpYnRvb2xpemUuaW4sIGRvYy9saWJ0b29sLnRleGk6CiAJVXBkYXRlIHRoZSBjb3B5cmlnaHQgY29tcGxldGlvbiB5ZWFycy4KCjE5OTctMDEtMDggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBQb3J0IHRvIElSSVggNS4zLCA2LjIuCgoxOTk3LTAxLTA2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogSFAtVVggOSBzdXBwb3J0IGlzIHRoZSBzYW1lIGFzIEhQLVVYIDEwLCBzbyB0aGUKCXBvcnQgaXMgdHJpdmlhbC4KCgkqIGxpYnRvb2xpemUuaW46IEFkZCAtLWRyeS1ydW4gb3B0aW9uLCAtbiBmb3Igc2hvcnQuCgoxOTk3LTAxLTAzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBPbiBhdCBsZWFzdCBTdW5PUywgL2Jpbi9zaCBkb2Vzbid0Cgl1bmRlcnN0YW5kICJleHBvcnQgc29tZXRoaW5nPXZhbCIuICBGcm9tIEJydW5vIEhhaWJsZS4KCjE5OTctMDEtMDIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAoY29tcGlsZSk6IFJlY29nbml6ZSB2YWxpZCBzb3VyY2UgZmlsZSBzdWZmaXhlcyBmb3IKCUZvcnRyYW4gYW5kIEMrKy4KCjE5OTYtMTItMTcgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IERvbid0IGFsbG93ICouX28gYW5kICoubF9vIHRvIGJlIHZhbGlkCiAJb2JqZWN0IHR5cGUgc3VmZml4ZXMsIGluIHNwaXRlIG9mIEF1dG9tYWtlJ3MgY3VycmVudCBhbnNpMmtucgogCWltcGxlbWVudGF0aW9uLiAgTm90IGFsbCBjb21waWxlcnMgYWxsb3cgbm9uLWAubycgc3VmZml4ZXMuCgoxOTk2LTEyLTE2ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBEZWxldGUgdGhlIGBsaWJ0b29sJyB2ZXJzaW9uIHR5cGUuCgoxOTk2LTEyLTEyICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogVXNlIHRoZSBmdWxsIGF1dG9jb25mIHN5bnRheCB3aGVuIGNoZWNraW5nIGZvciBHTlUKCUMuICBEZWxldGUgbGlicmFyeSBzdHJpcHBpbmcgcHJvZ3JhbSwgdW50aWwgd2UgaGF2ZSBhIGNvcnJlY3QKCXRlc3QuCgoxOTk2LTEyLTExICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogT24gQUlYIDMsIHVzZSAvdXNyL3VjYi9ubSwgbm90IC91Y2Ivbm0uICBGcm9tIE1hcmsKCUtldHRlbmlzLgoKMTk5Ni0xMi0wOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCVJlcG9ydGVkIGJ5IENoYXJsZXMgS2VycjoKCSogZG9jL2xpYnRvb2wudGV4aSAoQ3JlYXRpbmcgT2JqZWN0IEZpbGVzKTogRG9jIGZpeCBpbmRlcGVuZGFudCAtPgoJaW5kZXBlbmRlbnQuCgoJKiBsdGNvbmZpZy5pbiAobGRfc2hsaWJzKTogU3VuT1MgNCBkb2Vzbid0IHN1cHBvcnQgc2hhcmVkIGxpYnJhcnkKCWRlcGVuZGVuY2llcy4KCjE5OTYtMTItMDggIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIFJlbGVhc2UgMC43LgoKCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgUkVBRE1FLWF1dG9tYWtlIHRvIHRoZQoJZGlzdHJpYnV0aW9uLgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogV2hlbiBsaW5raW5nIGxpYnRvb2wgbGlicmFyaWVzLCB1c2UKCXN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgUElDLiAgVGhpcyBwcmV2ZW50cyBzcHVyaW91cyB3YXJuaW5ncwoJYWJvdXQgaW52YWxpZCBzdWZmaXhlcyBvbiBBSVguCgoJKiBkZW1vL01ha2VmaWxlLmFtOiBSZW5hbWUgbGliaGVsbCB0byBsaWJoZWxsbywgc28gdGhhdCB3ZSdyZSBub3QKCXF1aXRlIGFzIG9mZmVuc2l2ZS4KCgkqIGx0Y29uZmlnLmluOiBSZW1vdmUgdW5uZWNlc3NhcnkgaG9zdCB2YWxpZGl0eSBjaGVja2luZy4KCgkqIGx0bWFpbi5zaC5pbjogRG9uJ3QgZm9yY2UgcGVvcGxlIHRvIHVzZSBsaWJOQU1FLmxhOiBTT01FVEhJTkcubGEKCWlzIGdvb2QgZW5vdWdoIChmb3IgY29uc2lzdGVuY3kgd2l0aCAqLmEgaGFuZGxpbmcpLgoKMTk5Ni0xMi0wNyAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChsaW5rKTogQWNjZXB0IGZpbGVzIGVuZGluZyBpbiAuYSBhcyBzdGFuZGFyZAoJb2JqZWN0IGZpbGVzLiAgUmVwb3J0ZWQgYnkgVWxyaWNoIERyZXBwZXIuCglSZW1vdmUgc3VwcG9ydCBmb3IgY3JlYXRpbmcgcHJvZmlsZWQgbGlicmFyaWVzIChmb3Igbm93KS4KCVRyYW5zZm9ybSBhbGwgbGlicmFyeSBvYmplY3RzIGludG8gc3RhbmRhcmQgb2JqZWN0cyB3aGVuIGxpbmtpbmcgYQoJcHJvZ3JhbS4KCgkqIGx0Y29uZmlnLmluICh0aGlzZGlyKTogSG93IGVtYmFycmFzc2luZyEgIEFuIGVycm9yIGluIHRoZSByZWdleHAKCWZvciBmaW5kaW5nIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IG9mIHRoZSBzY3JpcHQgcGF0aC4KCjE5OTYtMTItMDUgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaC5pbiAoY29tcGlsZSk6IFN1cHBvcnQgYC5TJyAocHJlcHJvY2Vzc2VkIGFzc2VtYmxlcikKIAlmaWxlcy4gIFJlcG9ydGVkIGJ5IEFudGhvbnkgR3JlZW4uCgoJKiBsaWJ0b29saXplLmluOiBHaXZlIGNsZWFyZXIgaW5zdHJ1dGlvbnMgZm9yIGhvdyB0byB1cGRhdGUKCWFjbG9jYWwubTQuCgoJKiBsdGNvbmZpZy5pbiwgbHRtYWluLnNoLmluIChsaW5rKTogQWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nCiAJcmVsb2FkYWJsZSBvYmplY3RzLgoKMTk5Ni0xMi0wNCAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChpbnN0YWxsKTogRml4IHBhc3NpbmcgLW4gZmxhZyB0byBgbGlidG9vbAogCS0tZmluaXNoJy4KCShjb21waWxlKTogQ29tcGlsZSBgLmxvJyBhbmQgYC5vJyBvYmplY3RzIGF0IHRoZSBzYW1lIHRpbWUgc28gdGhhdAogCW5vbi1QSUMgb2JqZWN0cyAoaWYgdGhleSBhcmUgYXZhaWxhYmxlKSBjYW4gYmUgdXNlZCBmb3IgbGlua2luZwogCWludG8gcHJvZ3JhbXMgYW5kIGNyZWF0aW5nIHN0YXRpYyBhcmNoaXZlcy4gIFN1Z2dlc3RlZCBieSBVbHJpY2gKCURyZXBwZXIuCgoxOTk2LTEyLTAzICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW4gKGxpbmspOiBHaXZlIHRoZSBmdWxsIHBhdGggdG8gdGhlIGxpYnRvb2wgbGlicmFyeQoJd2hlbiBzb3VyY2luZyBpdC4KCgkqIGx0Y29uZmlnLmluIChvbGRfc3RyaXBsaWIpOiBEbyBhIGNvbmZpZ3VyYXRpb24gdGVzdCB0byBkZXRlcm1pbmUKCWlmIG9sZC1zdHlsZSBsaWJyYXJpZXMgYWN0dWFsbHkgY2FuIGJlIHN0cmlwcGVkIG9yIG5vdC4KCjE5OTYtMTItMDIgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0Y29uZmlnLmluOiBEZWxldGUgcmVmZXJlbmNlIHRvIEFCT1VULUxJQlMuCgoJKiB0ZXN0czogQWRkZWQgbmV3IHN1YmRpcmVjdG9yeS4KCgkqIGRvYy9saWJ0b29sLnRleGk6IERvYyBmaXhlcywgYW5kIGZpbmlzaGVkIHVwIHRoZSBDb25maWd1cmluZwoJY2hhcHRlci4KCgkqIGx0bWFpbi5zaC5pbiAobGluayk6IEFsbG93ICouX28gYW5kICoubF9vIHRvIGJlIHZhbGlkIG9iamVjdAoJZmlsZSBzdWZmaXhlcywgZm9yIEF1dG9tYWtlJ3MgYW5zaTJrbnIgaW1wbGVtZW50YXRpb24uCglOZXcgb3B0aW9uIC12ZXJzaW9uLWluZm8gcmVwbGFjZXMgLXZlcnNpb24tZmlsZS4KCglbaGVscF06IEdpdmUgYSBwb2ludGVyIHRvIG1vZGUtc3BlY2lmaWMgaGVscCB3aGVuIGFwcHJvcHJpYXRlLgoKCSogbHRjb25maWcuaW46IENoYW5nZWQgbWVzc2FnZXMgdG8gY29ycmVzcG9uZCB0byBBTV9QUk9HX0NDX1NUREMuCgoJKiBkZW1vOiBBbHNvIHRlc3QgQXV0b21ha2UncyBhbnNpMmtuciBzdXBwb3J0LgoKMTk5Ni0xMS0xOSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRjb25maWcuaW46IEJ1ZyBmaXhlcyBmb3IgQUlYIDQsIGFuZCBmb3Igc3RhdGljIHBsYXRmb3Jtcy4KCgkqIGx0bWFpbi5zaC5pbiAoaW5zdGFsbCk6IEZpeCBmb3IgbG9vcHMgb3ZlciBhcmd1bWVudHMuCglOZWVkIHRvIHF1b3RlICR7SUZTPSB9IC0+ICIke0lGUz0gfSIuCgkobGluayk6IEZpeCBzb25hbWVfc3BlYyBidWcuICBDcmVhdGUgb2JqZGlyIHdoZXRoZXIgb3Igbm90IHdlIGhhdmUKCXNoYXJlZCBsaWJyYXJpZXMuCgoJKiBsdGNvbmZpZy5pbjogQ2hlY2sgZm9yIGxpYnJhcnkgc3RyaXBwaW5nIHByb2dyYW0uCglVc2UgdGVzdCAtZiBpbnN0ZWFkIG9mIHRlc3QgLWUuCgoxOTk2LTExLTE4ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdGNvbmZpZy5pbjogRG9uJ3QgcnVuIHRoZSBSQU5MSUIgdGVzdCB1bmxlc3MgUkFOTElCIHdhc24ndAoJc2V0LgoJQmUgdmVyYm9zZSBhYm91dCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdlIHdlcmUgY29uZmlndXJlZAoJd2l0aC4KCgkqIGx0bWFpbi5zaC5pbiAob2JqZGlyKTogY2hhbmdlIHRvIC5saWJzLgoKMTk5Ni0xMS0xNiAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogbHRtYWluLnNoLmluIChpbnN0YWxsKTogSnVzdCBwbHVuZ2UgYWhlYWQgd2l0aCB0aGUKCWluc3RhbGxhdGlvbi4uLiBkb24ndCB0cnkgdG8gZW5mb3JjZSBkZXBlbmRlbmNpZXMuCgoxOTk2LTExLTE1ICBHb3Jkb24gTWF0emlna2VpdCAgPGdvcmRAZ251LmFpLm1pdC5lZHU+CgoJKiBsdG1haW4uc2guaW46IEZpeCB1cCAkbGliZGlyIHRvIGJlICRkZXN0IGluIGluc3RhbGwgbW9kZS4KCjE5OTYtMTEtMTAgIEdvcmRvbiBNYXR6aWdrZWl0ICA8Z29yZEBnbnUuYWkubWl0LmVkdT4KCgkqIGx0bWFpbi5zaDogRmluaXNoZWQgcmV3cml0ZSBvZiBjb21waWxlLCBsaW5rLCBhbmQgaW5zdGFsbAoJbW9kZXMuCgoJKiBOZXcgQ2hhbmdlTG9nIGZpbGUgZm9yIGxpYnRvb2wtMC43LCBzaW5jZSBJJ3ZlIHRvdGFsbHkgcmV3cml0dGVuCglsaWJ0b29sLgoKMTk5Ni0wMy0xNSAgR29yZG9uIE1hdHppZ2tlaXQgIDxnb3JkQGdudS5haS5taXQuZWR1PgoKCSogRm9yIGhpc3RvcmljYWwgcmVhc29uczogdGhpcyBpcyB3aGVuIEkgc3RhcnRlZCB3cml0aW5nIGxpYnRvb2wuCg==