dHJlZSA3MmRlNTYxMzU3ZDA2N2ZlMGFjZmExN2UwZWIzZWNiOGQxMDNmYWJiCnBhcmVudCBhODQ1Yjg4ZWFkNmRiNTFiYzllNDFjNmJjYmJkMDk4ODYzYzViZjFiCmF1dGhvciBBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQHdpbmVocS5vcmc+IDg5NzgzNzg1NSArMDAwMApjb21taXR0ZXIgQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEB3aW5laHEub3JnPiA4OTc4Mzc4NTUgKzAwMDAKClJlbGVhc2UgOTgwNjE0CgpTdW4gSnVuIDE1IDEwOjMwOjM1IDE5OTggIEFuZHJlYXMgTW9ociA8MTAwLjMwOTM2QGdlcm1hbnkubmV0PgoKCSogW2ZpbGVzL2Rvc19mcy5jXSBbZmlsZXMvZmlsZS5jXSBbaWYxNjMyL3dwcm9jcy5zcGVjXQoJICBbbWlzYy9hc3BpLmNdCglBZGRlZCBzdXBwb3J0IGZvciBzY2FubmVycyB0aGF0IG5lZWQgQWRhcHRlYydzIEFTUEkyRE9TLgoKCSogW2dyYXBoaWNzL2Vudi5jXSBbbWlzYy9wcmludGVyZHJ2LmNdIFtncmFwaGljcy93aW4xNmRydi9pbml0LmNdCgkgIFtpZjE2MzIvZ2RpLnNwZWNdIFtpbmNsdWRlL2dkaS5oXQoJRW5oYW5jZWQgcHJpbnRlciBzdXBwb3J0IChlc3BlY2lhbGx5IFdpbjk1KToKCURydltHU11ldFByaW50ZXJEYXRhLCBbR1NdZXRFbnZpcm9ubWVudDsgYWRkZWQgQWJvcnRQcm9jIGhhbmRsaW5nLgoKCSogW21pc2MvdGFwaTMyLmNdIFtyZWxheTMyL3RhcGkzMi5zcGVjXQoJQWRkZWQgc29tZSBzdHVicy4KCgkqIFtjb25maWd1cmUuaW5dIFtncmFwaGljcy9mb250ZW5naW5lLmNdIFtpbmNsdWRlL3dpbmRvd3MuaF0KCSAgW21pc2MvY29tbS5jXSBbbWlzYy93MzJza3JubC5jXSBbbWlzYy93aW4zMnMxNi5jXQoJTWFkZSBXaW5lIGNvbXBpbGUgb24gSFAtVVggKGp1c3QgZm9yIGZ1biA7KQoKCSogW2NvbnRyb2xzL21lbnUuY10gW2luY2x1ZGUvd2luZG93cy5oXQoJQ29tcGxldGUgcmV3cml0ZSBvZiBFbmFibGVNZW51SXRlbTMyLgoJRnJlZSBBZ2VudCAzMiBzdGlsbCBkb2Vzbid0IHdvcmsgOigKCgkqIFttaXNjL3ZlcnNpb24uY10gW2lmMTYzMi9rZXJuZWwuc3BlY10gW2luY2x1ZGUvd2luYmFzZS5oXQoJSW1wbGVtZW50ZWQgR2V0VmVyc2lvbkV4MTYuCgoJKiBbbWlzYy9uZXR3b3JrLmNdIFtpZjE2MzIvdXNlci5zcGVjXQoJRml4ZWQgYXJndW1lbnRzIG9mIFdOZXRHZXRQcm9wZXJ0eVRleHQuCgoJKiBbbWlzYy92ZXJzaW9uLmNdIFtyZWxheTMyL2NvbWN0bDMyLnNwZWNdIFtyZWxheTMyL29sZWF1dDMyLnNwZWNdCglJbXBsZW1lbnRlZCBDT01DVEwzMl9EbGxHZXRWZXJzaW9uLCBPYUJ1aWxkVmVyc2lvbi4KCgkqIFt3aW4zMi9maWxlLmNdCglGaXhlZCBVTkMgaGFuZGxpbmcgb2YgQ3JlYXRlRmlsZTMyLgoKU2F0IEp1biAxMyAyMjozNToxMiAxOTk4ICBEb3VnbGFzIFJpZGd3YXkgIDxyaWRnd2F5QHdpbmVocS5jb20+CgoJKiBbTWFrZWZpbGUuaW5dIFtNYWtlLnJ1bGVzLmluXQoJQWRkZWQgcGF0dGVybiBmb3IgQ1ZTIG1lcmdlIGZpbGVzIHRvICdtYWtlIGNsZWFuJwoKCSogW29sZS9vbGVjbGkuY10gW3dpbmRvd3Mvc2Nyb2xsLmNdIFt3aW5kb3dzL2dyYWhpY3MuY10KCUFkZCBzb21lIERDIGhhbmRsZSB1bmxvY2tpbmcuIChXaGVuIGhkYydzIGFyZSBhbHdheXMgdW5sb2NrZWQsCgl0aGV5IGNhbiBiZSBtYWRlIG1vdmVhYmxlLikKCgkqIFtkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mb10gCglTdGFydGVkIGEgV2luZSBEZXNpZ24gY2hhcHRlciB3aXRoIGRpc2N1c3Npb24gb2YgCglncmFwaGljcyBkcml2ZXIgbW9kZWwuCgpTYXQgSnVuIDEzIDExOjE5OjI1IDE5OTggIERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KCgkqIFttaXNjL21haW4uY10gW3JlbGF5MzIvcmVsYXkzODYuY10KCUFkZGVkIG5ldyBvcHRpb24gLWRlYnVnbXNnICtyZWxheT0uLi4uIG9yIC1kZWJ1Z21zZyAtcmVsYXk9Li4uCgpGcmkgSnVuIDEyIDIyOjU2OjA5IDE5OTggIE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoKCSogW3JlbGF5MzIvc25vb3AuY11bcmVsYXkzMi9idWlsdGluLmNdW2xvYWRlci9wZV9pbWFnZS5jXQoJQWRkZWQgaW50ZXIgd2luMzIgZGxsIHNub29waW5nLiBVc2UgLWRlYnVnbXNnICtzbm9vcC4KCU51bWJlciBvZiBhcmd1bWVudHMgYW5kIHN0cmluZyByZWZlcmVuY2VzIGFyZSBhdXRvZGV0ZWN0ZWQuCglTb21lIHNtYWxsIGJ1Z2ZpeGVzIGluIHRoZSBQRSBsb2FkZXIuCgoJKiBbbWlzYy9zeXN0ZW0uY10KCURpc2FibGVkIFN5c3RlbVRpbWVycy4gVGhleSBkbyBub3Qgd29yayB3aXRoIHRoZSBjdXJyZW50CgklZnMgaGFuZGxpbmcgaW4gdGhlIDMyLT4xNiByZWxheWNvZGUuIChoZWxwcyBsYWJ2aWV3KQoKCSogW21zZG9zL2RwbWkuY11bbXNkb3MvaW50MmYuY11bZmlsZXMvZHJpdmUuY10KCUFkZGVkIGEgbW9ub3RvbiBsaW5lYXIgaW5jcmVhc2luZyBtZW1vcnkgYWxsb2NhdG9yIGZvciBEUE1JIChyZXF1aXJlZAoJZm9yIExhYlZpZXcsIEhBRkFTLCAuLi4pCgltc2NkZXggaGFuZGxpbmcgaW4gZW11bGF0ZWQgcmVhbG1vZGUgaW50ZXJydXB0cyAoZm9yIG1jaWNkYS5kcnYpCglhbGxvY2F0ZSBsb2dpY2FsIGRyaXZlcyBvbmx5IG9uY2UuIChoZWxwcyBNeXN0KQoKCSogW2ZpbGVzL3Byb2ZpbGUuY10KCUhhbmRsZSBeWiBhcyBzcGFjZS4gRm91bmQgb24gQ0RST01TIChoZWxwcyBNeXN0IEluc3RhbGxlcikuCgoJKiBbbXVsdGltZWRpYS9tbWlvLmNdCgltbWlvKiBwYXJ0aWFsbHkgdXBkYXRlZCB0byB3aW4zMi4gTm8gZnVubnkgYWRkaXRpb25zLgoKCSogW3dpbmRvd3MvZHJpdmVyLmNdCglBZGRlZCB3aW4zMiBkcml2ZXIgaGFuZGxpbmcgKHdpbGwgYmUgdXNlZCBmb3Igd2luMzIgbXVsdGltZWRpYS8KCW1zdmlkZW8gZHJpdmVycykuCgoJKiBbd2luMzIvZGV2aWNlLmNdCglBZGRlZCBkZXZpY2UgaGFuZGxpbmcgKEszMk9CSl9ERVZJQ0VfSU9DVEwpLiBJbXBsZW1lbnRlZCAKCVZUREFQSS41ICh1c2VkIGJ5IHdpbjk1JyBXSU5NTS50aW1lR2V0VGltZSgpKQoKRnJpIEp1biAxMiAxODowMToxOCAxOTk4IFJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CgoJKiBbb2xlL2NvbXBvYmouYyByZWxheTMyL29sZTMyLnNwZWNdCglBZGQgYSBzdHViIGZvciBDb0xvY2tPYmplY3RFeHRlcm5hbDMyLgoKCSogW29iamVjdHMvY2xpcHBpbmcuY10KCUZpeCBpbiBJbnRlcnNlY3RDbGlwUmVjdCgpLCB3aGVuIHRoZXJlIGlzIG5vIGluaXRpYWwgY2xpcHBpbmcKCXJlZ2lvbi4KCgkqIFtncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuY10KCUNvcnJlY3RlZCBzZXZlcmFsICJvbmUtb2ZmIiBlcnJvcnMgZm9yIHRoZSBFbGxpcHNlLCBSZWN0YW5nbGUKCWFuZCBSb3VuZFJlY3RhbmdsZSAoZXNwZWNpYWxseSBzbWFsbCBvbmVzKSBkcmF3IHJvdXRpbmVzLiAKCUFyYyBhbmQgZnJpZW5kcyBzdGlsbCBoYXZlIHRvIGJlIGRvbmUuCgpGcmkgSnVuIDEyIDA2OjIzOjE5IDE5OTggIE1hdHRoZXcgQmVja2VyIDxtYmVja2VyQGdsYXNzY2l0eS5uZXQ+CgoJKiBbbWlzYy9udGRsbC5jXQoJRml4ZWQgc29tZSBvZiB0aGUgcGFyYW1ldGVyIGNvdW50cy4KCgkqIFttaXNjL3JlZ2lzdHJ5LmNdCglHZW5lcmFsIGNsZWFudXAsIGRvY3VtZW50YXRpb24uCglTdGFuZGFyZCBrZXlzIGFyZSBhbGxvd2VkIHRvIGJlICdjbG9zZWQnIGFuZCBzdWNjZWVkLgoKCSogW21pc2Mvc2hlbGwuY10KCUNoZWNrIGZvciBjb3JyZWN0IHJldHVybiB2YWx1ZXMgZnJvbSBSZWcqIGZ1bmN0aW9ucy4KCgkqIFt3aW4zMi9uZXdmbnMuY10KCUFkZGVkIHN0dWJzIGZvciBPcGVuRGVza3RvcEEsIFNldFRocmVhZERlc2t0b3AsIGFuZAoJU2V0VXNlck9iamVjdEluZm9ybWF0aW9uQS4KCldlZCBKdW4gMTAgIDIwOjI4OjA4IDE5OTggIEphbWVzIEp1cmFuICA8anJqMTIwQHBzdS5lZHU+CgoJKiBbZGVidWdnZXIvYnJlYWsuY10KCUZpeGVkIGJ1ZyBpbnRyb2R1Y2VkIGluIDk4MDUwMyB0aGF0IGJyb2tlIHRoZSAtZGVidWcgY29tbWFuZCAKCWxpbmUgb3B0aW9uIGZvciBQRSBleGVjdXRhYmxlIGZpbGVzLgoKCSogW2NvbmZpZ3VyZS5pbl0gW2luY2x1ZGUvYWNjb25maWcuaF0gW2luY2x1ZGUvZGVidWd0b29scy5oXQoJICBbZG9jdW1lbnRhdGlvbi9kZWJ1Zy1tc2dzXQoJQWRkZWQgJ2NvbmZpZ3VyZScgb3B0aW9ucyB0byBjb21waWxlIG91dCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCglVc2UgLS1kaXNhYmxlLWRlYnVnIHRvIGRpc2FibGUgYWxsIGRlYnVnZ2luZyBtZXNzYWdlcywgYW5kCgktLWRpc2FibGUtdHJhY2UgdG8ganVzdCBkaXNhYmxlIFRSQUNFIG1lc3NhZ2VzLiAgVGhpcyByZXN1bHRzCglpbiBhIHN0cmlwcGVkIGV4ZWN1dGFibGUgdGhhdCBpcyAxNS0yMCUgc21hbGxlci4gIFRoaXMgb3B0aW9uCglpcyB2ZXJ5IG11Y2ggdW50ZXN0ZWQtLWRvbid0IGV4cGVjdCBpdCB0byB3b3JrLgoKCSogW2RvY3VtZW50YXRpb24vZGVidWctbXNnc10gW2RvY3VtZW50YXRpb24vZGVidWdnaW5nXQoJTWlub3IgdXBkYXRlcy4KCgkqIFsqLyouY10KCUZpeGVkIHNvbWUgY29tcGlsZSB3YXJuaW5ncy4gIFRoaXMgYWxzbyBpbmNsdWRlcyB0aGUKCWNvbXBpbGVfd2FybmluZ3NfdHJpdmlhbCBwYXRjaCBmcm9tIFdpbmVIUS4KClR1ZSBKdW4gMTAgMjI6MDA6MTggMTk5OCAgRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCgkqIFt3aW5kb3dzL3N5c21ldHJpY3MuY11baW5jbHVkZS9zeXNtZXRyaWNzLmhdCglGaXhlZCBzb21lIFdpbjk1IHZhbHVlcy4KCgkqIFt3aW5kb3dzL25vbmNsaWVudC5jXVtpbmNsdWRlL3dpbmRvd3MuaF0KCUZpeGVkIHNvbWUgV2luOTUgZHJhd2luZyBidWdzLgoJQWRkZWQgZXh0ZW5kZWQgd2luZG93IHN0eWxlIGZsYWdzIChXU19FWF94eHgpLgoKCSogW21pc2MvcHJpbnRkcnYuY11bcmVsYXkzMi93aW5zcG9vbC5zcGVjXQoJQWRkZWQgc3R1YnMgZm9yIERlbGV0ZVByaW50ZXJEcml2ZXIzMkEsIERlbGV0ZU1vbml0b3IzMkEKCWFuZCBEZWxldGVQb3J0MzJBLgoKCSogW3dpbmRvd3MvbWRpLmNdW2luY2x1ZGUvd2luZG93cy5oXVtyZWxheTMyL3VzZXIzMi5zcGVjXQoJQWRkZWQgc3R1YnMgZm9yIENhc2NhZGVXaW5kb3dzIGFuZCBUaWxlV2luZG93cy4KCgkqIFtjb250cm9scy90b29sYmFyLmNdW2luY2x1ZGUvdG9vbGJhci5oXQoJRml4ZWQgYSBmZXcgYnVncyBhbmQgaW1wbGVtZW50ZWQgbmV3IGZlYXR1cmVzLgoKCSogW21pc2Mvc2hlbGxvcmQuY11bcmVsYXkzMi9zaGVsbDMyLnNwZWNdCglBZGRlZCBzdHVicyBmb3IgU0hFTEwzMl82MCwgU0hFTEwzMl82MSBhbmQgU0hFTEwzMl8xODQuCgoJKiBbY29udHJvbHMvY29tY3RsMzJ1bmRvYy5jXVtyZWxheTMyL2NvbWN0bDMyLnNwZWNdCglOZXcgZmlsZSBjb21jdGwzMnVuZG9jLmMuIENvbnRhaW5zIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMKCW9mIENPTUNUTDMyLkRMTC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBuZWVkZWQgdG8gcnVuIEVYUExPUkVSLkVYRQoJSUVYUExPUkUuRVhFIGFuZCBUQVNLTUFOLkVYRS4KCgkqIFtjb250cm9scy9zdGF0dXMuY10KCUFkZGVkIHRleHQgYWxpZ25tZW50LgoKVHVlIEp1biAgOCAyMjowMDowMCAxOTk4ICBCZXJ0aG8gU3R1bHRpZW5zIDxiZXJ0aG9AYWtocGhkLmF1LmRrPgoKCSogW3Byb2dyYW1zLyovTWFrZWZpbGUuaW5dCglDaGFuZ2VkIHRoZSBydWxlcyB0byB1c2Ugd3JjIGFzIHJlc291cmNlIGNvbXBpbGVyIGJ1dAoJcGFzc2luZyB0aGUgc291cmNlIHRocm91Z2ggZ2NjIGZpcnN0IGZvciBtYWNybyBleHBhbnNpb24uCgoJKiBbcHJvZ3JhbXMvKi8qLnJjXQoJQWRkZWQgI2luY2x1ZGUgIndpbmRvd3MuaCIgZm9yIHRoZSByZXNvdXJjZSBjb21waWxlciBpbiB0aGUKCWFwcHJvcHJpYXRlIGZpbGVzLgoKCSogW3Rvb2xzL3dyYy93cmMuW2NoXV0gW3Rvb2xzL3dyYy93cml0ZXJlcy5jXQoJQWRkZWQgY29tbWFuZGxpbmUgb3B0aW9uIC1BIGZvciBhdXRvcmVnaXN0ZXIgY29kZS4KCUNvcnJlY3RlZCB0aGUgdW5kZXJzY29yZSBwcm9ibGVtIGJ5IGNoZWNraW5nIHRoZSBwcm9wZXIgZGVmaW5lCglmcm9tIGNvbmZpZy5oLgoKU3VuIEp1biAgNyAyMjowOToyOSAxOTk4ICBQYXNjYWwgQ3VvcSA8cGN1b3FAZW5zLWx5b24uZnI+CgoJKiBbb2xlL29sZTJubHMuY10gW21lbW9yeS9zdHJpbmcuY10KCUltcHJvdmVkIExDTWFwU3RyaW5nMzJBLCBhbmQgY2hhbmdlZCBDb21wYXJlU3RyaW5nMzJBLAoJbHN0cmNtcCwgbHN0cmNtcGkgdG8gdXNlIGl0LgoKU2F0IEp1biAgNiAxOTowMDo1MCAxOTk4ICBNYXJ0aW4gU3Ry9m1iZXJnIDxhbXNAbHVkZC5sdXRoLnNlPgoKCSogW2luY2x1ZGUvd2lubnQuaF0KCUFkZGVkIHR5cGVkZWZzIGZvciBzZWN1cml0eSBhbmQgdG9rZW5zLgoKU2F0IEp1biAgNiAxMjoyNjozMSAxOTk4ICBNb3J0ZW4gV2VsaW5kZXIgIDx0ZXJyYUBkaWt1LmRrPgoKCSogW29iamVjdHMvdGV4dC5jXQoJVXNlIGRlYnVnc3RyX2FuIGluIERyYXdUZXh0MTYuCgoJKiBbbG9hZGVyL3Jlc291cmNlLmNdCglVc2UgZGVidWdyZXNfdyBpbiBGaW5kUmVzb3VyY2VFeDMyVy4gIEF2b2lkIGNyYXNoaW5nIGR1cmluZwoJZGVidWcgd2hlbiB3bSBpcyBOVUxMLgoKCSogW2lmMTYzMi9yZWxheS5jXQoJSW4gUkVMQVlfRGVidWdDYWxsVG8xNiwgc2VuZCBvdXRwdXQgdG8gdGhlIHJpZ2h0IHBsYWNlIGFuZAoJYXZvaWQgc2lkZSBlZmZlY3RzIGluIG1hY3JvIGFyZ3VtZW50cy4KCldlZCBKdW4gIDMgMjA6NTY6MDMgMTk5OCAgSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CgoJKiBbY29udHJvbHMvc2Nyb2xsLmNdIFt3aW5kb3dzL25vbmNsaWVudC5jXQoJRml4IHNldmVyYWwgb2ZmIGJ5IG9uZSBlcnJvcnMgaW4gc2Nyb2xsYmFyIHBhaW50aW5nLgoKVHVlIEp1biAgMiAyMzo1ODo1OSAxOTk4ICBJbnNvbW5pYSAoU3RlYSBHcmVlbmUpIDxpbnNvbW5pYUBjb3JlLmJpbmdoYW10b24uZWR1PgoKCSogW2dyYXBoaWNzL2Rzb3VuZC5jXQoJUmV3cm90ZSBtaXhlciBjb2RlIHRvIGhhbmRsZSBwYW5uaW5nIGFuZCB2b2x1bWUgZm9yIDE2LT4xNiwgMTYtPjgsCgk4LT4xNiwgYW5kIDgtPjggYml0IG1peGVzLiAgQ29uZm9ybXMgdG8gRGlyZWN0WCdzICJsb2dhcml0aG1pYwoJaGVhcmluZyBzY2FsZSIgYXMgc3BlY2lmaWVkIGluIE0kVkMgZG9jcy4gIFN0aWxsIGRvZXMgbm90IGhhbmRsZQoJbWl4aW5nIG9mIGRpZmZlcmVudCBmcmVxdWVuY2llcyAoSSBhbSBzdGlsbCB3b3JraW5nIG9uIHRoYXQpLiAKCVRlc3RlZCAxNi0+MTYgZXh0ZW5zaXZlbHkgd2l0aCBTdGFyQ3JhZnQuICBPdGhlciBtaXhpbmcgY29tYmluYXRpb25zCgl1bnRlc3RlZCBidXQgc2hvdWxkIHdvcmsgZmluZS4gIFN0aWxsIGtpbmQgb2YgYSB3b3JrIGluIHByb2dyZXNzLAoJc28gYmUgd2FybmVkLgoKVHVlIEp1biAgMiAwMzozMTozMyAxOTk4ICBBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KCgkqIFt0b29scy93cmMvdXRpbHMuY10KCWR1cF9iYXNlbmFtZTogZml4IHRvIHN0cmlwIGRpcmVjdG9yeS4KCk1vbiBKdW4gIDEgMjA6MDA6MDAgMTk5OCAgSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgoJKiBbaW5jbHVkZS93aW5kb3dzLmhdIFtvYmplY3RzL2N1cnNvcmljb24uY10gW3JlbGF5MzIvdXNlcjMyLnNwZWNdCglBZGRlZCBzdHVicyBMb2FkQ3Vyc29yRnJvbUZpbGVXIGFuZCBMb2FkQ3Vyc29yRnJvbUZpbGVBLgo=