ZGlmZiAtLWdpdCBhL0FuZHJvaWQubWsgYi9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZWMxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJpZ2h0IDIwMDUgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorIworIyBBbmRyb2lkLm1rIGZvciBUaW55WG1sLgorIworIyBBZGQgLURUSVhNTF9VU0VfU1RMIHRvIENGTEFHUyB0byB1c2UgU1RMLgorIworCitjb21tb25Tb3VyY2VzOj0gXAorCXRpbnl4bWwuY3BwIFwKKwl0aW55eG1scGFyc2VyLmNwcCBcCisJdGlueXhtbGVycm9yLmNwcCBcCisJdGlueXN0ci5jcHAKKworIyBGb3IgdGhlIGhvc3QKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9IFwKKwkkKGNvbW1vblNvdXJjZXMpCisKK0xPQ0FMX01PRFVMRTo9IGxpYnRpbnl4bWwKKworTE9DQUxfQ0ZMQUdTKz0gJChUT09MX0NGTEFHUykKK0xPQ0FMX0xERkxBR1M6PSAkKFRPT0xfTERGTEFHUykgLWxzdGRjKysgLWxjCisKK2luY2x1ZGUgJChCVUlMRF9IT1NUX1NUQVRJQ19MSUJSQVJZKQorCisKKyMgRm9yIHRoZSBkZXZpY2UKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNpbmNsdWRlICQoQ0xFQVJfVkFSUykKKyMKKyNMT0NBTF9TUkNfRklMRVM6PSBcCisjCSQoY29tbW9uU291cmNlcykKKyMKKyNMT0NBTF9NT0RVTEU6PSBsaWJ0aW55eG1sCisjCisjaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQorCisKZGlmZiAtLWdpdCBhL01PRFVMRV9MSUNFTlNFX0JTRF9MSUtFIGIvTU9EVUxFX0xJQ0VOU0VfQlNEX0xJS0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL01PRFVMRV9MSUNFTlNFX0JTRF9MSUtFCmRpZmYgLS1naXQgYS9OT1RJQ0UgYi9OT1RJQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVhNmEzNgotLS0gL2Rldi9udWxsCisrKyBiL05PVElDRQpAQCAtMCwwICsxLDE4IEBACitUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAord2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQorZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgorCitQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKK3B1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZAorcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKworMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdAorbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCitzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24KK3dvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCisKKzIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kCittdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCisKKzMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQorZGlzdHJpYnV0aW9uLgpkaWZmIC0tZ2l0IGEvY2hhbmdlcy50eHQgYi9jaGFuZ2VzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmM0N2QyCi0tLSAvZGV2L251bGwKKysrIGIvY2hhbmdlcy50eHQKQEAgLTAsMCArMSwyMTAgQEAKK0NoYW5nZXMgaW4gdmVyc2lvbiAxLjAuMToKKy0gRml4ZWQgY29tbWVudCB0YWdzIHdoaWNoIHdlcmUgb3V0cHV0aW5nIGFzICc8Py0tJyBpbnN0ZWFkIG9mIAorICB0aGUgY29ycmVjdCAnPCEtLScuCistIEltcGxlbWVudGVkIHRoZSBOZXh0IGFuZCBQcmV2IG1ldGhvZHMgb2YgdGhlIFRpWG1sQXR0cmlidXRlIGNsYXNzLgorLSBSZW5hbWVkICdMYXN0QXR0cmlidHV0ZScgdG8gJ0xhc3RBdHRyaWJ1dGUnCistIEZpeGVkIGJhZCBwb2ludGVyIHRvICdpc3NwYWNlJyB0aGF0IGNvdWxkIG9jY3VyIHdoaWxlIHBhcnNpbmcgdGV4dC4KKy0gRXJyb3JzIGZpbmRpbmcgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGFncyBubyBsb25nZXIgdGhyb3cgaXQgaW50byBhbgorICBpbmZpbml0ZSBsb29wLiAoSG9wZWZ1bGx5LikKKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMC4yCistIE1pbm9yIGRvY3VtZW50YXRpb24gZml4ZXMuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAxLjAuMworLSBBZnRlciBub2RlcyBhcmUgYWRkZWQgdG8gYSBkb2N1bWVudCwgdGhleSByZXR1cm4gYSBwb2ludGVyCisgIHRvIHRoZSBuZXcgbm9kZSBpbnN0ZWFkIG9mIGEgYm9vbCBmb3Igc3VjY2Vzcy4KKy0gRWxlbWVudHMgY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggYSB2YWx1ZSwgd2hpY2ggaXMgdGhlCisgIGVsZW1lbnQgbmFtZS4gRXZlcnkgZWxlbWVudCBtdXN0IGhhdmUgYSB2YWx1ZSBvciBpdCB3aWxsIGJlCisgIGludmFsaWQsIGJ1dCB0aGUgY29kZSBjaGFuZ2VzIHRvIGVuZm9yY2UgdGhpcyBhcmUgbm90IGZ1bGx5CisgIGluIHBsYWNlLgorCitDaGFuZ2VzIGluIHZlcnNpb24gMS4xLjAKKy0gQWRkZWQgdGhlCVRpWG1sQXR0cmlidXRlU2V0IGNsYXNzIHRvIHB1bGwgdGhlIGF0dHJpYnV0ZXMgaW50bworICBhIHNlcGVyYXRlIGNvbnRhaW5lci4KKy0gTW92ZWQgdGhlIGRvdWJseSBsaWtlZCBsaXN0IG91dCBvZiBYbWxCYXNlLiBOb3cgWG1sQmFzZSBvbmx5CisgIHJlcXVpcmVzIHRoZSBQcmludCgpIGZ1bmN0aW9uIGFuZCBkZWZpbmVzIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMuCistIE1vdmVkIGVycm9ycyBpbnRvIGEgc2VwZXJhdGUgZmlsZS4gKFdpdGggdGhlIGlkZWEgb2YgaW50ZXJuYXRpb25hbGl6YXRpb24KKyAgdG8gdGhlIG90aGVyIGxhdGluLTEgbGFuZ3VhZ2VzLikKKy0gQWRkZWQgdGhlICJOb2RlVHlwZSIKKy0gRml4ZWQgd2hpdGUgc3BhY2UgcGFyc2luZyBpbiB0ZXh0IHRvIGNvbmZvcm0gd2l0aCB0aGUgc3RhbmRhcmQuIAorICBCYXNpY2FsbHksIGFsbCB3aGl0ZSBzcGFjZSBiZWNvbWVzIGp1c3Qgb25lIHNwYWNlLgorLSBBZGRlZCB0aGUgVGlYbWxEZWNsYXJhdGlvbiBjbGFzcyB0byByZWFkIHhtbCBkZWNsYXJhdGlvbnMuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAxLjIuMAorLSBSZW1vdmVkIHRoZSBmYWN0b3J5LiBUaGUgZmFjdG9yeSB3YXMgbm90IHJlYWxseSBpbiB0aGUgc3Bpcml0IAorICBvZiBzbWFsbCBhbmQgc2ltcGxlLCBjb25mdXNlZCB0aGUgY29kZSwgYW5kIHdhcyBvZiBsaW1pdGVkIHZhbHVlLgorLSBBZGRlZCBGaXJzdENoaWxkRWxlbWVudCBhbmQgTmV4dFNpYmxpbmdFbGVtZW50LCBiZWNhdXNlIHRoZXkKKyAgYXJlIHN1Y2ggY29tbW9uIGZ1bmN0aW9ucy4KKy0gUmUtd3JvdGUgdGhlIGV4YW1wbGUgdG8gdGVzdCBhbmQgZGVtb25zdHJhdGUgbW9yZSBmdW5jdGlvbmFsaXR5LgorCitDaGFuZ2VzIGluIHZlcnNpb24gMS4yLjEKKy0gRml4ZWQgYSBidWcgd2hlcmUgY29tbWVudHMgY291bGRuJ3QgYmUgaW5zaWRlIGVsZW1lbnRzLgorLSBMb2FkaW5nIG5vdyBjbGVhcnMgb3V0IGV4aXN0aW5nIFhNTCByYXRoZXIgdGhhbiBhcHBlbmRpbmcuCistIEFkZGVkIHRoZSAiQ2xlYXIiIG1ldGhvZCBvbiBhIG5vZGUgdG8gZGVsZXRlIGFsbCBpdHMgY2hpbGRyZW4uCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAxLjIuMgorLSBGaXhlZCBUaVhtbEF0dHJpYnV0ZTo6UHJldmlvdXMgYWN0dWFsbHkgcmV0dXJuaW5nICJuZXh0LiIgVGhhbmtzCisgIHRvIFJpY2thcmQgVHJvZWRzc29uIGZvciB0aGUgYnVnIGZpeC4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMi4zCistIEFkZGVkIHRoZSBUSVhNTCBwcmVmaXggdG8gdGhlIGVycm9yIHN0cmluZ3MgdG8gcmVzb2x2ZSBjb25mbGljdHMKKyAgd2l0aCAjZGVmaW5lcyBpbiBPUyBoZWFkZXJzLiBUaGFua3MgdG8gU3RldmUgTGhvbW1lLgorLSBGaXhlZCBhIGRlbGV0ZSBidWYgdGhhdCBzaG91bGQgYmUgYSBkZWxldGUgW10gYnVmLiAKKyAgVGhhbmtzIHRvIEVwaGkgU2lub3dpdHouCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAxLjIuNAorLSBSZXBsYWNlQ2hpbGQoKSB3YXMgYWxtb3N0IGd1YXJlbnRlZWQgdG8gZmFpbC4gU2hvdWxkIGJlIGZpeGVkLAorICB0aGFua3MgdG8gSm9lIFNtaXRoLiBKb2UgYWxzbyBwb2ludGVkIG91dCB0aGF0IHRoZSBQcmludCgpIGZ1bmN0aW9ucworICBzaG91bGQgdGFrZSBzdHJlYW0gcmVmZXJlbmNlczogSSBhZ3JlZSwgYW5kIHdvdWxkIGxpa2UgdG8gb3ZlcmxvYWQKKyAgdGhlIFByaW50KCkgbWV0aG9kIHRvIHRha2UgZWl0aGVyIGZvcm1hdCwgYnV0IEkgZG9uJ3Qgd2FudCB0byBkbyAKKyAgdGhpcyBpbiBhIGRvdCByZWxlYXNlLgorLSBTb21lIGNvbXBpbGVycyBzZWVtIHRvIG5lZWQgYW4gZXh0cmEgPGN0eXBlLmg+IGluY2x1ZGUuIFRoYW5rcworICB0byBTdGV2ZSBMaG9tbWUgZm9yIHRoYXQuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAyLjAuMCBCRVRBCistIE1hZGUgdGhlIFRvWFhYKCkgY2FzdHMgc2FmZSBpZiAndGhpcycgaXMgbnVsbC4gCisgIFdoZW4gIkxvYWRGaWxlIiBpcyBjYWxsZWQgd2l0aCBhIGZpbGVuYW1lLCB0aGUgdmFsdWUgd2lsbCBjb3JyZWN0bHkgZ2V0IHNldC4KKyAgVGhhbmtzIHRvIEJyaWFuIFlvZGVyLgorLSBGaXhlZCBidWcgd2hlcmUgaXNhbHBoYSgpIGFuZCBpc2FsbnVtKCkgd291bGQgZ2V0IGNhbGxlZCB3aXRoIGEgbmVnYXRpdmUgdmFsdWUgZm9yIAorICBoaWdoIGFzY2lpIG51bWJlcnMuIFRoYW5rcyB0byBBbGVza3kgQWtzZW5vdi4KKy0gRml4ZWQgc29tZSBlcnJvcnMgY29kZXMgdGhhdCB3ZXJlIG5vdCBnZXR0aW5nIHNldC4KKy0gTWFkZSBtZXRob2RzICJjb25zdCIgdGhhdCB3ZXJlIG5vdC4KKy0gQWRkZWQgYSBzd2l0Y2ggdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGlnbm9yaW5nIG9mIHdoaXRlIHNwYWNlLiAoIFRpWG1sRG9jdW1lbnQ6OlNldElnbm9yZVdoaXRlU3BhY2UoKSApCistIEdyZWF0ZXIgc3RhbmRhcmRpemF0aW9uIGFuZCBjb2RlIHJlLXVzZSBpbiB0aGUgcGFyc2VyLgorLSBBZGRlZCBhIHN0cmVhbSBvdXQgb3BlcmF0b3IuCistIEFkZGVkIGEgc3RyZWFtIGluIG9wZXJhdG9yLgorLSBFbnRpdHkgc3VwcG9ydCwgb2YgcHJlZGVmaW5lZCBlbnRpdGVzLiAmI3ggZW50aXRpZXMgYXJlIHVudG91Y2hlZCBieSBpbnB1dCBvciBvdXRwdXQuCistIEltcHJvdmVkIHRleHQgb3V0IGZvcm1hdHRpbmcuCistIEZpeGVkIFJlcGxhY2VDaGlsZCBidWcsIHRoYW5rcyB0byBUYW8gQ2hlbi4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMC4xCistIEZpeGVkIGhhbmdpbmcgb24gbG9hZGluZyBhIDAgbGVuZ3RoIGZpbGUuIFRoYW5rcyB0byBKZWZmIFNjb3p6YWZhdmEuCistIEZpeGVkIGNyYXNoaW5nIG9uIEluc2VydEJlZm9yZUNoaWxkIGFuZCBJbnNlcnRBZnRlckNoaWxkLiBBbHNvIHBvc3NpYmlsaXR5IG9mIGJhZCBsaW5rcyBiZWluZworICBjcmVhdGVkIGJ5IHNhbWUgZnVuY3Rpb24uIFRoYW5rcyB0byBGcmFuayBEZSBwcmlucy4KKy0gQWRkZWQgbWlzc2luZyBsaWNlbmNlIHRleHQuIFRoYW5rcyB0byBMYXJzIFdpbGxlbXNlbnMuCistIEFkZGVkIDxjdHlwZS5oPiBpbmNsdWRlLCBhdCB0aGUgc3VnZ2VzdGlvbiBvZiBTdGV2ZSBXYWx0ZXJzLgorCitDaGFuZ2VzIGluIHZlcnNpb24gMi4xLjAKKy0gWXZlcyBCZXJxdWluIGJyaW5ncyB1cyB0aGUgU1RMIHN3aXRjaC4gVGhlIGZvcnVtIG9uIFNvdXJjZUZvcmdlLCBhbmQgdmFyaW91cyBlbWFpbHMgdG8KKyAgbWUsIGhhdmUgbG9uZyBkZWJhdGVkIGFsbCBvdXQgU1RMIHZzLiBubyBTVEwgYXQgYWxsLiBBbmQgbm93IHlvdSBjYW4gaGF2ZSBpdCBib3RoIHdheXMuCisgIFRpbnlYbWwgd2lsbCBjb21waWxlIGVpdGhlciB3YXkuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAyLjEuMQorLSBDb21waWxhdGlvbiB3YXJuaW5ncy4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMS4yCistIFVuZWVkZWQgY29kZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIFNUTCBjYXNlLgorLSBDaGFuZ2VkIGhlYWRlcnMgc28gdGhhdCBTVEwgY2FuIGJlIHR1cm5lZCBvbiBvciBvZmYgaW4gdGlueXhtbC5oCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAyLjEuMworLSBGaXhlZCBub24tY29uc3QgcmVmZXJlbmNlIGluIEFQSTsgbm93IHVzZXMgYSBwb2ludGVyLgorLSBDb3B5IGNvbnN0cnVjdG9yIG9mIFRpWG1sU3RyaW5nIG5vdCBjaGVja2luZyBmb3IgYXNzaWdubWVudCB0byBzZWxmLgorLSBOaW1yb2QgQ29oZW4gZm91bmQgYSB0cnVseSBldmlsIGJ1ZyBpbiB0aGUgU1RMIGltcGxlbWVudGF0aW9uIHRoYXQgb2NjdXJzCisgIHdoZW4gYSBzdHJpbmcgaXMgY29udmVydGVkIHRvIGEgY19zdHIgYW5kIHRoZW4gYXNzaWduZWQgdG8gc2VsZi4gU2VhcmNoIGZvcgorICBTVExfU1RSSU5HX0JVRyBmb3IgYSBmdWxsIGRlc2NyaXB0aW9uLiBJJ20gYXNzZXJ0aW5nIHRoaXMgaXMgYSBNaWNyb3NvZnQgU1RMCisgIGJ1Zywgc2luY2UgJnN0cmluZyBhbmQgc3RyaW5nLmNfc3RyKCkgc2hvdWxkIG5ldmVyIGJlIHRoZSBzYW1lLiBOZXZlcnRoZWxlc3MsCisgIHRoZSBjb2RlIHdvcmtzIGFyb3VuZCBpdC4KKy0gVXJpdmFuIFNhYWliIHBvaW50ZWQgb3V0IGEgY29tcGlsZXIgY29uZmxpY3QsIHdoZXJlIHRoZSBDIGhlYWRlcnMgZGVmaW5lCisgIHRoZSBpc2JsYW5rIG1hY3JvLCB3aGljaCB3YXMgd2lwaW5nIG91dCB0aGUgVGlYbWxTdHJpbmc6OmlzYmxhbmsoKSBtZXRob2QuCisgIFRoZSBtZXRob2Qgd2FzIHVudXNlZCBhbmQgaGFzIGJlZW4gcmVtb3ZlZC4KKworQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMS40CistIFJld29ya2VkIHRoZSBlbnRpdHkgY29kZS4gRW50aXRpZXMgd2VyZSBub3QgY29ycmVjdGx5IHN1cnZpbmcgcm91bmQgdHJpcCBpbnB1dCBhbmQgb3V0cHV0LgorICBXaWxsIG5vdyBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBlbnRpdGllcyBmb3IgaGlnaCBhc2NpaSBpbiBvdXRwdXQuCisKK0NoYW5nZXMgaW4gdmVyc2lvbiAyLjEuNQorLSBCdWcgZml4IGJ5IGt5bG90YW4gOiBpbmZpbml0ZSBsb29wIG9uIHNvbWUgaW5wdXQgKHRpbnl4bWxwYXJzZXIuY3BwIHJldiAxLjI3KQorLSBDb250cmlidXRlZCBieSBJdmljYSBBcmFjaWMgKGJ5dGVsb3JkKSA6IDEgbmV3IFZDKysgcHJvamVjdCB0byBjb21waWxlIHZlcnNpb25zIGFzIHN0YXRpYyBsaWJyYXJpZXMgKHRpbnl4bWxfbGliLmRzcCksIAorICBhbmQgYW4gZXhhbXBsZSB1c2FnZSBpbiB4bWx0ZXN0LmRzcAorICAoUGF0Y2ggcmVxdWVzdCBJRCA2Nzg2MDUpCistIEEgc3VnZ2VzdGlvbiBieSBSb25hbGQgRmVubmVyIEpyIChkb3JtbG9jaykgdG8gYWRkICNpbmNsdWRlIDxpc3RyZWFtPiBhbmQgPG9zdHJlYW0+IGZvciBBcHBsZSdzIFByb2plY3QgQnVpbGRlciAKKyAgKFBhdGNoIHJlcXVlc3QgSUQgNjk3NjQyKQorLSBBIHBhdGNoIGZyb20gb2hvbW1lcyB0aGF0IGFsbG93cyB0byBwYXJzZSBjb3JyZWN0bHkgZG90cyBpbiBlbGVtZW50IG5hbWVzIGFuZCBhdHRyaWJ1dGUgbmFtZXMKKyAgKFBhdGNoIHJlcXVlc3QgNjAyNjAwIGFuZCBreWxvdGFuIDcwMTcyOCkKKy0gQSBwYXRjaCBmcm9tICBoZXJtaXRnZWVrICggSmFtZXMgKSBhbmQgd2FzdGVsYW5kIGZvciBpbXByb3BlciBlcnJvciByZXBvcnRpbmcKKy0gUmV2aWV3ZWQgYnkgTGVlLCB3aXRoIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKwktIEdvdCBzaWNrIG9mIGZpZ2h0aW5nIHRoZSBTVEwvbm9uLVNUTCB0aGluZyBpbiB0aGUgd2luZG93cyBidWlsZC4gQnJva2UKKwkgIHRoZW0gb3V0IGFzIHNlcGVyYXRlIHByb2plY3RzLgorCS0gSSBoYXZlIHRvbyBsb25nIG5vdCBpbmNsdWRlZCB0aGUgZHN3LiBBZGRlZC4KKwktIFRpbnlYbWxUZXh0IGhhZCBhIHByb3RlY3RlZCBQcmludC4gT2RkLgorCS0gTWFkZSBMaW5rRW5kQ2hpbGQgcHVibGljLCB3aXRoIGRvY3MgYW5kIGFwcHJvcHJpYXRlIHdhcm5pbmdzLgorCS0gVXBkYXRlZCB0aGUgZG9jcy4KKworMi4yLjAKKy0gRml4ZWQgYW4gdW5pbml0aWFsaXplZCBwb2ludGVyIGluIHRoZSBUaVhtbEF0dHJpYnV0ZXMKKy0gRml4ZWQgU1RMIGNvbXBpbGF0aW9uIHByb2JsZW0gaW4gTWluR1cgKGFuZCBnY2MgMz8pIC0gdGhhbmtzIEJyaWFuIFlvZGVyIGZvciBmaW5kaW5nIHRoaXMgb25lCistIEZpeGVkIGEgc3ludGF4IGVycm9yIGluIFRpWG1sRGVjbGFyYXRpb24gLSB0aGFua3MgQnJpYW4gWW9kZXIKKy0gRmxldGNoZXIgRHVubiBwcm9wb3NlZCBhbmQgc3VibWl0dGVkIG5ldyBlcnJvciBoYW5kbGluZyB0aGF0IHRyYWNrZWQgdGhlIHJvdyBhbmQgY29sdW1uLiBMZWUKKyAgbW9kaWZpZWQgaXQgdG8gbm90IGhhdmUgcGVyZm9ybWFuY2UgaW1wYWN0LgorLSBHZW5lcmFsIGNsZWFudXAgc3VnZ2VzdGlvbnMgZnJvbSBGbGV0Y2hlciBEdW5uLgorLSBJbiBlcnJvciBoYW5kbGluZywgZ2VuZXJhbCBlcnJvcnMgd2lsbCBubyBsb25nZXIgY2xlYXIgdGhlIGVycm9yIHN0YXRlIG9mIHNwZWNpZmljIG9uZXMuCistIEZpeCBlcnJvciBpbiBkb2N1bWVudGF0aW9uIDogY29tbWVudHMgc3RhcnRpbmcgd2l0aCAiPD8tLSIgaW5zdGVhZCBvZiAiPCEtLSIgKHRoYW5rcyBpb25fcHVsc2UpCistIEFkZGVkIHRoZSBUaVhtbEhhbmRsZS4gQW4gZWFzeSwgc2FmZSB3YXkgdG8gYnJvd3NlIFhNTCBET01zIHdpdGggbGVzcyBjb2RlLgorLSBBZGRlZCBRdWVyeUF0dHJpYnV0ZSBjYWxscyB3aGljaCBoYXZlIGJldHRlciBlcnJvciBtZXNzYWdpbmcuIChQcm9wb3NlZCBieSBGbGV0Y2hlciBEdW5uKQorLSBOb2RlcyBhbmQgYXR0cmlidXRlcyBjYW4gbm93IHByaW50IHRoZW1zZWx2ZXMgdG8gc3RyaW5ncy4gKFl2ZXMgc3VnZ2VzdGlvbikKKy0gRml4ZWQgYnVnIHdoZXJlIGVudGl0aWVzIHdpdGggb25lIGNoYXJhY3RlciB3b3VsZCBjb25mdXNlIHBhcnNlci4gKFRoYW5rcyBSb21hbikKKworMi4yLjEKKy0gQWRkaXRpb25hbCB0ZXN0aW5nIChubyBtb3JlIGJ1Z3MgZm91bmQgdG8gYmUgZml4ZWQgaW4gdGhpcyByZWxlYXNlKQorLSBTaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCB0byB0aGUgY3Vyc29yIGNvZGUuCisKKzIuMy4wCistIFVzZXIgRGF0YSBhcmUgbm93IGRlZmluZWQgaW4gVGlYbWxCYXNlIGluc3RlYWQgb2YgVGlYbWxOb2RlCistIENoYXJhY3RlciBFbnRpdGllcyBhcmUgbm93IFVDUy0yCistIENoYXJhY3RlciBFbnRpdGllcyBjYW4gYmUgZGVjaW1hbCBvciBoZXhhZGVjaW1hbAorLSBVVEYtOCBjb252ZXJzaW9uLgorLSBGaXhlZCBtYW55LCBtYW55IGJ1Z3MuCisKKzIuMy4xCistIEZpeGVkIGJ1ZyBpbiBoYW5kbGluZyBudWxscyBlbWJlZGRlZCBpbiB0aGUgaW5wdXQuCistIE1ha2UgVVRGLTggcGFyc2VyIHRvbGVyYW50IG9mIGJhZCB0ZXh0IGVuY29kaW5nLgorLSBBZGRlZCBlbmNvZGluZyBkZXRlY3Rpb24uIAorLSBNYW55IGZpeGVzIGFuZCBpbnB1dCBmcm9tIEpvaG4tUGhpbGlwIExlb25hcmQgSm9oYW5zc29uIChKUCkgYW5kIEVsbGVycywgCisgIGluY2x1ZGluZyBVVEYtOCBmZWVkYmFjaywgYnVnIHJlcG9ydHMsIGFuZCBwYXRjaGVzLiBUaGFua3MhCistIEFkZGVkIHZlcnNpb24gIyBjb25zdGFudHMgLSBhIHN1Z2dlc3Rpb24gZnJvbSBKUCBhbmQgRWxsZXJzLgorLSBbIDk3OTE4MCBdIE1pc3NpbmcgOyBpbiBlbnRpdHkgcmVmZXJlbmNlLCBmaXggZnJvbSBSb2IgTGF2ZWF1eC4KKy0gQ29weSBjb25zdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnQgaGF2ZSBiZWVuIGEgbG9uZyB0aW1lIGNvbWluZy4gVGhhbmtzIHRvCisgIEZva2tlIGFuZCBKUC4KKworMi4zLjIKKy0gTWFkZSB0aGUgSXNBbHBoYSBhbmQgSXNBbHBoYU51bSBtdWNoIG1vcmUgdG9sZXJhbnQgb2Ygbm9uLVVURi04IGVuY29kaW5ncy4gVGhhbmtzCisgIFZvbGtlciBCb2VyY2hlcnMgZm9yIGZpbmRpbmcgdGhlIGlzc3VlLgorLSBSYW4gdGhlIHByb2dyYW0gdGhvdWdoIHRoZSBtYWduaWZpY2VudCBWYWxncmluZCAtIGh0dHA6Ly92YWxncmluZC5rZGUub3JnIC0gdG8gY2hlY2sKKyAgZm9yIG1lbW9yeSBlcnJvcnMuIEZpeGVkIHNvbWUgbWlub3IgaXNzdWVzLgorCisyLjMuMworLSBGaXhlZCBjcmFzaCB3aGVuIHRlc3QgcHJvZ3JhbSB3YXMgcnVuIGZyb20gaW5jb3JyZWN0IGRpcmVjdG9yeS4KKy0gRml4ZWQgYnVnIDEwNzA3MTcgLSBlbXB0eSBkb2N1bWVudCBub3QgcmV0dXJuZWQgY29ycmVjdGx5IC0gdGhhbmtzIEthdHN1aGlzYSBZdWFzYS4KKy0gQnVnIDEwNzkzMDEgcmVzb2x2ZWQgLSBkZXByZWNhdGVkIHN0ZGxpYiBjYWxscy4gVGhhbmtzIEFkcmlhbiBCb2VpbmcuCistIEJ1ZyAxMDM1MjE4IGZpeGVkIC0gZG9jdW1lbnRhdGlvbiBlcnJvcnMuIFh1bmppIEx1bworLSBPdGhlciBidWcgZml4ZXMgaGF2ZSBhY2N1bXVsYXRlZCBhbmQgYmVlbiBmaXhlZCBvbiB0aGUgd2F5IGFzIHdlbGw7IG15IGFwb2xvZ2llcyB0bworICBhdXRob3JzIG5vdCBjcmVkaXRlZCEKKy0gQmlnIGZpeCAvIGFkZGl0aW9uIGlzIHRvIGNvcnJlY3RseSByZXR1cm4gY29uc3QgdmFsdWVzLiBUaW55WG1sIGNvdWxkIGJhc2ljYWxseQorICByZW1vdmUgY29uc3QgaW4gYSBtZXRob2QgbGlrZSB0aGlzOiBUaVhtbEVsZW1lbnQqIEZvbygpIGNvbnN0LCB3aGVyZSB0aGUgcmV0dXJuZWQgZWxlbWVudAorICB3YXMgYSBwb2ludGVyIHRvIGludGVybmFsIGRhdGEuIFRoYXQgaXMgbm93OiBjb25zdCBUaVhtbEVsZW1lbnQqIEZvbygpIGNvbnN0IGFuZAorICBUaVhtbEVsZW1lbnQqIEZvbygpLgorCisyLjMuNAorLSBGaXhlZCBhZGRpdGlvbmFsIGNvbnN0IGVycm9ycywgdGhhbmtzIEtlbnQgR2lic29uLgorLSBDb3JyZWN0bHkgcmUtZW5hYmxlIHdhcm5pbmdzIGFmdGVyIHRpbnl4bWwgaGVhZGVyLiBUaGFua3MgQ29yeSBOZWxzb24uCistIFZhcmlldHkgb2YgdHlwZSBjbGVhbnVwIGFuZCB3YXJuaW5nIGZpeGVzLiBUaGFua3MgV2FycmVuIFN0ZXZlbnMuCistIENsZWFuZWQgdXAgdW5uZWVkZWQgY29uc3RydWN0b3IgY2FsbHMgaW4gVGlueVN0cmluZyAtIHRoYW5rcyB0byBHZW9mZiBDYXJsdG9uIGFuZAorICB0aGUgZGlzY3Vzc2lvbiBncm91cCBvbiBzb3VyY2Vmb3JnZS4KKworMi40LjAKKy0gSW1wcm92ZWQgc3RyaW5nIGNsYXNzLCB0aGFua3MgVHlnZSBMb3ZzZXQgKHdob3NlIG5hbWUgZ2V0cyBtYW5nbGVkIGluIEVuZ2xpc2ggLSBzb3JyeSkKKy0gVHlwZSBjYXN0IGNvbXBpbGVyIHdhcm5pbmcsIHRoYW5rcyBSb2IgdmFuIGRlbiBCb2dhYXJkCistIEFkZGVkIEdldFRleHQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbi4gVGhhbmtzIElseWEgUGFybml1ayAmIEFuZHJldyBFbGxlcnMgZm9yIGlucHV0LgorLSBNYW55IHRoYW5rcyB0byBtYXJsb25pc20gZm9yIGZpbmRpbmcgYW4gaW5maW5pdGUgbG9vcCBpbiBiYWQgeG1sLgorLSBBIHBhdGNoIHRvIGNsZWFudXAgd2FybmluZ3MgZnJvbSBSb2JlcnQgR2ViaXMuCistIEFkZGVkIFZhbHVlU3RyKCkgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhIG5vZGUgYXMgYSBzdHJpbmcuCistIFRpWG1sVGV4dCBjYW4gbm93IHBhcnNlIGFuZCBvdXRwdXQgYXMgQ0RBVEEKKy0gQWRkaXRpb25hbCBzdHJpbmcgaW1wcm92ZW1lbnQgZnJvbSBKYW1lcyAoejI4OTUpCistIFJlbW92ZWQgZXh0cmFuZW91cyAnY29uc3QnLCB0aGFua3MgRGF2aWQgQWxkcmljaAorLSBGaXJzdCBwYXNzIGF0IHN3aXRjaGluZyB0byB0aGUgInNhZmUiIHN0ZGxpYiBmdW5jdGlvbnMuIE1hbnkgcGVvcGxlIGhhdmUgc3VnZ2VzdGVkIGFuZAorICBwdXNoZWQgb24gdGhpcywgYnV0IFdhcnJlbiBTdGV2ZW5zIHB1dCB0b2dldGhlciB0aGUgZmlyc3QgcHJvcG9zYWwuCistIFRpbnlYbWwgbm93IHdpbGwgZG8gRU9MIG5vcm1hbGl6YXRpb24gYmVmb3JlIHBhcnNpbmcsIGNvbnNpc3RlbnQgd2l0aCB0aGUgVzNDIFhNTCBzcGVjLgorLSBEb2N1bWVudHMgbG9hZGVkIHdpdGggdGhlIFVURi04IEJPTSB3aWxsIG5vdyBzYXZlIHdpdGggdGhlIFVURi04IEJPTS4gR29vZCBzdWdnZXN0aW9uIAorICBmcm9tICdpbnN0cnVjdG9yXycKKy0gRWxsZXJzIHN1Ym1pdHRlZCBoaXMgdmVyeSBwb3B1bGFyIHR1dG9yaWFscywgd2hpY2ggaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBkaXN0cmlidXRpb24uCisKZGlmZiAtLWdpdCBhL2RvY3MvYW5ub3RhdGVkLmh0bWwgYi9kb2NzL2Fubm90YXRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MmFmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Fubm90YXRlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBDbGFzcyBMaXN0PC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaW55WG1sIENsYXNzIExpc3Q8L2gxPkhlcmUgYXJlIHRoZSBjbGFzc2VzLCBzdHJ1Y3RzLCB1bmlvbnMgYW5kIGludGVyZmFjZXMgd2l0aCBicmllZiBkZXNjcmlwdGlvbnM6PHRhYmxlPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5BbiBhdHRyaWJ1dGUgaXMgYSBuYW1lLXZhbHVlIHBhaXIgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPlRpWG1sQmFzZSBpcyBhIGJhc2UgY2xhc3MgZm9yIGV2ZXJ5IGNsYXNzIGluIFRpbnlYbWwgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkFuIFhNTCBjb21tZW50IDwvdGQ+PC90cj4KKyAgPHRyPjx0ZCBjbGFzcz0iaW5kZXhrZXkiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkluIGNvcnJlY3QgWE1MIHRoZSBkZWNsYXJhdGlvbiBpcyB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGZpbGUgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+QWx3YXlzIHRoZSB0b3AgbGV2ZWwgbm9kZSA8L3RkPjwvdHI+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+VGhlIGVsZW1lbnQgaXMgYSBjb250YWluZXIgY2xhc3MgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5BIFRpWG1sSGFuZGxlIGlzIGEgY2xhc3MgdGhhdCB3cmFwcyBhIG5vZGUgcG9pbnRlciB3aXRoIG51bGwgY2hlY2tzOyB0aGlzIGlzIGFuIGluY3JlZGlibHkgdXNlZnVsIHRoaW5nIDwvdGQ+PC90cj4KKyAgPHRyPjx0ZCBjbGFzcz0iaW5kZXhrZXkiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5UaGUgcGFyZW50IGNsYXNzIGZvciBldmVyeXRoaW5nIGluIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwgPC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPlhNTCB0ZXh0IDwvdGQ+PC90cj4KKyAgPHRyPjx0ZCBjbGFzcz0iaW5kZXhrZXkiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5BbnkgdGFnIHRoYXQgdGlueVhtbCBkb2Vzbid0IHJlY29nbml6ZSBpcyBzYXZlZCBhcyBhbiB1bmtub3duIDwvdGQ+PC90cj4KKzwvdGFibGU+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQXR0cmlidXRlLW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS1tZW1iZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMxNGE3MwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS1tZW1iZXJzLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IE1lbWJlciBMaXN0PC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxBdHRyaWJ1dGUgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiwgaW5jbHVkaW5nIGFsbCBpbmhlcml0ZWQgbWVtYmVycy48cD48dGFibGU+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E2Ij5Eb3VibGVWYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+SW50VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EzIj5OYW1lPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPk5leHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5QcmV2aW91czwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E4Ij5RdWVyeURvdWJsZVZhbHVlPC9hPihkb3VibGUgKl92YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlF1ZXJ5SW50VmFsdWU8L2E+KGludCAqX3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMiI+U2V0RG91YmxlVmFsdWU8L2E+KGRvdWJsZSBfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTExIj5TZXRJbnRWYWx1ZTwvYT4oaW50IF92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOSI+U2V0TmFtZTwvYT4oY29uc3QgY2hhciAqX25hbWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMyI+U2V0TmFtZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEwIj5TZXRWYWx1ZTwvYT4oY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPlRpWG1sQXR0cmlidXRlPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExIj5UaVhtbEF0dHJpYnV0ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyIj5UaVhtbEF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Cis8L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNGRiNTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbApAQCAtMCwwICsxLDE3OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpWG1sQXR0cmlidXRlIENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sQXR0cmlidXRlIENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxBdHRyaWJ1dGUiIC0tPjwhLS0gZG94eXRhZzogaW5oZXJpdHM9IlRpWG1sQmFzZSIgLS0+QW4gYXR0cmlidXRlIGlzIGEgbmFtZS12YWx1ZSBwYWlyLiAgCis8YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Cis8cD4KKzxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgorPHA+Cis8cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbEF0dHJpYnV0ZToKKzxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxBdHRyaWJ1dGUucG5nIiB1c2VtYXA9IiNUaVhtbEF0dHJpYnV0ZV9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgorPG1hcCBuYW1lPSJUaVhtbEF0dHJpYnV0ZV9tYXAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCw5MCwyNCI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlRpWG1sQXR0cmlidXRlIiByZWY9ImEwIiBhcmdzPSIoKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPlRpWG1sQXR0cmlidXRlPC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0IGFuIGVtcHR5IGF0dHJpYnV0ZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlRpWG1sQXR0cmlidXRlIiByZWY9ImExIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMSI+VGlYbWxBdHRyaWJ1dGU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19uYW1lLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPnN0ZDo6c3RyaW5nIGNvbnN0cnVjdG9yLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6VGlYbWxBdHRyaWJ1dGUiIHJlZj0iYTIiIGFyZ3M9Iihjb25zdCBjaGFyICpfbmFtZSwgY29uc3QgY2hhciAqX3ZhbHVlKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIiPlRpWG1sQXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdCBhbiBhdHRyaWJ1dGUgd2l0aCBhIG5hbWUgYW5kIHZhbHVlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6TmFtZSIgcmVmPSJhMyIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMyI+TmFtZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBhdHRyaWJ1dGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpWYWx1ZSIgcmVmPSJhNCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+VmFsdWU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OkludFZhbHVlIiByZWY9ImE1IiBhcmdzPSIoKSBjb25zdCAiIC0tPgoraW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E1Ij5JbnRWYWx1ZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLCBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlci4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OkRvdWJsZVZhbHVlIiByZWY9ImE2IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorZG91YmxlJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E2Ij5Eb3VibGVWYWx1ZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLCBjb252ZXJ0ZWQgdG8gYSBkb3VibGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNyI+UXVlcnlJbnRWYWx1ZTwvYT4gKGludCAqX3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJ5SW50VmFsdWUgZXhhbWluZXMgdGhlIHZhbHVlIHN0cmluZy4gIDxhIGhyZWY9IiNhNyI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpRdWVyeURvdWJsZVZhbHVlIiByZWY9ImE4IiBhcmdzPSIoZG91YmxlICpfdmFsdWUpIGNvbnN0ICIgLS0+CitpbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTgiPlF1ZXJ5RG91YmxlVmFsdWU8L2E+IChkb3VibGUgKl92YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5RdWVyeURvdWJsZVZhbHVlIGV4YW1pbmVzIHRoZSB2YWx1ZSBzdHJpbmcuIFNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNyI+UXVlcnlJbnRWYWx1ZSgpPC9hPi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlNldE5hbWUiIHJlZj0iYTkiIGFyZ3M9Iihjb25zdCBjaGFyICpfbmFtZSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOSI+U2V0TmFtZTwvYT4gKGNvbnN0IGNoYXIgKl9uYW1lKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2V0IHRoZSBuYW1lIG9mIHRoaXMgYXR0cmlidXRlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlNldFZhbHVlIiByZWY9ImExMCIgYXJncz0iKGNvbnN0IGNoYXIgKl92YWx1ZSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTAiPlNldFZhbHVlPC9hPiAoY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2V0IHRoZSB2YWx1ZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpTZXRJbnRWYWx1ZSIgcmVmPSJhMTEiIGFyZ3M9IihpbnQgX3ZhbHVlKSIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMSI+U2V0SW50VmFsdWU8L2E+IChpbnQgX3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2V0IHRoZSB2YWx1ZSBmcm9tIGFuIGludGVnZXIuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6U2V0RG91YmxlVmFsdWUiIHJlZj0iYTEyIiBhcmdzPSIoZG91YmxlIF92YWx1ZSkiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTIiPlNldERvdWJsZVZhbHVlPC9hPiAoZG91YmxlIF92YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNldCB0aGUgdmFsdWUgZnJvbSBhIGRvdWJsZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpTZXROYW1lIiByZWY9ImExMyIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X25hbWUpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEzIj5TZXROYW1lPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlNldFZhbHVlIiByZWY9ImExNCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNCI+U2V0VmFsdWU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6Ok5leHQiIHJlZj0iYTE1IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNSI+TmV4dDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HZXQgdGhlIG5leHQgc2libGluZyBhdHRyaWJ1dGUgaW4gdGhlIERPTS4gUmV0dXJucyBudWxsIGF0IGVuZC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpQcmV2aW91cyIgcmVmPSJhMTciIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5QcmV2aW91czwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HZXQgdGhlIHByZXZpb3VzIHNpYmxpbmcgYXR0cmlidXRlIGluIHRoZSBET00uIFJldHVybnMgbnVsbCBhdCBiZWdpbm5pbmcuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4gIDxhIGhyZWY9IiNhMjMiPjwvYT48YnI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitBbiBhdHRyaWJ1dGUgaXMgYSBuYW1lLXZhbHVlIHBhaXIuIAorPHA+CitFbGVtZW50cyBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgYXR0cmlidXRlcywgZWFjaCB3aXRoIGEgdW5pcXVlIG5hbWUuPHA+Cis8ZGwgY29tcGFjdD48ZHQ+PGI+Tm90ZTo8L2I+PC9kdD48ZGQ+VGhlIGF0dHJpYnV0ZXMgYXJlIG5vdCBUaVhtbE5vZGVzLCBzaW5jZSB0aGV5IGFyZSBub3QgcGFydCBvZiB0aGUgdGlueVhNTCBkb2N1bWVudCBvYmplY3QgbW9kZWwuIFRoZXJlIGFyZSBvdGhlciBzdWdnZXN0ZWQgd2F5cyB0byBsb29rIGF0IHRoaXMgcHJvYmxlbS48L2RkPjwvZGw+CisKKzxwPgorPGhyPjxoMj5NZW1iZXIgRnVuY3Rpb24gRG9jdW1lbnRhdGlvbjwvaDI+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlByaW50IiByZWY9ImEyMyIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgdm9pZCBUaVhtbEF0dHJpYnV0ZTo6UHJpbnQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+RklMRSAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+Y2ZpbGU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZGVwdGg8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQWxsIFRpbnlYbWwgY2xhc3NlcyBjYW4gcHJpbnQgdGhlbXNlbHZlcyB0byBhIGZpbGVzdHJlYW0uIAorPHA+CitUaGlzIGlzIGEgZm9ybWF0dGVkIHByaW50LCBhbmQgd2lsbCBpbnNlcnQgdGFicyBhbmQgbmV3bGluZXMuPHA+CisoRm9yIGFuIHVuZm9ybWF0dGVkIHN0cmVhbSwgdXNlIHRoZSAmbHQ7Jmx0OyBvcGVyYXRvci4pCis8cD4KK0ltcGxlbWVudHMgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5UaVhtbEJhc2U8L2E+LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpRdWVyeUludFZhbHVlIiByZWY9ImE3IiBhcmdzPSIoaW50ICpfdmFsdWUpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCBUaVhtbEF0dHJpYnV0ZTo6UXVlcnlJbnRWYWx1ZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+X3ZhbHVlPC9lbT4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1F1ZXJ5SW50VmFsdWUgZXhhbWluZXMgdGhlIHZhbHVlIHN0cmluZy4gCis8cD4KK0l0IGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+SW50VmFsdWUoKTwvYT4gbWV0aG9kIHdpdGggcmljaGVyIGVycm9yIGNoZWNraW5nLiBJZiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlciwgaXQgaXMgc3RvcmVkIGluICd2YWx1ZScgYW5kIHRoZSBjYWxsIHJldHVybnMgVElYTUxfU1VDQ0VTUy4gSWYgaXQgaXMgbm90IGFuIGludGVnZXIsIGl0IHJldHVybnMgVElYTUxfV1JPTkdfVFlQRS48cD4KK0Egc3BlY2lhbGl6ZWQgYnV0IHVzZWZ1bCBjYWxsLiBOb3RlIHRoYXQgZm9yIHN1Y2Nlc3MgaXQgcmV0dXJucyAwLCB3aGljaCBpcyB0aGUgb3Bwb3NpdGUgb2YgYWxtb3N0IGFsbCBvdGhlciBUaW55WG1sIGNhbGxzLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5wbmcgYi9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYWM1Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEJhc2UtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQmFzZS1tZW1iZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc4NmQ5MAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbEJhc2UtbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sQmFzZSBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPTA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3B1cmUgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+PC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwcm90ZWN0ZWRdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEJhc2UuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWMwY2QwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sQmFzZS5odG1sCkBAIC0wLDAgKzEsMTk0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogVGlYbWxCYXNlIENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sQmFzZSBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sQmFzZSIgLS0+VGlYbWxCYXNlIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXZlcnkgY2xhc3MgaW4gVGlueVhtbC4gIAorPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgorPHA+Cis8Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KKzxwPgorPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxCYXNlOgorPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbEJhc2UucG5nIiB1c2VtYXA9IiNUaVhtbEJhc2VfbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KKzxtYXAgbmFtZT0iVGlYbWxCYXNlX21hcCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiIGFsdD0iVGlYbWxBdHRyaWJ1dGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsMTA4LDgwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiIGFsdD0iVGlYbWxOb2RlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIyOTUsNTYsNDAzLDgwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiIGFsdD0iVGlYbWxDb21tZW50IiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDExMiwxMDgsMTM2Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIiBhbHQ9IlRpWG1sRGVjbGFyYXRpb24iIHNoYXBlPSJyZWN0IiBjb29yZHM9IjExOCwxMTIsMjI2LDEzNiI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCIgYWx0PSJUaVhtbERvY3VtZW50IiBzaGFwZT0icmVjdCIgY29vcmRzPSIyMzYsMTEyLDM0NCwxMzYiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCIgYWx0PSJUaVhtbEVsZW1lbnQiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjM1NCwxMTIsNDYyLDEzNiI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIiBhbHQ9IlRpWG1sVGV4dCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iNDcyLDExMiw1ODAsMTM2Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiIGFsdD0iVGlYbWxVbmtub3duIiBzaGFwZT0icmVjdCIgY29vcmRzPSI1OTAsMTEyLDY5OCwxMzYiPgorPC9tYXA+Cis8YSBocmVmPSJjbGFzc1RpWG1sQmFzZS1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ID0wPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4gIDxhIGhyZWY9IiNhMiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIHBvc2l0aW9uLCBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9mIHRoaXMgbm9kZSBvciBhdHRyaWJ1dGUuICA8YSBocmVmPSIjYTMiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OkNvbHVtbiIgcmVmPSJhNCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2ludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3coKTwvYT4uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+U3RhdGljIFB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnN0YXRpYyB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlPC9hPiAoYm9vbCBjb25kZW5zZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSB3b3JsZCBkb2VzIG5vdCBhZ3JlZSBvbiB3aGV0aGVyIHdoaXRlIHNwYWNlIHNob3VsZCBiZSBrZXB0IG9yIG5vdC4gIDxhIGhyZWY9IiNlMCI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImUxIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6SXNXaGl0ZVNwYWNlQ29uZGVuc2VkIiByZWY9ImUxIiBhcmdzPSIoKSIgLS0+CitzdGF0aWMgYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgY3VycmVudCB3aGl0ZSBzcGFjZSBzZXR0aW5nLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlByb3RlY3RlZCBBdHRyaWJ1dGVzPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9InAxIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6dXNlckRhdGEiIHJlZj0icDEiIGFyZ3M9IiIgLS0+Cit2b2lkICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkZpZWxkIGNvbnRhaW5pbmcgYSBnZW5lcmljIHVzZXIgcG9pbnRlci4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5GcmllbmRzPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4wIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6VGlYbWxOb2RlIiByZWY9Im4wIiBhcmdzPSIiIC0tPgorY2xhc3MmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI24wIj5UaVhtbE5vZGU8L2E+PC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4xIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6VGlYbWxFbGVtZW50IiByZWY9Im4xIiBhcmdzPSIiIC0tPgorY2xhc3MmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI24xIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4yIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6VGlYbWxEb2N1bWVudCIgcmVmPSJuMiIgYXJncz0iIiAtLT4KK2NsYXNzJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNuMiI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjwvdHI+CisKKzwvdGFibGU+Cis8aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgorVGlYbWxCYXNlIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXZlcnkgY2xhc3MgaW4gVGlueVhtbC4gCis8cD4KK0l0IGRvZXMgbGl0dGxlIGV4Y2VwdCB0byBlc3RhYmxpc2ggdGhhdCBUaW55WG1sIGNsYXNzZXMgY2FuIGJlIHByaW50ZWQgYW5kIHByb3ZpZGUgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucy48cD4KK0luIFhNTCwgdGhlIGRvY3VtZW50IGFuZCBlbGVtZW50cyBjYW4gY29udGFpbiBvdGhlciBlbGVtZW50cyBhbmQgb3RoZXIgdHlwZXMgb2Ygbm9kZXMuPHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglBIERvY3VtZW50IGNhbiBjb250YWluOglFbGVtZW50CShjb250YWluZXIgb3IgbGVhZikKKwkJCQkJCQlDb21tZW50IChsZWFmKQorCQkJCQkJCVVua25vd24gKGxlYWYpCisJCQkJCQkJRGVjbGFyYXRpb24oIGxlYWYgKQorCisJQW4gRWxlbWVudCBjYW4gY29udGFpbjoJRWxlbWVudCAoY29udGFpbmVyIG9yIGxlYWYpCisJCQkJCQkJVGV4dAkobGVhZikKKwkJCQkJCQlBdHRyaWJ1dGVzIChub3Qgb24gdHJlZSkKKwkJCQkJCQlDb21tZW50IChsZWFmKQorCQkJCQkJCVVua25vd24gKGxlYWYpCisKKwlBIERlY2xlcmF0aW9uIGNvbnRhaW5zOiBBdHRyaWJ1dGVzIChub3Qgb24gdHJlZSkKKwk8L3ByZT48L2Rpdj4KKzxwPgorPGhyPjxoMj5NZW1iZXIgRnVuY3Rpb24gRG9jdW1lbnRhdGlvbjwvaDI+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OlByaW50IiByZWY9ImEyIiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPTAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52aXJ0dWFsIHZvaWQgVGlYbWxCYXNlOjpQcmludCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5GSUxFICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5jZmlsZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5kZXB0aDwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PGNvZGU+IFtwdXJlIHZpcnR1YWxdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0FsbCBUaW55WG1sIGNsYXNzZXMgY2FuIHByaW50IHRoZW1zZWx2ZXMgdG8gYSBmaWxlc3RyZWFtLiAKKzxwPgorVGhpcyBpcyBhIGZvcm1hdHRlZCBwcmludCwgYW5kIHdpbGwgaW5zZXJ0IHRhYnMgYW5kIG5ld2xpbmVzLjxwPgorKEZvciBhbiB1bmZvcm1hdHRlZCBzdHJlYW0sIHVzZSB0aGUgJmx0OyZsdDsgb3BlcmF0b3IuKQorPHA+CitJbXBsZW1lbnRlZCBpbiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlRpWG1sQXR0cmlidXRlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOSI+VGlYbWxFbGVtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5UaVhtbENvbW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTUiPlRpWG1sVGV4dDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEwIj5UaVhtbERlY2xhcmF0aW9uPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E1Ij5UaVhtbFVua25vd248L2E+LCBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjQiPlRpWG1sRG9jdW1lbnQ8L2E+LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6Um93IiByZWY9ImEzIiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQgVGlYbWxCYXNlOjpSb3cgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitSZXR1cm4gdGhlIHBvc2l0aW9uLCBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9mIHRoaXMgbm9kZSBvciBhdHRyaWJ1dGUuIAorPHA+CitUaGUgcm93IGFuZCBjb2x1bW4gYXJlIDEtYmFzZWQuIChUaGF0IGlzIHRoZSBmaXJzdCByb3cgYW5kIGZpcnN0IGNvbHVtbiBpcyAxLDEpLiBJZiB0aGUgcmV0dXJucyB2YWx1ZXMgYXJlIDAgb3IgbGVzcywgdGhlbiB0aGUgcGFyc2VyIGRvZXMgbm90IGhhdmUgYSByb3cgYW5kIGNvbHVtbiB2YWx1ZS48cD4KK0dlbmVyYWxseSwgdGhlIHJvdyBhbmQgY29sdW1uIHZhbHVlIHdpbGwgYmUgc2V0IHdoZW4gdGhlIFRpWG1sRG9jdW1lbnQ6OkxvYWQoKSwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNiI+VGlYbWxEb2N1bWVudDo6TG9hZEZpbGUoKTwvYT4sIG9yIGFueSBUaVhtbE5vZGU6OlBhcnNlKCkgaXMgY2FsbGVkLiBJdCB3aWxsIE5PVCBiZSBzZXQgd2hlbiB0aGUgRE9NIHdhcyBjcmVhdGVkIGZyb20gb3BlcmF0b3ImZ3Q7Jmd0Oy48cD4KK1RoZSB2YWx1ZXMgcmVmbGVjdCB0aGUgaW5pdGlhbCBsb2FkLiBPbmNlIHRoZSBET00gaXMgbW9kaWZpZWQgcHJvZ3JhbW1hdGljYWxseSAoYnkgYWRkaW5nIG9yIGNoYW5naW5nIG5vZGVzIGFuZCBhdHRyaWJ1dGVzKSB0aGUgbmV3IHZhbHVlcyB3aWxsIE5PVCB1cGRhdGUgdG8gcmVmbGVjdCBjaGFuZ2VzIGluIHRoZSBkb2N1bWVudC48cD4KK1RoZXJlIGlzIGEgbWlub3IgcGVyZm9ybWFuY2UgY29zdCB0byBjb21wdXRpbmcgdGhlIHJvdyBhbmQgY29sdW1uLiBDb21wdXRhdGlvbiBjYW4gYmUgZGlzYWJsZWQgaWYgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUoKTwvYT4gaXMgY2FsbGVkIHdpdGggMCBhcyB0aGUgdmFsdWUuPHA+Cis8ZGwgY29tcGFjdD48ZHQ+PGI+U2VlIGFsc286PC9iPjwvZHQ+PGRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5UaVhtbERvY3VtZW50OjpTZXRUYWJTaXplKCk8L2E+PC9kZD48L2RsPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iZTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UiIHJlZj0iZTAiIGFyZ3M9Iihib29sIGNvbmRlbnNlKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnN0YXRpYyB2b2lkIFRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmJvb2wmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPmNvbmRlbnNlPC9lbT4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1RoZSB3b3JsZCBkb2VzIG5vdCBhZ3JlZSBvbiB3aGV0aGVyIHdoaXRlIHNwYWNlIHNob3VsZCBiZSBrZXB0IG9yIG5vdC4gCis8cD4KK0luIG9yZGVyIHRvIG1ha2UgZXZlcnlvbmUgaGFwcHksIHRoZXNlIGdsb2JhbCwgc3RhdGljIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgdG8gc2V0IHdoZXRoZXIgb3Igbm90IFRpbnlYbWwgd2lsbCBjb25kZW5zZSBhbGwgd2hpdGUgc3BhY2UgaW50byBhIHNpbmdsZSBzcGFjZSBvciBub3QuIFRoZSBkZWZhdWx0IGlzIHRvIGNvbmRlbnNlLiBOb3RlIGNoYW5naW5nIHRoaXMgdmFsdWVzIGlzIG5vdCB0aHJlYWQgc2FmZS4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxCYXNlLnBuZyBiL2RvY3MvY2xhc3NUaVhtbEJhc2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NWRiNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxCYXNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxDb21tZW50LW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQtbWVtYmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MDQ3YjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxDb21tZW50LW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDgxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbENvbW1lbnQgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E0Ij5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzQiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5M2FmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxDb21tZW50Lmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpWG1sQ29tbWVudCBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbENvbW1lbnQgQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbENvbW1lbnQiIC0tPjwhLS0gZG94eXRhZzogaW5oZXJpdHM9IlRpWG1sTm9kZSIgLS0+QW4gWE1MIGNvbW1lbnQuICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sQ29tbWVudDoKKzxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxDb21tZW50LnBuZyIgdXNlbWFwPSIjVGlYbWxDb21tZW50X21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Cis8bWFwIG5hbWU9IlRpWG1sQ29tbWVudF9tYXAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsOTQsODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCw5NCwyNCI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50LW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0cj48dGQ+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQ29tbWVudDo6VGlYbWxDb21tZW50IiByZWY9ImEwIiBhcmdzPSIoKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3RzIGFuIGVtcHR5IGNvbW1lbnQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQ29tbWVudDo6Q2xvbmUiIHJlZj0iYTQiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNCI+Q2xvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJucyBhIGNvcHkgb2YgdGhpcyBDb21tZW50LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbENvbW1lbnQ6OlByaW50IiByZWY9ImE1IiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgIiAtLT4KK3ZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTUiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Xcml0ZSB0aGlzIENvbW1lbnQgdG8gYSBGSUxFIHN0cmVhbS4gPGJyPjwvdGQ+PC90cj4KKzwvdGFibGU+Cis8aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgorQW4gWE1MIGNvbW1lbnQuIAorPHA+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxDb21tZW50LnBuZyBiL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzM2Q3NDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxDb21tZW50LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi1tZW1iZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjNjNjZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbERlY2xhcmF0aW9uIE1lbWJlciBMaXN0PC9oMT5UaGlzIGlzIHRoZSBjb21wbGV0ZSBsaXN0IG9mIG1lbWJlcnMgZm9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+Q2xvbmU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNyI+RW5jb2Rpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+U3RhbmRhbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPlRpWG1sRGVjbGFyYXRpb248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEiPlRpWG1sRGVjbGFyYXRpb248L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZlcnNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X2VuY29kaW5nLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19zdGFuZGFsb25lKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EyIj5UaVhtbERlY2xhcmF0aW9uPC9hPihjb25zdCBjaGFyICpfdmVyc2lvbiwgY29uc3QgY2hhciAqX2VuY29kaW5nLCBjb25zdCBjaGFyICpfc3RhbmRhbG9uZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VG9EZWNsYXJhdGlvbjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VG9Eb2N1bWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5Ub0VsZW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRvVW5rbm93bjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNiI+VmVyc2lvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Cis8L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzk3ZTZlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbApAQCAtMCwwICsxLDY5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogVGlYbWxEZWNsYXJhdGlvbiBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbERlY2xhcmF0aW9uIENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxEZWNsYXJhdGlvbiIgLS0+PCEtLSBkb3h5dGFnOiBpbmhlcml0cz0iVGlYbWxOb2RlIiAtLT5JbiBjb3JyZWN0IFhNTCB0aGUgZGVjbGFyYXRpb24gaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBmaWxlLiAgCis8YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Cis8cD4KKzxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgorPHA+Cis8cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbERlY2xhcmF0aW9uOgorPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLnBuZyIgdXNlbWFwPSIjVGlYbWxEZWNsYXJhdGlvbl9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgorPG1hcCBuYW1lPSJUaVhtbERlY2xhcmF0aW9uX21hcCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIiBhbHQ9IlRpWG1sTm9kZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCw1NiwxMDgsODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCwxMDgsMjQiPgorPC9tYXA+Cis8YSBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24tbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6VGlYbWxEZWNsYXJhdGlvbiIgcmVmPSJhMCIgYXJncz0iKCkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPlRpWG1sRGVjbGFyYXRpb248L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3QgYW4gZW1wdHkgZGVjbGFyYXRpb24uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OlRpWG1sRGVjbGFyYXRpb24iIHJlZj0iYTEiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192ZXJzaW9uLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19lbmNvZGluZywgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfc3RhbmRhbG9uZSkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEiPlRpWG1sRGVjbGFyYXRpb248L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192ZXJzaW9uLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19lbmNvZGluZywgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfc3RhbmRhbG9uZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdG9yLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uIiByZWY9ImEyIiBhcmdzPSIoY29uc3QgY2hhciAqX3ZlcnNpb24sIGNvbnN0IGNoYXIgKl9lbmNvZGluZywgY29uc3QgY2hhciAqX3N0YW5kYWxvbmUpIiAtLT4KKyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EyIj5UaVhtbERlY2xhcmF0aW9uPC9hPiAoY29uc3QgY2hhciAqX3ZlcnNpb24sIGNvbnN0IGNoYXIgKl9lbmNvZGluZywgY29uc3QgY2hhciAqX3N0YW5kYWxvbmUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3QuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OlZlcnNpb24iIHJlZj0iYTYiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNiI+VmVyc2lvbjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5WZXJzaW9uLiBXaWxsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgaWYgbm9uZSB3YXMgZm91bmQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OkVuY29kaW5nIiByZWY9ImE3IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTciPkVuY29kaW5nPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkVuY29kaW5nLiBXaWxsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgaWYgbm9uZSB3YXMgZm91bmQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OlN0YW5kYWxvbmUiIHJlZj0iYTgiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+U3RhbmRhbG9uZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5JcyB0aGlzIGEgc3RhbmRhbG9uZSBkb2N1bWVudD8gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6Q2xvbmUiIHJlZj0iYTkiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTkiPkNsb25lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgRGVjbGFyYXRpb24gYW5kIHJldHVybnMgaXQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpQcmludCIgcmVmPSJhMTAiIGFyZ3M9IihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCAiIC0tPgordmlydHVhbCB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEwIj5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UHJpbnQgdGhpcyBkZWNsYXJhdGlvbiB0byBhIEZJTEUgc3RyZWFtLiA8YnI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitJbiBjb3JyZWN0IFhNTCB0aGUgZGVjbGFyYXRpb24gaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBmaWxlLiAKKzxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCSZsdDs/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0ieWVzIj8mZ3Q7CisJPC9wcmU+PC9kaXY+PHA+CitUaW55WG1sIHdpbGwgaGFwcGlseSByZWFkIG9yIHdyaXRlIGZpbGVzIHdpdGhvdXQgYSBkZWNsYXJhdGlvbiwgaG93ZXZlci4gVGhlcmUgYXJlIDMgcG9zc2libGUgYXR0cmlidXRlcyB0byB0aGUgZGVjbGFyYXRpb246IHZlcnNpb24sIGVuY29kaW5nLCBhbmQgc3RhbmRhbG9uZS48cD4KK05vdGU6IEluIHRoaXMgdmVyc2lvbiBvZiB0aGUgY29kZSwgdGhlIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQgYXMgc3BlY2lhbCBjYXNlcywgbm90IGdlbmVyaWMgYXR0cmlidXRlcywgc2ltcGx5IGJlY2F1c2UgdGhlcmUgY2FuIG9ubHkgYmUgYXQgbW9zdCAzIGFuZCB0aGV5IGFyZSBhbHdheXMgdGhlIHNhbWUuCis8cD4KKzxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgorPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLnBuZyBiL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTA5MTJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbERvY3VtZW50LW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbERvY3VtZW50LW1lbWJlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGJmNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQtbWVtYmVycy5odG1sCkBAIC0wLDAgKzEsOTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sRG9jdW1lbnQgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+Q2xlYXJFcnJvcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNiMSI+Q2xvbmU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZCwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNSI+RXJyb3I8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+RXJyb3JDb2w8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5FcnJvckRlc2M8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNyI+RXJyb3JJZDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdzwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTYiPkxvYWRGaWxlPC9hPihUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTgiPkxvYWRGaWxlPC9hPihjb25zdCBjaGFyICpmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMCI+TG9hZEZpbGU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlBhcnNlPC9hPihjb25zdCBjaGFyICpwLCBUaVhtbFBhcnNpbmdEYXRhICpkYXRhPTAsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMyI+UHJpbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyNCI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGg9MCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+Um9vdEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E3Ij5TYXZlRmlsZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhOSI+U2F2ZUZpbGU8L2E+KGNvbnN0IGNoYXIgKmZpbGVuYW1lKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTEiPlNhdmVGaWxlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2ZpbGVuYW1lKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlPC9hPihib29sIGNvbmRlbnNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlNldFRhYlNpemU8L2E+KGludCBfdGFic2l6ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EwIj5UaVhtbERvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEiPlRpWG1sRG9jdW1lbnQ8L2E+KGNvbnN0IGNoYXIgKmRvY3VtZW50TmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMiI+VGlYbWxEb2N1bWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtkb2N1bWVudE5hbWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY4Ij5Ub0NvbW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY1Ij5Ub0RlY2xhcmF0aW9uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRvRGVjbGFyYXRpb248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj5Ub0RvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRvRG9jdW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VG9FbGVtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRvVGV4dDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij5Ub1Vua25vd248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UeXBlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+PC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwcm90ZWN0ZWRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlZhbHVlU3RyPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Cis8L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDJhZTJiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDQ0NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpWG1sRG9jdW1lbnQgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxEb2N1bWVudCBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sRG9jdW1lbnQiIC0tPjwhLS0gZG94eXRhZzogaW5oZXJpdHM9IlRpWG1sTm9kZSIgLS0+QWx3YXlzIHRoZSB0b3AgbGV2ZWwgbm9kZS4gIAorPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgorPHA+Cis8Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KKzxwPgorPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxEb2N1bWVudDoKKzxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxEb2N1bWVudC5wbmciIHVzZW1hcD0iI1RpWG1sRG9jdW1lbnRfbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KKzxtYXAgbmFtZT0iVGlYbWxEb2N1bWVudF9tYXAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsOTksODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCw5OSwyNCI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50IiByZWY9ImEwIiBhcmdzPSIoKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMCI+VGlYbWxEb2N1bWVudDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZSBhbiBlbXB0eSBkb2N1bWVudCwgdGhhdCBoYXMgbm8gbmFtZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6VGlYbWxEb2N1bWVudCIgcmVmPSJhMSIgYXJncz0iKGNvbnN0IGNoYXIgKmRvY3VtZW50TmFtZSkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEiPlRpWG1sRG9jdW1lbnQ8L2E+IChjb25zdCBjaGFyICpkb2N1bWVudE5hbWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGUgYSBkb2N1bWVudCB3aXRoIGEgbmFtZS4gVGhlIG5hbWUgb2YgdGhlIGRvY3VtZW50IGlzIGFsc28gdGhlIGZpbGVuYW1lIG9mIHRoZSB4bWwuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlRpWG1sRG9jdW1lbnQiIHJlZj0iYTIiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2RvY3VtZW50TmFtZSkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIiPlRpWG1sRG9jdW1lbnQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2RvY3VtZW50TmFtZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdG9yLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTYiPkxvYWRGaWxlPC9hPiAoVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TG9hZCBhIGZpbGUgdXNpbmcgdGhlIGN1cnJlbnQgZG9jdW1lbnQgdmFsdWUuICA8YSBocmVmPSIjYTYiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpTYXZlRmlsZSIgcmVmPSJhNyIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2Jvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNyI+U2F2ZUZpbGU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2F2ZSBhIGZpbGUgdXNpbmcgdGhlIGN1cnJlbnQgZG9jdW1lbnQgdmFsdWUuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpMb2FkRmlsZSIgcmVmPSJhOCIgYXJncz0iKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpIiAtLT4KK2Jvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhOCI+TG9hZEZpbGU8L2E+IChjb25zdCBjaGFyICpmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TG9hZCBhIGZpbGUgdXNpbmcgdGhlIGdpdmVuIGZpbGVuYW1lLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6U2F2ZUZpbGUiIHJlZj0iYTkiIGFyZ3M9Iihjb25zdCBjaGFyICpmaWxlbmFtZSkgY29uc3QgIiAtLT4KK2Jvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhOSI+U2F2ZUZpbGU8L2E+IChjb25zdCBjaGFyICpmaWxlbmFtZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TYXZlIGEgZmlsZSB1c2luZyB0aGUgZ2l2ZW4gZmlsZW5hbWUuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEwIj5Mb2FkRmlsZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlNhdmVGaWxlIiByZWY9ImExMSIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZmlsZW5hbWUpIGNvbnN0ICIgLS0+Citib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTExIj5TYXZlRmlsZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZmlsZW5hbWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Jmx0OyBTVEwgc3RkOjpzdHJpbmcgdmVyc2lvbi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dmlydHVhbCBjb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlBhcnNlPC9hPiAoY29uc3QgY2hhciAqcCwgVGlYbWxQYXJzaW5nRGF0YSAqZGF0YT0wLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5QYXJzZSB0aGUgZ2l2ZW4gbnVsbCB0ZXJtaW5hdGVkIGJsb2NrIG9mIHhtbCBkYXRhLiAgPGEgaHJlZj0iI2ExMiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj5Sb290RWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HZXQgdGhlIHJvb3QgZWxlbWVudCAtLSB0aGUgb25seSB0b3AgbGV2ZWwgZWxlbWVudCAtLSBvZiB0aGUgZG9jdW1lbnQuICA8YSBocmVmPSIjYTEzIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Ym9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNSI+RXJyb3I8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+SWYgYW4gZXJyb3Igb2NjdXJzLCBFcnJvciB3aWxsIGJlIHNldCB0byB0cnVlLiAgPGEgaHJlZj0iI2ExNSI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpFcnJvckRlc2MiIHJlZj0iYTE2IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5FcnJvckRlc2M8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29udGFpbnMgYSB0ZXh0dWFsIChlbmdsaXNoKSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IgaWYgb25lIG9jY3Vycy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE3Ij5FcnJvcklkPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkdlbmVyYWxseSwgeW91IHByb2JhYmx5IHdhbnQgdGhlIGVycm9yIHN0cmluZyAoIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5FcnJvckRlc2MoKTwvYT4gKS4gIDxhIGhyZWY9IiNhMTciPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPkVycm9yUm93PC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJucyB0aGUgbG9jYXRpb24gKGlmIGtub3duKSBvZiB0aGUgZXJyb3IuICA8YSBocmVmPSIjYTE4Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkVycm9yQ29sIiByZWY9ImExOSIgYXJncz0iKCkiIC0tPgoraW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5FcnJvckNvbDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBjb2x1bW4gd2hlcmUgdGhlIGVycm9yIG9jY3VyZWQuIFNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+RXJyb3JSb3coKTwvYT4uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlNldFRhYlNpemU8L2E+IChpbnQgX3RhYnNpemUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+U2V0VGFiU2l6ZSgpPC9hPiBhbGxvd3MgdGhlIGVycm9yIHJlcG9ydGluZyBmdW5jdGlvbnMgKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdygpPC9hPiBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPkVycm9yQ29sKCk8L2E+KSB0byByZXBvcnQgdGhlIGNvcnJlY3QgdmFsdWVzIGZvciByb3cgYW5kIGNvbHVtbi4gIDxhIGhyZWY9IiNhMjAiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIyIj5DbGVhckVycm9yPC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+SWYgeW91IGhhdmUgaGFuZGxlZCB0aGUgZXJyb3IsIGl0IGNhbiBiZSByZXNldCB3aXRoIHRoaXMgY2FsbC4gIDxhIGhyZWY9IiNhMjIiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6UHJpbnQiIHJlZj0iYTIzIiBhcmdzPSIoKSBjb25zdCAiIC0tPgordm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMyI+UHJpbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RHVtcCB0aGUgZG9jdW1lbnQgdG8gc3RhbmRhcmQgb3V0LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6UHJpbnQiIHJlZj0iYTI0IiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aD0wKSBjb25zdCAiIC0tPgordmlydHVhbCB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTI0Ij5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGg9MCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5QcmludCB0aGlzIERvY3VtZW50IHRvIGEgRklMRSBzdHJlYW0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHJvdGVjdGVkIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2IxIj5DbG9uZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGUgYW4gZXhhY3QgZHVwbGljYXRlIG9mIHRoaXMgbm9kZSBhbmQgcmV0dXJuIGl0LiAgPGEgaHJlZj0iI2IxIj48L2E+PGJyPjwvdGQ+PC90cj4KKzwvdGFibGU+Cis8aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgorQWx3YXlzIHRoZSB0b3AgbGV2ZWwgbm9kZS4gCis8cD4KK0EgZG9jdW1lbnQgYmluZHMgdG9nZXRoZXIgYWxsIHRoZSBYTUwgcGllY2VzLiBJdCBjYW4gYmUgc2F2ZWQsIGxvYWRlZCwgYW5kIHByaW50ZWQgdG8gdGhlIHNjcmVlbi4gVGhlICd2YWx1ZScgb2YgYSBkb2N1bWVudCBub2RlIGlzIHRoZSB4bWwgZmlsZSBuYW1lLgorPHA+Cis8aHI+PGgyPk1lbWJlciBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpDbGVhckVycm9yIiByZWY9ImEyMiIgYXJncz0iKCkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52b2lkIFRpWG1sRG9jdW1lbnQ6OkNsZWFyRXJyb3IgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitJZiB5b3UgaGF2ZSBoYW5kbGVkIHRoZSBlcnJvciwgaXQgY2FuIGJlIHJlc2V0IHdpdGggdGhpcyBjYWxsLiAKKzxwPgorVGhlIGVycm9yIHN0YXRlIGlzIGF1dG9tYXRpY2FsbHkgY2xlYXJlZCBpZiB5b3UgUGFyc2UgYSBuZXcgWE1MIGJsb2NrLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImIxIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkNsb25lIiByZWY9ImIxIiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxEb2N1bWVudDo6Q2xvbmUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDxjb2RlPiBbcHJvdGVjdGVkLCB2aXJ0dWFsXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitDcmVhdGUgYW4gZXhhY3QgZHVwbGljYXRlIG9mIHRoaXMgbm9kZSBhbmQgcmV0dXJuIGl0LiAKKzxwPgorVGhlIG1lbW9yeSBtdXN0IGJlIGRlbGV0ZWQgYnkgdGhlIGNhbGxlci4KKzxwPgorSW1wbGVtZW50cyA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5UaVhtbE5vZGU8L2E+LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpFcnJvciIgcmVmPSJhMTUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmJvb2wgVGlYbWxEb2N1bWVudDo6RXJyb3IgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitJZiBhbiBlcnJvciBvY2N1cnMsIEVycm9yIHdpbGwgYmUgc2V0IHRvIHRydWUuIAorPHA+CitBbHNvLDx1bD4KKzxsaT5UaGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTciPkVycm9ySWQoKTwvYT4gd2lsbCBjb250YWluIHRoZSBpbnRlZ2VyIGlkZW50aWZpZXIgb2YgdGhlIGVycm9yIChub3QgZ2VuZXJhbGx5IHVzZWZ1bCk8L2xpPjxsaT5UaGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPkVycm9yRGVzYygpPC9hPiBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVycm9yLiAodmVyeSB1c2VmdWwpPC9saT48bGk+VGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdygpPC9hPiBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPkVycm9yQ29sKCk8L2E+IHdpbGwgcmV0dXJuIHRoZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IgKGlmIGtub3duKTwvbGk+PC91bD4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpFcnJvcklkIiByZWY9ImExNyIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50IFRpWG1sRG9jdW1lbnQ6OkVycm9ySWQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitHZW5lcmFsbHksIHlvdSBwcm9iYWJseSB3YW50IHRoZSBlcnJvciBzdHJpbmcgKCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+RXJyb3JEZXNjKCk8L2E+ICkuIAorPHA+CitCdXQgaWYgeW91IHByZWZlciB0aGUgRXJyb3JJZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIGl0LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpFcnJvclJvdyIgcmVmPSJhMTgiIGFyZ3M9IigpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50IFRpWG1sRG9jdW1lbnQ6OkVycm9yUm93ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUmV0dXJucyB0aGUgbG9jYXRpb24gKGlmIGtub3duKSBvZiB0aGUgZXJyb3IuIAorPHA+CitUaGUgZmlyc3QgY29sdW1uIGlzIGNvbHVtbiAxLCBhbmQgdGhlIGZpcnN0IHJvdyBpcyByb3cgMS4gQSB2YWx1ZSBvZiAwIG1lYW5zIHRoZSByb3cgYW5kIGNvbHVtbiB3YXNuJ3QgYXBwbGljYWJsZSAobWVtb3J5IGVycm9ycywgZm9yIGV4YW1wbGUsIGhhdmUgbm8gcm93L2NvbHVtbikgb3IgdGhlIHBhcnNlciBsb3N0IHRoZSBlcnJvci4gKEFuIGVycm9yIGluIHRoZSBlcnJvciByZXBvcnRpbmcsIGluIHRoYXQgY2FzZS4pPHA+Cis8ZGwgY29tcGFjdD48ZHQ+PGI+U2VlIGFsc286PC9iPjwvZHQ+PGRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5TZXRUYWJTaXplPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT48L2RkPjwvZGw+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUiIHJlZj0iYTEwIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmJvb2wgVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3Qgc3RkOjpzdHJpbmcgJmFtcDsmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5maWxlbmFtZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5UaVhtbEVuY29kaW5nJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZW5jb2Rpbmc8L2VtPiA9IDxjb2RlPlRJWE1MX0RFRkFVTFRfRU5DT0RJTkc8L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KKzxkbCBjb21wYWN0PjxkdD48Yj5QYXJhbWV0ZXJzOiA8L2I+PC9kdD48ZGQ+Cis8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMiIgY2VsbHBhZGRpbmc9IjAiPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGVtPmVuY29kaW5nPC9lbT4mbmJzcDs8L3RkPjx0ZD4KK1NUTCBzdGQ6OnN0cmluZyB2ZXJzaW9uLiA8L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9kbD4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpMb2FkRmlsZSIgcmVmPSJhNiIgYXJncz0iKFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORykiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5ib29sIFRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPlRpWG1sRW5jb2RpbmcmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPmVuY29kaW5nPC9lbT4gPSA8Y29kZT5USVhNTF9ERUZBVUxUX0VOQ09ESU5HPC9jb2RlPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorTG9hZCBhIGZpbGUgdXNpbmcgdGhlIGN1cnJlbnQgZG9jdW1lbnQgdmFsdWUuIAorPHA+CitSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4gV2lsbCBkZWxldGUgYW55IGV4aXN0aW5nIGRvY3VtZW50IGRhdGEgYmVmb3JlIGxvYWRpbmcuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlBhcnNlIiByZWY9ImExMiIgYXJncz0iKGNvbnN0IGNoYXIgKnAsIFRpWG1sUGFyc2luZ0RhdGEgKmRhdGE9MCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgY29uc3QgY2hhciogVGlYbWxEb2N1bWVudDo6UGFyc2UgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+cDwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5UaVhtbFBhcnNpbmdEYXRhICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5kYXRhPC9lbT4gPSA8Y29kZT4wPC9jb2RlPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+VGlYbWxFbmNvZGluZyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmVuY29kaW5nPC9lbT4gPSA8Y29kZT5USVhNTF9ERUZBVUxUX0VOQ09ESU5HPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUGFyc2UgdGhlIGdpdmVuIG51bGwgdGVybWluYXRlZCBibG9jayBvZiB4bWwgZGF0YS4gCis8cD4KK1Bhc3NpbmcgaW4gYW4gZW5jb2RpbmcgdG8gdGhpcyBtZXRob2QgKGVpdGhlciBUSVhNTF9FTkNPRElOR19MRUdBQ1kgb3IgVElYTUxfRU5DT0RJTkdfVVRGOCB3aWxsIGZvcmNlIFRpbnlYbWwgdG8gdXNlIHRoYXQgZW5jb2RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBUaW55WG1sIG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8gZGV0ZWN0LgorPHA+CitJbXBsZW1lbnRzIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPi4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6Um9vdEVsZW1lbnQiIHJlZj0iYTEzIiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIFRpWG1sRG9jdW1lbnQ6OlJvb3RFbGVtZW50ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorR2V0IHRoZSByb290IGVsZW1lbnQgLS0gdGhlIG9ubHkgdG9wIGxldmVsIGVsZW1lbnQgLS0gb2YgdGhlIGRvY3VtZW50LiAKKzxwPgorSW4gd2VsbCBmb3JtZWQgWE1MLCB0aGVyZSBzaG91bGQgb25seSBiZSBvbmUuIFRpbnlYbWwgaXMgdG9sZXJhbnQgb2YgbXVsdGlwbGUgZWxlbWVudHMgYXQgdGhlIGRvY3VtZW50IGxldmVsLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpTZXRUYWJTaXplIiByZWY9ImEyMCIgYXJncz0iKGludCBfdGFic2l6ZSkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52b2lkIFRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5fdGFic2l6ZTwvZW0+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlNldFRhYlNpemUoKTwvYT4gYWxsb3dzIHRoZSBlcnJvciByZXBvcnRpbmcgZnVuY3Rpb25zICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+RXJyb3JSb3coKTwvYT4gYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5FcnJvckNvbCgpPC9hPikgdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlcyBmb3Igcm93IGFuZCBjb2x1bW4uIAorPHA+CitJdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIG91dHB1dCBvciBpbnB1dCBpbiBhbnkgd2F5LjxwPgorQnkgY2FsbGluZyB0aGlzIG1ldGhvZCwgd2l0aCBhIHRhYiBzaXplIGdyZWF0ZXIgdGhhbiAwLCB0aGUgcm93IGFuZCBjb2x1bW4gb2YgZWFjaCBub2RlIGFuZCBhdHRyaWJ1dGUgaXMgc3RvcmVkIHdoZW4gdGhlIGZpbGUgaXMgbG9hZGVkLiBWZXJ5IHVzZWZ1bCBmb3IgdHJhY2tpbmcgdGhlIERPTSBiYWNrIGluIHRvIHRoZSBzb3VyY2UgZmlsZS48cD4KK1RoZSB0YWIgc2l6ZSBpcyByZXF1aXJlZCBmb3IgY2FsY3VsYXRpbmcgdGhlIGxvY2F0aW9uIG9mIG5vZGVzLiBJZiBub3Qgc2V0LCB0aGUgZGVmYXVsdCBvZiA0IGlzIHVzZWQuIFRoZSB0YWJzaXplIGlzIHNldCBwZXIgZG9jdW1lbnQuIFNldHRpbmcgdGhlIHRhYnNpemUgdG8gMCBkaXNhYmxlcyByb3cvY29sdW1uIHRyYWNraW5nLjxwPgorTm90ZSB0aGF0IHJvdyBhbmQgY29sdW1uIHRyYWNraW5nIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiB1c2luZyBvcGVyYXRvciZndDsmZ3Q7LjxwPgorVGhlIHRhYiBzaXplIG5lZWRzIHRvIGJlIGVuYWJsZWQgYmVmb3JlIHRoZSBwYXJzZSBvciBsb2FkLiBDb3JyZWN0IHVzYWdlOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5TZXRUYWJTaXplKCA4ICk7CisJCWRvYy5Mb2FkKCAibXlmaWxlLnhtbCIgKTsKKwkJPC9wcmU+PC9kaXY+PHA+Cis8ZGwgY29tcGFjdD48ZHQ+PGI+U2VlIGFsc286PC9iPjwvZHQ+PGRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+PC9kZD48L2RsPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQucG5nIGIvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZmQyNjcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LW1lbWJlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmJmMWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC1tZW1iZXJzLmh0bWwKQEAgLTAsMCArMSw5NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IE1lbWJlciBMaXN0PC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxFbGVtZW50IE1lbWJlciBMaXN0PC9oMT5UaGlzIGlzIHRoZSBjb21wbGV0ZSBsaXN0IG9mIG1lbWJlcnMgZm9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiwgaW5jbHVkaW5nIGFsbCBpbmhlcml0ZWQgbWVtYmVycy48cD48dGFibGU+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNiI+QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBpbnQgKmkpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E3Ij5BdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqZCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMyI+Rmlyc3RBdHRyaWJ1dGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjkiPkluc2VydEFmdGVyQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYmVmb3JlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPihjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIyIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIFRpWG1sTm9kZSAqcHJldmlvdXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+TGFzdEF0dHJpYnV0ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzQiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOSI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlF1ZXJ5RG91YmxlQXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgKl92YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEwIj5RdWVyeUZsb2F0QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBmbG9hdCAqX3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBpbnQgKl92YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIxIj5SZW1vdmVBdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIyIj5SZW1vdmVBdHRyaWJ1dGU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7bmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMxIj5SZW1vdmVDaGlsZDwvYT4oVGlYbWxOb2RlICpyZW1vdmVUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+UmVwbGFjZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlcGxhY2VUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDt3aXRoVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExNyI+U2V0QXR0cmlidXRlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTkiPlNldEF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIwIj5TZXREb3VibGVBdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSB2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTAiPlRpWG1sRWxlbWVudDwvYT4oY29uc3QgY2hhciAqaW5fdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEiPlRpWG1sRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YjRiZDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxFbGVtZW50Lmh0bWwKQEAgLTAsMCArMSw0MTggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBUaVhtbEVsZW1lbnQgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxFbGVtZW50IENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxFbGVtZW50IiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPlRoZSBlbGVtZW50IGlzIGEgY29udGFpbmVyIGNsYXNzLiAgCis8YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Cis8cD4KKzxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgorPHA+Cis8cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbEVsZW1lbnQ6Cis8cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sRWxlbWVudC5wbmciIHVzZW1hcD0iI1RpWG1sRWxlbWVudF9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgorPG1hcCBuYW1lPSJUaVhtbEVsZW1lbnRfbWFwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiIGFsdD0iVGlYbWxOb2RlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDU2LDg3LDgwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiIGFsdD0iVGlYbWxCYXNlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsODcsMjQiPgorPC9tYXA+Cis8YSBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlRpWG1sRWxlbWVudCIgcmVmPSJhMCIgYXJncz0iKGNvbnN0IGNoYXIgKmluX3ZhbHVlKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EwIj5UaVhtbEVsZW1lbnQ8L2E+IChjb25zdCBjaGFyICppbl92YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdCBhbiBlbGVtZW50LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlRpWG1sRWxlbWVudCIgcmVmPSJhMSIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExIj5UaVhtbEVsZW1lbnQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPnN0ZDo6c3RyaW5nIGNvbnN0cnVjdG9yLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OkF0dHJpYnV0ZSIgcmVmPSJhNSIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUpIGNvbnN0ICIgLS0+Citjb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZSgpPC9hPiByZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTYiPkF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqaSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGUoKTwvYT4gcmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBhdHRyaWJ1dGUgb2YgdGhhdCBuYW1lLCBvciBudWxsIGlmIG5vbmUgZXhpc3RzLiAgPGEgaHJlZj0iI2E2Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNyI+QXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlICpkKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZSgpPC9hPiByZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuICA8YSBocmVmPSIjYTciPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E4Ij5RdWVyeUludEF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqX3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJ5SW50QXR0cmlidXRlIGV4YW1pbmVzIHRoZSBhdHRyaWJ1dGUgLSBpdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGUoKTwvYT4gbWV0aG9kIHdpdGggcmljaGVyIGVycm9yIGNoZWNraW5nLiAgPGEgaHJlZj0iI2E4Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpRdWVyeURvdWJsZUF0dHJpYnV0ZSIgcmVmPSJhOSIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqX3ZhbHVlKSBjb25zdCAiIC0tPgoraW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+UXVlcnlEb3VibGVBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgKl92YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5RdWVyeURvdWJsZUF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+UXVlcnlJbnRBdHRyaWJ1dGUoKTwvYT4uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlF1ZXJ5RmxvYXRBdHRyaWJ1dGUiIHJlZj0iYTEwIiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgZmxvYXQgKl92YWx1ZSkgY29uc3QgIiAtLT4KK2ludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEwIj5RdWVyeUZsb2F0QXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgZmxvYXQgKl92YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5RdWVyeUZsb2F0QXR0cmlidXRlIGV4YW1pbmVzIHRoZSBhdHRyaWJ1dGUgLSBzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E4Ij5RdWVyeUludEF0dHJpYnV0ZSgpPC9hPi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTExIj5TZXRBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuICA8YSBocmVmPSIjYTExIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlIiByZWY9ImExNyIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7bmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExNyI+U2V0QXR0cmlidXRlPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiBTVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTE5Ij5TZXRBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuICA8YSBocmVmPSIjYTE5Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIwIj5TZXREb3VibGVBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuICA8YSBocmVmPSIjYTIwIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIxIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6UmVtb3ZlQXR0cmlidXRlIiByZWY9ImEyMSIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMSI+UmVtb3ZlQXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkRlbGV0ZXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZSIgcmVmPSJhMjIiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO25hbWUpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMiI+UmVtb3ZlQXR0cmlidXRlPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtuYW1lKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OkZpcnN0QXR0cmlidXRlIiByZWY9ImEyMyIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIzIj5GaXJzdEF0dHJpYnV0ZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BY2Nlc3MgdGhlIGZpcnN0IGF0dHJpYnV0ZSBpbiB0aGlzIGVsZW1lbnQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6Okxhc3RBdHRyaWJ1dGUiIHJlZj0iYTI1IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjUiPkxhc3RBdHRyaWJ1dGU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWNjZXNzIHRoZSBsYXN0IGF0dHJpYnV0ZSBpbiB0aGlzIGVsZW1lbnQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5HZXRUZXh0PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBlYXN5IGFjY2VzcyB0byB0aGUgdGV4dCBpbnNpZGUgYW4gZWxlbWVudC4gIDxhIGhyZWY9IiNhMjciPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpDbG9uZSIgcmVmPSJhMjgiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjgiPkNsb25lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZXMgYSBuZXcgRWxlbWVudCBhbmQgcmV0dXJucyBpdCAtIHRoZSByZXR1cm5lZCBlbGVtZW50IGlzIGEgY29weS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dmlydHVhbCB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjkiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4gIDxhIGhyZWY9IiNhMjkiPjwvYT48YnI+PC90ZD48L3RyPgorPC90YWJsZT4KKzxocj48YSBuYW1lPSJfZGV0YWlscyI+PC9hPjxoMj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+CitUaGUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciBjbGFzcy4gCis8cD4KK0l0IGhhcyBhIHZhbHVlLCB0aGUgZWxlbWVudCBuYW1lLCBhbmQgY2FuIGNvbnRhaW4gb3RoZXIgZWxlbWVudHMsIHRleHQsIGNvbW1lbnRzLCBhbmQgdW5rbm93bnMuIEVsZW1lbnRzIGFsc28gY29udGFpbiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGF0dHJpYnV0ZXMuCis8cD4KKzxocj48aDI+TWVtYmVyIEZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUiIHJlZj0iYTciIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgKmQpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6QXR0cmlidXRlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm5hbWU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+ZG91YmxlICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5kPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitHaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGUoKTwvYT4gcmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBhdHRyaWJ1dGUgb2YgdGhhdCBuYW1lLCBvciBudWxsIGlmIG5vbmUgZXhpc3RzLiAKKzxwPgorSWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMgYW5kIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gZG91YmxlLCB0aGUgZG91YmxlIHZhbHVlIHdpbGwgYmUgcHV0IGluIHRoZSByZXR1cm4gJ2QnLCBpZiAnZCcgaXMgbm9uLW51bGwuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUiIHJlZj0iYTYiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBpbnQgKmkpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6QXR0cmlidXRlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm5hbWU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50ICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5pPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitHaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGUoKTwvYT4gcmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBhdHRyaWJ1dGUgb2YgdGhhdCBuYW1lLCBvciBudWxsIGlmIG5vbmUgZXhpc3RzLiAKKzxwPgorSWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMgYW5kIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlciwgdGhlIGludGVnZXIgdmFsdWUgd2lsbCBiZSBwdXQgaW4gdGhlIHJldHVybiAnaScsIGlmICdpJyBpcyBub24tbnVsbC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpHZXRUZXh0IiByZWY9ImEyNyIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciogVGlYbWxFbGVtZW50OjpHZXRUZXh0ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgZWFzeSBhY2Nlc3MgdG8gdGhlIHRleHQgaW5zaWRlIGFuIGVsZW1lbnQuIAorPHA+CitBbHRob3VnaCBlYXN5IGFuZCBjb25jaXNlLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5HZXRUZXh0KCk8L2E+IGlzIGxpbWl0ZWQgY29tcGFyZWQgdG8gZ2V0dGluZyB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+IGNoaWxkIGFuZCBhY2Nlc3NpbmcgaXQgZGlyZWN0bHkuPHA+CitJZiB0aGUgZmlyc3QgY2hpbGQgb2YgJ3RoaXMnIGlzIGEgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+LCB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dCgpPC9hPiByZXR1cnMgdGhlIGNoYXJhY3RlciBzdHJpbmcgb2YgdGhlIFRleHQgbm9kZSwgZWxzZSBudWxsIGlzIHJldHVybmVkLjxwPgorVGhpcyBpcyBhIGNvbnZlbmllbnQgbWV0aG9kIGZvciBnZXR0aW5nIHRoZSB0ZXh0IG9mIHNpbXBsZSBjb250YWluZWQgdGV4dDogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCSZsdDtmb28mZ3Q7VGhpcyBpcyB0ZXh0Jmx0Oy9mb28mZ3Q7CisJCWNvbnN0IGNoYXIqIHN0ciA9IGZvb0VsZW1lbnQtJmd0O0dldFRleHQoKTsKKwkJPC9wcmU+PC9kaXY+PHA+Cisnc3RyJyB3aWxsIGJlIGEgcG9pbnRlciB0byAiVGhpcyBpcyB0ZXh0Ii48cD4KK05vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBtaXNsZWFkaW5nLiBJZiB0aGUgZWxlbWVudCBmb28gd2FzIGNyZWF0ZWQgZnJvbSB0aGlzIFhNTDogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCSZsdDtmb28mZ3Q7Jmx0O2ImZ3Q7VGhpcyBpcyB0ZXh0Jmx0Oy9iJmd0OyZsdDsvZm9vJmd0OyAKKwkJPC9wcmU+PC9kaXY+PHA+Cit0aGVuIHRoZSB2YWx1ZSBvZiBzdHIgd291bGQgYmUgbnVsbC4gVGhlIGZpcnN0IGNoaWxkIG5vZGUgaXNuJ3QgYSB0ZXh0IG5vZGUsIGl0IGlzIGFub3RoZXIgZWxlbWVudC4gRnJvbSB0aGlzIFhNTDogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCSZsdDtmb28mZ3Q7VGhpcyBpcyAmbHQ7YiZndDt0ZXh0Jmx0Oy9iJmd0OyZsdDsvZm9vJmd0OyAKKwkJPC9wcmU+PC9kaXY+IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPkdldFRleHQoKTwvYT4gd2lsbCByZXR1cm4gIlRoaXMgaXMgIi48cD4KK1dBUk5JTkc6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPkdldFRleHQoKTwvYT4gYWNjZXNzZXMgYSBjaGlsZCBub2RlIC0gZG9uJ3QgYmVjb21lIGNvbmZ1c2VkIHdpdGggdGhlIHNpbWlsYXJseSBuYW1lZCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTciPlRpWG1sSGFuZGxlOjpUZXh0KCk8L2E+IGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5UaVhtbE5vZGU6OlRvVGV4dCgpPC9hPiB3aGljaCBhcmUgc2FmZSB0eXBlIGNhc3RzIG9uIHRoZSByZWZlcmVuY2VkIG5vZGUuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6UHJpbnQiIHJlZj0iYTI5IiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dmlydHVhbCB2b2lkIFRpWG1sRWxlbWVudDo6UHJpbnQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+RklMRSAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+Y2ZpbGU8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZGVwdGg8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQWxsIFRpbnlYbWwgY2xhc3NlcyBjYW4gcHJpbnQgdGhlbXNlbHZlcyB0byBhIGZpbGVzdHJlYW0uIAorPHA+CitUaGlzIGlzIGEgZm9ybWF0dGVkIHByaW50LCBhbmQgd2lsbCBpbnNlcnQgdGFicyBhbmQgbmV3bGluZXMuPHA+CisoRm9yIGFuIHVuZm9ybWF0dGVkIHN0cmVhbSwgdXNlIHRoZSAmbHQ7Jmx0OyBvcGVyYXRvci4pCis8cD4KK0ltcGxlbWVudHMgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5UaVhtbEJhc2U8L2E+LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6UXVlcnlJbnRBdHRyaWJ1dGUiIHJlZj0iYTgiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBpbnQgKl92YWx1ZSkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50IFRpWG1sRWxlbWVudDo6UXVlcnlJbnRBdHRyaWJ1dGUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+bmFtZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPl92YWx1ZTwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUXVlcnlJbnRBdHRyaWJ1dGUgZXhhbWluZXMgdGhlIGF0dHJpYnV0ZSAtIGl0IGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZSgpPC9hPiBtZXRob2Qgd2l0aCByaWNoZXIgZXJyb3IgY2hlY2tpbmcuIAorPHA+CitJZiB0aGUgYXR0cmlidXRlIGlzIGFuIGludGVnZXIsIGl0IGlzIHN0b3JlZCBpbiAndmFsdWUnIGFuZCB0aGUgY2FsbCByZXR1cm5zIFRJWE1MX1NVQ0NFU1MuIElmIGl0IGlzIG5vdCBhbiBpbnRlZ2VyLCBpdCByZXR1cm5zIFRJWE1MX1dST05HX1RZUEUuIElmIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIHRoZW4gVElYTUxfTk9fQVRUUklCVVRFIGlzIHJldHVybmVkLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlNldEF0dHJpYnV0ZSIgcmVmPSJhMTkiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dm9pZCBUaVhtbEVsZW1lbnQ6OlNldEF0dHJpYnV0ZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5uYW1lPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPnZhbHVlPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitTZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuIAorPHA+CitUaGUgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgY2hhbmdlZCBpZiBpdCBkb2VzLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlNldEF0dHJpYnV0ZSIgcmVmPSJhMTEiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpfdmFsdWUpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dm9pZCBUaVhtbEVsZW1lbnQ6OlNldEF0dHJpYnV0ZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5uYW1lPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPl92YWx1ZTwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorU2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiAKKzxwPgorVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGNoYW5nZWQgaWYgaXQgZG9lcy4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpTZXREb3VibGVBdHRyaWJ1dGUiIHJlZj0iYTIwIiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlIHZhbHVlKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZvaWQgVGlYbWxFbGVtZW50OjpTZXREb3VibGVBdHRyaWJ1dGUgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+bmFtZTwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5kb3VibGUmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT52YWx1ZTwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorU2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiAKKzxwPgorVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGNoYW5nZWQgaWYgaXQgZG9lcy4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LnBuZyBiL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2MyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxIYW5kbGUtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sSGFuZGxlLW1lbWJlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGZhZWJjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sSGFuZGxlLW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbEhhbmRsZSBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTciPkNoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgaW50IGluZGV4KSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOCI+Q2hpbGQ8L2E+KGludCBpbmRleCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTkiPkNoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGludCBpbmRleCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEwIj5DaGlsZEVsZW1lbnQ8L2E+KGludCBpbmRleCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE2Ij5FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMyI+Rmlyc3RDaGlsZDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTUiPk5vZGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNyI+VGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTAiPlRpWG1sSGFuZGxlPC9hPihUaVhtbE5vZGUgKl9ub2RlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMSI+VGlYbWxIYW5kbGU8L2E+KGNvbnN0IFRpWG1sSGFuZGxlICZhbXA7cmVmKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTgiPlVua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Cis8L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxIYW5kbGUuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YWY2MDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxIYW5kbGUuaHRtbApAQCAtMCwwICsxLDI3MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IFRpWG1sSGFuZGxlIENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sSGFuZGxlIENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxIYW5kbGUiIC0tPkEgVGlYbWxIYW5kbGUgaXMgYSBjbGFzcyB0aGF0IHdyYXBzIGEgbm9kZSBwb2ludGVyIHdpdGggbnVsbCBjaGVja3M7IHRoaXMgaXMgYW4gaW5jcmVkaWJseSB1c2VmdWwgdGhpbmcuICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OlRpWG1sSGFuZGxlIiByZWY9ImEwIiBhcmdzPSIoVGlYbWxOb2RlICpfbm9kZSkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EwIj5UaVhtbEhhbmRsZTwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqX25vZGUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGUgYSBoYW5kbGUgZnJvbSBhbnkgbm9kZSAoYXQgYW55IGRlcHRoIG9mIHRoZSB0cmVlLikgVGhpcyBjYW4gYmUgYSBudWxsIHBvaW50ZXIuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpUaVhtbEhhbmRsZSIgcmVmPSJhMSIgYXJncz0iKGNvbnN0IFRpWG1sSGFuZGxlICZhbXA7cmVmKSIgLS0+CismbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEiPlRpWG1sSGFuZGxlPC9hPiAoY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiAmYW1wO3JlZik8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvcHkgY29uc3RydWN0b3IuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpGaXJzdENoaWxkIiByZWY9ImEzIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMyI+Rmlyc3RDaGlsZDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIG5vZGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpGaXJzdENoaWxkIiByZWY9ImE0IiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0ICIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E0Ij5GaXJzdENoaWxkPC9hPiAoY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBmaXJzdCBjaGlsZCBub2RlIHdpdGggdGhlIGdpdmVuIG5hbWUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpGaXJzdENoaWxkRWxlbWVudCIgcmVmPSJhNSIgYXJncz0iKCkgY29uc3QgIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGRFbGVtZW50IiByZWY9ImE2IiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0ICIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E2Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBuYW1lLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E3Ij5DaGlsZDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlLCBpbnQgaW5kZXgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIHdpdGggdGhlIGdpdmVuIG5hbWUuICA8YSBocmVmPSIjYTciPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E4Ij5DaGlsZDwvYT4gKGludCBpbmRleCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQuICA8YSBocmVmPSIjYTgiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E5Ij5DaGlsZEVsZW1lbnQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSwgaW50IGluZGV4KSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCBlbGVtZW50IHdpdGggdGhlIGdpdmVuIG5hbWUuICA8YSBocmVmPSIjYTkiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExMCI+Q2hpbGRFbGVtZW50PC9hPiAoaW50IGluZGV4KSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCBlbGVtZW50LiAgPGEgaHJlZj0iI2ExMCI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Tm9kZSIgcmVmPSJhMTUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTUiPk5vZGU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSBoYW5kbGUgYXMgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4uIFRoaXMgbWF5IHJldHVybiBudWxsLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkVsZW1lbnQiIHJlZj0iYTE2IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE2Ij5FbGVtZW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgaGFuZGxlIGFzIGEgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+LiBUaGlzIG1heSByZXR1cm4gbnVsbC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpUZXh0IiByZWY9ImExNyIgYXJncz0iKCkgY29uc3QgIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNyI+VGV4dDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIGhhbmRsZSBhcyBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPi4gVGhpcyBtYXkgcmV0dXJuIG51bGwuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6VW5rbm93biIgcmVmPSJhMTgiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTgiPlVua25vd248L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSBoYW5kbGUgYXMgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4uIFRoaXMgbWF5IHJldHVybiBudWxsOy4gPGJyPjwvdGQ+PC90cj4KKzwvdGFibGU+Cis8aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgorQSBUaVhtbEhhbmRsZSBpcyBhIGNsYXNzIHRoYXQgd3JhcHMgYSBub2RlIHBvaW50ZXIgd2l0aCBudWxsIGNoZWNrczsgdGhpcyBpcyBhbiBpbmNyZWRpYmx5IHVzZWZ1bCB0aGluZy4gCis8cD4KK05vdGUgdGhhdCBUaVhtbEhhbmRsZSBpcyBub3QgcGFydCBvZiB0aGUgVGlueVhtbCBET00gc3RydWN0dXJlLiBJdCBpcyBhIHNlcGFyYXRlIHV0aWxpdHkgY2xhc3MuPHA+CitUYWtlIGFuIGV4YW1wbGU6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDtEb2N1bWVudCZndDsKKwkJJmx0O0VsZW1lbnQgYXR0cmlidXRlQSA9ICJ2YWx1ZUEiJmd0OworCQkJJmx0O0NoaWxkIGF0dHJpYnV0ZUIgPSAidmFsdWUxIiAvJmd0OworCQkJJmx0O0NoaWxkIGF0dHJpYnV0ZUIgPSAidmFsdWUyIiAvJmd0OworCQkmbHQ7L0VsZW1lbnQmZ3Q7CisJJmx0O0RvY3VtZW50Jmd0OworCTwvcHJlPjwvZGl2PjxwPgorQXNzdW1pbmcgeW91IHdhbnQgdGhlIHZhbHVlIG9mICJhdHRyaWJ1dGVCIiBpbiB0aGUgMm5kICJDaGlsZCIgZWxlbWVudCwgaXQncyB2ZXJ5IGVhc3kgdG8gd3JpdGUgYSAqbG90KiBvZiBjb2RlIHRoYXQgbG9va3MgbGlrZTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CVRpWG1sRWxlbWVudCogcm9vdCA9IGRvY3VtZW50LkZpcnN0Q2hpbGRFbGVtZW50KCAiRG9jdW1lbnQiICk7CisJaWYgKCByb290ICkKKwl7CisJCVRpWG1sRWxlbWVudCogZWxlbWVudCA9IHJvb3QtJmd0O0ZpcnN0Q2hpbGRFbGVtZW50KCAiRWxlbWVudCIgKTsKKwkJaWYgKCBlbGVtZW50ICkKKwkJeworCQkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IGVsZW1lbnQtJmd0O0ZpcnN0Q2hpbGRFbGVtZW50KCAiQ2hpbGQiICk7CisJCQlpZiAoIGNoaWxkICkKKwkJCXsKKwkJCQlUaVhtbEVsZW1lbnQqIGNoaWxkMiA9IGNoaWxkLSZndDtOZXh0U2libGluZ0VsZW1lbnQoICJDaGlsZCIgKTsKKwkJCQlpZiAoIGNoaWxkMiApCisJCQkJeworCQkJCQkvLyBGaW5hbGx5IGRvIHNvbWV0aGluZyB1c2VmdWwuCisJPC9wcmU+PC9kaXY+PHA+CitBbmQgdGhhdCBkb2Vzbid0IGV2ZW4gY292ZXIgImVsc2UiIGNhc2VzLiBUaVhtbEhhbmRsZSBhZGRyZXNzZXMgdGhlIHZlcmJvc2l0eSBvZiBzdWNoIGNvZGUuIEEgVGlYbWxIYW5kbGUgY2hlY2tzIGZvciBudWxsIHBvaW50ZXJzIHNvIGl0IGlzIHBlcmZlY3RseSBzYWZlIGFuZCBjb3JyZWN0IHRvIHVzZTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CVRpWG1sSGFuZGxlIGRvY0hhbmRsZSggJmFtcDtkb2N1bWVudCApOworCVRpWG1sRWxlbWVudCogY2hpbGQyID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgMSApLkVsZW1lbnQoKTsKKwlpZiAoIGNoaWxkMiApCisJeworCQkvLyBkbyBzb21ldGhpbmcgdXNlZnVsCisJPC9wcmU+PC9kaXY+PHA+CitXaGljaCBpcyBNVUNIIG1vcmUgY29uY2lzZSBhbmQgdXNlZnVsLjxwPgorSXQgaXMgYWxzbyBzYWZlIHRvIGNvcHkgaGFuZGxlcyAtIGludGVybmFsbHkgdGhleSBhcmUgbm90aGluZyBtb3JlIHRoYW4gbm9kZSBwb2ludGVycy4gPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JVGlYbWxIYW5kbGUgaGFuZGxlQ29weSA9IGhhbmRsZTsKKwk8L3ByZT48L2Rpdj48cD4KK1doYXQgdGhleSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGlzIGl0ZXJhdGlvbjo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CWludCBpPTA7IAorCXdoaWxlICggdHJ1ZSApCisJeworCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgaSApLkVsZW1lbnQoKTsKKwkJaWYgKCAhY2hpbGQgKQorCQkJYnJlYWs7CisJCS8vIGRvIHNvbWV0aGluZworCQkrK2k7CisJfQorCTwvcHJlPjwvZGl2PjxwPgorSXQgc2VlbXMgcmVhc29uYWJsZSwgYnV0IGl0IGlzIGluIGZhY3QgdHdvIGVtYmVkZGVkIHdoaWxlIGxvb3BzLiBUaGUgQ2hpbGQgbWV0aG9kIGlzIGEgbGluZWFyIHdhbGsgdG8gZmluZCB0aGUgZWxlbWVudCwgc28gdGhpcyBjb2RlIHdvdWxkIGl0ZXJhdGUgbXVjaCBtb3JlIHRoYW4gaXQgbmVlZHMgdG8uIEluc3RlYWQsIHByZWZlcjo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CVRpWG1sRWxlbWVudCogY2hpbGQgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZCggIkRvY3VtZW50IiApLkZpcnN0Q2hpbGQoICJFbGVtZW50IiApLkZpcnN0Q2hpbGQoICJDaGlsZCIgKS5FbGVtZW50KCk7CisKKwlmb3IoIGNoaWxkOyBjaGlsZDsgY2hpbGQ9Y2hpbGQtJmd0O05leHRTaWJsaW5nRWxlbWVudCgpICkKKwl7CisJCS8vIGRvIHNvbWV0aGluZworCX0KKwk8L3ByZT48L2Rpdj4KKzxwPgorPGhyPjxoMj5NZW1iZXIgRnVuY3Rpb24gRG9jdW1lbnRhdGlvbjwvaDI+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Q2hpbGQiIHJlZj0iYTgiIGFyZ3M9IihpbnQgaW5kZXgpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gVGlYbWxIYW5kbGU6OkNoaWxkICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+aW5kZXg8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkLiAKKzxwPgorVGhlIGZpcnN0IGNoaWxkIGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpDaGlsZCIgcmVmPSJhNyIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlLCBpbnQgaW5kZXgpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gVGlYbWxIYW5kbGU6OkNoaWxkICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPnZhbHVlPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmluZGV4PC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gCis8cD4KK1RoZSBmaXJzdCBjaGlsZCBpcyAwLCB0aGUgc2Vjb25kIDEsIGV0Yy4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkNoaWxkRWxlbWVudCIgcmVmPSJhMTAiIGFyZ3M9IihpbnQgaW5kZXgpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gVGlYbWxIYW5kbGU6OkNoaWxkRWxlbWVudCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPmluZGV4PC9lbT4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1JldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCBlbGVtZW50LiAKKzxwPgorVGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgaXMgMCwgdGhlIHNlY29uZCAxLCBldGMuIE5vdGUgdGhhdCBvbmx5IFRpWG1sRWxlbWVudHMgYXJlIGluZGV4ZWQ6IG90aGVyIHR5cGVzIGFyZSBub3QgY291bnRlZC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Q2hpbGRFbGVtZW50IiByZWY9ImE5IiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUsIGludCBpbmRleCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiBUaVhtbEhhbmRsZTo6Q2hpbGRFbGVtZW50ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPnZhbHVlPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmluZGV4PC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAKKzxwPgorVGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgaXMgMCwgdGhlIHNlY29uZCAxLCBldGMuIE5vdGUgdGhhdCBvbmx5IFRpWG1sRWxlbWVudHMgYXJlIGluZGV4ZWQ6IG90aGVyIHR5cGVzIGFyZSBub3QgY291bnRlZC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxOb2RlLW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbE5vZGUtbWVtYmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1Y2I4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxOb2RlLW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbE5vZGUgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MiI+Q2xvbmU8L2E+KCkgY29uc3QgPTA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW3B1cmUgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTIiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA9MDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHVyZSB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VG9EZWNsYXJhdGlvbjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VG9Eb2N1bWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5Ub0VsZW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRvVW5rbm93bjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbE5vZGUuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbE5vZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWI5OTUwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sTm9kZS5odG1sCkBAIC0wLDAgKzEsODQ1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogVGlYbWxOb2RlIENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpWG1sTm9kZSBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sTm9kZSIgLS0+PCEtLSBkb3h5dGFnOiBpbmhlcml0cz0iVGlYbWxCYXNlIiAtLT5UaGUgcGFyZW50IGNsYXNzIGZvciBldmVyeXRoaW5nIGluIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwuICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sTm9kZToKKzxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxOb2RlLnBuZyIgdXNlbWFwPSIjVGlYbWxOb2RlX21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Cis8bWFwIG5hbWU9IlRpWG1sTm9kZV9tYXAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjI5NSwwLDQwMywyNCI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIiBhbHQ9IlRpWG1sQ29tbWVudCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwxMTIsMTA4LDEzNiI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCIgYWx0PSJUaVhtbERlY2xhcmF0aW9uIiBzaGFwZT0icmVjdCIgY29vcmRzPSIxMTgsMTEyLDIyNiwxMzYiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiIGFsdD0iVGlYbWxEb2N1bWVudCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjM2LDExMiwzNDQsMTM2Ij4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiIGFsdD0iVGlYbWxFbGVtZW50IiBzaGFwZT0icmVjdCIgY29vcmRzPSIzNTQsMTEyLDQ2MiwxMzYiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCIgYWx0PSJUaVhtbFRleHQiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjQ3MiwxMTIsNTgwLDEzNiI+Cis8YXJlYSBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIiBhbHQ9IlRpWG1sVW5rbm93biIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iNTkwLDExMiw2OTgsMTM2Ij4KKzwvbWFwPgorPGEgaHJlZj0iY2xhc3NUaVhtbE5vZGUtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorPHRyPjx0ZD48L3RkPjwvdHI+Cis8dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIFR5cGVzPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmVudW0gJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIHR5cGVzIG9mIFhNTCBub2RlcyBzdXBwb3J0ZWQgYnkgVGlueVhtbC4gIDxhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk1vcmUuLi48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgbWVhbmluZyBvZiAndmFsdWUnIGNoYW5nZXMgZm9yIHRoZSBzcGVjaWZpYyB0eXBlIG9mIFRpWG1sTm9kZS4gIDxhIGhyZWY9IiNhMSI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWUoKTwvYT4gYXMgYSBzdGQ6OnN0cmluZy4gIDxhIGhyZWY9IiNhMiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4gKGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBub2RlLiAgPGEgaHJlZj0iI2EzIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpTZXRWYWx1ZSIgcmVmPSJhNCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+U2V0VmFsdWU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkNsZWFyIiByZWY9ImE1IiBhcmdzPSIoKSIgLS0+Cit2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+Q2xlYXI8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZWxldGUgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUuIERvZXMgbm90IGFmZmVjdCAndGhpcycuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6UGFyZW50IiByZWY9ImE2IiBhcmdzPSIoKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlBhcmVudDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPk9uZSBzdGVwIHVwIHRoZSBET00uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZCIgcmVmPSJhOCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBub2RlLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkIiByZWY9ImExMCIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBmaXJzdCBjaGlsZCBvZiB0aGlzIG5vZGUgd2l0aCB0aGUgbWF0Y2hpbmcgJ3ZhbHVlJy4gV2lsbCBiZSBudWxsIGlmIG5vbmUgZm91bmQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGQiIHJlZj0iYTExIiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBmaXJzdCBjaGlsZCBvZiB0aGlzIG5vZGUgd2l0aCB0aGUgbWF0Y2hpbmcgJ3ZhbHVlJy4gV2lsbCBiZSBudWxsIGlmIG5vbmUgZm91bmQuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okxhc3RDaGlsZCIgcmVmPSJhMTMiIGFyZ3M9IigpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBsYXN0IGNoaWxkIG9mIHRoaXMgbm9kZS4gV2lsbCBiZSBudWxsIGlmIHRoZXJlIGFyZSBubyBjaGlsZHJlbi4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGFzdENoaWxkIiByZWY9ImExNSIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBsYXN0IGNoaWxkIG9mIHRoaXMgbm9kZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkIiByZWY9ImExNiIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkIiByZWY9ImExNyIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij5GaXJzdENoaWxkPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGFzdENoaWxkIiByZWY9ImExOCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okxhc3RDaGlsZCIgcmVmPSJhMTkiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiAoY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICpwcmV2aW91cykgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BbiBhbHRlcm5hdGUgd2F5IHRvIHdhbGsgdGhlIGNoaWxkcmVuIG9mIGEgbm9kZS4gIDxhIGhyZWY9IiNhMjAiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4iIHJlZj0iYTIyIiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIyIj5JdGVyYXRlQ2hpbGRyZW48L2E+IChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICpwcmV2aW91cykgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGlzIGZsYXZvciBvZiBJdGVyYXRlQ2hpbGRyZW4gc2VhcmNoZXMgZm9yIGNoaWxkcmVuIHdpdGggYSBwYXJ0aWN1bGFyICd2YWx1ZScuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiIgcmVmPSJhMjQiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPkl0ZXJhdGVDaGlsZHJlbjwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnByZXZpb3VzKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4iIHJlZj0iYTI1IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIFRpWG1sTm9kZSAqcHJldmlvdXMpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPkl0ZXJhdGVDaGlsZHJlbjwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnByZXZpb3VzKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPiAoY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7YWRkVGhpcyk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gIDxhIGhyZWY9IiNhMjYiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKmFkZFRoaXMpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuICA8YSBocmVmPSIjYTI3Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKmJlZm9yZVRoaXMsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO2FkZFRoaXMpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuICA8YSBocmVmPSIjYTI4Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqYWZ0ZXJUaGlzLCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDthZGRUaGlzKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAgPGEgaHJlZj0iI2EyOSI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqcmVwbGFjZVRoaXMsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO3dpdGhUaGlzKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmVwbGFjZSBhIGNoaWxkIG9mIHRoaXMgbm9kZS4gIDxhIGhyZWY9IiNhMzAiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMzEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpSZW1vdmVDaGlsZCIgcmVmPSJhMzEiIGFyZ3M9IihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpIiAtLT4KK2Jvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnJlbW92ZVRoaXMpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZWxldGUgYSBjaGlsZCBvZiB0aGlzIG5vZGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyIgcmVmPSJhMzIiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyIgcmVmPSJhMzQiIGFyZ3M9Iihjb25zdCBjaGFyICopIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM0Ij5QcmV2aW91c1NpYmxpbmc8L2E+IChjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyIgcmVmPSJhMzYiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMzciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpQcmV2aW91c1NpYmxpbmciIHJlZj0iYTM3IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5leHRTaWJsaW5nIiByZWY9ImEzOCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTM5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmciIHJlZj0iYTM5IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzkiPk5leHRTaWJsaW5nPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmciIHJlZj0iYTQwIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0MiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5leHRTaWJsaW5nIiByZWY9ImE0MiIgYXJncz0iKGNvbnN0IGNoYXIgKikgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPiAoY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPk5hdmlnYXRlIHRvIGEgc2libGluZyBub2RlIHdpdGggdGhlIGdpdmVuICd2YWx1ZScuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4gIDxhIGhyZWY9IiNhNDQiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+IChjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuICA8YSBocmVmPSIjYTQ2Ij48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQ4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50IiByZWY9ImE0OCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0OSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCIgcmVmPSJhNDkiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZEVsZW1lbnQiIHJlZj0iYTUwIiBhcmdzPSIoKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1MiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGRFbGVtZW50IiByZWY9ImE1MiIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCAiIC0tPgorY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTU0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZEVsZW1lbnQiIHJlZj0iYTU0IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU0Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCIgcmVmPSJhNTUiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIGludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UeXBlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJ5IHRoZSB0eXBlIChhcyBhbiBlbnVtZXJhdGVkIHZhbHVlLCBhYm92ZSkgb2YgdGhpcyBub2RlLiAgPGEgaHJlZj0iI2E1NiI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgcG9pbnRlciB0byB0aGUgRG9jdW1lbnQgdGhpcyBub2RlIGxpdmVzIGluLiAgPGEgaHJlZj0iI2E1NyI+PC9hPjxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1OSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5vQ2hpbGRyZW4iIHJlZj0iYTU5IiBhcmdzPSIoKSBjb25zdCAiIC0tPgorYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaGFzIG5vIGNoaWxkcmVuLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb0RvY3VtZW50IiByZWY9ImE2MCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYxIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9FbGVtZW50IiByZWY9ImE2MSIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9Db21tZW50IiByZWY9ImE2MiIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9Vbmtub3duIiByZWY9ImE2MyIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9UZXh0IiByZWY9ImE2NCIgYXJncz0iKCkgY29uc3QgIiAtLT4KK2NvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9EZWNsYXJhdGlvbiIgcmVmPSJhNjUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Citjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2NiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvRG9jdW1lbnQiIHJlZj0iYTY2IiBhcmdzPSIoKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRvRG9jdW1lbnQ8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9FbGVtZW50IiByZWY9ImE2NyIgYXJncz0iKCkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VG9FbGVtZW50PC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2OCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvQ29tbWVudCIgcmVmPSJhNjgiIGFyZ3M9IigpIiAtLT4KKzxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4gKCk8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb1Vua25vd24iIHJlZj0iYTY5IiBhcmdzPSIoKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij5Ub1Vua25vd248L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTcwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9UZXh0IiByZWY9ImE3MCIgYXJncz0iKCkiIC0tPgorPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPiAoKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuIDxicj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3MSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvRGVjbGFyYXRpb24iIHJlZj0iYTcxIiBhcmdzPSIoKSIgLS0+Cis8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRvRGVjbGFyYXRpb248L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5DbG9uZTwvYT4gKCkgY29uc3QgPTA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuICA8YSBocmVmPSIjYTcyIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5GcmllbmRzPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4wIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VGlYbWxEb2N1bWVudCIgcmVmPSJuMCIgYXJncz0iIiAtLT4KK2NsYXNzJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUaVhtbEVsZW1lbnQiIHJlZj0ibjEiIGFyZ3M9IiIgLS0+CitjbGFzcyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjEiPlRpWG1sRWxlbWVudDwvYT48L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+c3RkOjppc3RyZWFtICZhbXA7Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4gKHN0ZDo6aXN0cmVhbSAmYW1wO2luLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDtiYXNlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QW4gaW5wdXQgc3RyZWFtIG9wZXJhdG9yLCBmb3IgZXZlcnkgY2xhc3MuICA8YSBocmVmPSIjbjIiPjwvYT48YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5zdGQ6Om9zdHJlYW0gJmFtcDsmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPiAoc3RkOjpvc3RyZWFtICZhbXA7b3V0LCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDtiYXNlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QW4gb3V0cHV0IHN0cmVhbSBvcGVyYXRvciwgZm9yIGV2ZXJ5IGNsYXNzLiAgPGEgaHJlZj0iI24zIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpvcGVyYXRvciZsdDsmbHQ7IiByZWY9Im40IiBhcmdzPSIoc3RkOjpzdHJpbmcgJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpIiAtLT4KK3N0ZDo6c3RyaW5nICZhbXA7Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4gKHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDtiYXNlKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QXBwZW5kcyB0aGUgWE1MIG5vZGUgb3IgYXR0cmlidXRlIHRvIGEgc3RkOjpzdHJpbmcuIDxicj48L3RkPjwvdHI+Cis8L3RhYmxlPgorPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KK1RoZSBwYXJlbnQgY2xhc3MgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbC4gCis8cD4KKyhFeGNlcHQgZm9yIGF0dHJpYnV0ZXMpLiBOb2RlcyBoYXZlIHNpYmxpbmdzLCBhIHBhcmVudCwgYW5kIGNoaWxkcmVuLiBBIG5vZGUgY2FuIGJlIGluIGEgZG9jdW1lbnQsIG9yIHN0YW5kIG9uIGl0cyBvd24uIFRoZSB0eXBlIG9mIGEgVGlYbWxOb2RlIGNhbiBiZSBxdWVyaWVkLCBhbmQgaXQgY2FuIGJlIGNhc3QgdG8gaXRzIG1vcmUgZGVmaW5lZCB0eXBlLgorPHA+Cis8aHI+PGgyPk1lbWJlciBFbnVtZXJhdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Inc3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Tm9kZVR5cGUiIHJlZj0idzciIGFyZ3M9IiIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmVudW0gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5UaVhtbE5vZGU6Ok5vZGVUeXBlPC9hPiAgICAgICAgICA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitUaGUgdHlwZXMgb2YgWE1MIG5vZGVzIHN1cHBvcnRlZCBieSBUaW55WG1sLiAKKzxwPgorKEFsbCB0aGUgdW5zdXBwb3J0ZWQgdHlwZXMgYXJlIHBpY2tlZCB1cCBieSBVTktOT1dOLikgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8aHI+PGgyPk1lbWJlciBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3MiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkNsb25lIiByZWY9ImE3MiIgYXJncz0iKCkgY29uc3QgPTAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpDbG9uZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtwdXJlIHZpcnR1YWxdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0NyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuIAorPHA+CitUaGUgbWVtb3J5IG11c3QgYmUgZGVsZXRlZCBieSB0aGUgY2FsbGVyLgorPHA+CitJbXBsZW1lbnRlZCBpbiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPlRpWG1sQ29tbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMCI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNCI+VGlYbWxVbmtub3duPC9hPiwgYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYjEiPlRpWG1sRG9jdW1lbnQ8L2E+LiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1NyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkdldERvY3VtZW50IiByZWY9ImE1NyIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIFRpWG1sTm9kZTo6R2V0RG9jdW1lbnQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1JldHVybiBhIHBvaW50ZXIgdG8gdGhlIERvY3VtZW50IHRoaXMgbm9kZSBsaXZlcyBpbi4gCis8cD4KK1JldHVybnMgbnVsbCBpZiBub3QgaW4gYSBkb2N1bWVudC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJbnNlcnRBZnRlckNoaWxkIiByZWY9ImEyOSIgYXJncz0iKFRpWG1sTm9kZSAqYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpJbnNlcnRBZnRlckNoaWxkICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+YWZ0ZXJUaGlzPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wOyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmFkZFRoaXM8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0FkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gCis8cD4KK0FkZHMgYSBjaGlsZCBhZnRlciB0aGUgc3BlY2lmaWVkIGNoaWxkLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6SW5zZXJ0QmVmb3JlQ2hpbGQiIHJlZj0iYTI4IiBhcmdzPSIoVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKSIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpJbnNlcnRCZWZvcmVDaGlsZCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmJlZm9yZVRoaXM8L2VtPiwgPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+YWRkVGhpczwvZW0+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAKKzxwPgorQWRkcyBhIGNoaWxkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIGNoaWxkLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6SW5zZXJ0RW5kQ2hpbGQiIHJlZj0iYTI2IiBhcmdzPSIoY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcykiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIFRpWG1sTm9kZTo6SW5zZXJ0RW5kQ2hpbGQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7Jm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5hZGRUaGlzPC9lbT4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0FkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gCis8cD4KK0FkZHMgYSBjaGlsZCBwYXN0IHRoZSBMYXN0Q2hpbGQuIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4iIHJlZj0iYTIwIiBhcmdzPSIoY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+cHJldmlvdXM8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQW4gYWx0ZXJuYXRlIHdheSB0byB3YWxrIHRoZSBjaGlsZHJlbiBvZiBhIG5vZGUuIAorPHA+CitPbmUgd2F5IHRvIGl0ZXJhdGUgb3ZlciBub2RlcyBpczogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCQlmb3IoIGNoaWxkID0gcGFyZW50LSZndDtGaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLSZndDtOZXh0U2libGluZygpICkKKwkJPC9wcmU+PC9kaXY+PHA+CitJdGVyYXRlQ2hpbGRyZW4gZG9lcyB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBzeW50YXg6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQkJY2hpbGQgPSAwOworCQkJd2hpbGUoIGNoaWxkID0gcGFyZW50LSZndDtJdGVyYXRlQ2hpbGRyZW4oIGNoaWxkICkgKQorCQk8L3ByZT48L2Rpdj48cD4KK0l0ZXJhdGVDaGlsZHJlbiB0YWtlcyB0aGUgcHJldmlvdXMgY2hpbGQgYXMgaW5wdXQgYW5kIGZpbmRzIHRoZSBuZXh0IG9uZS4gSWYgdGhlIHByZXZpb3VzIGNoaWxkIGlzIG51bGwsIGl0IHJldHVybnMgdGhlIGZpcnN0LiBJdGVyYXRlQ2hpbGRyZW4gd2lsbCByZXR1cm4gbnVsbCB3aGVuIGRvbmUuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGlua0VuZENoaWxkIiByZWY9ImEyNyIgYXJncz0iKFRpWG1sTm9kZSAqYWRkVGhpcykiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIFRpWG1sTm9kZTo6TGlua0VuZENoaWxkICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5hZGRUaGlzPC9lbT4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0FkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gCis8cD4KK0FkZHMgYSBjaGlsZCBwYXN0IHRoZSBMYXN0Q2hpbGQuPHA+CitOT1RFOiB0aGUgbm9kZSB0byBiZSBhZGRlZCBpcyBwYXNzZWQgYnkgcG9pbnRlciwgYW5kIHdpbGwgYmUgaGVuY2Vmb3J0aCBvd25lZCAoYW5kIGRlbGV0ZWQpIGJ5IHRpbnlYbWwuIFRoaXMgbWV0aG9kIGlzIGVmZmljaWVudCBhbmQgYXZvaWRzIGFuIGV4dHJhIGNvcHksIGJ1dCBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUgYXMgaXQgdXNlcyBhIGRpZmZlcmVudCBtZW1vcnkgbW9kZWwgdGhhbiB0aGUgb3RoZXIgaW5zZXJ0IGZ1bmN0aW9ucy48cD4KKzxkbCBjb21wYWN0PjxkdD48Yj5TZWUgYWxzbzo8L2I+PC9kdD48ZGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+PC9kZD48L2RsPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQ2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50IiByZWY9ImE0NiIgYXJncz0iKGNvbnN0IGNoYXIgKikgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0NvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCB0aHJvdWdoIGVsZW1lbnRzLiAKKzxwPgorQ2FsbHMgTmV4dFNpYmxpbmcgYW5kIFRvRWxlbWVudC4gV2lsbCBza2lwIGFsbCBub24tRWxlbWVudCBub2Rlcy4gUmV0dXJucyAwIGlmIHRoZXJlIGlzIG5vdCBhbm90aGVyIGVsZW1lbnQuICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQ0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50IiByZWY9ImE0NCIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuIAorPHA+CitDYWxscyBOZXh0U2libGluZyBhbmQgVG9FbGVtZW50LiBXaWxsIHNraXAgYWxsIG5vbi1FbGVtZW50IG5vZGVzLiBSZXR1cm5zIDAgaWYgdGhlcmUgaXMgbm90IGFub3RoZXIgZWxlbWVudC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMzAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpSZXBsYWNlQ2hpbGQiIHJlZj0iYTMwIiBhcmdzPSIoVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbE5vZGU6OlJlcGxhY2VDaGlsZCAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPnJlcGxhY2VUaGlzPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wOyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPndpdGhUaGlzPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitSZXBsYWNlIGEgY2hpbGQgb2YgdGhpcyBub2RlLiAKKzxwPgorUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ldyBvYmplY3Qgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6U2V0VmFsdWUiIHJlZj0iYTMiIGFyZ3M9Iihjb25zdCBjaGFyICpfdmFsdWUpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dm9pZCBUaVhtbE5vZGU6OlNldFZhbHVlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+X3ZhbHVlPC9lbT4gICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitDaGFuZ2VzIHRoZSB2YWx1ZSBvZiB0aGUgbm9kZS4gCis8cD4KK0RlZmluZWQgYXM6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQlEb2N1bWVudDoJZmlsZW5hbWUgb2YgdGhlIHhtbCBmaWxlCisJCUVsZW1lbnQ6CW5hbWUgb2YgdGhlIGVsZW1lbnQKKwkJQ29tbWVudDoJdGhlIGNvbW1lbnQgdGV4dAorCQlVbmtub3duOgl0aGUgdGFnIGNvbnRlbnRzCisJCVRleHQ6CQl0aGUgdGV4dCBzdHJpbmcKKwkJPC9wcmU+PC9kaXY+ICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTU2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VHlwZSIgcmVmPSJhNTYiIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Cis8dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+CisgIDx0cj4KKyAgICA8dGQgY2xhc3M9Im1kUm93Ij4KKyAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgaW50IFRpWG1sTm9kZTo6VHlwZSAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK1F1ZXJ5IHRoZSB0eXBlIChhcyBhbiBlbnVtZXJhdGVkIHZhbHVlLCBhYm92ZSkgb2YgdGhpcyBub2RlLiAKKzxwPgorVGhlIHBvc3NpYmxlIHR5cGVzIGFyZTogRE9DVU1FTlQsIEVMRU1FTlQsIENPTU1FTlQsIFVOS05PV04sIFRFWFQsIGFuZCBERUNMQVJBVElPTi4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlZhbHVlIiByZWY9ImExIiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyKiBUaVhtbE5vZGU6OlZhbHVlICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorVGhlIG1lYW5pbmcgb2YgJ3ZhbHVlJyBjaGFuZ2VzIGZvciB0aGUgc3BlY2lmaWMgdHlwZSBvZiBUaVhtbE5vZGUuIAorPHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJRG9jdW1lbnQ6CWZpbGVuYW1lIG9mIHRoZSB4bWwgZmlsZQorCQlFbGVtZW50OgluYW1lIG9mIHRoZSBlbGVtZW50CisJCUNvbW1lbnQ6CXRoZSBjb21tZW50IHRleHQKKwkJVW5rbm93bjoJdGhlIHRhZyBjb250ZW50cworCQlUZXh0OgkJdGhlIHRleHQgc3RyaW5nCisJCTwvcHJlPjwvZGl2PjxwPgorVGhlIHN1YmNsYXNzZXMgd2lsbCB3cmFwIHRoaXMgZnVuY3Rpb24uICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpWYWx1ZVN0ciIgcmVmPSJhMiIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3Qgc3RkOjpzdHJpbmcmYW1wOyBUaVhtbE5vZGU6OlZhbHVlU3RyICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorUmV0dXJuIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWUoKTwvYT4gYXMgYSBzdGQ6OnN0cmluZy4gCis8cD4KK0lmIHlvdSBvbmx5IHVzZSBTVEwsIHRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjYWxsaW5nIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWUoKTwvYT4uIE9ubHkgYXZhaWxhYmxlIGluIFNUTCBtb2RlLiAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzxocj48aDI+RnJpZW5kcyBBbmQgUmVsYXRlZCBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KKzxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4zIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6b3BlcmF0b3ImbHQ7Jmx0OyIgcmVmPSJuMyIgYXJncz0iKHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5zdGQ6Om9zdHJlYW0mYW1wOyBvcGVyYXRvciZsdDsmbHQ7ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnN0ZDo6b3N0cmVhbSAmYW1wOyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm91dDwvZW0+LCA8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDsmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5iYXNlPC9lbT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgorICA8dHI+CisgICAgPHRkPgorICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICA8dGQ+CisKKzxwPgorQW4gb3V0cHV0IHN0cmVhbSBvcGVyYXRvciwgZm9yIGV2ZXJ5IGNsYXNzLiAKKzxwPgorTm90ZSB0aGF0IHRoaXMgb3V0cHV0cyB3aXRob3V0IGFueSBuZXdsaW5lcyBvciBmb3JtYXR0aW5nLCBhcyBvcHBvc2VkIHRvIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+UHJpbnQoKTwvYT4sIHdoaWNoIGluY2x1ZGVzIHRhYnMgYW5kIG5ldyBsaW5lcy48cD4KK1RoZSBvcGVyYXRvciZsdDsmbHQ7IGFuZCBvcGVyYXRvciZndDsmZ3Q7IGFyZSBub3QgY29tcGxldGVseSBzeW1tZXRyaWMuIFdyaXRpbmcgYSBub2RlIHRvIGEgc3RyZWFtIGlzIHZlcnkgd2VsbCBkZWZpbmVkLiBZb3UnbGwgZ2V0IGEgbmljZSBzdHJlYW0gb2Ygb3V0cHV0LCB3aXRob3V0IGFueSBleHRyYSB3aGl0ZXNwYWNlIG9yIG5ld2xpbmVzLjxwPgorQnV0IHJlYWRpbmcgaXMgbm90IGFzIHdlbGwgZGVmaW5lZC4gKEFzIGl0IGFsd2F5cyBpcy4pIElmIHlvdSBjcmVhdGUgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKGZvciBleGFtcGxlKSBhbmQgcmVhZCB0aGF0IGZyb20gYW4gaW5wdXQgc3RyZWFtLCB0aGUgdGV4dCBuZWVkcyB0byBkZWZpbmUgYW4gZWxlbWVudCBvciBqdW5rIHdpbGwgcmVzdWx0LiBUaGlzIGlzIHRydWUgb2YgYWxsIGlucHV0IHN0cmVhbXMsIGJ1dCBpdCdzIHdvcnRoIGtlZXBpbmcgaW4gbWluZC48cD4KK0EgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4gd2lsbCByZWFkIG5vZGVzIHVudGlsIGl0IHJlYWRzIGEgcm9vdCBlbGVtZW50LCBhbmQgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGF0IHJvb3QgZWxlbWVudC4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJuMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Om9wZXJhdG9yJmd0OyZndDsiIHJlZj0ibjIiIGFyZ3M9IihzdGQ6OmlzdHJlYW0gJmFtcDtpbiwgVGlYbWxOb2RlICZhbXA7YmFzZSkiIC0tPjxwPgorPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgorICA8dHI+CisgICAgPHRkIGNsYXNzPSJtZFJvdyI+CisgICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5zdGQ6OmlzdHJlYW0mYW1wOyBvcGVyYXRvciZndDsmZ3Q7ICAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnN0ZDo6aXN0cmVhbSAmYW1wOyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmluPC9lbT4sIDwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wOyZuYnNwOzwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmJhc2U8L2VtPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPgorICAgICAgICA8L3RyPgorICAgICAgPC90YWJsZT4KKyAgICA8L3RkPgorICA8L3RyPgorPC90YWJsZT4KKzx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+CisgIDx0cj4KKyAgICA8dGQ+CisgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgIDx0ZD4KKworPHA+CitBbiBpbnB1dCBzdHJlYW0gb3BlcmF0b3IsIGZvciBldmVyeSBjbGFzcy4gCis8cD4KK1RvbGVyYW50IG9mIG5ld2xpbmVzIGFuZCBmb3JtYXR0aW5nLCBidXQgZG9lc24ndCBleHBlY3QgdGhlbS4gICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxOb2RlLnBuZyBiL2RvY3MvY2xhc3NUaVhtbE5vZGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNjYzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxOb2RlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxUZXh0LW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbFRleHQtbWVtYmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOWJjNGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxUZXh0LW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDg0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbFRleHQgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij5DREFUQTwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+Q2xlYXI8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMCI+Q2xvbmU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtwcm90ZWN0ZWQsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzQiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E1Ij5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij5TZXRDREFUQTwvYT4oYm9vbCBfY2RhdGEpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EwIj5UaVhtbFRleHQ8L2E+KGNvbnN0IGNoYXIgKmluaXRWYWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTIiPlRpWG1sVGV4dDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtpbml0VmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VG9EZWNsYXJhdGlvbjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VG9Eb2N1bWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5Ub0VsZW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRvVW5rbm93bjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbFRleHQuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbFRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmUzYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sVGV4dC5odG1sCkBAIC0wLDAgKzEsOTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBUaVhtbFRleHQgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxUZXh0IENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxUZXh0IiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPlhNTCB0ZXh0LiAgCis8YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Cis8cD4KKzxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgorPHA+Cis8cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbFRleHQ6Cis8cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sVGV4dC5wbmciIHVzZW1hcD0iI1RpWG1sVGV4dF9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgorPG1hcCBuYW1lPSJUaVhtbFRleHRfbWFwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiIGFsdD0iVGlYbWxOb2RlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDU2LDczLDgwIj4KKzxhcmVhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiIGFsdD0iVGlYbWxCYXNlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsNzMsMjQiPgorPC9tYXA+Cis8YSBocmVmPSJjbGFzc1RpWG1sVGV4dC1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Cis8dHI+PHRkPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EwIj5UaVhtbFRleHQ8L2E+IChjb25zdCBjaGFyICppbml0VmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3RvciBmb3IgdGV4dCBlbGVtZW50LiAgPGEgaHJlZj0iI2EwIj48L2E+PGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxUZXh0OjpUaVhtbFRleHQiIHJlZj0iYTIiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2luaXRWYWx1ZSkiIC0tPgorJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMiI+VGlYbWxUZXh0PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtpbml0VmFsdWUpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3Rvci4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxUZXh0OjpQcmludCIgcmVmPSJhNSIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E1Ij5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+V3JpdGUgdGhpcyB0ZXh0IG9iamVjdCB0byBhIEZJTEUgc3RyZWFtLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OkNEQVRBIiByZWY9ImE2IiBhcmdzPSIoKSIgLS0+Citib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNiI+Q0RBVEE8L2E+ICgpPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5RdWVyaWVzIHdoZXRoZXIgdGhpcyByZXByZXNlbnRzIHRleHQgdXNpbmcgYSBDREFUQSBzZWN0aW9uLiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OlNldENEQVRBIiByZWY9ImE3IiBhcmdzPSIoYm9vbCBfY2RhdGEpIiAtLT4KK3ZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij5TZXRDREFUQTwvYT4gKGJvb2wgX2NkYXRhKTwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VHVybnMgb24gb3Igb2ZmIGEgQ0RBVEEgcmVwcmVzZW50YXRpb24gb2YgdGV4dC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5Qcm90ZWN0ZWQgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJiMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OkNsb25lIiByZWY9ImIwIiBhcmdzPSIoKSBjb25zdCAiIC0tPgordmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYjAiPkNsb25lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+CisKKzx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPltpbnRlcm5hbCB1c2VdIENyZWF0ZXMgYSBuZXcgRWxlbWVudCBhbmQgcmV0dXJucyBpdC4gPGJyPjwvdGQ+PC90cj4KKzx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5GcmllbmRzPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4wIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVGV4dDo6VGlYbWxFbGVtZW50IiByZWY9Im4wIiBhcmdzPSIiIC0tPgorY2xhc3MmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI24wIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48L3RyPgorCis8L3RhYmxlPgorPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KK1hNTCB0ZXh0LiAKKzxwPgorQSB0ZXh0IG5vZGUgY2FuIGhhdmUgMiB3YXlzIHRvIG91dHB1dCB0aGUgbmV4dC4gIm5vcm1hbCIgb3V0cHV0IGFuZCBDREFUQS4gSXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBtb2RlIGl0IHdhcyBwYXJzZWQgZnJvbSB0aGUgWE1MIGZpbGUgYW5kIHlvdSBnZW5lcmFsbHkgd2FudCB0byBsZWF2ZSBpdCBhbG9uZSwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSBvdXRwdXQgbW9kZSB3aXRoIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNyI+U2V0Q0RBVEEoKTwvYT4gYW5kIHF1ZXJ5IGl0IHdpdGggPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij5DREFUQSgpPC9hPi4KKzxwPgorPGhyPjxoMj5Db25zdHJ1Y3RvciAmYW1wOyBEZXN0cnVjdG9yIERvY3VtZW50YXRpb248L2gyPgorPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxUZXh0OjpUaVhtbFRleHQiIHJlZj0iYTAiIGFyZ3M9Iihjb25zdCBjaGFyICppbml0VmFsdWUpIiAtLT48cD4KKzx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgorICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+VGlYbWxUZXh0OjpUaVhtbFRleHQgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5pbml0VmFsdWU8L2VtPiAgICAgICAgICA8L3RkPgorICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KKyAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KKyAgPHRyPgorICAgIDx0ZD4KKyAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgPHRkPgorCis8cD4KK0NvbnN0cnVjdG9yIGZvciB0ZXh0IGVsZW1lbnQuIAorPHA+CitCeSBkZWZhdWx0LCBpdCBpcyB0cmVhdGVkIGFzIG5vcm1hbCwgZW5jb2RlZCB0ZXh0LiBJZiB5b3Ugd2FudCBpdCBiZSBvdXRwdXQgYXMgYSBDREFUQSB0ZXh0IGVsZW1lbnQsIHNldCB0aGUgcGFyYW1ldGVyIF9jZGF0YSB0byAndHJ1ZScgICAgPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxUZXh0LnBuZyBiL2RvY3MvY2xhc3NUaVhtbFRleHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTcxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxUZXh0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxVbmtub3duLW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbFVua25vd24tbWVtYmVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOTRhMDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2NsYXNzVGlYbWxVbmtub3duLW1lbWJlcnMuaHRtbApAQCAtMCwwICsxLDgwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaVhtbFVua25vd24gTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E0Ij5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzQiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E1Ij5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VG9EZWNsYXJhdGlvbjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VG9Eb2N1bWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5Ub0VsZW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRvVW5rbm93bjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KKyAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgorICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+CisgIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KKzwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbFVua25vd24uaHRtbCBiL2RvY3MvY2xhc3NUaVhtbFVua25vd24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjY2MWQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBUaVhtbFVua25vd24gQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlYbWxVbmtub3duIENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxVbmtub3duIiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPkFueSB0YWcgdGhhdCB0aW55WG1sIGRvZXNuJ3QgcmVjb2duaXplIGlzIHNhdmVkIGFzIGFuIHVua25vd24uICAKKzxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KKzxwPgorPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Cis8cD4KKzxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sVW5rbm93bjoKKzxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxVbmtub3duLnBuZyIgdXNlbWFwPSIjVGlYbWxVbmtub3duX21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Cis8bWFwIG5hbWU9IlRpWG1sVW5rbm93bl9tYXAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsOTQsODAiPgorPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCw5NCwyNCI+Cis8L21hcD4KKzxhIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKzx0cj48dGQ+PC90ZD48L3RyPgorPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Cis8dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVW5rbm93bjo6Q2xvbmUiIHJlZj0iYTQiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Cit2aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNCI+Q2xvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KKworPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBVbmtub3duIGFuZCByZXR1cm5zIGl0LiA8YnI+PC90ZD48L3RyPgorPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFVua25vd246OlByaW50IiByZWY9ImE1IiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgIiAtLT4KK3ZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTUiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48L3RyPgorCis8dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5QcmludCB0aGlzIFVua25vd24gdG8gYSBGSUxFIHN0cmVhbS4gPGJyPjwvdGQ+PC90cj4KKzwvdGFibGU+Cis8aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgorQW55IHRhZyB0aGF0IHRpbnlYbWwgZG9lc24ndCByZWNvZ25pemUgaXMgc2F2ZWQgYXMgYW4gdW5rbm93bi4gCis8cD4KK0l0IGlzIGEgdGFnIG9mIHRleHQsIGJ1dCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiBJdCB3aWxsIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgWE1MLCB1bmNoYW5nZWQsIHdoZW4gdGhlIGZpbGUgaXMgc2F2ZWQuPHA+CitEVEQgdGFncyBnZXQgdGhyb3duIGludG8gVGlYbWxVbmtub3ducy4KKzxwPgorPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5wbmcgYi9kb2NzL2NsYXNzVGlYbWxVbmtub3duLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzhiZmFiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9kb3h5Z2VuLmNzcyBiL2RvY3MvZG94eWdlbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjYWU5ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZG94eWdlbi5jc3MKQEAgLTAsMCArMSwzMDkgQEAKK0JPRFksSDEsSDIsSDMsSDQsSDUsSDYsUCxDRU5URVIsVEQsVEgsVUwsREwsRElWIHsKKwlmb250LWZhbWlseTogR2VuZXZhLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOworfQorQk9EWSxURCB7CisgICAgICAgZm9udC1zaXplOiA5MCU7Cit9CitIMSB7CisJdGV4dC1hbGlnbjogY2VudGVyOworICAgICAgIGZvbnQtc2l6ZTogMTYwJTsKK30KK0gyIHsKKyAgICAgICBmb250LXNpemU6IDEyMCU7Cit9CitIMyB7CisgICAgICAgZm9udC1zaXplOiAxMDAlOworfQorQ0FQVElPTiB7IGZvbnQtd2VpZ2h0OiBib2xkIH0KK0RJVi5xaW5kZXggeworCXdpZHRoOiAxMDAlOworCWJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7CisJYm9yZGVyOiAxcHggc29saWQgI2IwYjBiMDsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJbWFyZ2luOiAycHg7CisJcGFkZGluZzogMnB4OworCWxpbmUtaGVpZ2h0OiAxNDAlOworfQorRElWLm5hdiB7CisJd2lkdGg6IDEwMCU7CisJYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKKwlib3JkZXI6IDFweCBzb2xpZCAjYjBiMGIwOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwltYXJnaW46IDJweDsKKwlwYWRkaW5nOiAycHg7CisJbGluZS1oZWlnaHQ6IDE0MCU7Cit9CitESVYubmF2dGFiIHsKKyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWZmOworICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNiMGIwYjA7CisgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOworICAgICAgIG1hcmdpbjogMnB4OworICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKKyAgICAgICBwYWRkaW5nOiAycHg7Cit9CitURC5uYXZ0YWIgeworICAgICAgIGZvbnQtc2l6ZTogNzAlOworfQorQS5xaW5kZXggeworICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICAgICBjb2xvcjogIzFBNDE5RDsKK30KK0EucWluZGV4OnZpc2l0ZWQgeworICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgICAgICBmb250LXdlaWdodDogYm9sZDsKKyAgICAgICBjb2xvcjogIzFBNDE5RAorfQorQS5xaW5kZXg6aG92ZXIgeworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGZmOworfQorQS5xaW5kZXhITCB7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworCWZvbnQtd2VpZ2h0OiBib2xkOworCWJhY2tncm91bmQtY29sb3I6ICM2NjY2Y2M7CisJY29sb3I6ICNmZmZmZmY7CisJYm9yZGVyOiAxcHggZG91YmxlICM5Mjk1QzI7Cit9CitBLnFpbmRleEhMOmhvdmVyIHsKKwl0ZXh0LWRlY29yYXRpb246IG5vbmU7CisJYmFja2dyb3VuZC1jb2xvcjogIzY2NjZjYzsKKwljb2xvcjogI2ZmZmZmZjsKK30KK0EucWluZGV4SEw6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogIzY2NjZjYzsgY29sb3I6ICNmZmZmZmYgfQorQS5lbCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZm9udC13ZWlnaHQ6IGJvbGQgfQorQS5lbFJlZiB7IGZvbnQtd2VpZ2h0OiBib2xkIH0KK0EuY29kZTpsaW5rIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzAwMDBGRn0KK0EuY29kZTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzAwMDBGRn0KK0EuY29kZVJlZjpsaW5rIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICMwMDAwRkZ9CitBLmNvZGVSZWY6dmlzaXRlZCB7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMDAwMEZGfQorQTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmZiB9CitETC5lbCB7IG1hcmdpbi1sZWZ0OiAtMWNtIH0KKy5mcmFnbWVudCB7CisgICAgICAgZm9udC1mYW1pbHk6IEZpeGVkLCBtb25vc3BhY2U7CisgICAgICAgZm9udC1zaXplOiA5NSU7Cit9CitQUkUuZnJhZ21lbnQgeworCWJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7CisJYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKKwltYXJnaW4tdG9wOiA0cHg7CisJbWFyZ2luLWJvdHRvbTogNHB4OworCW1hcmdpbi1sZWZ0OiAycHg7CisJbWFyZ2luLXJpZ2h0OiA4cHg7CisJcGFkZGluZy1sZWZ0OiA2cHg7CisJcGFkZGluZy1yaWdodDogNnB4OworCXBhZGRpbmctdG9wOiA0cHg7CisJcGFkZGluZy1ib3R0b206IDRweDsKK30KK0RJVi5haCB7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNmZmZmZmY7IG1hcmdpbi1ib3R0b206IDNweDsgbWFyZ2luLXRvcDogM3B4IH0KK1RELm1kIHsgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGQjsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KK1RELm1kUHJlZml4IHsKKyAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEZCOworICAgICAgIGNvbG9yOiAjNjA2MDYwOworCWZvbnQtc2l6ZTogODAlOworfQorVEQubWRuYW1lMSB7IGJhY2tncm91bmQtY29sb3I6ICNGNEY0RkI7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogIzYwMjAyMDsgfQorVEQubWRuYW1lIHsgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGQjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjNjAyMDIwOyB3aWR0aDogNjAwcHg7IH0KK0RJVi5ncm91cEhlYWRlciB7CisgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7CisgICAgICAgbWFyZ2luLXRvcDogMTJweDsKKyAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7CisgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CitESVYuZ3JvdXBUZXh0IHsgbWFyZ2luLWxlZnQ6IDE2cHg7IGZvbnQtc3R5bGU6IGl0YWxpYzsgZm9udC1zaXplOiA5MCUgfQorQk9EWSB7CisJYmFja2dyb3VuZDogd2hpdGU7CisJY29sb3I6IGJsYWNrOworCW1hcmdpbi1yaWdodDogMjBweDsKKwltYXJnaW4tbGVmdDogMjBweDsKK30KK1RELmluZGV4a2V5IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWZmOworCWZvbnQtd2VpZ2h0OiBib2xkOworCXBhZGRpbmctcmlnaHQgIDogMTBweDsKKwlwYWRkaW5nLXRvcCAgICA6IDJweDsKKwlwYWRkaW5nLWxlZnQgICA6IDEwcHg7CisJcGFkZGluZy1ib3R0b20gOiAycHg7CisJbWFyZ2luLWxlZnQgICAgOiAwcHg7CisJbWFyZ2luLXJpZ2h0ICAgOiAwcHg7CisJbWFyZ2luLXRvcCAgICAgOiAycHg7CisJbWFyZ2luLWJvdHRvbSAgOiAycHg7CisJYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQzsKK30KK1RELmluZGV4dmFsdWUgeworCWJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7CisJZm9udC1zdHlsZTogaXRhbGljOworCXBhZGRpbmctcmlnaHQgIDogMTBweDsKKwlwYWRkaW5nLXRvcCAgICA6IDJweDsKKwlwYWRkaW5nLWxlZnQgICA6IDEwcHg7CisJcGFkZGluZy1ib3R0b20gOiAycHg7CisJbWFyZ2luLWxlZnQgICAgOiAwcHg7CisJbWFyZ2luLXJpZ2h0ICAgOiAwcHg7CisJbWFyZ2luLXRvcCAgICAgOiAycHg7CisJbWFyZ2luLWJvdHRvbSAgOiAycHg7CisJYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQzsKK30KK1RSLm1lbWxpc3QgeworICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDsgCit9CitQLmZvcm11bGFEc3AgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KK0lNRy5mb3JtdWxhRHNwIHsgfQorSU1HLmZvcm11bGFJbmwgeyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CitTUEFOLmtleXdvcmQgICAgICAgeyBjb2xvcjogIzAwODAwMCB9CitTUEFOLmtleXdvcmR0eXBlICAgeyBjb2xvcjogIzYwNDAyMCB9CitTUEFOLmtleXdvcmRmbG93ICAgeyBjb2xvcjogI2UwODAwMCB9CitTUEFOLmNvbW1lbnQgICAgICAgeyBjb2xvcjogIzgwMDAwMCB9CitTUEFOLnByZXByb2Nlc3NvciAgeyBjb2xvcjogIzgwNjAyMCB9CitTUEFOLnN0cmluZ2xpdGVyYWwgeyBjb2xvcjogIzAwMjA4MCB9CitTUEFOLmNoYXJsaXRlcmFsICAgeyBjb2xvcjogIzAwODA4MCB9CisubWRUYWJsZSB7CisJYm9yZGVyOiAxcHggc29saWQgIzg2ODY4NjsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEZCOworfQorLm1kUm93IHsKKwlwYWRkaW5nOiA4cHggMTBweDsKK30KKy5tZGVzY0xlZnQgeworICAgICAgIHBhZGRpbmc6IDBweCA4cHggNHB4IDhweDsKKwlmb250LXNpemU6IDgwJTsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwlib3JkZXItdG9wOiAxcHggbm9uZSAjRTBFMEUwOworCWJvcmRlci1yaWdodDogMXB4IG5vbmUgI0UwRTBFMDsKKwlib3JkZXItYm90dG9tOiAxcHggbm9uZSAjRTBFMEUwOworCWJvcmRlci1sZWZ0OiAxcHggbm9uZSAjRTBFMEUwOworCW1hcmdpbjogMHB4OworfQorLm1kZXNjUmlnaHQgeworICAgICAgIHBhZGRpbmc6IDBweCA4cHggNHB4IDhweDsKKwlmb250LXNpemU6IDgwJTsKKwlmb250LXN0eWxlOiBpdGFsaWM7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwlib3JkZXItdG9wOiAxcHggbm9uZSAjRTBFMEUwOworCWJvcmRlci1yaWdodDogMXB4IG5vbmUgI0UwRTBFMDsKKwlib3JkZXItYm90dG9tOiAxcHggbm9uZSAjRTBFMEUwOworCWJvcmRlci1sZWZ0OiAxcHggbm9uZSAjRTBFMEUwOworCW1hcmdpbjogMHB4OworfQorLm1lbUl0ZW1MZWZ0IHsKKwlwYWRkaW5nOiAxcHggMHB4IDBweCA4cHg7CisJbWFyZ2luOiA0cHg7CisJYm9yZGVyLXRvcC13aWR0aDogMXB4OworCWJvcmRlci1yaWdodC13aWR0aDogMXB4OworCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKKwlib3JkZXItbGVmdC13aWR0aDogMXB4OworCWJvcmRlci10b3AtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjRTBFMEUwOworCWJvcmRlci1ib3R0b20tY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWxlZnQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7CisJYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOworCWJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7CisJYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7CisJYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKKwlmb250LXNpemU6IDgwJTsKK30KKy5tZW1JdGVtUmlnaHQgeworCXBhZGRpbmc6IDFweCA4cHggMHB4IDhweDsKKwltYXJnaW46IDRweDsKKwlib3JkZXItdG9wLXdpZHRoOiAxcHg7CisJYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CisJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OworCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CisJYm9yZGVyLXRvcC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItcmlnaHQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWJvdHRvbS1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItbGVmdC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsKKwlib3JkZXItcmlnaHQtc3R5bGU6IG5vbmU7CisJYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKKwlib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOworCWZvbnQtc2l6ZTogODAlOworfQorLm1lbVRlbXBsSXRlbUxlZnQgeworCXBhZGRpbmc6IDFweCAwcHggMHB4IDhweDsKKwltYXJnaW46IDRweDsKKwlib3JkZXItdG9wLXdpZHRoOiAxcHg7CisJYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CisJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OworCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CisJYm9yZGVyLXRvcC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItcmlnaHQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWJvdHRvbS1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItbGVmdC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItdG9wLXN0eWxlOiBub25lOworCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKKwlib3JkZXItYm90dG9tLXN0eWxlOiBub25lOworCWJvcmRlci1sZWZ0LXN0eWxlOiBub25lOworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJZm9udC1zaXplOiA4MCU7Cit9CisubWVtVGVtcGxJdGVtUmlnaHQgeworCXBhZGRpbmc6IDFweCA4cHggMHB4IDhweDsKKwltYXJnaW46IDRweDsKKwlib3JkZXItdG9wLXdpZHRoOiAxcHg7CisJYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CisJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OworCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CisJYm9yZGVyLXRvcC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItcmlnaHQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWJvdHRvbS1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItbGVmdC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItdG9wLXN0eWxlOiBub25lOworCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKKwlib3JkZXItYm90dG9tLXN0eWxlOiBub25lOworCWJvcmRlci1sZWZ0LXN0eWxlOiBub25lOworCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CisJZm9udC1zaXplOiA4MCU7Cit9CisubWVtVGVtcGxQYXJhbXMgeworCXBhZGRpbmc6IDFweCAwcHggMHB4IDhweDsKKwltYXJnaW46IDRweDsKKwlib3JkZXItdG9wLXdpZHRoOiAxcHg7CisJYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CisJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OworCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7CisJYm9yZGVyLXRvcC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItcmlnaHQtY29sb3I6ICNFMEUwRTA7CisJYm9yZGVyLWJvdHRvbS1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItbGVmdC1jb2xvcjogI0UwRTBFMDsKKwlib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsKKwlib3JkZXItcmlnaHQtc3R5bGU6IG5vbmU7CisJYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKKwlib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKKyAgICAgICBjb2xvcjogIzYwNjA2MDsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOworCWZvbnQtc2l6ZTogODAlOworfQorLnNlYXJjaCAgICAgeyBjb2xvcjogIzAwMzM5OTsKKyAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CitGT1JNLnNlYXJjaCB7CisgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKKyAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMHB4OworfQorSU5QVVQuc2VhcmNoIHsgZm9udC1zaXplOiA3NSU7CisgICAgICAgICAgICAgICBjb2xvcjogIzAwMDA4MDsKKyAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CisgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWZmOworfQorVEQudGlueSAgICAgIHsgZm9udC1zaXplOiA3NSU7Cit9CithIHsKKwljb2xvcjogIzI1MkU3ODsKK30KK2E6dmlzaXRlZCB7CisJY29sb3I6ICMzRDIxODU7Cit9CisuZGlydGFiIHsgcGFkZGluZzogNHB4OworICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CisgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2IwYjBiMDsKK30KK1RILmRpcnRhYiB7IGJhY2tncm91bmQ6ICNlZWVlZmY7CisgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKK30KK0hSIHsgaGVpZ2h0OiAxcHg7CisgICAgIGJvcmRlcjogbm9uZTsKKyAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIGJsYWNrOworfQpkaWZmIC0tZ2l0IGEvZG9jcy9kb3h5Z2VuLnBuZyBiL2RvY3MvZG94eWdlbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBhMjc0YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZG94eWdlbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9maWxlcy5odG1sIGIvZG9jcy9maWxlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NDhhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ZpbGVzLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IEZpbGUgSW5kZXg8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPlRpbnlYbWwgRmlsZSBMaXN0PC9oMT5IZXJlIGlzIGEgbGlzdCBvZiBhbGwgZG9jdW1lbnRlZCBmaWxlcyB3aXRoIGJyaWVmIGRlc2NyaXB0aW9uczo8dGFibGU+CisgIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48Yj50aW55c3RyLmg8L2I+IDxhIGhyZWY9InRpbnlzdHJfOGgtc291cmNlLmh0bWwiPltjb2RlXTwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+PC90ZD48L3RyPgorICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGI+dGlueXhtbC5oPC9iPiA8YSBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj5bY29kZV08L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPjwvdGQ+PC90cj4KKzwvdGFibGU+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9mdW5jdGlvbnMuaHRtbCBiL2RvY3MvZnVuY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI3NDFmMAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZnVuY3Rpb25zLmh0bWwKQEAgLTAsMCArMSwxMzggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBDbGFzcyBNZW1iZXJzPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+QWxsPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19mdW5jLmh0bWwiPkZ1bmN0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfdmFycy5odG1sIj5WYXJpYWJsZXM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX2VudW0uaHRtbCI+RW51bWVyYXRpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19yZWxhLmh0bWwiPlJlbGF0ZWQmbmJzcDtGdW5jdGlvbnM8L2E+PC9kaXY+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9hIj5hPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9jIj5jPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9kIj5kPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9lIj5lPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9mIj5mPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9nIj5nPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9pIj5pPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9sIj5sPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9uIj5uPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9vIj5vPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9wIj5wPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9xIj5xPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9yIj5yPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9zIj5zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF90Ij50PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF91Ij51PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF92Ij52PC9hPjwvZGl2PgorCis8cD4KK0hlcmUgaXMgYSBsaXN0IG9mIGFsbCBkb2N1bWVudGVkIGNsYXNzIG1lbWJlcnMgd2l0aCBsaW5rcyB0byB0aGUgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgZWFjaCBtZW1iZXI6Cis8cD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9hIj4tIGEgLTwvYT48L2gzPjx1bD4KKzxsaT5BdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTciPlRpWG1sRWxlbWVudDwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2MiPi0gYyAtPC9hPjwvaDM+PHVsPgorPGxpPkNEQVRBKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij5UaVhtbFRleHQ8L2E+PGxpPkNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTgiPlRpWG1sSGFuZGxlPC9hPjxsaT5DaGlsZEVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTAiPlRpWG1sSGFuZGxlPC9hPjxsaT5DbGVhcigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+VGlYbWxOb2RlPC9hPjxsaT5DbGVhckVycm9yKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjIiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkNsb25lKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNiMSI+VGlYbWxEb2N1bWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNCI+VGlYbWxVbmtub3duPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMCI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E0Ij5UaVhtbENvbW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5UaVhtbE5vZGU8L2E+PGxpPkNvbHVtbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+VGlYbWxCYXNlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfZCI+LSBkIC08L2E+PC9oMz48dWw+Cis8bGk+RG91YmxlVmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNiI+VGlYbWxBdHRyaWJ1dGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9lIj4tIGUgLTwvYT48L2gzPjx1bD4KKzxsaT5FbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE2Ij5UaVhtbEhhbmRsZTwvYT48bGk+RW5jb2RpbmcoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E3Ij5UaVhtbERlY2xhcmF0aW9uPC9hPjxsaT5FcnJvcigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE1Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvckNvbCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvckRlc2MoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+VGlYbWxEb2N1bWVudDwvYT48bGk+RXJyb3JJZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE3Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvclJvdygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5UaVhtbERvY3VtZW50PC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfZiI+LSBmIC08L2E+PC9oMz48dWw+Cis8bGk+Rmlyc3RBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIzIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPkZpcnN0Q2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNCI+VGlYbWxIYW5kbGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij5UaVhtbE5vZGU8L2E+PGxpPkZpcnN0Q2hpbGRFbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTYiPlRpWG1sSGFuZGxlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfZyI+LSBnIC08L2E+PC9oMz48dWw+Cis8bGk+R2V0RG9jdW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5UaVhtbE5vZGU8L2E+PGxpPkdldFRleHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5UaVhtbEVsZW1lbnQ8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9pIj4tIGkgLTwvYT48L2gzPjx1bD4KKzxsaT5JbnNlcnRBZnRlckNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+VGlYbWxOb2RlPC9hPjxsaT5JbnNlcnRCZWZvcmVDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPlRpWG1sTm9kZTwvYT48bGk+SW5zZXJ0RW5kQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5UaVhtbE5vZGU8L2E+PGxpPkludFZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTUiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5Jc1doaXRlU3BhY2VDb25kZW5zZWQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPlRpWG1sQmFzZTwvYT48bGk+SXRlcmF0ZUNoaWxkcmVuKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfbCI+LSBsIC08L2E+PC9oMz48dWw+Cis8bGk+TGFzdEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjUiPlRpWG1sRWxlbWVudDwvYT48bGk+TGFzdENoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+VGlYbWxOb2RlPC9hPjxsaT5MaW5rRW5kQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5UaVhtbE5vZGU8L2E+PGxpPkxvYWRGaWxlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTAiPlRpWG1sRG9jdW1lbnQ8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9uIj4tIG4gLTwvYT48L2gzPjx1bD4KKzxsaT5OYW1lKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTMiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5OZXh0KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE1Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+TmV4dFNpYmxpbmcoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQyIj5UaVhtbE5vZGU8L2E+PGxpPk5leHRTaWJsaW5nRWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDkiPlRpWG1sTm9kZTwvYT48bGk+Tm9DaGlsZHJlbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPlRpWG1sTm9kZTwvYT48bGk+Tm9kZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNSI+VGlYbWxIYW5kbGU8L2E+PGxpPk5vZGVUeXBlCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfbyI+LSBvIC08L2E+PC9oMz48dWw+Cis8bGk+b3BlcmF0b3ImbHQ7Jmx0OworOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPlRpWG1sTm9kZTwvYT48bGk+b3BlcmF0b3ImZ3Q7Jmd0OworOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPlRpWG1sTm9kZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3AiPi0gcCAtPC9hPjwvaDM+PHVsPgorPGxpPlBhcmVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+VGlYbWxOb2RlPC9hPjxsaT5QYXJzZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEyIj5UaVhtbERvY3VtZW50PC9hPjxsaT5QcmV2aW91cygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNyI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlByZXZpb3VzU2libGluZygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlRpWG1sTm9kZTwvYT48bGk+UHJpbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyNCI+VGlYbWxEb2N1bWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNSI+VGlYbWxVbmtub3duPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMTAiPlRpWG1sRGVjbGFyYXRpb248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTUiPlRpWG1sVGV4dDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNSI+VGlYbWxDb21tZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOSI+VGlYbWxFbGVtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIzIj5UaVhtbEF0dHJpYnV0ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+VGlYbWxCYXNlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfcSI+LSBxIC08L2E+PC9oMz48dWw+Cis8bGk+UXVlcnlEb3VibGVBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlRpWG1sRWxlbWVudDwvYT48bGk+UXVlcnlEb3VibGVWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E4Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+UXVlcnlGbG9hdEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTAiPlRpWG1sRWxlbWVudDwvYT48bGk+UXVlcnlJbnRBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlRpWG1sRWxlbWVudDwvYT48bGk+UXVlcnlJbnRWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E3Ij5UaVhtbEF0dHJpYnV0ZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3IiPi0gciAtPC9hPjwvaDM+PHVsPgorPGxpPlJlbW92ZUF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjIiPlRpWG1sRWxlbWVudDwvYT48bGk+UmVtb3ZlQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMxIj5UaVhtbE5vZGU8L2E+PGxpPlJlcGxhY2VDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlRpWG1sTm9kZTwvYT48bGk+Um9vdEVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+VGlYbWxEb2N1bWVudDwvYT48bGk+Um93KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5UaVhtbEJhc2U8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9zIj4tIHMgLTwvYT48L2gzPjx1bD4KKzxsaT5TYXZlRmlsZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTExIj5UaVhtbERvY3VtZW50PC9hPjxsaT5TZXRBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTE5Ij5UaVhtbEVsZW1lbnQ8L2E+PGxpPlNldENEQVRBKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij5UaVhtbFRleHQ8L2E+PGxpPlNldENvbmRlbnNlV2hpdGVTcGFjZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+VGlYbWxCYXNlPC9hPjxsaT5TZXREb3VibGVBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIwIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPlNldERvdWJsZVZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEyIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+U2V0SW50VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTEiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXROYW1lKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEzIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+U2V0VGFiU2l6ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5UaVhtbERvY3VtZW50PC9hPjxsaT5TZXRWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNCI+VGlYbWxBdHRyaWJ1dGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlRpWG1sTm9kZTwvYT48bGk+U3RhbmRhbG9uZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTgiPlRpWG1sRGVjbGFyYXRpb248L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF90Ij4tIHQgLTwvYT48L2gzPjx1bD4KKzxsaT5UZXh0KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE3Ij5UaVhtbEhhbmRsZTwvYT48bGk+VGlYbWxBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMiI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlRpWG1sQ29tbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhMCI+VGlYbWxDb21tZW50PC9hPjxsaT5UaVhtbERlY2xhcmF0aW9uKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMiI+VGlYbWxEZWNsYXJhdGlvbjwvYT48bGk+VGlYbWxEb2N1bWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlRpWG1sRWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMSI+VGlYbWxFbGVtZW50PC9hPjxsaT5UaVhtbEhhbmRsZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExIj5UaVhtbEhhbmRsZTwvYT48bGk+VGlYbWxUZXh0KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EyIj5UaVhtbFRleHQ8L2E+PGxpPlRvQ29tbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRpWG1sTm9kZTwvYT48bGk+VG9EZWNsYXJhdGlvbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRpWG1sTm9kZTwvYT48bGk+VG9Eb2N1bWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRpWG1sTm9kZTwvYT48bGk+VG9FbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VGlYbWxOb2RlPC9hPjxsaT5Ub1RleHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5UaVhtbE5vZGU8L2E+PGxpPlRvVW5rbm93bigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRpWG1sTm9kZTwvYT48bGk+VHlwZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlRpWG1sTm9kZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3UiPi0gdSAtPC9hPjwvaDM+PHVsPgorPGxpPlVua25vd24oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTgiPlRpWG1sSGFuZGxlPC9hPjxsaT51c2VyRGF0YQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPlRpWG1sQmFzZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3YiPi0gdiAtPC9hPjwvaDM+PHVsPgorPGxpPlZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTQiPlRpWG1sQXR0cmlidXRlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5UaVhtbE5vZGU8L2E+PGxpPlZhbHVlU3RyKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5UaVhtbE5vZGU8L2E+PGxpPlZlcnNpb24oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E2Ij5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdWw+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9mdW5jdGlvbnNfZW51bS5odG1sIGIvZG9jcy9mdW5jdGlvbnNfZW51bS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZWU5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Z1bmN0aW9uc19lbnVtLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnMgLSBFbnVtZXJhdGlvbnM8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+QWxsPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19mdW5jLmh0bWwiPkZ1bmN0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfdmFycy5odG1sIj5WYXJpYWJsZXM8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3JlbGEuaHRtbCI+UmVsYXRlZCZuYnNwO0Z1bmN0aW9uczwvYT48L2Rpdj4KKworPHA+Cis8dWw+Cis8bGk+Tm9kZVR5cGUKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5UaVhtbE5vZGU8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9uc19mdW5jLmh0bWwgYi9kb2NzL2Z1bmN0aW9uc19mdW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E3ZmIwZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZnVuY3Rpb25zX2Z1bmMuaHRtbApAQCAtMCwwICsxLDEzMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnMgLSBGdW5jdGlvbnM8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+QWxsPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iZnVuY3Rpb25zX2Z1bmMuaHRtbCI+RnVuY3Rpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc192YXJzLmh0bWwiPlZhcmlhYmxlczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3JlbGEuaHRtbCI+UmVsYXRlZCZuYnNwO0Z1bmN0aW9uczwvYT48L2Rpdj4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2EiPmE8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2MiPmM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2QiPmQ8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2UiPmU8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2YiPmY8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2ciPmc8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2kiPmk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2wiPmw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X24iPm48L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3AiPnA8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3EiPnE8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3IiPnI8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3MiPnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3QiPnQ8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3UiPnU8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3YiPnY8L2E+PC9kaXY+CisKKzxwPgorCis8cD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9hIj4tIGEgLTwvYT48L2gzPjx1bD4KKzxsaT5BdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTciPlRpWG1sRWxlbWVudDwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2MiPi0gYyAtPC9hPjwvaDM+PHVsPgorPGxpPkNEQVRBKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij5UaVhtbFRleHQ8L2E+PGxpPkNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTgiPlRpWG1sSGFuZGxlPC9hPjxsaT5DaGlsZEVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTAiPlRpWG1sSGFuZGxlPC9hPjxsaT5DbGVhcigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+VGlYbWxOb2RlPC9hPjxsaT5DbGVhckVycm9yKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjIiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkNsb25lKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNiMSI+VGlYbWxEb2N1bWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNCI+VGlYbWxVbmtub3duPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMCI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E0Ij5UaVhtbENvbW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5UaVhtbE5vZGU8L2E+PGxpPkNvbHVtbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+VGlYbWxCYXNlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfZCI+LSBkIC08L2E+PC9oMz48dWw+Cis8bGk+RG91YmxlVmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNiI+VGlYbWxBdHRyaWJ1dGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9lIj4tIGUgLTwvYT48L2gzPjx1bD4KKzxsaT5FbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE2Ij5UaVhtbEhhbmRsZTwvYT48bGk+RW5jb2RpbmcoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E3Ij5UaVhtbERlY2xhcmF0aW9uPC9hPjxsaT5FcnJvcigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE1Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvckNvbCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvckRlc2MoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+VGlYbWxEb2N1bWVudDwvYT48bGk+RXJyb3JJZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE3Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvclJvdygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5UaVhtbERvY3VtZW50PC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfZiI+LSBmIC08L2E+PC9oMz48dWw+Cis8bGk+Rmlyc3RBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIzIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPkZpcnN0Q2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNCI+VGlYbWxIYW5kbGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij5UaVhtbE5vZGU8L2E+PGxpPkZpcnN0Q2hpbGRFbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTYiPlRpWG1sSGFuZGxlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfZyI+LSBnIC08L2E+PC9oMz48dWw+Cis8bGk+R2V0RG9jdW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5UaVhtbE5vZGU8L2E+PGxpPkdldFRleHQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5UaVhtbEVsZW1lbnQ8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9pIj4tIGkgLTwvYT48L2gzPjx1bD4KKzxsaT5JbnNlcnRBZnRlckNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+VGlYbWxOb2RlPC9hPjxsaT5JbnNlcnRCZWZvcmVDaGlsZCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPlRpWG1sTm9kZTwvYT48bGk+SW5zZXJ0RW5kQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5UaVhtbE5vZGU8L2E+PGxpPkludFZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTUiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5Jc1doaXRlU3BhY2VDb25kZW5zZWQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPlRpWG1sQmFzZTwvYT48bGk+SXRlcmF0ZUNoaWxkcmVuKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfbCI+LSBsIC08L2E+PC9oMz48dWw+Cis8bGk+TGFzdEF0dHJpYnV0ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjUiPlRpWG1sRWxlbWVudDwvYT48bGk+TGFzdENoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+VGlYbWxOb2RlPC9hPjxsaT5MaW5rRW5kQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5UaVhtbE5vZGU8L2E+PGxpPkxvYWRGaWxlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTAiPlRpWG1sRG9jdW1lbnQ8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9uIj4tIG4gLTwvYT48L2gzPjx1bD4KKzxsaT5OYW1lKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTMiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5OZXh0KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE1Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+TmV4dFNpYmxpbmcoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQyIj5UaVhtbE5vZGU8L2E+PGxpPk5leHRTaWJsaW5nRWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDkiPlRpWG1sTm9kZTwvYT48bGk+Tm9DaGlsZHJlbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPlRpWG1sTm9kZTwvYT48bGk+Tm9kZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNSI+VGlYbWxIYW5kbGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9wIj4tIHAgLTwvYT48L2gzPjx1bD4KKzxsaT5QYXJlbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlRpWG1sTm9kZTwvYT48bGk+UGFyc2UoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMiI+VGlYbWxEb2N1bWVudDwvYT48bGk+UHJldmlvdXMoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTciPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5QcmV2aW91c1NpYmxpbmcoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM3Ij5UaVhtbE5vZGU8L2E+PGxpPlByaW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjQiPlRpWG1sRG9jdW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTUiPlRpWG1sVW5rbm93bjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEwIj5UaVhtbERlY2xhcmF0aW9uPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E1Ij5UaVhtbFRleHQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTUiPlRpWG1sQ29tbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjkiPlRpWG1sRWxlbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyMyI+VGlYbWxBdHRyaWJ1dGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTIiPlRpWG1sQmFzZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3EiPi0gcSAtPC9hPjwvaDM+PHVsPgorPGxpPlF1ZXJ5RG91YmxlQXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E5Ij5UaVhtbEVsZW1lbnQ8L2E+PGxpPlF1ZXJ5RG91YmxlVmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOCI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlF1ZXJ5RmxvYXRBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEwIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPlF1ZXJ5SW50QXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E4Ij5UaVhtbEVsZW1lbnQ8L2E+PGxpPlF1ZXJ5SW50VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNyI+VGlYbWxBdHRyaWJ1dGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9yIj4tIHIgLTwvYT48L2gzPjx1bD4KKzxsaT5SZW1vdmVBdHRyaWJ1dGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIyIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPlJlbW92ZUNoaWxkKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+VGlYbWxOb2RlPC9hPjxsaT5SZXBsYWNlQ2hpbGQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5UaVhtbE5vZGU8L2E+PGxpPlJvb3RFbGVtZW50KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTMiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlJvdygpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+VGlYbWxCYXNlPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfcyI+LSBzIC08L2E+PC9oMz48dWw+Cis8bGk+U2F2ZUZpbGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMSI+VGlYbWxEb2N1bWVudDwvYT48bGk+U2V0QXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExOSI+VGlYbWxFbGVtZW50PC9hPjxsaT5TZXRDREFUQSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNyI+VGlYbWxUZXh0PC9hPjxsaT5TZXRDb25kZW5zZVdoaXRlU3BhY2UoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlRpWG1sQmFzZTwvYT48bGk+U2V0RG91YmxlQXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMCI+VGlYbWxFbGVtZW50PC9hPjxsaT5TZXREb3VibGVWYWx1ZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMiI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlNldEludFZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTExIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+U2V0TmFtZSgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMyI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlNldFRhYlNpemUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+VGlYbWxEb2N1bWVudDwvYT48bGk+U2V0VmFsdWUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTQiPlRpWG1sQXR0cmlidXRlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5UaVhtbE5vZGU8L2E+PGxpPlN0YW5kYWxvbmUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E4Ij5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdWw+Cis8aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfdCI+LSB0IC08L2E+PC9oMz48dWw+Cis8bGk+VGV4dCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNyI+VGlYbWxIYW5kbGU8L2E+PGxpPlRpWG1sQXR0cmlidXRlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5UaVhtbENvbW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTAiPlRpWG1sQ29tbWVudDwvYT48bGk+VGlYbWxEZWNsYXJhdGlvbigpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTIiPlRpWG1sRGVjbGFyYXRpb248L2E+PGxpPlRpWG1sRG9jdW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyIj5UaVhtbERvY3VtZW50PC9hPjxsaT5UaVhtbEVsZW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEiPlRpWG1sRWxlbWVudDwvYT48bGk+VGlYbWxIYW5kbGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMSI+VGlYbWxIYW5kbGU8L2E+PGxpPlRpWG1sVGV4dCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMiI+VGlYbWxUZXh0PC9hPjxsaT5Ub0NvbW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY4Ij5UaVhtbE5vZGU8L2E+PGxpPlRvRGVjbGFyYXRpb24oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5UaVhtbE5vZGU8L2E+PGxpPlRvRG9jdW1lbnQoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5UaVhtbE5vZGU8L2E+PGxpPlRvRWxlbWVudCgpCis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRpWG1sTm9kZTwvYT48bGk+VG9UZXh0KCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VGlYbWxOb2RlPC9hPjxsaT5Ub1Vua25vd24oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij5UaVhtbE5vZGU8L2E+PGxpPlR5cGUoKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UaVhtbE5vZGU8L2E+PC91bD4KKzxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF91Ij4tIHUgLTwvYT48L2gzPjx1bD4KKzxsaT5Vbmtub3duKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE4Ij5UaVhtbEhhbmRsZTwvYT48L3VsPgorPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3YiPi0gdiAtPC9hPjwvaDM+PHVsPgorPGxpPlZhbHVlKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTQiPlRpWG1sQXR0cmlidXRlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5UaVhtbE5vZGU8L2E+PGxpPlZhbHVlU3RyKCkKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5UaVhtbE5vZGU8L2E+PGxpPlZlcnNpb24oKQorOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E2Ij5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdWw+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9mdW5jdGlvbnNfcmVsYS5odG1sIGIvZG9jcy9mdW5jdGlvbnNfcmVsYS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MzgxNmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Z1bmN0aW9uc19yZWxhLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnMgLSBSZWxhdGVkIEZ1bmN0aW9uczwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5BbGw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX2Z1bmMuaHRtbCI+RnVuY3Rpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc192YXJzLmh0bWwiPlZhcmlhYmxlczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnNfcmVsYS5odG1sIj5SZWxhdGVkJm5ic3A7RnVuY3Rpb25zPC9hPjwvZGl2PgorCis8cD4KKzx1bD4KKzxsaT5vcGVyYXRvciZsdDsmbHQ7Cis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+VGlYbWxOb2RlPC9hPjxsaT5vcGVyYXRvciZndDsmZ3Q7Cis6IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+VGlYbWxOb2RlPC9hPjwvdWw+Cis8aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9mdW5jdGlvbnNfdmFycy5odG1sIGIvZG9jcy9mdW5jdGlvbnNfdmFycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkM2IwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Z1bmN0aW9uc192YXJzLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnMgLSBWYXJpYWJsZXM8L3RpdGxlPgorPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPjxib2R5PgorPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KKzxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+QWxsPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19mdW5jLmh0bWwiPkZ1bmN0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9uc192YXJzLmh0bWwiPlZhcmlhYmxlczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3JlbGEuaHRtbCI+UmVsYXRlZCZuYnNwO0Z1bmN0aW9uczwvYT48L2Rpdj4KKworPHA+Cis8dWw+Cis8bGk+dXNlckRhdGEKKzogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj5UaVhtbEJhc2U8L2E+PC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2hpZXJhcmNoeS5odG1sIGIvZG9jcy9oaWVyYXJjaHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDA0Y2YyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9oaWVyYXJjaHkuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+VGlueVhtbDogSGllcmFyY2hpY2FsIEluZGV4PC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KKzxoMT5UaW55WG1sIENsYXNzIEhpZXJhcmNoeTwvaDE+VGhpcyBpbmhlcml0YW5jZSBsaXN0IGlzIHNvcnRlZCByb3VnaGx5LCBidXQgbm90IGNvbXBsZXRlbHksIGFscGhhYmV0aWNhbGx5Ojx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4KKzx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+Cis8dWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPgorPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPgorPC91bD4KKzwvdWw+Cis8bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPgorPC91bD4KKzxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2luZGV4Lmh0bWwgYi9kb2NzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU4MThjNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW5kZXguaHRtbApAQCAtMCwwICsxLDIzOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IE1haW4gUGFnZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8aDE+VGlueVhtbCBEb2N1bWVudGF0aW9uPC9oMT4KKzxwPgorPGgzIGFsaWduPSJjZW50ZXIiPjIuNC4wIDwvaDM+PGgxPlRpbnlYbWwgPC9oMT4KKzxwPgorVGlueVhtbCBpcyBhIHNpbXBsZSwgc21hbGwsIEMrKyBYTUwgcGFyc2VyIHRoYXQgY2FuIGJlIGVhc2lseSBpbnRlZ3JhdGluZyBpbnRvIG90aGVyIHByb2dyYW1zLjxwPgorPGgyPldoYXQgaXQgZG9lcy4gPC9oMj4KKzxwPgorSW4gYnJpZWYsIFRpbnlYbWwgcGFyc2VzIGFuIFhNTCBkb2N1bWVudCwgYW5kIGJ1aWxkcyBmcm9tIHRoYXQgYSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSkgdGhhdCBjYW4gYmUgcmVhZCwgbW9kaWZpZWQsIGFuZCBzYXZlZC48cD4KK1hNTCBzdGFuZHMgZm9yICJlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZS4iIEl0IGFsbG93cyB5b3UgdG8gY3JlYXRlIHlvdXIgb3duIGRvY3VtZW50IG1hcmt1cHMuIFdoZXJlIEhUTUwgZG9lcyBhIHZlcnkgZ29vZCBqb2Igb2YgbWFya2luZyBkb2N1bWVudHMgZm9yIGJyb3dzZXJzLCBYTUwgYWxsb3dzIHlvdSB0byBkZWZpbmUgYW55IGtpbmQgb2YgZG9jdW1lbnQgbWFya3VwLCBmb3IgZXhhbXBsZSBhIGRvY3VtZW50IHRoYXQgZGVzY3JpYmVzIGEgInRvIGRvIiBsaXN0IGZvciBhbiBvcmdhbml6ZXIgYXBwbGljYXRpb24uIFhNTCBpcyBhIHZlcnkgc3RydWN0dXJlZCBhbmQgY29udmVuaWVudCBmb3JtYXQuIEFsbCB0aG9zZSByYW5kb20gZmlsZSBmb3JtYXRzIGNyZWF0ZWQgdG8gc3RvcmUgYXBwbGljYXRpb24gZGF0YSBjYW4gYWxsIGJlIHJlcGxhY2VkIHdpdGggWE1MLiBPbmUgcGFyc2VyIGZvciBldmVyeXRoaW5nLjxwPgorVGhlIGJlc3QgcGxhY2UgZm9yIHRoZSBjb21wbGV0ZSwgY29ycmVjdCwgYW5kIHF1aXRlIGZyYW5rbHkgaGFyZCB0byByZWFkIHNwZWMgaXMgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLTIwMDQwMjA0LyI+aHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLTIwMDQwMjA0LzwvYT4uIEFuIGludHJvIHRvIFhNTCAodGhhdCBJIHJlYWxseSBsaWtlKSBjYW4gYmUgZm91bmQgYXQgPGEgaHJlZj0iaHR0cDovL3NrZXcub3JnL3htbC90dXRvcmlhbC8iPmh0dHA6Ly9za2V3Lm9yZy94bWwvdHV0b3JpYWw8L2E+LjxwPgorVGhlcmUgYXJlIGRpZmZlcmVudCB3YXlzIHRvIGFjY2VzcyBhbmQgaW50ZXJhY3Qgd2l0aCBYTUwgZGF0YS4gVGlueVhtbCB1c2VzIGEgRG9jdW1lbnQgT2JqZWN0IE1vZGVsIChET00pLCBtZWFuaW5nIHRoZSBYTUwgZGF0YSBpcyBwYXJzZWQgaW50byBhIEMrKyBvYmplY3RzIHRoYXQgY2FuIGJlIGJyb3dzZWQgYW5kIG1hbmlwdWxhdGVkLCBhbmQgdGhlbiB3cml0dGVuIHRvIGRpc2sgb3IgYW5vdGhlciBvdXRwdXQgc3RyZWFtLiBZb3UgY2FuIGFsc28gY29uc3RydWN0IGFuIFhNTCBkb2N1bWVudCBmcm9tIHNjcmF0Y2ggd2l0aCBDKysgb2JqZWN0cyBhbmQgd3JpdGUgdGhpcyB0byBkaXNrIG9yIGFub3RoZXIgb3V0cHV0IHN0cmVhbS48cD4KK1RpbnlYbWwgaXMgZGVzaWduZWQgdG8gYmUgZWFzeSBhbmQgZmFzdCB0byBsZWFybi4gSXQgaXMgdHdvIGhlYWRlcnMgYW5kIGZvdXIgY3BwIGZpbGVzLiBTaW1wbHkgYWRkIHRoZXNlIHRvIHlvdXIgcHJvamVjdCBhbmQgb2ZmIHlvdSBnby4gVGhlcmUgaXMgYW4gZXhhbXBsZSBmaWxlIC0geG1sdGVzdC5jcHAgLSB0byBnZXQgeW91IHN0YXJ0ZWQuPHA+CitUaW55WG1sIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBaTGliIGxpY2Vuc2UsIHNvIHlvdSBjYW4gdXNlIGl0IGluIG9wZW4gc291cmNlIG9yIGNvbW1lcmNpYWwgY29kZS4gVGhlIGRldGFpbHMgb2YgdGhlIGxpY2Vuc2UgYXJlIGF0IHRoZSB0b3Agb2YgZXZlcnkgc291cmNlIGZpbGUuPHA+CitUaW55WG1sIGF0dGVtcHRzIHRvIGJlIGEgZmxleGlibGUgcGFyc2VyLCBidXQgd2l0aCB0cnVseSBjb3JyZWN0IGFuZCBjb21wbGlhbnQgWE1MIG91dHB1dC4gVGlueVhtbCBzaG91bGQgY29tcGlsZSBvbiBhbnkgcmVhc29uYWJseSBDKysgY29tcGxpYW50IHN5c3RlbS4gSXQgZG9lcyBub3QgcmVseSBvbiBleGNlcHRpb25zIG9yIFJUVEkuIEl0IGNhbiBiZSBjb21waWxlZCB3aXRoIG9yIHdpdGhvdXQgU1RMIHN1cHBvcnQuIFRpbnlYbWwgZnVsbHkgc3VwcG9ydHMgdGhlIFVURi04IGVuY29kaW5nLCBhbmQgdGhlIGZpcnN0IDY0ayBjaGFyYWN0ZXIgZW50aXRpZXMuPHA+Cis8aDI+V2hhdCBpdCBkb2Vzbid0IGRvLiA8L2gyPgorPHA+CitJdCBkb2VzbnQgcGFyc2Ugb3IgdXNlIERURHMgKERvY3VtZW50IFR5cGUgRGVmaW5pdGlvbnMpIG9yIFhTTHMgKGVYdGVuc2libGUgU3R5bGVzaGVldCBMYW5ndWFnZS4pIFRoZXJlIGFyZSBvdGhlciBwYXJzZXJzIG91dCB0aGVyZSAoY2hlY2sgb3V0IHd3dy5zb3VyY2Vmb3JnZS5vcmcsIHNlYXJjaCBmb3IgWE1MKSB0aGF0IGFyZSBtdWNoIG1vcmUgZnVsbHkgZmVhdHVyZWQuIEJ1dCB0aGV5IGFyZSBhbHNvIG11Y2ggYmlnZ2VyLCB0YWtlIGxvbmdlciB0byBzZXQgdXAgaW4geW91ciBwcm9qZWN0LCBoYXZlIGEgaGlnaGVyIGxlYXJuaW5nIGN1cnZlLCBhbmQgb2Z0ZW4gaGF2ZSBhIG1vcmUgcmVzdHJpY3RpdmUgbGljZW5zZS4gSWYgeW91IGFyZSB3b3JraW5nIHdpdGggYnJvd3NlcnMgb3IgaGF2ZSBtb3JlIGNvbXBsZXRlIFhNTCBuZWVkcywgVGlueVhtbCBpcyBub3QgdGhlIHBhcnNlciBmb3IgeW91LjxwPgorVGhlIGZvbGxvd2luZyBEVEQgc3ludGF4IHdpbGwgbm90IHBhcnNlIGF0IHRoaXMgdGltZSBpbiBUaW55WG1sOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JJmx0OyFET0NUWVBFIEFyY2hpdiBbCisJICZsdDshRUxFTUVOVCBDb21tZW50ICgjUENEQVRBKSZndDsKKwldJmd0OworPC9wcmU+PC9kaXY+PHA+CitiZWNhdXNlIFRpbnlYbWwgc2VlcyB0aGlzIGFzIGEgIURPQ1RZUEUgbm9kZSB3aXRoIGFuIGlsbGVnYWxseSBlbWJlZGRlZCAhRUxFTUVOVCBub2RlLiBUaGlzIG1heSBiZSBhZGRyZXNzZWQgaW4gdGhlIGZ1dHVyZS48cD4KKzxoMj5UdXRvcmlhbHMuIDwvaDI+Cis8cD4KK0ZvciB0aGUgaW1wYXRpZW50LCBoZXJlIGlzIGEgdHV0b3JpYWwgdG8gZ2V0IHlvdSBnb2luZy4gQSBncmVhdCB3YXkgdG8gZ2V0IHN0YXJ0ZWQsIGJ1dCBpdCBpcyB3b3J0aCB5b3VyIHRpbWUgdG8gcmVhZCB0aGlzICh2ZXJ5IHNob3J0KSBtYW51YWwgY29tcGxldGVseS48cD4KKzx1bD4KKzxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InR1dG9yaWFsMC5odG1sIj5UaW55WE1MIFR1dG9yaWFsPC9hPjwvbGk+PC91bD4KKzxwPgorPGgyPkNvZGUgU3RhdHVzLiA8L2gyPgorPHA+CitUaW55WG1sIGlzIG1hdHVyZSwgdGVzdGVkIGNvZGUuIEl0IGlzIHZlcnkgc3RhYmxlLiBJZiB5b3UgZmluZCBidWdzLCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQgb24gdGhlIHNvdXJjZWZvcmdlIHdlYiBzaXRlICh3d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWwpLiBXZSdsbCBnZXQgdGhlbSBzdHJhaWdodGVuZWQgb3V0IGFzIHNvb24gYXMgcG9zc2libGUuPHA+CitUaGVyZSBhcmUgc29tZSBhcmVhcyBvZiBpbXByb3ZlbWVudDsgcGxlYXNlIGNoZWNrIHNvdXJjZWZvcmdlIGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB3b3JraW5nIG9uIFRpbnlYbWwuPHA+Cis8aDI+RmVhdHVyZXMgPC9oMj4KKzxwPgorPGgzPlVzaW5nIFNUTCA8L2gzPgorPHA+CitUaW55WG1sIGNhbiBiZSBjb21waWxlZCB0byB1c2Ugb3Igbm90IHVzZSBTVEwuIFdoZW4gdXNpbmcgU1RMLCBUaW55WG1sIHVzZXMgdGhlIHN0ZDo6c3RyaW5nIGNsYXNzLCBhbmQgZnVsbHkgc3VwcG9ydHMgc3RkOjppc3RyZWFtLCBzdGQ6Om9zdHJlYW0sIG9wZXJhdG9yJmx0OyZsdDssIGFuZCBvcGVyYXRvciZndDsmZ3Q7LiBNYW55IEFQSSBtZXRob2RzIGhhdmUgYm90aCAnY29uc3QgY2hhcionIGFuZCAnY29uc3Qgc3RkOjpzdHJpbmcmYW1wOycgZm9ybXMuPHA+CitXaGVuIFNUTCBzdXBwb3J0IGlzIGNvbXBpbGVkIG91dCwgbm8gU1RMIGZpbGVzIGFyZSBpbmNsdWRlZCB3aGF0c292ZXIuIEFsbCB0aGUgc3RyaW5nIGNsYXNzZXMgYXJlIGltcGxlbWVudGVkIGJ5IFRpbnlYbWwgaXRzZWxmLiBBUEkgbWV0aG9kcyBhbGwgdXNlIHRoZSAnY29uc3QgY2hhcionIGZvcm0gZm9yIGlucHV0LjxwPgorVXNlIHRoZSBjb21waWxlIHRpbWUgZGVmaW5lOjxwPgorVElYTUxfVVNFX1NUTDxwPgordG8gY29tcGlsZSBvbmUgdmVyc2lvbiBvciB0aGUgb3RoZXIuIFRoaXMgY2FuIGJlIHBhc3NlZCBieSB0aGUgY29tcGlsZXIsIG9yIHNldCBhcyB0aGUgZmlyc3QgbGluZSBvZiAidGlueXhtbC5oIi48cD4KK05vdGU6IElmIGNvbXBpbGluZyB0aGUgdGVzdCBjb2RlIGluIExpbnV4LCBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBUSU5ZWE1MX1VTRV9TVEw9WUVTL05PIHdpbGwgY29udHJvbCBTVEwgY29tcGlsYXRpb24uIEluIHRoZSBXaW5kb3dzIHByb2plY3QgZmlsZSwgU1RMIGFuZCBub24gU1RMIHRhcmdldHMgYXJlIHByb3ZpZGVkLiBJbiB5b3VyIHByb2plY3QsIGl0cyBwcm9iYWJseSBlYXNpZXN0IHRvIGFkZCB0aGUgbGluZSAiI2RlZmluZSBUSVhNTF9VU0VfU1RMIiBhcyB0aGUgZmlyc3QgbGluZSBvZiA8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4uPHA+Cis8aDM+VVRGLTggPC9oMz4KKzxwPgorVGlueVhtbCBzdXBwb3J0cyBVVEYtOCBhbGxvd2luZyB0byBtYW5pcHVsYXRlIFhNTCBmaWxlcyBpbiBhbnkgbGFuZ3VhZ2UuIFRpbnlYbWwgYWxzbyBzdXBwb3J0cyAibGVnYWN5IG1vZGUiIC0gdGhlIGVuY29kaW5nIHVzZWQgYmVmb3JlIFVURi04IHN1cHBvcnQgYW5kIHByb2JhYmx5IGJlc3QgZGVzY3JpYmVkIGFzICJleHRlbmRlZCBhc2NpaSIuPHA+CitOb3JtYWxseSwgVGlueVhtbCB3aWxsIHRyeSB0byBkZXRlY3QgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYW5kIHVzZSBpdC4gSG93ZXZlciwgYnkgc2V0dGluZyB0aGUgdmFsdWUgb2YgVElYTUxfREVGQVVMVF9FTkNPRElORyBpbiB0aGUgaGVhZGVyIGZpbGUsIFRpbnlYbWwgY2FuIGJlIGZvcmNlZCB0byBhbHdheXMgdXNlIG9uZSBlbmNvZGluZy48cD4KK1RpbnlYbWwgd2lsbCBhc3N1bWUgTGVnYWN5IE1vZGUgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgb2NjdXJzOiA8b2w+Cis8bGk+CitJZiB0aGUgbm9uLXN0YW5kYXJkIGJ1dCBjb21tb24gIlVURi04IGxlYWQgYnl0ZXMiICgweGVmIDB4YmIgMHhiZikgYmVnaW4gdGhlIGZpbGUgb3IgZGF0YSBzdHJlYW0sIFRpbnlYbWwgd2lsbCByZWFkIGl0IGFzIFVURi04LiAgPC9saT4KKzxsaT4KK0lmIHRoZSBkZWNsYXJhdGlvbiB0YWcgaXMgcmVhZCwgYW5kIGl0IGhhcyBhbiBlbmNvZGluZz0iVVRGLTgiLCB0aGVuIFRpbnlYbWwgd2lsbCByZWFkIGl0IGFzIFVURi04LiAgPC9saT4KKzxsaT4KK0lmIHRoZSBkZWNsYXJhdGlvbiB0YWcgaXMgcmVhZCwgYW5kIGl0IGhhcyBubyBlbmNvZGluZyBzcGVjaWZpZWQsIHRoZW4gVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguICA8L2xpPgorPGxpPgorSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIGFuIGVuY29kaW5nPSJzb21ldGhpbmcgZWxzZSIsIHRoZW4gVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgTGVnYWN5IE1vZGUuIEluIGxlZ2FjeSBtb2RlLCBUaW55WG1sIHdpbGwgd29yayBhcyBpdCBkaWQgYmVmb3JlLiBJdCdzIG5vdCBjbGVhciB3aGF0IHRoYXQgbW9kZSBkb2VzIGV4YWN0bHksIGJ1dCBvbGQgY29udGVudCBzaG91bGQga2VlcCB3b3JraW5nLiA8L2xpPgorPGxpPgorVW50aWwgb25lIG9mIHRoZSBhYm92ZSBjcml0ZXJpYSBpcyBtZXQsIFRpbnlYbWwgcnVucyBpbiBMZWdhY3kgTW9kZS4gPC9saT4KKzwvb2w+Cis8cD4KK1doYXQgaGFwcGVucyBpZiB0aGUgZW5jb2RpbmcgaXMgaW5jb3JyZWN0bHkgc2V0IG9yIGRldGVjdGVkPyBUaW55WG1sIHdpbGwgdHJ5IHRvIHJlYWQgYW5kIHBhc3MgdGhyb3VnaCB0ZXh0IHNlZW4gYXMgaW1wcm9wZXJseSBlbmNvZGVkLiBZb3UgbWF5IGdldCBzb21lIHN0cmFuZ2UgcmVzdWx0cyBvciBtYW5nbGVkIGNoYXJhY3RlcnMuIFlvdSBtYXkgd2FudCB0byBmb3JjZSBUaW55WG1sIHRvIHRoZSBjb3JyZWN0IG1vZGUuPHA+Cis8Yj4gWW91IG1heSBmb3JjZSBUaW55WG1sIHRvIExlZ2FjeSBNb2RlIGJ5IHVzaW5nIExvYWRGaWxlKCBUSVhNTF9FTkNPRElOR19MRUdBQ1kgKSBvciBMb2FkRmlsZSggZmlsZW5hbWUsIFRJWE1MX0VOQ09ESU5HX0xFR0FDWSApLiBZb3UgbWF5IGZvcmNlIGl0IHRvIHVzZSBsZWdhY3kgbW9kZSBhbGwgdGhlIHRpbWUgYnkgc2V0dGluZyBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HID0gVElYTUxfRU5DT0RJTkdfTEVHQUNZLiBMaWtld2lzZSwgeW91IG1heSBmb3JjZSBpdCB0byBUSVhNTF9FTkNPRElOR19VVEY4IHdpdGggdGhlIHNhbWUgdGVjaG5pcXVlLjwvYj48cD4KK0ZvciBFbmdsaXNoIHVzZXJzLCB1c2luZyBFbmdsaXNoIFhNTCwgVVRGLTggaXMgdGhlIHNhbWUgYXMgbG93LUFTQ0lJLiBZb3UgZG9uJ3QgbmVlZCB0byBiZSBhd2FyZSBvZiBVVEYtOCBvciBjaGFuZ2UgeW91ciBjb2RlIGluIGFueSB3YXkuIFlvdSBjYW4gdGhpbmsgb2YgVVRGLTggYXMgYSAic3VwZXJzZXQiIG9mIEFTQ0lJLjxwPgorVVRGLTggaXMgbm90IGEgZG91YmxlIGJ5dGUgZm9ybWF0IC0gYnV0IGl0IGlzIGEgc3RhbmRhcmQgZW5jb2Rpbmcgb2YgVW5pY29kZSEgVGlueVhtbCBkb2VzIG5vdCB1c2Ugb3IgZGlyZWN0bHkgc3VwcG9ydCB3Y2hhciwgVENIQVIsIG9yIE1pY3Jvc29mdHMgX1VOSUNPREUgYXQgdGhpcyB0aW1lLiBJdCBpcyBjb21tb24gdG8gc2VlIHRoZSB0ZXJtICJVbmljb2RlIiBpbXByb3Blcmx5IHJlZmVyIHRvIFVURi0xNiwgYSB3aWRlIGJ5dGUgZW5jb2Rpbmcgb2YgdW5pY29kZS4gVGhpcyBpcyBhIHNvdXJjZSBvZiBjb25mdXNpb24uPHA+CitGb3IgImhpZ2gtYXNjaWkiIGxhbmd1YWdlcyAtIGV2ZXJ5dGhpbmcgbm90IEVuZ2xpc2gsIHByZXR0eSBtdWNoIC0gVGlueVhtbCBjYW4gaGFuZGxlIGFsbCBsYW5ndWFnZXMsIGF0IHRoZSBzYW1lIHRpbWUsIGFzIGxvbmcgYXMgdGhlIFhNTCBpcyBlbmNvZGVkIGluIFVURi04LiBUaGF0IGNhbiBiZSBhIGxpdHRsZSB0cmlja3ksIG9sZGVyIHByb2dyYW1zIGFuZCBvcGVyYXRpbmcgc3lzdGVtcyB0ZW5kIHRvIHVzZSB0aGUgImRlZmF1bHQiIG9yICJ0cmFkaXRpb25hbCIgY29kZSBwYWdlLiBNYW55IGFwcHMgKGFuZCBhbG1vc3QgYWxsIG1vZGVybiBvbmVzKSBjYW4gb3V0cHV0IFVURi04LCBidXQgb2xkZXIgb3Igc3R1YmJvcm4gKG9yIGp1c3QgYnJva2VuKSBvbmVzIHN0aWxsIG91dHB1dCB0ZXh0IGluIHRoZSBkZWZhdWx0IGNvZGUgcGFnZS48cD4KK0ZvciBleGFtcGxlLCBKYXBhbmVzZSBzeXN0ZW1zIHRyYWRpdGlvbmFsbHkgdXNlIFNISUZULUpJUyBlbmNvZGluZy4gVGV4dCBlbmNvZGVkIGFzIFNISUZULUpJUyBjYW4gbm90IGJlIHJlYWQgYnkgdGlueXhtbC4gQSBnb29kIHRleHQgZWRpdG9yIGNhbiBpbXBvcnQgU0hJRlQtSklTIGFuZCB0aGVuIHNhdmUgYXMgVVRGLTguPHA+CitUaGUgPGEgaHJlZj0iaHR0cDovL3NrZXcub3JnL3htbC90dXRvcmlhbC8iPlNrZXcub3JnIGxpbms8L2E+IGRvZXMgYSBncmVhdCBqb2IgY292ZXJpbmcgdGhlIGVuY29kaW5nIGlzc3VlLjxwPgorVGhlIHRlc3QgZmlsZSAidXRmOHRlc3QueG1sIiBpcyBhbiBYTUwgY29udGFpbmluZyBFbmdsaXNoLCBTcGFuaXNoLCBSdXNzaWFuLCBhbmQgU2ltcGxpZmllZCBDaGluZXNlLiAoSG9wZWZ1bGx5IHRoZXkgYXJlIHRyYW5zbGF0ZWQgY29ycmVjdGx5KS4gVGhlIGZpbGUgInV0Zjh0ZXN0LmdpZiIgaXMgYSBzY3JlZW4gY2FwdHVyZSBvZiB0aGUgWE1MIGZpbGUsIHJlbmRlcmVkIGluIElFLiBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGhhdmUgdGhlIGNvcnJlY3QgZm9udHMgKFNpbXBsaWZpZWQgQ2hpbmVzZSBvciBSdXNzaWFuKSBvbiB5b3VyIHN5c3RlbSwgeW91IHdvbid0IHNlZSBvdXRwdXQgdGhhdCBtYXRjaGVzIHRoZSBHSUYgZmlsZSBldmVuIGlmIHlvdSBjYW4gcGFyc2UgaXQgY29ycmVjdGx5LiBBbHNvIG5vdGUgdGhhdCAoYXQgbGVhc3Qgb24gbXkgV2luZG93cyBtYWNoaW5lKSBjb25zb2xlIG91dHB1dCBpcyBpbiBhIFdlc3Rlcm4gY29kZSBwYWdlLCBzbyB0aGF0IFByaW50KCkgb3IgcHJpbnRmKCkgY2Fubm90IGNvcnJlY3RseSBkaXNwbGF5IHRoZSBmaWxlLiBUaGlzIGlzIG5vdCBhIGJ1ZyBpbiBUaW55WG1sIC0ganVzdCBhbiBPUyBpc3N1ZS4gTm8gZGF0YSBpcyBsb3N0IG9yIGRlc3Ryb3llZCBieSBUaW55WG1sLiBUaGUgY29uc29sZSBqdXN0IGRvZXNuJ3QgcmVuZGVyIFVURi04LjxwPgorPGgzPkVudGl0aWVzIDwvaDM+Cis8cD4KK1RpbnlYbWwgcmVjb2duaXplcyB0aGUgcHJlLWRlZmluZWQgImNoYXJhY3RlciBlbnRpdGllcyIsIG1lYW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzLiBOYW1lbHk6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmYW1wO2FtcDsJJmFtcDsKKwkmYW1wO2x0OwkmbHQ7CisJJmFtcDtndDsJJmd0OworCSZhbXA7cXVvdDsJIgorCSZhbXA7YXBvczsJJworPC9wcmU+PC9kaXY+PHA+CitUaGVzZSBhcmUgcmVjb2duaXplZCB3aGVuIHRoZSBYTUwgZG9jdW1lbnQgaXMgcmVhZCwgYW5kIHRyYW5zbGF0ZWQgdG8gdGhlcmUgVVRGLTggZXF1aXZhbGVudHMuIEZvciBpbnN0YW5jZSwgdGV4dCB3aXRoIHRoZSBYTUwgb2Y6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglGYXIgJmFtcDthbXA7IEF3YXkKKzwvcHJlPjwvZGl2PjxwPgord2lsbCBoYXZlIHRoZSBWYWx1ZSgpIG9mICJGYXIgJmFtcDsgQXdheSIgd2hlbiBxdWVyaWVkIGZyb20gdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiBvYmplY3QsIGFuZCB3aWxsIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgWE1MIHN0cmVhbS9maWxlIGFzIGFuIGFtcGVyc2FuZC4gT2xkZXIgdmVyc2lvbnMgb2YgVGlueVhtbCAicHJlc2VydmVkIiBjaGFyYWN0ZXIgZW50aXRpZXMsIGJ1dCB0aGUgbmV3ZXIgdmVyc2lvbnMgd2lsbCB0cmFuc2xhdGUgdGhlbSBpbnRvIGNoYXJhY3RlcnMuPHA+CitBZGRpdGlvbmFsbHksIGFueSBjaGFyYWN0ZXIgY2FuIGJlIHNwZWNpZmllZCBieSBpdHMgVW5pY29kZSBjb2RlIHBvaW50OiBUaGUgc3ludGF4ICImYW1wOyN4QTA7IiBvciAiJmFtcDsjMTYwOyIgYXJlIGJvdGggdG8gdGhlIG5vbi1icmVha2luZyBzcGFjZSBjaGFyYWNoZXIuPHA+Cis8aDM+U3RyZWFtcyA8L2gzPgorPHA+CitXaXRoIFRJWE1MX1VTRV9TVEwgb24sIFRpWG1sIGhhcyBiZWVuIG1vZGlmaWVkIHRvIHN1cHBvcnQgYm90aCBDIChGSUxFKSBhbmQgQysrIChvcGVyYXRvciAmbHQ7Jmx0OywmZ3Q7Jmd0Oykgc3RyZWFtcy4gVGhlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXMgdGhhdCB5b3UgbWF5IG5lZWQgdG8gYmUgYXdhcmUgb2YuPHA+CitDIHN0eWxlIG91dHB1dDo8dWw+Cis8bGk+YmFzZWQgb24gRklMRSo8L2xpPjxsaT50aGUgUHJpbnQoKSBhbmQgU2F2ZUZpbGUoKSBtZXRob2RzPC9saT48L3VsPgorPHA+CitHZW5lcmF0ZXMgZm9ybWF0dGVkIG91dHB1dCwgd2l0aCBwbGVudHkgb2Ygd2hpdGUgc3BhY2UsIGludGVuZGVkIHRvIGJlIGFzIGh1bWFuLXJlYWRhYmxlIGFzIHBvc3NpYmxlLiBUaGV5IGFyZSB2ZXJ5IGZhc3QsIGFuZCB0b2xlcmFudCBvZiBpbGwgZm9ybWVkIFhNTCBkb2N1bWVudHMuIEZvciBleGFtcGxlLCBhbiBYTUwgZG9jdW1lbnQgdGhhdCBjb250YWlucyAyIHJvb3QgZWxlbWVudHMgYW5kIDIgZGVjbGFyYXRpb25zLCB3aWxsIHN0aWxsIHByaW50LjxwPgorQyBzdHlsZSBpbnB1dDo8dWw+Cis8bGk+YmFzZWQgb24gRklMRSo8L2xpPjxsaT50aGUgUGFyc2UoKSBhbmQgTG9hZEZpbGUoKSBtZXRob2RzPC9saT48L3VsPgorPHA+CitBIGZhc3QsIHRvbGVyYW50IHJlYWQuIFVzZSB3aGVuZXZlciB5b3UgZG9uJ3QgbmVlZCB0aGUgQysrIHN0cmVhbXMuPHA+CitDKysgc3R5bGUgb3VwdXQ6PHVsPgorPGxpPmJhc2VkIG9uIHN0ZDo6b3N0cmVhbTwvbGk+PGxpPm9wZXJhdG9yJmx0OyZsdDs8L2xpPjwvdWw+Cis8cD4KK0dlbmVyYXRlcyBjb25kZW5zZWQgb3V0cHV0LCBpbnRlbmRlZCBmb3IgbmV0d29yayB0cmFuc21pc3Npb24gcmF0aGVyIHRoYW4gcmVhZGFiaWxpdHkuIERlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvc3RyZWFtIGNsYXNzLCB0aGVzZSBtYXkgYmUgc29tZXdoYXQgc2xvd2VyLiAoT3IgbWF5IG5vdC4pIE5vdCB0b2xlcmFudCBvZiBpbGwgZm9ybWVkIFhNTDogYSBkb2N1bWVudCBzaG91bGQgY29udGFpbiB0aGUgY29ycmVjdCBvbmUgcm9vdCBlbGVtZW50LiBBZGRpdGlvbmFsIHJvb3QgbGV2ZWwgZWxlbWVudHMgd2lsbCBub3QgYmUgc3RyZWFtZWQgb3V0LjxwPgorQysrIHN0eWxlIGlucHV0Ojx1bD4KKzxsaT5iYXNlZCBvbiBzdGQ6OmlzdHJlYW08L2xpPjxsaT5vcGVyYXRvciZndDsmZ3Q7PC9saT48L3VsPgorPHA+CitSZWFkcyBYTUwgZnJvbSBhIHN0cmVhbSwgbWFraW5nIGl0IHVzZWZ1bCBmb3IgbmV0d29yayB0cmFuc21pc3Npb24uIFRoZSB0cmlja3kgcGFydCBpcyBrbm93aW5nIHdoZW4gdGhlIFhNTCBkb2N1bWVudCBpcyBjb21wbGV0ZSwgc2luY2UgdGhlcmUgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIG90aGVyIGRhdGEgaW4gdGhlIHN0cmVhbS4gVGlueVhtbCB3aWxsIGFzc3VtZSB0aGUgWE1MIGRhdGEgaXMgY29tcGxldGUgYWZ0ZXIgaXQgcmVhZHMgdGhlIHJvb3QgZWxlbWVudC4gUHV0IGFub3RoZXIgd2F5LCBkb2N1bWVudHMgdGhhdCBhcmUgaWxsLWNvbnN0cnVjdGVkIHdpdGggbW9yZSB0aGFuIG9uZSByb290IGVsZW1lbnQgd2lsbCBub3QgcmVhZCBjb3JyZWN0bHkuIEFsc28gbm90ZSB0aGF0IG9wZXJhdG9yJmd0OyZndDsgaXMgc29tZXdoYXQgc2xvd2VyIHRoYW4gUGFyc2UsIGR1ZSB0byBib3RoIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVEwgYW5kIGxpbWl0YXRpb25zIG9mIFRpbnlYbWwuPHA+Cis8aDM+V2hpdGUgc3BhY2UgPC9oMz4KKzxwPgorVGhlIHdvcmxkIHNpbXBseSBkb2VzIG5vdCBhZ3JlZSBvbiB3aGV0aGVyIHdoaXRlIHNwYWNlIHNob3VsZCBiZSBrZXB0LCBvciBjb25kZW5zZWQuIEZvciBleGFtcGxlLCBwcmV0ZW5kIHRoZSAnXycgaXMgYSBzcGFjZSwgYW5kIGxvb2sgYXQgIkhlbGxvX19fX3dvcmxkIi4gSFRNTCwgYW5kIGF0IGxlYXN0IHNvbWUgWE1MIHBhcnNlcnMsIHdpbGwgaW50ZXJwcmV0IHRoaXMgYXMgIkhlbGxvX3dvcmxkIi4gVGhleSBjb25kZW5zZSB3aGl0ZSBzcGFjZS4gU29tZSBYTUwgcGFyc2VycyBkbyBub3QsIGFuZCB3aWxsIGxlYXZlIGl0IGFzICJIZWxsb19fX193b3JsZCIuIChSZW1lbWJlciB0byBrZWVwIHByZXRlbmRpbmcgdGhlIF8gaXMgYSBzcGFjZS4pIE90aGVycyBzdWdnZXN0IHRoYXQgX19IZWxsb19fX3dvcmxkX18gc2hvdWxkIGJlY29tZSBIZWxsb19fX3dvcmxkLjxwPgorSXQncyBhbiBpc3N1ZSB0aGF0IGhhc24ndCBiZWVuIHJlc29sdmVkIHRvIG15IHNhdGlzZmFjdGlvbi4gVGlueVhtbCBzdXBwb3J0cyB0aGUgZmlyc3QgMiBhcHByb2FjaGVzLiBDYWxsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+VGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGJvb2wgKTwvYT4gdG8gc2V0IHRoZSBkZXNpcmVkIGJlaGF2aW9yLiBUaGUgZGVmYXVsdCBpcyB0byBjb25kZW5zZSB3aGl0ZSBzcGFjZS48cD4KK0lmIHlvdSBjaGFuZ2UgdGhlIGRlZmF1bHQsIHlvdSBzaG91bGQgY2FsbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBib29sICk8L2E+IGJlZm9yZSBtYWtpbmcgYW55IGNhbGxzIHRvIFBhcnNlIFhNTCBkYXRhLCBhbmQgSSBkb24ndCByZWNvbW1lbmQgY2hhbmdpbmcgaXQgYWZ0ZXIgaXQgaGFzIGJlZW4gc2V0LjxwPgorPGgzPkhhbmRsZXMgPC9oMz4KKzxwPgorV2hlcmUgYnJvd3NpbmcgYW4gWE1MIGRvY3VtZW50IGluIGEgcm9idXN0IHdheSwgaXQgaXMgaW1wb3J0YW50IHRvIGNoZWNrIGZvciBudWxsIHJldHVybnMgZnJvbSBtZXRob2QgY2FsbHMuIEFuIGVycm9yIHNhZmUgaW1wbGVtZW50YXRpb24gY2FuIGdlbmVyYXRlIGEgbG90IG9mIGNvZGUgbGlrZTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+VGlYbWxFbGVtZW50KiByb290ID0gZG9jdW1lbnQuRmlyc3RDaGlsZEVsZW1lbnQoICJEb2N1bWVudCIgKTsKK2lmICggcm9vdCApCit7CisJVGlYbWxFbGVtZW50KiBlbGVtZW50ID0gcm9vdC0mZ3Q7Rmlyc3RDaGlsZEVsZW1lbnQoICJFbGVtZW50IiApOworCWlmICggZWxlbWVudCApCisJeworCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gZWxlbWVudC0mZ3Q7Rmlyc3RDaGlsZEVsZW1lbnQoICJDaGlsZCIgKTsKKwkJaWYgKCBjaGlsZCApCisJCXsKKwkJCVRpWG1sRWxlbWVudCogY2hpbGQyID0gY2hpbGQtJmd0O05leHRTaWJsaW5nRWxlbWVudCggIkNoaWxkIiApOworCQkJaWYgKCBjaGlsZDIgKQorCQkJeworCQkJCS8vIEZpbmFsbHkgZG8gc29tZXRoaW5nIHVzZWZ1bC4KKzwvcHJlPjwvZGl2PjxwPgorSGFuZGxlcyBoYXZlIGJlZW4gaW50cm9kdWNlZCB0byBjbGVhbiB0aGlzIHVwLiBVc2luZyB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiBjbGFzcywgdGhlIHByZXZpb3VzIGNvZGUgcmVkdWNlcyB0bzo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+VGlYbWxIYW5kbGUgZG9jSGFuZGxlKCAmYW1wO2RvY3VtZW50ICk7CitUaVhtbEVsZW1lbnQqIGNoaWxkMiA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuQ2hpbGQoICJDaGlsZCIsIDEgKS5FbGVtZW50KCk7CitpZiAoIGNoaWxkMiApCit7CisJLy8gZG8gc29tZXRoaW5nIHVzZWZ1bAorPC9wcmU+PC9kaXY+PHA+CitXaGljaCBpcyBtdWNoIGVhc2llciB0byBkZWFsIHdpdGguIFNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IGZvciBtb3JlIGluZm9ybWF0aW9uLjxwPgorPGgzPlJvdyBhbmQgQ29sdW1uIHRyYWNraW5nIDwvaDM+Cis8cD4KK0JlaW5nIGFibGUgdG8gdHJhY2sgbm9kZXMgYW5kIGF0dHJpYnV0ZXMgYmFjayB0byB0aGVpciBvcmlnaW4gbG9jYXRpb24gaW4gc291cmNlIGZpbGVzIGNhbiBiZSB2ZXJ5IGltcG9ydGFudCBmb3Igc29tZSBhcHBsaWNhdGlvbnMuIEFkZGl0aW9uYWxseSwga25vd2luZyB3aGVyZSBwYXJzaW5nIGVycm9ycyBvY2N1cmVkIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgY2FuIGJlIHZlcnkgdGltZSBzYXZpbmcuPHA+CitUaW55WG1sIGNhbiB0cmFja3MgdGhlIHJvdyBhbmQgY29sdW1uIG9yaWdpbiBvZiBhbGwgbm9kZXMgYW5kIGF0dHJpYnV0ZXMgaW4gYSB0ZXh0IGZpbGUuIFRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlRpWG1sQmFzZTo6Um93KCk8L2E+IGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPlRpWG1sQmFzZTo6Q29sdW1uKCk8L2E+IG1ldGhvZHMgcmV0dXJuIHRoZSBvcmlnaW4gb2YgdGhlIG5vZGUgaW4gdGhlIHNvdXJjZSB0ZXh0LiBUaGUgY29ycmVjdCB0YWJzIGNhbiBiZSBjb25maWd1cmVkIGluIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5UaVhtbERvY3VtZW50OjpTZXRUYWJTaXplKCk8L2E+LjxwPgorPGgyPlVzaW5nIGFuZCBJbnN0YWxsaW5nIDwvaDI+Cis8cD4KK1RvIENvbXBpbGUgYW5kIFJ1biB4bWx0ZXN0OjxwPgorQSBMaW51eCBNYWtlZmlsZSBhbmQgYSBXaW5kb3dzIFZpc3VhbCBDKysgLmRzdyBmaWxlIGlzIHByb3ZpZGVkLiBTaW1wbHkgY29tcGlsZSBhbmQgcnVuLiBJdCB3aWxsIHdyaXRlIHRoZSBmaWxlIGRlbW90ZXN0LnhtbCB0byB5b3VyIGRpc2sgYW5kIGdlbmVyYXRlIG91dHB1dCBvbiB0aGUgc2NyZWVuLiBJdCBhbHNvIHRlc3RzIHdhbGtpbmcgdGhlIERPTSBieSBwcmludGluZyBvdXQgdGhlIG51bWJlciBvZiBub2RlcyBmb3VuZCB1c2luZyBkaWZmZXJlbnQgdGVjaG5pcXVlcy48cD4KK1RoZSBMaW51eCBtYWtlZmlsZSBpcyB2ZXJ5IGdlbmVyaWMgYW5kIHdpbGwgcHJvYmFibHkgcnVuIG9uIG90aGVyIHN5c3RlbXMsIGJ1dCBpcyBvbmx5IHRlc3RlZCBvbiBMaW51eC4gWW91IG5vIGxvbmdlciBuZWVkIHRvIHJ1biAnbWFrZSBkZXBlbmQnLiBUaGUgZGVwZW5kZWNpZXMgaGF2ZSBiZWVuIGhhcmQgY29kZWQuPHA+Cis8aDM+V2luZG93cyBwcm9qZWN0IGZpbGUgZm9yIFZDNjwvaDM+Cis8cD4KKzx1bD4KKzxsaT4KK3Rpbnl4bWw6IHRpbnl4bWwgbGlicmFyeSwgbm9uLVNUTCAgPC9saT4KKzxsaT4KK3Rpbnl4bWxTVEw6IHRpbnl4bWwgbGlicmFyeSwgU1RMICA8L2xpPgorPGxpPgordGlueVhtbFRlc3Q6IHRlc3QgYXBwLCBub24tU1RMICA8L2xpPgorPGxpPgordGlueVhtbFRlc3RTVEw6IHRlc3QgYXBwLCBTVEwgIDwvbGk+Cis8L3VsPgorPHA+Cis8aDM+TGludXggTWFrZSBmaWxlPC9oMz4KKzxwPgorQXQgdGhlIHRvcCBvZiB0aGUgbWFrZWZpbGUgeW91IGNhbiBzZXQ6PHA+CitQUk9GSUxFLCBERUJVRywgYW5kIFRJTllYTUxfVVNFX1NUTC4gRGV0YWlscyAoc3VjaCB0aGF0IHRoZXkgYXJlKSBhcmUgaW4gdGhlIG1ha2VmaWxlLjxwPgorSW4gdGhlIHRpbnl4bWwgZGlyZWN0b3J5LCB0eXBlICJtYWtlIGNsZWFuIiB0aGVuICJtYWtlIi4gVGhlIGV4ZWN1dGFibGUgZmlsZSAneG1sdGVzdCcgd2lsbCBiZSBjcmVhdGVkLjxwPgorPGgzPlRvIFVzZSBpbiBhbiBBcHBsaWNhdGlvbjo8L2gzPgorPHA+CitBZGQgdGlueXhtbC5jcHAsIDxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiwgdGlueXhtbGVycm9yLmNwcCwgdGlueXhtbHBhcnNlci5jcHAsIHRpbnlzdHIuY3BwLCBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55c3RyXzhoLXNvdXJjZS5odG1sIj50aW55c3RyLmg8L2E+IHRvIHlvdXIgcHJvamVjdCBvciBtYWtlIGZpbGUuIFRoYXQncyBpdCEgSXQgc2hvdWxkIGNvbXBpbGUgb24gYW55IHJlYXNvbmFibHkgY29tcGxpYW50IEMrKyBzeXN0ZW0uIFlvdSBkbyBub3QgbmVlZCB0byBlbmFibGUgZXhjZXB0aW9ucyBvciBSVFRJIGZvciBUaW55WG1sLjxwPgorPGgyPkhvdyBUaW55WG1sIHdvcmtzLiA8L2gyPgorPHA+CitBbiBleGFtcGxlIGlzIHByb2JhYmx5IHRoZSBiZXN0IHdheSB0byBnby4gVGFrZTogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPW5vJmd0OworCSZsdDshLS0gT3VyIHRvIGRvIGxpc3QgZGF0YSAtLSZndDsKKwkmbHQ7VG9EbyZndDsKKwkJJmx0O0l0ZW0gcHJpb3JpdHk9IjEiJmd0OyBHbyB0byB0aGUgJmx0O2JvbGQmZ3Q7VG95IHN0b3JlISZsdDsvYm9sZCZndDsmbHQ7L0l0ZW0mZ3Q7CisJCSZsdDtJdGVtIHByaW9yaXR5PSIyIiZndDsgRG8gYmlsbHMmbHQ7L0l0ZW0mZ3Q7CisJJmx0Oy9Ub0RvJmd0OworPC9wcmU+PC9kaXY+PHA+CitJdHMgbm90IG11Y2ggb2YgYSBUbyBEbyBsaXN0LCBidXQgaXQgd2lsbCBkby4gVG8gcmVhZCB0aGlzIGZpbGUgKHNheSAiZGVtby54bWwiKSB5b3Ugd291bGQgY3JlYXRlIGEgZG9jdW1lbnQsIGFuZCBwYXJzZSBpdCBpbjogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JVGlYbWxEb2N1bWVudCBkb2MoICJkZW1vLnhtbCIgKTsKKwlkb2MuTG9hZEZpbGUoKTsKKzwvcHJlPjwvZGl2PjxwPgorQW5kIGl0cyByZWFkeSB0byBnby4gTm93IGxldHMgbG9vayBhdCBzb21lIGxpbmVzIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIERPTS48cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+Jmx0Oz94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPW5vJmd0OworPC9wcmU+PC9kaXY+PHA+CitUaGUgZmlyc3QgbGluZSBpcyBhIGRlY2xhcmF0aW9uLCBhbmQgZ2V0cyB0dXJuZWQgaW50byB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4gY2xhc3MuIEl0IHdpbGwgYmUgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBkb2N1bWVudCBub2RlLjxwPgorVGhpcyBpcyB0aGUgb25seSBkaXJlY3RpdmUvc3BlY2lhbCB0YWcgcGFyc2VkIGJ5IGJ5IFRpbnlYbWwuIEdlbmVyYWxseSBkaXJlY3RpdmUgdGFyZ3MgYXJlIHN0b3JlZCBpbiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4gc28gdGhlIGNvbW1hbmRzIHdvbnQgYmUgbG9zdCB3aGVuIGl0IGlzIHNhdmVkIGJhY2sgdG8gZGlzay48cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+Jmx0OyEtLSBPdXIgdG8gZG8gbGlzdCBkYXRhIC0tJmd0OworPC9wcmU+PC9kaXY+PHA+CitBIGNvbW1lbnQuIFdpbGwgYmVjb21lIGEgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+IG9iamVjdC48cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+Jmx0O1RvRG8mZ3Q7Cis8L3ByZT48L2Rpdj48cD4KK1RoZSAiVG9EbyIgdGFnIGRlZmluZXMgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gb2JqZWN0LiBUaGlzIG9uZSBkb2VzIG5vdCBoYXZlIGFueSBhdHRyaWJ1dGVzLCBidXQgZG9lcyBjb250YWluIDIgb3RoZXIgZWxlbWVudHMuPHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPiZsdDtJdGVtIHByaW9yaXR5PSIxIiZndDsgCis8L3ByZT48L2Rpdj48cD4KK0NyZWF0ZXMgYW5vdGhlciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgIlRvRG8iIGVsZW1lbnQuIFRoaXMgZWxlbWVudCBoYXMgMSBhdHRyaWJ1dGUsIHdpdGggdGhlIG5hbWUgInByaW9yaXR5IiBhbmQgdGhlIHZhbHVlICIxIi48cD4KK0dvIHRvIHRoZTxwPgorQSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4uIFRoaXMgaXMgYSBsZWFmIG5vZGUgYW5kIGNhbm5vdCBjb250YWluIG90aGVyIG5vZGVzLiBJdCBpcyBhIGNoaWxkIG9mIHRoZSAiSXRlbSIgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+LjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4mbHQ7Ym9sZCZndDsKKzwvcHJlPjwvZGl2PjxwPgorQW5vdGhlciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4sIHRoaXMgb25lIGEgY2hpbGQgb2YgdGhlICJJdGVtIiBlbGVtZW50LjxwPgorRXRjLjxwPgorTG9va2luZyBhdCB0aGUgZW50aXJlIG9iamVjdCB0cmVlLCB5b3UgZW5kIHVwIHdpdGg6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+VGlYbWxEb2N1bWVudAkJCQkiZGVtby54bWwiCisJVGlYbWxEZWNsYXJhdGlvbgkJInZlcnNpb249JzEuMCciICJzdGFuZGFsb25lPW5vIgorCVRpWG1sQ29tbWVudAkJCSIgT3VyIHRvIGRvIGxpc3QgZGF0YSIKKwlUaVhtbEVsZW1lbnQJCQkiVG9EbyIKKwkJVGlYbWxFbGVtZW50CQkiSXRlbSIJCUF0dHJpYnR1dGVzOiBwcmlvcml0eSA9IDEKKwkJCVRpWG1sVGV4dAkJIkdvIHRvIHRoZSAiCisJCQlUaVhtbEVsZW1lbnQgICAgImJvbGQiCisJCQkJVGlYbWxUZXh0CSJUb3kgc3RvcmUhIgorCQlUaVhtbEVsZW1lbnQJCQkiSXRlbSIJCUF0dHJpYnV0ZXM6IHByaW9yaXR5PTIKKwkJCVRpWG1sVGV4dAkJCSJEbyBiaWxscyIKKzwvcHJlPjwvZGl2PjxwPgorPGgyPkRvY3VtZW50YXRpb24gPC9oMj4KKzxwPgorVGhlIGRvY3VtZW50YXRpb24gaXMgYnVpbGQgd2l0aCBEb3h5Z2VuLCB1c2luZyB0aGUgJ2RveCcgY29uZmlndXJhdGlvbiBmaWxlLjxwPgorPGgyPkxpY2Vuc2UgPC9oMj4KKzxwPgorVGlueVhtbCBpcyByZWxlYXNlZCB1bmRlciB0aGUgemxpYiBsaWNlbnNlOjxwPgorVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuPHA+CitQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6PHA+CisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC48cD4KKzIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS48cD4KKzMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uPHA+Cis8aDI+UmVmZXJlbmNlcyA8L2gyPgorPHA+CitUaGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSBpcyB0aGUgZGVmaW5pdGl2ZSBzdGFuZGFyZCBib2R5IGZvciBYTUwsIGFuZCB0aGVyZSB3ZWIgcGFnZXMgY29udGFpbiBodWdlIGFtb3VudHMgb2YgaW5mb3JtYXRpb24uPHA+CitUaGUgZGVmaW5pdGl2ZSBzcGVjOiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvIj5odHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvPC9hPjxwPgorSSBhbHNvIHJlY29tbWVuZCAiWE1MIFBvY2tldCBSZWZlcmVuY2UiIGJ5IFJvYmVydCBFY2tzdGVpbiBhbmQgcHVibGlzaGVkIGJ5IE9SZWlsbHkuLi50aGUgYm9vayB0aGF0IGdvdCB0aGUgd2hvbGUgdGhpbmcgc3RhcnRlZC48cD4KKzxoMj5Db250cmlidXRvcnMsIENvbnRhY3RzLCBhbmQgYSBCcmllZiBIaXN0b3J5IDwvaDI+Cis8cD4KK1RoYW5rcyB2ZXJ5IG11Y2ggdG8gZXZlcnlvbmUgd2hvIHNlbmRzIHN1Z2dlc3Rpb25zLCBidWdzLCBpZGVhcywgYW5kIGVuY291cmFnZW1lbnQuIEl0IGFsbCBoZWxwcywgYW5kIG1ha2VzIHRoaXMgcHJvamVjdCBmdW4uIEEgc3BlY2lhbCB0aGFua3MgdG8gdGhlIGNvbnRyaWJ1dG9ycyBvbiB0aGUgd2ViIHBhZ2VzIHRoYXQga2VlcCBpdCBsaXZlbHkuPHA+CitTbyBtYW55IHBlb3BsZSBoYXZlIHNlbnQgaW4gYnVncyBhbmQgaWRlYXMsIHRoYXQgcmF0aGVyIHRoYW4gbGlzdCBoZXJlIHdlIHRyeSB0byBnaXZlIGNyZWRpdCBkdWUgaW4gdGhlICJjaGFuZ2VzLnR4dCIgZmlsZS48cD4KK1RpbnlYbWwgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBiZSBMZWUgVGhvbWFzb24uIChPZnRlbiB0aGUgIkkiIHN0aWxsIGluIHRoZSBkb2N1bWVuYXRpb24uKSBMZWUgcmV2aWV3cyBjaGFuZ2VzIGFuZCByZWxlYXNlcyBuZXcgdmVyc2lvbnMsIHdpdGggdGhlIGhlbHAgb2YgWXZlcyBCZXJxdWluIGFuZCB0aGUgdGlueVhtbCBjb21tdW5pdHkuPHA+CitXZSBhcHByZWNpYXRlIHlvdXIgc3VnZ2VzdGlvbnMsIGFuZCB3b3VsZCBsb3ZlIHRvIGtub3cgaWYgeW91IHVzZSBUaW55WG1sLiBIb3BlZnVsbHkgeW91IHdpbGwgZW5qb3kgaXQgYW5kIGZpbmQgaXQgdXNlZnVsLiBQbGVhc2UgcG9zdCBxdWVzdGlvbnMsIGNvbW1lbnRzLCBmaWxlIGJ1Z3MsIG9yIGNvbnRhY3QgdXMgYXQ6PHA+Cit3d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWw8cD4KK0xlZSBUaG9tYXNvbiwgWXZlcyBCZXJxdWluIDxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL3RpbnlzdHJfOGgtc291cmNlLmh0bWwgYi9kb2NzL3RpbnlzdHJfOGgtc291cmNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwYTNjNQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvdGlueXN0cl84aC1zb3VyY2UuaHRtbApAQCAtMCwwICsxLDMwNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IHRpbnlzdHIuaCBTb3VyY2UgRmlsZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPnRpbnlzdHIuaDwvaDE+PGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij48YSBuYW1lPSJsMDAwMDEiPjwvYT4wMDAwMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDIiPjwvYT4wMDAwMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sPC9zcGFuPgorPGEgbmFtZT0ibDAwMDAzIj48L2E+MDAwMDMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPk9yaWdpbmFsIGZpbGUgYnkgWXZlcyBCZXJxdWluLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNCI+PC9hPjAwMDA0IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDUiPjwvYT4wMDAwNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+VGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDYiPjwvYT4wMDAwNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNyI+PC9hPjAwMDA3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5kYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDA4Ij48L2E+MDAwMDggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwOSI+PC9hPjAwMDA5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTAiPjwvYT4wMDAxMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+cHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kPC9zcGFuPgorPGEgbmFtZT0ibDAwMDExIj48L2E+MDAwMTEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPnJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6PC9zcGFuPgorPGEgbmFtZT0ibDAwMDEyIj48L2E+MDAwMTIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxMyI+PC9hPjAwMDEzIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4xLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0PC9zcGFuPgorPGEgbmFtZT0ibDAwMDE0Ij48L2E+MDAwMTQgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPm5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpczwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxNSI+PC9hPjAwMDE1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5zb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb248L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTYiPjwvYT4wMDAxNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTciPjwvYT4wMDAxNyA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDE4Ij48L2E+MDAwMTggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kPC9zcGFuPgorPGEgbmFtZT0ibDAwMDE5Ij48L2E+MDAwMTkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPm11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjAiPjwvYT4wMDAyMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDIxIj48L2E+MDAwMjEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyMiI+PC9hPjAwMDIyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij5kaXN0cmlidXRpb24uPC9zcGFuPgorPGEgbmFtZT0ibDAwMDIzIj48L2E+MDAwMjMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiovPC9zcGFuPgorPGEgbmFtZT0ibDAwMDI0Ij48L2E+MDAwMjQgCis8YSBuYW1lPSJsMDAwMjUiPjwvYT4wMDAyNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjYiPjwvYT4wMDAyNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogVEhJUyBGSUxFIFdBUyBBTFRFUkVEIEJZIFR5Z2UgTG92c2V0LCA3LiBBcHJpbCAyMDA1Ljwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyNyI+PC9hPjAwMDI3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyOCI+PC9hPjAwMDI4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKiAtIGNvbXBsZXRlbHkgcmV3cml0dGVuLiBjb21wYWN0LCBjbGVhbiwgYW5kIGZhc3QgaW1wbGVtZW50YXRpb24uPC9zcGFuPgorPGEgbmFtZT0ibDAwMDI5Ij48L2E+MDAwMjkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqIC0gc2l6ZW9mKFRpWG1sU3RyaW5nKSA9IHBvaW50ZXIgc2l6ZSAoNCBieXRlcyBvbiAzMi1iaXQgc3lzdGVtcyk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzAiPjwvYT4wMDAzMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBmaXhlZCByZXNlcnZlKCkgdG8gd29yayBhcyBwZXIgc3BlY2lmaWNhdGlvbi48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzEiPjwvYT4wMDAzMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBmaXhlZCBidWdneSBjb21wYXJlcyBvcGVyYXRvcj09KCksIG9wZXJhdG9yJmx0OygpLCBhbmQgb3BlcmF0b3ImZ3Q7KCk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzIiPjwvYT4wMDAzMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBmaXhlZCBvcGVyYXRvcis9KCkgdG8gdGFrZSBhIGNvbnN0IHJlZiBhcmd1bWVudCwgZm9sbG93aW5nIHNwZWMuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDMzIj48L2E+MDAwMzMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqIC0gYWRkZWQgImNvcHkiIGNvbnN0cnVjdG9yIHdpdGggbGVuZ3RoLCBhbmQgbW9zdCBjb21wYXJlIG9wZXJhdG9ycy48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzQiPjwvYT4wMDAzNCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBhZGRlZCBzd2FwKCksIGNsZWFyKCksIHNpemUoKSwgY2FwYWNpdHkoKSwgb3BlcmF0b3IrKCkuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDM1Ij48L2E+MDAwMzUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqLzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzNiI+PC9hPjAwMDM2IAorPGEgbmFtZT0ibDAwMDM3Ij48L2E+MDAwMzcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmbmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwMDM4Ij48L2E+MDAwMzggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDM5Ij48L2E+MDAwMzkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmbmRlZiBUSVhNTF9TVFJJTkdfSU5DTFVERUQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDAiPjwvYT4wMDA0MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2RlZmluZSBUSVhNTF9TVFJJTkdfSU5DTFVERUQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDEiPjwvYT4wMDA0MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDIiPjwvYT4wMDA0MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7YXNzZXJ0LmgmZ3Q7PC9zcGFuPgorPGEgbmFtZT0ibDAwMDQzIj48L2E+MDAwNDMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0Ozwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0NCI+PC9hPjAwMDQ0IAorPGEgbmFtZT0ibDAwMDQ1Ij48L2E+MDAwNDUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qPC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ2Ij48L2E+MDAwNDYgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIFRpWG1sU3RyaW5nIGlzIGFuIGVtdWxhdGlvbiBvZiBhIHN1YnNldCBvZiB0aGUgc3RkOjpzdHJpbmcgdGVtcGxhdGUuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ3Ij48L2E+MDAwNDcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIEl0cyBwdXJwb3NlIGlzIHRvIGFsbG93IGNvbXBpbGluZyBUaW55WE1MIG9uIGNvbXBpbGVycyB3aXRoIG5vIG9yIHBvb3IgU1RMIHN1cHBvcnQuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ4Ij48L2E+MDAwNDggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIE9ubHkgdGhlIG1lbWJlciBmdW5jdGlvbnMgcmVsZXZhbnQgdG8gdGhlIFRpbnlYTUwgcHJvamVjdCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ5Ij48L2E+MDAwNDkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIFRoZSBidWZmZXIgYWxsb2NhdGlvbiBpcyBtYWRlIGJ5IGEgc2ltcGxpc3RpYyBwb3dlciBvZiAyIGxpa2UgbWVjaGFuaXNtIDogaWYgd2UgaW5jcmVhc2U8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTAiPjwvYT4wMDA1MCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgYSBzdHJpbmcgYW5kIHRoZXJlJ3Mgbm8gbW9yZSByb29tLCB3ZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0d2ljZSBhcyBiaWcgYXMgd2UgbmVlZC48L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTEiPjwvYT4wMDA1MSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ki88L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTIiPjwvYT4wMDA1MiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPlRpWG1sU3RyaW5nCis8YSBuYW1lPSJsMDAwNTMiPjwvYT4wMDA1MyB7Cis8YSBuYW1lPSJsMDAwNTQiPjwvYT4wMDA1NCAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDoKKzxhIG5hbWU9ImwwMDA1NSI+PC9hPjAwMDU1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGhlIHNpemUgdHlwZSB1c2VkPC9zcGFuPgorPGEgbmFtZT0ibDAwMDU2Ij48L2E+MDAwNTYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50eXBlZGVmPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gc2l6ZV90eXBlOworPGEgbmFtZT0ibDAwMDU3Ij48L2E+MDAwNTcgCis8YSBuYW1lPSJsMDAwNTgiPjwvYT4wMDA1OCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEVycm9yIHZhbHVlIGZvciBmaW5kIHByaW1pdGl2ZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1OSI+PC9hPjAwMDU5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHNpemVfdHlwZSBucG9zOyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gPSAtMTs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNjAiPjwvYT4wMDA2MCAKKzxhIG5hbWU9ImwwMDA2MSI+PC9hPjAwMDYxIAorPGEgbmFtZT0ibDAwMDYyIj48L2E+MDAwNjIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbFN0cmluZyBlbXB0eSBjb25zdHJ1Y3Rvcjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2MyI+PC9hPjAwMDYzICAgICBUaVhtbFN0cmluZyAoKSA6IHJlcF8oJmFtcDtudWxscmVwXykKKzxhIG5hbWU9ImwwMDA2NCI+PC9hPjAwMDY0ICAgICB7Cis8YSBuYW1lPSJsMDAwNjUiPjwvYT4wMDA2NSAgICAgfQorPGEgbmFtZT0ibDAwMDY2Ij48L2E+MDAwNjYgCis8YSBuYW1lPSJsMDAwNjciPjwvYT4wMDA2NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sU3RyaW5nIGNvcHkgY29uc3RydWN0b3I8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNjgiPjwvYT4wMDA2OCAgICAgVGlYbWxTdHJpbmcgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgY29weSkKKzxhIG5hbWU9ImwwMDA2OSI+PC9hPjAwMDY5ICAgICB7Cis8YSBuYW1lPSJsMDAwNzAiPjwvYT4wMDA3MCAgICAgICAgIGluaXQoY29weS5sZW5ndGgoKSk7Cis8YSBuYW1lPSJsMDAwNzEiPjwvYT4wMDA3MSAgICAgICAgIG1lbWNweShzdGFydCgpLCBjb3B5LmRhdGEoKSwgbGVuZ3RoKCkpOworPGEgbmFtZT0ibDAwMDcyIj48L2E+MDAwNzIgICAgIH0KKzxhIG5hbWU9ImwwMDA3MyI+PC9hPjAwMDczIAorPGEgbmFtZT0ibDAwMDc0Ij48L2E+MDAwNzQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbFN0cmluZyBjb25zdHJ1Y3RvciwgYmFzZWQgb24gYSBzdHJpbmc8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNzUiPjwvYT4wMDA3NSAgICAgVGlYbWxTdHJpbmcgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGNvcHkpCis8YSBuYW1lPSJsMDAwNzYiPjwvYT4wMDA3NiAgICAgeworPGEgbmFtZT0ibDAwMDc3Ij48L2E+MDAwNzcgICAgICAgICBpbml0KCBzdGF0aWNfY2FzdCZsdDtzaXplX3R5cGUmZ3Q7KCBzdHJsZW4oY29weSkgKSk7Cis8YSBuYW1lPSJsMDAwNzgiPjwvYT4wMDA3OCAgICAgICAgIG1lbWNweShzdGFydCgpLCBjb3B5LCBsZW5ndGgoKSk7Cis8YSBuYW1lPSJsMDAwNzkiPjwvYT4wMDA3OSAgICAgfQorPGEgbmFtZT0ibDAwMDgwIj48L2E+MDAwODAgCis8YSBuYW1lPSJsMDAwODEiPjwvYT4wMDA4MSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sU3RyaW5nIGNvbnN0cnVjdG9yLCBiYXNlZCBvbiBhIHN0cmluZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA4MiI+PC9hPjAwMDgyICAgICBUaVhtbFN0cmluZyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogc3RyLCBzaXplX3R5cGUgbGVuKQorPGEgbmFtZT0ibDAwMDgzIj48L2E+MDAwODMgICAgIHsKKzxhIG5hbWU9ImwwMDA4NCI+PC9hPjAwMDg0ICAgICAgICAgaW5pdChsZW4pOworPGEgbmFtZT0ibDAwMDg1Ij48L2E+MDAwODUgICAgICAgICBtZW1jcHkoc3RhcnQoKSwgc3RyLCBsZW4pOworPGEgbmFtZT0ibDAwMDg2Ij48L2E+MDAwODYgICAgIH0KKzxhIG5hbWU9ImwwMDA4NyI+PC9hPjAwMDg3IAorPGEgbmFtZT0ibDAwMDg4Ij48L2E+MDAwODggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbFN0cmluZyBkZXN0cnVjdG9yPC9zcGFuPgorPGEgbmFtZT0ibDAwMDg5Ij48L2E+MDAwODkgICAgIH5UaVhtbFN0cmluZyAoKQorPGEgbmFtZT0ibDAwMDkwIj48L2E+MDAwOTAgICAgIHsKKzxhIG5hbWU9ImwwMDA5MSI+PC9hPjAwMDkxICAgICAgICAgcXVpdCgpOworPGEgbmFtZT0ibDAwMDkyIj48L2E+MDAwOTIgICAgIH0KKzxhIG5hbWU9ImwwMDA5MyI+PC9hPjAwMDkzIAorPGEgbmFtZT0ibDAwMDk0Ij48L2E+MDAwOTQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyA9IG9wZXJhdG9yPC9zcGFuPgorPGEgbmFtZT0ibDAwMDk1Ij48L2E+MDAwOTUgICAgIFRpWG1sU3RyaW5nJmFtcDsgb3BlcmF0b3IgPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogY29weSkKKzxhIG5hbWU9ImwwMDA5NiI+PC9hPjAwMDk2ICAgICB7Cis8YSBuYW1lPSJsMDAwOTciPjwvYT4wMDA5NyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhc3NpZ24oIGNvcHksIChzaXplX3R5cGUpc3RybGVuKGNvcHkpKTsKKzxhIG5hbWU9ImwwMDA5OCI+PC9hPjAwMDk4ICAgICB9Cis8YSBuYW1lPSJsMDAwOTkiPjwvYT4wMDA5OSAKKzxhIG5hbWU9ImwwMDEwMCI+PC9hPjAwMTAwICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gPSBvcGVyYXRvcjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEwMSI+PC9hPjAwMTAxICAgICBUaVhtbFN0cmluZyZhbXA7IG9wZXJhdG9yID0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgY29weSkKKzxhIG5hbWU9ImwwMDEwMiI+PC9hPjAwMTAyICAgICB7Cis8YSBuYW1lPSJsMDAxMDMiPjwvYT4wMDEwMyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhc3NpZ24oY29weS5zdGFydCgpLCBjb3B5Lmxlbmd0aCgpKTsKKzxhIG5hbWU9ImwwMDEwNCI+PC9hPjAwMTA0ICAgICB9Cis8YSBuYW1lPSJsMDAxMDUiPjwvYT4wMDEwNSAKKzxhIG5hbWU9ImwwMDEwNiI+PC9hPjAwMTA2IAorPGEgbmFtZT0ibDAwMTA3Ij48L2E+MDAxMDcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyArPSBvcGVyYXRvci4gTWFwcyB0byBhcHBlbmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAxMDgiPjwvYT4wMDEwOCAgICAgVGlYbWxTdHJpbmcmYW1wOyBvcGVyYXRvciArPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogc3VmZml4KQorPGEgbmFtZT0ibDAwMTA5Ij48L2E+MDAxMDkgICAgIHsKKzxhIG5hbWU9ImwwMDExMCI+PC9hPjAwMTEwICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGFwcGVuZChzdWZmaXgsIHN0YXRpY19jYXN0Jmx0O3NpemVfdHlwZSZndDsoIHN0cmxlbihzdWZmaXgpICkpOworPGEgbmFtZT0ibDAwMTExIj48L2E+MDAxMTEgICAgIH0KKzxhIG5hbWU9ImwwMDExMiI+PC9hPjAwMTEyIAorPGEgbmFtZT0ibDAwMTEzIj48L2E+MDAxMTMgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyArPSBvcGVyYXRvci4gTWFwcyB0byBhcHBlbmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAxMTQiPjwvYT4wMDExNCAgICAgVGlYbWxTdHJpbmcmYW1wOyBvcGVyYXRvciArPSAoPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiBzaW5nbGUpCis8YSBuYW1lPSJsMDAxMTUiPjwvYT4wMDExNSAgICAgeworPGEgbmFtZT0ibDAwMTE2Ij48L2E+MDAxMTYgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXBwZW5kKCZhbXA7c2luZ2xlLCAxKTsKKzxhIG5hbWU9ImwwMDExNyI+PC9hPjAwMTE3ICAgICB9Cis8YSBuYW1lPSJsMDAxMTgiPjwvYT4wMDExOCAKKzxhIG5hbWU9ImwwMDExOSI+PC9hPjAwMTE5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gKz0gb3BlcmF0b3IuIE1hcHMgdG8gYXBwZW5kPC9zcGFuPgorPGEgbmFtZT0ibDAwMTIwIj48L2E+MDAxMjAgICAgIFRpWG1sU3RyaW5nJmFtcDsgb3BlcmF0b3IgKz0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgc3VmZml4KQorPGEgbmFtZT0ibDAwMTIxIj48L2E+MDAxMjEgICAgIHsKKzxhIG5hbWU9ImwwMDEyMiI+PC9hPjAwMTIyICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGFwcGVuZChzdWZmaXguZGF0YSgpLCBzdWZmaXgubGVuZ3RoKCkpOworPGEgbmFtZT0ibDAwMTIzIj48L2E+MDAxMjMgICAgIH0KKzxhIG5hbWU9ImwwMDEyNCI+PC9hPjAwMTI0IAorPGEgbmFtZT0ibDAwMTI1Ij48L2E+MDAxMjUgCis8YSBuYW1lPSJsMDAxMjYiPjwvYT4wMDEyNiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIENvbnZlcnQgYSBUaVhtbFN0cmluZyBpbnRvIGEgbnVsbC10ZXJtaW5hdGVkIGNoYXIgKjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEyNyI+PC9hPjAwMTI3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBjX3N0ciAoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3N0cjsgfQorPGEgbmFtZT0ibDAwMTI4Ij48L2E+MDAxMjggCis8YSBuYW1lPSJsMDAxMjkiPjwvYT4wMDEyOSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIENvbnZlcnQgYSBUaVhtbFN0cmluZyBpbnRvIGEgY2hhciAqIChuZWVkIG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQpLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEzMCI+PC9hPjAwMTMwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBkYXRhICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c3RyOyB9Cis8YSBuYW1lPSJsMDAxMzEiPjwvYT4wMDEzMSAKKzxhIG5hbWU9ImwwMDEzMiI+PC9hPjAwMTMyICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUmV0dXJuIHRoZSBsZW5ndGggb2YgYSBUaVhtbFN0cmluZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEzMyI+PC9hPjAwMTMzICAgICBzaXplX3R5cGUgbGVuZ3RoICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c2l6ZTsgfQorPGEgbmFtZT0ibDAwMTM0Ij48L2E+MDAxMzQgCis8YSBuYW1lPSJsMDAxMzUiPjwvYT4wMDEzNSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEFsaWFzIGZvciBsZW5ndGgoKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEzNiI+PC9hPjAwMTM2ICAgICBzaXplX3R5cGUgc2l6ZSAoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3NpemU7IH0KKzxhIG5hbWU9ImwwMDEzNyI+PC9hPjAwMTM3IAorPGEgbmFtZT0ibDAwMTM4Ij48L2E+MDAxMzggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBDaGVja3MgaWYgYSBUaVhtbFN0cmluZyBpcyBlbXB0eTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEzOSI+PC9hPjAwMTM5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGVtcHR5ICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c2l6ZSA9PSAwOyB9Cis8YSBuYW1lPSJsMDAxNDAiPjwvYT4wMDE0MCAKKzxhIG5hbWU9ImwwMDE0MSI+PC9hPjAwMTQxICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUmV0dXJuIGNhcGFjaXR5IG9mIHN0cmluZzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE0MiI+PC9hPjAwMTQyICAgICBzaXplX3R5cGUgY2FwYWNpdHkgKCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtjYXBhY2l0eTsgfQorPGEgbmFtZT0ibDAwMTQzIj48L2E+MDAxNDMgCis8YSBuYW1lPSJsMDAxNDQiPjwvYT4wMDE0NCAKKzxhIG5hbWU9ImwwMDE0NSI+PC9hPjAwMTQ1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gc2luZ2xlIGNoYXIgZXh0cmFjdGlvbjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE0NiI+PC9hPjAwMTQ2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4mYW1wOyBhdCAoc2l6ZV90eXBlIGluZGV4KTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3Q8L3NwYW4+Cis8YSBuYW1lPSJsMDAxNDciPjwvYT4wMDE0NyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgIDwvc3Bhbj57Cis8YSBuYW1lPSJsMDAxNDgiPjwvYT4wMDE0OCAgICAgICAgIGFzc2VydCggaW5kZXggJmx0OyBsZW5ndGgoKSApOworPGEgbmFtZT0ibDAwMTQ5Ij48L2E+MDAxNDkgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c3RyWyBpbmRleCBdOworPGEgbmFtZT0ibDAwMTUwIj48L2E+MDAxNTAgICAgIH0KKzxhIG5hbWU9ImwwMDE1MSI+PC9hPjAwMTUxIAorPGEgbmFtZT0ibDAwMTUyIj48L2E+MDAxNTIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbXSBvcGVyYXRvcjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE1MyI+PC9hPjAwMTUzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+JmFtcDsgb3BlcmF0b3IgW10gKHNpemVfdHlwZSBpbmRleCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0PC9zcGFuPgorPGEgbmFtZT0ibDAwMTU0Ij48L2E+MDAxNTQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgICA8L3NwYW4+eworPGEgbmFtZT0ibDAwMTU1Ij48L2E+MDAxNTUgICAgICAgICBhc3NlcnQoIGluZGV4ICZsdDsgbGVuZ3RoKCkgKTsKKzxhIG5hbWU9ImwwMDE1NiI+PC9hPjAwMTU2ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3N0clsgaW5kZXggXTsKKzxhIG5hbWU9ImwwMDE1NyI+PC9hPjAwMTU3ICAgICB9Cis8YSBuYW1lPSJsMDAxNTgiPjwvYT4wMDE1OCAKKzxhIG5hbWU9ImwwMDE1OSI+PC9hPjAwMTU5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gZmluZCBhIGNoYXIgaW4gYSBzdHJpbmcuIFJldHVybiBUaVhtbFN0cmluZzo6bnBvcyBpZiBub3QgZm91bmQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAxNjAiPjwvYT4wMDE2MCAgICAgc2l6ZV90eXBlIGZpbmQgKDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gbG9va3VwKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3Q8L3NwYW4+Cis8YSBuYW1lPSJsMDAxNjEiPjwvYT4wMDE2MSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgIDwvc3Bhbj57Cis8YSBuYW1lPSJsMDAxNjIiPjwvYT4wMDE2MiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBmaW5kKGxvb2t1cCwgMCk7Cis8YSBuYW1lPSJsMDAxNjMiPjwvYT4wMDE2MyAgICAgfQorPGEgbmFtZT0ibDAwMTY0Ij48L2E+MDAxNjQgCis8YSBuYW1lPSJsMDAxNjUiPjwvYT4wMDE2NSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGZpbmQgYSBjaGFyIGluIGEgc3RyaW5nIGZyb20gYW4gb2Zmc2V0LiBSZXR1cm4gVGlYbWxTdHJpbmc6Om5wb3MgaWYgbm90IGZvdW5kPC9zcGFuPgorPGEgbmFtZT0ibDAwMTY2Ij48L2E+MDAxNjYgICAgIHNpemVfdHlwZSBmaW5kICg8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IHRvZmluZCwgc2l6ZV90eXBlIG9mZnNldCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0PC9zcGFuPgorPGEgbmFtZT0ibDAwMTY3Ij48L2E+MDAxNjcgPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgICA8L3NwYW4+eworPGEgbmFtZT0ibDAwMTY4Ij48L2E+MDAxNjggICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAob2Zmc2V0ICZndDs9IGxlbmd0aCgpKSA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbnBvczsKKzxhIG5hbWU9ImwwMDE2OSI+PC9hPjAwMTY5IAorPGEgbmFtZT0ibDAwMTcwIj48L2E+MDAxNzAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmZvcjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCA9IGNfc3RyKCkgKyBvZmZzZXQ7ICpwICE9IDxzcGFuIGNsYXNzPSJjaGFybGl0ZXJhbCI+J1wwJzwvc3Bhbj47ICsrcCkKKzxhIG5hbWU9ImwwMDE3MSI+PC9hPjAwMTcxICAgICAgICAgeworPGEgbmFtZT0ibDAwMTcyIj48L2E+MDAxNzIgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoKnAgPT0gdG9maW5kKSA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gc3RhdGljX2Nhc3QmbHQ7IHNpemVfdHlwZSAmZ3Q7KCBwIC0gY19zdHIoKSApOworPGEgbmFtZT0ibDAwMTczIj48L2E+MDAxNzMgICAgICAgICB9Cis8YSBuYW1lPSJsMDAxNzQiPjwvYT4wMDE3NCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBucG9zOworPGEgbmFtZT0ibDAwMTc1Ij48L2E+MDAxNzUgICAgIH0KKzxhIG5hbWU9ImwwMDE3NiI+PC9hPjAwMTc2IAorPGEgbmFtZT0ibDAwMTc3Ij48L2E+MDAxNzcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gY2xlYXIgKCkKKzxhIG5hbWU9ImwwMDE3OCI+PC9hPjAwMTc4ICAgICB7Cis8YSBuYW1lPSJsMDAxNzkiPjwvYT4wMDE3OSAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vL0xlZTo8L3NwYW4+Cis8YSBuYW1lPSJsMDAxODAiPjwvYT4wMDE4MCAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vL1RoZSBvcmlnaW5hbCB3YXMganVzdCB0b28gc3RyYW5nZSwgdGhvdWdoIGNvcnJlY3Q6PC9zcGFuPgorPGEgbmFtZT0ibDAwMTgxIj48L2E+MDAxODEgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gIFRpWG1sU3RyaW5nKCkuc3dhcCgqdGhpcyk7PC9zcGFuPgorPGEgbmFtZT0ibDAwMTgyIj48L2E+MDAxODIgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly9JbnN0ZWFkIHVzZSB0aGUgcXVpdCAmYW1wOyByZS1pbml0Ojwvc3Bhbj4KKzxhIG5hbWU9ImwwMDE4MyI+PC9hPjAwMTgzICAgICAgICAgcXVpdCgpOworPGEgbmFtZT0ibDAwMTg0Ij48L2E+MDAxODQgICAgICAgICBpbml0KDAsMCk7Cis8YSBuYW1lPSJsMDAxODUiPjwvYT4wMDE4NSAgICAgfQorPGEgbmFtZT0ibDAwMTg2Ij48L2E+MDAxODYgCis8YSBuYW1lPSJsMDAxODciPjwvYT4wMDE4NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBGdW5jdGlvbiB0byByZXNlcnZlIGEgYmlnIGFtb3VudCBvZiBkYXRhIHdoZW4gd2Uga25vdyB3ZSdsbCBuZWVkIGl0LiBCZSBhd2FyZSB0aGF0IHRoaXM8L3NwYW4+Cis8YSBuYW1lPSJsMDAxODgiPjwvYT4wMDE4OCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICBmdW5jdGlvbiBET0VTIE5PVCBjbGVhciB0aGUgY29udGVudCBvZiB0aGUgVGlYbWxTdHJpbmcgaWYgYW55IGV4aXN0cy48L3NwYW4+Cis8YSBuYW1lPSJsMDAxODkiPjwvYT4wMDE4OSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgorPGEgbmFtZT0ibDAwMTkwIj48L2E+MDAxOTAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gcmVzZXJ2ZSAoc2l6ZV90eXBlIGNhcCk7Cis8YSBuYW1lPSJsMDAxOTEiPjwvYT4wMDE5MSAKKzxhIG5hbWU9ImwwMDE5MiI+PC9hPjAwMTkyICAgICBUaVhtbFN0cmluZyZhbXA7IGFzc2lnbiAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBzdHIsIHNpemVfdHlwZSBsZW4pOworPGEgbmFtZT0ibDAwMTkzIj48L2E+MDAxOTMgCis8YSBuYW1lPSJsMDAxOTQiPjwvYT4wMDE5NCAgICAgVGlYbWxTdHJpbmcmYW1wOyBhcHBlbmQgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogc3RyLCBzaXplX3R5cGUgbGVuKTsKKzxhIG5hbWU9ImwwMDE5NSI+PC9hPjAwMTk1IAorPGEgbmFtZT0ibDAwMTk2Ij48L2E+MDAxOTYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gc3dhcCAoVGlYbWxTdHJpbmcmYW1wOyBvdGhlcikKKzxhIG5hbWU9ImwwMDE5NyI+PC9hPjAwMTk3ICAgICB7Cis8YSBuYW1lPSJsMDAxOTgiPjwvYT4wMDE5OCAgICAgICAgIFJlcCogciA9IHJlcF87Cis8YSBuYW1lPSJsMDAxOTkiPjwvYT4wMDE5OSAgICAgICAgIHJlcF8gPSBvdGhlci5yZXBfOworPGEgbmFtZT0ibDAwMjAwIj48L2E+MDAyMDAgICAgICAgICBvdGhlci5yZXBfID0gcjsKKzxhIG5hbWU9ImwwMDIwMSI+PC9hPjAwMjAxICAgICB9Cis8YSBuYW1lPSJsMDAyMDIiPjwvYT4wMDIwMiAKKzxhIG5hbWU9ImwwMDIwMyI+PC9hPjAwMjAzICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAwMjA0Ij48L2E+MDAyMDQgCis8YSBuYW1lPSJsMDAyMDUiPjwvYT4wMDIwNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBpbml0KHNpemVfdHlwZSBzeikgeyBpbml0KHN6LCBzeik7IH0KKzxhIG5hbWU9ImwwMDIwNiI+PC9hPjAwMjA2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IHNldF9zaXplKHNpemVfdHlwZSBzeikgeyByZXBfLSZndDtzdHJbIHJlcF8tJmd0O3NpemUgPSBzeiBdID0gPHNwYW4gY2xhc3M9ImNoYXJsaXRlcmFsIj4nXDAnPC9zcGFuPjsgfQorPGEgbmFtZT0ibDAwMjA3Ij48L2E+MDAyMDcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHN0YXJ0KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtzdHI7IH0KKzxhIG5hbWU9ImwwMDIwOCI+PC9hPjAwMjA4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBmaW5pc2goKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3N0ciArIHJlcF8tJmd0O3NpemU7IH0KKzxhIG5hbWU9ImwwMDIwOSI+PC9hPjAwMjA5IAorPGEgbmFtZT0ibDAwMjEwIj48L2E+MDAyMTAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdHJ1Y3QgPC9zcGFuPlJlcAorPGEgbmFtZT0ibDAwMjExIj48L2E+MDAyMTEgICAgIHsKKzxhIG5hbWU9ImwwMDIxMiI+PC9hPjAwMjEyICAgICAgICAgc2l6ZV90eXBlIHNpemUsIGNhcGFjaXR5OworPGEgbmFtZT0ibDAwMjEzIj48L2E+MDAyMTMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IHN0clsxXTsKKzxhIG5hbWU9ImwwMDIxNCI+PC9hPjAwMjE0ICAgICB9OworPGEgbmFtZT0ibDAwMjE1Ij48L2E+MDAyMTUgCis8YSBuYW1lPSJsMDAyMTYiPjwvYT4wMDIxNiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBpbml0KHNpemVfdHlwZSBzeiwgc2l6ZV90eXBlIGNhcCkKKzxhIG5hbWU9ImwwMDIxNyI+PC9hPjAwMjE3ICAgICB7Cis8YSBuYW1lPSJsMDAyMTgiPjwvYT4wMDIxOCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+IChjYXApCis8YSBuYW1lPSJsMDAyMTkiPjwvYT4wMDIxOSAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDIyMCI+PC9hPjAwMjIwICAgICAgICAgICAgIHJlcF8gPSBzdGF0aWNfY2FzdCZsdDtSZXAqJmd0OyhvcGVyYXRvciBuZXcoPHNwYW4gY2xhc3M9ImtleXdvcmQiPnNpemVvZjwvc3Bhbj4oUmVwKSArIGNhcCkpOworPGEgbmFtZT0ibDAwMjIxIj48L2E+MDAyMjEgICAgICAgICAgICAgcmVwXy0mZ3Q7c3RyWyByZXBfLSZndDtzaXplID0gc3ogXSA9IDxzcGFuIGNsYXNzPSJjaGFybGl0ZXJhbCI+J1wwJzwvc3Bhbj47Cis8YSBuYW1lPSJsMDAyMjIiPjwvYT4wMDIyMiAgICAgICAgICAgICByZXBfLSZndDtjYXBhY2l0eSA9IGNhcDsKKzxhIG5hbWU9ImwwMDIyMyI+PC9hPjAwMjIzICAgICAgICAgfQorPGEgbmFtZT0ibDAwMjI0Ij48L2E+MDAyMjQgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmVsc2U8L3NwYW4+Cis8YSBuYW1lPSJsMDAyMjUiPjwvYT4wMDIyNSAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDIyNiI+PC9hPjAwMjI2ICAgICAgICAgICAgIHJlcF8gPSAmYW1wO251bGxyZXBfOworPGEgbmFtZT0ibDAwMjI3Ij48L2E+MDAyMjcgICAgICAgICB9Cis8YSBuYW1lPSJsMDAyMjgiPjwvYT4wMDIyOCAgICAgfQorPGEgbmFtZT0ibDAwMjI5Ij48L2E+MDAyMjkgCis8YSBuYW1lPSJsMDAyMzAiPjwvYT4wMDIzMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBxdWl0KCkKKzxhIG5hbWU9ImwwMDIzMSI+PC9hPjAwMjMxICAgICB7Cis8YSBuYW1lPSJsMDAyMzIiPjwvYT4wMDIzMiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+IChyZXBfICE9ICZhbXA7bnVsbHJlcF8pCis8YSBuYW1lPSJsMDAyMzMiPjwvYT4wMDIzMyAgICAgICAgIHsKKzxhIG5hbWU9ImwwMDIzNCI+PC9hPjAwMjM0ICAgICAgICAgICAgIG9wZXJhdG9yIGRlbGV0ZShyZXBfKTsKKzxhIG5hbWU9ImwwMDIzNSI+PC9hPjAwMjM1ICAgICAgICAgfQorPGEgbmFtZT0ibDAwMjM2Ij48L2E+MDAyMzYgICAgIH0KKzxhIG5hbWU9ImwwMDIzNyI+PC9hPjAwMjM3IAorPGEgbmFtZT0ibDAwMjM4Ij48L2E+MDAyMzggICAgIFJlcCAqIHJlcF87Cis8YSBuYW1lPSJsMDAyMzkiPjwvYT4wMDIzOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gUmVwIG51bGxyZXBfOworPGEgbmFtZT0ibDAwMjQwIj48L2E+MDAyNDAgCis8YSBuYW1lPSJsMDAyNDEiPjwvYT4wMDI0MSB9IDsKKzxhIG5hbWU9ImwwMDI0MiI+PC9hPjAwMjQyIAorPGEgbmFtZT0ibDAwMjQzIj48L2E+MDAyNDMgCis8YSBuYW1lPSJsMDAyNDQiPjwvYT4wMDI0NCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yID09ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikKKzxhIG5hbWU9ImwwMDI0NSI+PC9hPjAwMjQ1IHsKKzxhIG5hbWU9ImwwMDI0NiI+PC9hPjAwMjQ2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gICAgKCBhLmxlbmd0aCgpID09IGIubGVuZ3RoKCkgKSAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG9wdGltaXphdGlvbiBvbiBzb21lIHBsYXRmb3Jtczwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI0NyI+PC9hPjAwMjQ3ICAgICAgICAgICAgJmFtcDsmYW1wOyAoIHN0cmNtcChhLmNfc3RyKCksIGIuY19zdHIoKSkgPT0gMCApOyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gYWN0dWFsIGNvbXBhcmU8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNDgiPjwvYT4wMDI0OCB9Cis8YSBuYW1lPSJsMDAyNDkiPjwvYT4wMDI0OSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICZsdDsgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKQorPGEgbmFtZT0ibDAwMjUwIj48L2E+MDAyNTAgeworPGEgbmFtZT0ibDAwMjUxIj48L2E+MDAyNTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBzdHJjbXAoYS5jX3N0cigpLCBiLmNfc3RyKCkpICZsdDsgMDsKKzxhIG5hbWU9ImwwMDI1MiI+PC9hPjAwMjUyIH0KKzxhIG5hbWU9ImwwMDI1MyI+PC9hPjAwMjUzIAorPGEgbmFtZT0ibDAwMjU0Ij48L2E+MDAyNTQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAhPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICEoYSA9PSBiKTsgfQorPGEgbmFtZT0ibDAwMjU1Ij48L2E+MDAyNTUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAmZ3Q7ICAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGIgJmx0OyBhOyB9Cis8YSBuYW1lPSJsMDAyNTYiPjwvYT4wMDI1NiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICZsdDs9ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gIShiICZsdDsgYSk7IH0KKzxhIG5hbWU9ImwwMDI1NyI+PC9hPjAwMjU3IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3IgJmd0Oz0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKSB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAhKGEgJmx0OyBiKTsgfQorPGEgbmFtZT0ibDAwMjU4Ij48L2E+MDAyNTggCis8YSBuYW1lPSJsMDAyNTkiPjwvYT4wMDI1OSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yID09ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gc3RyY21wKGEuY19zdHIoKSwgYikgPT0gMDsgfQorPGEgbmFtZT0ibDAwMjYwIj48L2E+MDAyNjAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciA9PSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGIgPT0gYTsgfQorPGEgbmFtZT0ibDAwMjYxIj48L2E+MDAyNjEgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAhPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICEoYSA9PSBiKTsgfQorPGEgbmFtZT0ibDAwMjYyIj48L2E+MDAyNjIgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAhPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICEoYiA9PSBhKTsgfQorPGEgbmFtZT0ibDAwMjYzIj48L2E+MDAyNjMgCis8YSBuYW1lPSJsMDAyNjQiPjwvYT4wMDI2NCBUaVhtbFN0cmluZyBvcGVyYXRvciArICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYik7Cis8YSBuYW1lPSJsMDAyNjUiPjwvYT4wMDI2NSBUaVhtbFN0cmluZyBvcGVyYXRvciArICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogYik7Cis8YSBuYW1lPSJsMDAyNjYiPjwvYT4wMDI2NiBUaVhtbFN0cmluZyBvcGVyYXRvciArICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYik7Cis8YSBuYW1lPSJsMDAyNjciPjwvYT4wMDI2NyAKKzxhIG5hbWU9ImwwMDI2OCI+PC9hPjAwMjY4IAorPGEgbmFtZT0ibDAwMjY5Ij48L2E+MDAyNjkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qPC9zcGFuPgorPGEgbmFtZT0ibDAwMjcwIj48L2E+MDAyNzAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIFRpWG1sT3V0U3RyZWFtIGlzIGFuIGVtdWxhdGlvbiBvZiBzdGQ6Om9zdHJlYW0uIEl0IGlzIGJhc2VkIG9uIFRpWG1sU3RyaW5nLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI3MSI+PC9hPjAwMjcxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICBPbmx5IHRoZSBvcGVyYXRvcnMgdGhhdCB3ZSBuZWVkIGZvciBUaW55WE1MIGhhdmUgYmVlbiBkZXZlbG9wcGVkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI3MiI+PC9hPjAwMjcyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4qLzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI3MyI+PC9hPjAwMjczIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+VGlYbWxPdXRTdHJlYW0gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiBUaVhtbFN0cmluZworPGEgbmFtZT0ibDAwMjc0Ij48L2E+MDAyNzQgeworPGEgbmFtZT0ibDAwMjc1Ij48L2E+MDAyNzUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gOgorPGEgbmFtZT0ibDAwMjc2Ij48L2E+MDAyNzYgCis8YSBuYW1lPSJsMDAyNzciPjwvYT4wMDI3NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sT3V0U3RyZWFtICZsdDsmbHQ7IG9wZXJhdG9yLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI3OCI+PC9hPjAwMjc4ICAgICBUaVhtbE91dFN0cmVhbSAmYW1wOyBvcGVyYXRvciAmbHQ7Jmx0OyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBpbikKKzxhIG5hbWU9ImwwMDI3OSI+PC9hPjAwMjc5ICAgICB7Cis8YSBuYW1lPSJsMDAyODAiPjwvYT4wMDI4MCAgICAgICAgICo8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gKz0gaW47Cis8YSBuYW1lPSJsMDAyODEiPjwvYT4wMDI4MSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAqPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+OworPGEgbmFtZT0ibDAwMjgyIj48L2E+MDAyODIgICAgIH0KKzxhIG5hbWU9ImwwMDI4MyI+PC9hPjAwMjgzIAorPGEgbmFtZT0ibDAwMjg0Ij48L2E+MDAyODQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbE91dFN0cmVhbSAmbHQ7Jmx0OyBvcGVyYXRvci48L3NwYW4+Cis8YSBuYW1lPSJsMDAyODUiPjwvYT4wMDI4NSAgICAgVGlYbWxPdXRTdHJlYW0gJmFtcDsgb3BlcmF0b3IgJmx0OyZsdDsgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGluKQorPGEgbmFtZT0ibDAwMjg2Ij48L2E+MDAyODYgICAgIHsKKzxhIG5hbWU9ImwwMDI4NyI+PC9hPjAwMjg3ICAgICAgICAgKjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiArPSBpbjsKKzxhIG5hbWU9ImwwMDI4OCI+PC9hPjAwMjg4ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICo8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj47Cis8YSBuYW1lPSJsMDAyODkiPjwvYT4wMDI4OSAgICAgfQorPGEgbmFtZT0ibDAwMjkwIj48L2E+MDAyOTAgCis8YSBuYW1lPSJsMDAyOTEiPjwvYT4wMDI5MSB9IDsKKzxhIG5hbWU9ImwwMDI5MiI+PC9hPjAwMjkyIAorPGEgbmFtZT0ibDAwMjkzIj48L2E+MDAyOTMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmICAvLyBUSVhNTF9TVFJJTkdfSU5DTFVERUQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAyOTQiPjwvYT4wMDI5NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmICAvLyBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPC9wcmU+PC9kaXY+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Cis8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgorPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvdGlueXhtbF84aC1zb3VyY2UuaHRtbCBiL2RvY3MvdGlueXhtbF84aC1zb3VyY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzM2ODdiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy90aW55eG1sXzhoLXNvdXJjZS5odG1sCkBAIC0wLDAgKzEsMTAzNyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlRpbnlYbWw6IHRpbnl4bWwuaCBTb3VyY2UgRmlsZTwvdGl0bGU+Cis8bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+PGJvZHk+Cis8IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgorPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgorPGgxPnRpbnl4bWwuaDwvaDE+PGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij48YSBuYW1lPSJsMDAwMDEiPjwvYT4wMDAwMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDIiPjwvYT4wMDAwMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sPC9zcGFuPgorPGEgbmFtZT0ibDAwMDAzIj48L2E+MDAwMDMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPk9yaWdpbmFsIGNvZGUgKDIuMCBhbmQgZWFybGllciApY29weXJpZ2h0IChjKSAyMDAwLTIwMDIgTGVlIFRob21hc29uICh3d3cuZ3Jpbm5pbmdsaXphcmQuY29tKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNCI+PC9hPjAwMDA0IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDUiPjwvYT4wMDAwNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+VGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMDYiPjwvYT4wMDAwNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwNyI+PC9hPjAwMDA3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5kYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDA4Ij48L2E+MDAwMDggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAwOSI+PC9hPjAwMDA5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTAiPjwvYT4wMDAxMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+cHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kPC9zcGFuPgorPGEgbmFtZT0ibDAwMDExIj48L2E+MDAwMTEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPnJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6PC9zcGFuPgorPGEgbmFtZT0ibDAwMDEyIj48L2E+MDAwMTIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxMyI+PC9hPjAwMDEzIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4xLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0PC9zcGFuPgorPGEgbmFtZT0ibDAwMDE0Ij48L2E+MDAwMTQgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPm5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpczwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAxNSI+PC9hPjAwMDE1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5zb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb248L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTYiPjwvYT4wMDAxNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMTciPjwvYT4wMDAxNyA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDE4Ij48L2E+MDAwMTggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kPC9zcGFuPgorPGEgbmFtZT0ibDAwMDE5Ij48L2E+MDAwMTkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPm11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjAiPjwvYT4wMDAyMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDIxIj48L2E+MDAwMjEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyMiI+PC9hPjAwMDIyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij5kaXN0cmlidXRpb24uPC9zcGFuPgorPGEgbmFtZT0ibDAwMDIzIj48L2E+MDAwMjMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiovPC9zcGFuPgorPGEgbmFtZT0ibDAwMDI0Ij48L2E+MDAwMjQgCis8YSBuYW1lPSJsMDAwMjUiPjwvYT4wMDAyNSAKKzxhIG5hbWU9ImwwMDAyNiI+PC9hPjAwMDI2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZm5kZWYgVElOWVhNTF9JTkNMVURFRDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAyNyI+PC9hPjAwMDI3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZGVmaW5lIFRJTllYTUxfSU5DTFVERUQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjgiPjwvYT4wMDAyOCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMjkiPjwvYT4wMDAyOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZkZWYgX01TQ19WRVI8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzAiPjwvYT4wMDAzMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I3ByYWdtYSB3YXJuaW5nKCBwdXNoICk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzEiPjwvYT4wMDAzMSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDUzMCApPC9zcGFuPgorPGEgbmFtZT0ibDAwMDMyIj48L2E+MDAwMzIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3ODYgKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzMyI+PC9hPjAwMDMzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzQiPjwvYT4wMDAzNCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzUiPjwvYT4wMDAzNSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7Y3R5cGUuaCZndDs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzYiPjwvYT4wMDAzNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwMzciPjwvYT4wMDAzNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7PC9zcGFuPgorPGEgbmFtZT0ibDAwMDM4Ij48L2E+MDAwMzggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0Ozwvc3Bhbj4KKzxhIG5hbWU9ImwwMDAzOSI+PC9hPjAwMDM5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlICZsdDthc3NlcnQuaCZndDs8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDAiPjwvYT4wMDA0MCAKKzxhIG5hbWU9ImwwMDA0MSI+PC9hPjAwMDQxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBIZWxwIG91dCB3aW5kb3dzOjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA0MiI+PC9hPjAwMDQyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZiBkZWZpbmVkKCBfREVCVUcgKSAmYW1wOyZhbXA7ICFkZWZpbmVkKCBERUJVRyApPC9zcGFuPgorPGEgbmFtZT0ibDAwMDQzIj48L2E+MDAwNDMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNkZWZpbmUgREVCVUc8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDQiPjwvYT4wMDA0NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ1Ij48L2E+MDAwNDUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ2Ij48L2E+MDAwNDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmIGRlZmluZWQoIERFQlVHICkgJmFtcDsmYW1wOyBkZWZpbmVkKCBfTVNDX1ZFUiApPC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ3Ij48L2E+MDAwNDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlICZsdDt3aW5kb3dzLmgmZ3Q7PC9zcGFuPgorPGEgbmFtZT0ibDAwMDQ4Ij48L2E+MDAwNDggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2RlZmluZSBUSVhNTF9MT0cgT3V0cHV0RGVidWdTdHJpbmc8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNDkiPjwvYT4wMDA0OSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2Vsc2U8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTAiPjwvYT4wMDA1MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2RlZmluZSBUSVhNTF9MT0cgcHJpbnRmPC9zcGFuPgorPGEgbmFtZT0ibDAwMDUxIj48L2E+MDAwNTEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1MiI+PC9hPjAwMDUyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1MyI+PC9hPjAwMDUzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwMDU0Ij48L2E+MDAwNTQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaW5jbHVkZSAmbHQ7c3RyaW5nJmd0Ozwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1NSI+PC9hPjAwMDU1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaW5jbHVkZSAmbHQ7aW9zdHJlYW0mZ3Q7PC9zcGFuPgorPGEgbmFtZT0ibDAwMDU2Ij48L2E+MDAwNTYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNkZWZpbmUgVElYTUxfU1RSSU5HICAgIHN0ZDo6c3RyaW5nPC9zcGFuPgorPGEgbmFtZT0ibDAwMDU3Ij48L2E+MDAwNTcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZGVmaW5lIFRJWE1MX0lTVFJFQU0gICBzdGQ6OmlzdHJlYW08L3NwYW4+Cis8YSBuYW1lPSJsMDAwNTgiPjwvYT4wMDA1OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNkZWZpbmUgVElYTUxfT1NUUkVBTSAgIHN0ZDo6b3N0cmVhbTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA1OSI+PC9hPjAwMDU5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZWxzZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2MCI+PC9hPjAwMDYwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2luY2x1ZGUgInRpbnlzdHIuaCI8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNjEiPjwvYT4wMDA2MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2RlZmluZSBUSVhNTF9TVFJJTkcgICAgVGlYbWxTdHJpbmc8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNjIiPjwvYT4wMDA2MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNkZWZpbmUgVElYTUxfT1NUUkVBTSAgIFRpWG1sT3V0U3RyZWFtPC9zcGFuPgorPGEgbmFtZT0ibDAwMDYzIj48L2E+MDAwNjMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2NCI+PC9hPjAwMDY0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2NSI+PC9hPjAwMDY1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBEZXByZWNhdGVkIGxpYnJhcnkgZnVuY3Rpb24gaGVsbC4gQ29tcGlsZXJzIHdhbnQgdG8gdXNlIHRoZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2NiI+PC9hPjAwMDY2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBuZXcgc2FmZSB2ZXJzaW9ucy4gVGhpcyBwcm9iYWJseSBkb2Vzbid0IGZ1bGx5IGFkZHJlc3MgdGhlIHByb2JsZW0sPC9zcGFuPgorPGEgbmFtZT0ibDAwMDY3Ij48L2E+MDAwNjcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGJ1dCBpdCBnZXRzIGNsb3Nlci4gVGhlcmUgYXJlIHRvbyBtYW55IGNvbXBpbGVycyBmb3IgbWUgdG8gZnVsbHk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNjgiPjwvYT4wMDA2OCA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdGVzdC4gSWYgeW91IGdldCBjb21waWxhdGlvbiB0cm91YmxlcywgdW5kZWZpbmUgVElYTUxfU0FGRTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA2OSI+PC9hPjAwMDY5IAorPGEgbmFtZT0ibDAwMDcwIj48L2E+MDAwNzAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2RlZmluZSBUSVhNTF9TQUZFICAgICAgLy8gVGlueVhtbCBpc24ndCBmdWxseSBidWZmZXIgb3ZlcnJ1biBwcm90ZWN0ZWQsIHNhZmUgY29kZS4gVGhpcyBpcyB3b3JrIGluIHByb2dyZXNzLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA3MSI+PC9hPjAwMDcxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZkZWYgVElYTUxfU0FGRTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA3MiI+PC9hPjAwMDcyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmIGRlZmluZWQoX01TQ19WRVIpICZhbXA7JmFtcDsgKF9NU0NfVkVSICZndDs9IDEyMDAgKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA3MyI+PC9hPjAwMDczIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBNaWNyb3NvZnQgdmlzdWFsIHN0dWRpbywgdmVyc2lvbiA2IGFuZCBoaWdoZXIuPC9zcGFuPgorPGEgbmFtZT0ibDAwMDc0Ij48L2E+MDAwNzQgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8jcHJhZ21hIG1lc3NhZ2UoICJVc2luZyBfc24qIGZ1bmN0aW9ucy4iICk8L3NwYW4+Cis8YSBuYW1lPSJsMDAwNzUiPjwvYT4wMDA3NSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgICAgICNkZWZpbmUgVElYTUxfU05QUklOVEYgX3NucHJpbnRmPC9zcGFuPgorPGEgbmFtZT0ibDAwMDc2Ij48L2E+MDAwNzYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAgICAgI2RlZmluZSBUSVhNTF9TTlNDQU5GICBfc25zY2FuZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA3NyI+PC9hPjAwMDc3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJmFtcDsmYW1wOyAoX19HTlVDX18gJmd0Oz0gMyApPC9zcGFuPgorPGEgbmFtZT0ibDAwMDc4Ij48L2E+MDAwNzggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEdDQyB2ZXJzaW9uIDMgYW5kIGhpZ2hlci5zPC9zcGFuPgorPGEgbmFtZT0ibDAwMDc5Ij48L2E+MDAwNzkgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8jd2FybmluZyggIlVzaW5nIHNuKiBmdW5jdGlvbnMuIiApPC9zcGFuPgorPGEgbmFtZT0ibDAwMDgwIj48L2E+MDAwODAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICAgICAjZGVmaW5lIFRJWE1MX1NOUFJJTlRGIHNucHJpbnRmPC9zcGFuPgorPGEgbmFtZT0ibDAwMDgxIj48L2E+MDAwODEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAgICAgI2RlZmluZSBUSVhNTF9TTlNDQU5GICBzbnNjYW5mPC9zcGFuPgorPGEgbmFtZT0ibDAwMDgyIj48L2E+MDAwODIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDAwODMiPjwvYT4wMDA4MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmICA8L3NwYW4+Cis8YSBuYW1lPSJsMDAwODQiPjwvYT4wMDA4NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAwODUiPjwvYT4wMDA4NSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT47Cis8YSBuYW1lPSJsMDAwODYiPjwvYT4wMDA4NiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+OworPGEgbmFtZT0ibDAwMDg3Ij48L2E+MDAwODcgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPjsKKzxhIG5hbWU9ImwwMDA4OCI+PC9hPjAwMDg4IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT47Cis8YSBuYW1lPSJsMDAwODkiPjwvYT4wMDA4OSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjsKKzxhIG5hbWU9ImwwMDA5MCI+PC9hPjAwMDkwIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT47Cis8YSBuYW1lPSJsMDAwOTEiPjwvYT4wMDA5MSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT47Cis8YSBuYW1lPSJsMDAwOTIiPjwvYT4wMDA5MiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPlRpWG1sUGFyc2luZ0RhdGE7Cis8YSBuYW1lPSJsMDAwOTMiPjwvYT4wMDA5MyAKKzxhIG5hbWU9ImwwMDA5NCI+PC9hPjAwMDk0IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IFRJWE1MX01BSk9SX1ZFUlNJT04gPSAyOworPGEgbmFtZT0ibDAwMDk1Ij48L2E+MDAwOTUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gVElYTUxfTUlOT1JfVkVSU0lPTiA9IDQ7Cis8YSBuYW1lPSJsMDAwOTYiPjwvYT4wMDA5NiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBUSVhNTF9QQVRDSF9WRVJTSU9OID0gMDsKKzxhIG5hbWU9ImwwMDA5NyI+PC9hPjAwMDk3IAorPGEgbmFtZT0ibDAwMDk4Ij48L2E+MDAwOTggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBJbnRlcm5hbCBzdHJ1Y3R1cmUgZm9yIHRyYWNraW5nIGxvY2F0aW9uIG9mIGl0ZW1zIDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDA5OSI+PC9hPjAwMDk5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgaW4gdGhlIFhNTCBmaWxlLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEwMCI+PC9hPjAwMTAwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4qLzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEwMSI+PC9hPjAwMTAxIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdHJ1Y3QgPC9zcGFuPlRpWG1sQ3Vyc29yCis8YSBuYW1lPSJsMDAxMDIiPjwvYT4wMDEwMiB7Cis8YSBuYW1lPSJsMDAxMDMiPjwvYT4wMDEwMyAgICAgVGlYbWxDdXJzb3IoKSAgICAgICB7IENsZWFyKCk7IH0KKzxhIG5hbWU9ImwwMDEwNCI+PC9hPjAwMTA0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENsZWFyKCkgICAgICAgIHsgcm93ID0gY29sID0gLTE7IH0KKzxhIG5hbWU9ImwwMDEwNSI+PC9hPjAwMTA1IAorPGEgbmFtZT0ibDAwMTA2Ij48L2E+MDAxMDYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiByb3c7ICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyAwIGJhc2VkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDEwNyI+PC9hPjAwMTA3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gY29sOyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gMCBiYXNlZC48L3NwYW4+Cis8YSBuYW1lPSJsMDAxMDgiPjwvYT4wMDEwOCB9OworPGEgbmFtZT0ibDAwMTA5Ij48L2E+MDAxMDkgCis8YSBuYW1lPSJsMDAxMTAiPjwvYT4wMDExMCAKKzxhIG5hbWU9ImwwMDExMSI+PC9hPjAwMTExIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBPbmx5IHVzZWQgYnkgQXR0cmlidXRlOjpRdWVyeSBmdW5jdGlvbnM8L3NwYW4+Cis8YSBuYW1lPSJsMDAxMTIiPjwvYT4wMDExMiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZW51bTwvc3Bhbj4gCis8YSBuYW1lPSJsMDAxMTMiPjwvYT4wMDExMyB7IAorPGEgbmFtZT0ibDAwMTE0Ij48L2E+MDAxMTQgICAgIFRJWE1MX1NVQ0NFU1MsCis8YSBuYW1lPSJsMDAxMTUiPjwvYT4wMDExNSAgICAgVElYTUxfTk9fQVRUUklCVVRFLAorPGEgbmFtZT0ibDAwMTE2Ij48L2E+MDAxMTYgICAgIFRJWE1MX1dST05HX1RZUEUKKzxhIG5hbWU9ImwwMDExNyI+PC9hPjAwMTE3IH07Cis8YSBuYW1lPSJsMDAxMTgiPjwvYT4wMDExOCAKKzxhIG5hbWU9ImwwMDExOSI+PC9hPjAwMTE5IAorPGEgbmFtZT0ibDAwMTIwIj48L2E+MDAxMjAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFVzZWQgYnkgdGhlIHBhcnNpbmcgcm91dGluZXMuPC9zcGFuPgorPGEgbmFtZT0ibDAwMTIxIj48L2E+MDAxMjEgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmVudW08L3NwYW4+IFRpWG1sRW5jb2RpbmcKKzxhIG5hbWU9ImwwMDEyMiI+PC9hPjAwMTIyIHsKKzxhIG5hbWU9ImwwMDEyMyI+PC9hPjAwMTIzICAgICBUSVhNTF9FTkNPRElOR19VTktOT1dOLAorPGEgbmFtZT0ibDAwMTI0Ij48L2E+MDAxMjQgICAgIFRJWE1MX0VOQ09ESU5HX1VURjgsCis8YSBuYW1lPSJsMDAxMjUiPjwvYT4wMDEyNSAgICAgVElYTUxfRU5DT0RJTkdfTEVHQUNZCis8YSBuYW1lPSJsMDAxMjYiPjwvYT4wMDEyNiB9OworPGEgbmFtZT0ibDAwMTI3Ij48L2E+MDAxMjcgCis8YSBuYW1lPSJsMDAxMjgiPjwvYT4wMDEyOCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sRW5jb2RpbmcgVElYTUxfREVGQVVMVF9FTkNPRElORyA9IFRJWE1MX0VOQ09ESU5HX1VOS05PV047Cis8YSBuYW1lPSJsMDAxMjkiPjwvYT4wMDEyOSAKKzxhIG5hbWU9ImwwMDE1MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj4wMDE1MjwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPgorPGEgbmFtZT0ibDAwMTUzIj48L2E+MDAxNTMgeworPGEgbmFtZT0ibDAwMTU0Ij48L2E+MDAxNTQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT47Cis8YSBuYW1lPSJsMDAxNTUiPjwvYT4wMDE1NSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjsKKzxhIG5hbWU9ImwwMDE1NiI+PC9hPjAwMTU2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT47Cis8YSBuYW1lPSJsMDAxNTciPjwvYT4wMDE1NyAKKzxhIG5hbWU9ImwwMDE1OCI+PC9hPjAwMTU4IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgorPGEgbmFtZT0ibDAwMTU5Ij48L2E+MDAxNTkgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+KCkgOiAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT4oMCkge30KKzxhIG5hbWU9ImwwMDE2MCI+PC9hPjAwMTYwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+KCkgICAgICAgICAgICAgICAgICAgIHt9Cis8YSBuYW1lPSJsMDAxNjEiPjwvYT4wMDE2MSAKKzxhIG5hbWU9ImwwMDE2NyI+PC9hPjAwMTY3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0IDwvc3Bhbj49IDA7Cis8YSBuYW1lPSJsMDAxNjgiPjwvYT4wMDE2OCAKKzxhIG5hbWU9ImwwMDE3NSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj4wMDE3NTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gY29uZGVuc2UgKSAgICAgIHsgY29uZGVuc2VXaGl0ZVNwYWNlID0gY29uZGVuc2U7IH0KKzxhIG5hbWU9ImwwMDE3NiI+PC9hPjAwMTc2IAorPGEgbmFtZT0ibDAwMTc4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPjAwMTc4PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpICAgICAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gY29uZGVuc2VXaGl0ZVNwYWNlOyB9Cis8YSBuYW1lPSJsMDAxNzkiPjwvYT4wMDE3OSAKKzxhIG5hbWU9ImwwMDE5OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj4wMDE5ODwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBsb2NhdGlvbi5yb3cgKyAxOyB9Cis8YSBuYW1lPSJsMDAxOTkiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+MDAxOTk8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbG9jYXRpb24uY29sICsgMTsgfSAgICAKKzxhIG5hbWU9ImwwMDIwMCI+PC9hPjAwMjAwIAorPGEgbmFtZT0ibDAwMjAxIj48L2E+MDAyMDEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gIFNldFVzZXJEYXRhKCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+KiB1c2VyICkgICAgICAgICB7IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT4gPSB1c2VyOyB9Cis8YSBuYW1lPSJsMDAyMDIiPjwvYT4wMDIwMiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiogR2V0VXNlckRhdGEoKSAgICAgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT47IH0KKzxhIG5hbWU9ImwwMDIwMyI+PC9hPjAwMjAzIAorPGEgbmFtZT0ibDAwMjA0Ij48L2E+MDAyMDQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUYWJsZSB0aGF0IHJldHVycywgZm9yIGEgZ2l2ZW4gbGVhZCBieXRlLCB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzPC9zcGFuPgorPGEgbmFtZT0ibDAwMjA1Ij48L2E+MDAyMDUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBpbiB0aGUgVVRGLTggc2VxdWVuY2UuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjA2Ij48L2E+MDAyMDYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IHV0ZjhCeXRlVGFibGVbMjU2XTsKKzxhIG5hbWU9ImwwMDIwNyI+PC9hPjAwMjA3IAorPGEgbmFtZT0ibDAwMjA4Ij48L2E+MDAyMDggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlBhcnNlPC9hPiggIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgCis8YSBuYW1lPSJsMDAyMDkiPjwvYT4wMDIwOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIAorPGEgbmFtZT0ibDAwMjEwIj48L2E+MDAyMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaVhtbEVuY29kaW5nIGVuY29kaW5nIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKj0gVElYTUxfRU5DT0RJTkdfVU5LTk9XTiAqLzwvc3Bhbj4gKSA9IDA7Cis8YSBuYW1lPSJsMDAyMTEiPjwvYT4wMDIxMSAKKzxhIG5hbWU9ImwwMDIxMiI+PC9hPjAwMjEyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZW51bTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDIxMyI+PC9hPjAwMjEzICAgICB7Cis8YSBuYW1lPSJsMDAyMTQiPjwvYT4wMDIxNCAgICAgICAgIFRJWE1MX05PX0VSUk9SID0gMCwKKzxhIG5hbWU9ImwwMDIxNSI+PC9hPjAwMjE1ICAgICAgICAgVElYTUxfRVJST1IsCis8YSBuYW1lPSJsMDAyMTYiPjwvYT4wMDIxNiAgICAgICAgIFRJWE1MX0VSUk9SX09QRU5JTkdfRklMRSwKKzxhIG5hbWU9ImwwMDIxNyI+PC9hPjAwMjE3ICAgICAgICAgVElYTUxfRVJST1JfT1VUX09GX01FTU9SWSwKKzxhIG5hbWU9ImwwMDIxOCI+PC9hPjAwMjE4ICAgICAgICAgVElYTUxfRVJST1JfUEFSU0lOR19FTEVNRU5ULAorPGEgbmFtZT0ibDAwMjE5Ij48L2E+MDAyMTkgICAgICAgICBUSVhNTF9FUlJPUl9GQUlMRURfVE9fUkVBRF9FTEVNRU5UX05BTUUsCis8YSBuYW1lPSJsMDAyMjAiPjwvYT4wMDIyMCAgICAgICAgIFRJWE1MX0VSUk9SX1JFQURJTkdfRUxFTUVOVF9WQUxVRSwKKzxhIG5hbWU9ImwwMDIyMSI+PC9hPjAwMjIxICAgICAgICAgVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLAorPGEgbmFtZT0ibDAwMjIyIj48L2E+MDAyMjIgICAgICAgICBUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLAorPGEgbmFtZT0ibDAwMjIzIj48L2E+MDAyMjMgICAgICAgICBUSVhNTF9FUlJPUl9SRUFESU5HX0VORF9UQUcsCis8YSBuYW1lPSJsMDAyMjQiPjwvYT4wMDIyNCAgICAgICAgIFRJWE1MX0VSUk9SX1BBUlNJTkdfVU5LTk9XTiwKKzxhIG5hbWU9ImwwMDIyNSI+PC9hPjAwMjI1ICAgICAgICAgVElYTUxfRVJST1JfUEFSU0lOR19DT01NRU5ULAorPGEgbmFtZT0ibDAwMjI2Ij48L2E+MDAyMjYgICAgICAgICBUSVhNTF9FUlJPUl9QQVJTSU5HX0RFQ0xBUkFUSU9OLAorPGEgbmFtZT0ibDAwMjI3Ij48L2E+MDAyMjcgICAgICAgICBUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSwKKzxhIG5hbWU9ImwwMDIyOCI+PC9hPjAwMjI4ICAgICAgICAgVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwKKzxhIG5hbWU9ImwwMDIyOSI+PC9hPjAwMjI5ICAgICAgICAgVElYTUxfRVJST1JfUEFSU0lOR19DREFUQSwKKzxhIG5hbWU9ImwwMDIzMCI+PC9hPjAwMjMwIAorPGEgbmFtZT0ibDAwMjMxIj48L2E+MDAyMzEgICAgICAgICBUSVhNTF9FUlJPUl9TVFJJTkdfQ09VTlQKKzxhIG5hbWU9ImwwMDIzMiI+PC9hPjAwMjMyICAgICB9OworPGEgbmFtZT0ibDAwMjMzIj48L2E+MDAyMzMgCis8YSBuYW1lPSJsMDAyMzQiPjwvYT4wMDIzNCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPjoKKzxhIG5hbWU9ImwwMDIzNSI+PC9hPjAwMjM1IAorPGEgbmFtZT0ibDAwMjM2Ij48L2E+MDAyMzYgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBTZWUgU1RMX1NUUklOR19CVUc8L3NwYW4+Cis8YSBuYW1lPSJsMDAyMzciPjwvYT4wMDIzNyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFV0aWxpdHkgY2xhc3MgdG8gb3ZlcmNvbWUgYSBidWcuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjM4Ij48L2E+MDAyMzggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+U3RyaW5nVG9CdWZmZXIKKzxhIG5hbWU9ImwwMDIzOSI+PC9hPjAwMjM5ICAgICB7Cis8YSBuYW1lPSJsMDAyNDAiPjwvYT4wMDI0MCAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMDI0MSI+PC9hPjAwMjQxICAgICAgICAgU3RyaW5nVG9CdWZmZXIoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVElYTUxfU1RSSU5HJmFtcDsgc3RyICk7Cis8YSBuYW1lPSJsMDAyNDIiPjwvYT4wMDI0MiAgICAgICAgIH5TdHJpbmdUb0J1ZmZlcigpOworPGEgbmFtZT0ibDAwMjQzIj48L2E+MDAyNDMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBidWZmZXI7Cis8YSBuYW1lPSJsMDAyNDQiPjwvYT4wMDI0NCAgICAgfTsKKzxhIG5hbWU9ImwwMDI0NSI+PC9hPjAwMjQ1IAorPGEgbmFtZT0ibDAwMjQ2Ij48L2E+MDAyNDYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogIFNraXBXaGl0ZVNwYWNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDAyNDciPjwvYT4wMDI0NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiAgSXNXaGl0ZVNwYWNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IGMgKSAgICAgIAorPGEgbmFtZT0ibDAwMjQ4Ij48L2E+MDAyNDggICAgIHsgCis8YSBuYW1lPSJsMDAyNDkiPjwvYT4wMDI0OSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIGlzc3BhY2UoICg8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KSBjICkgfHwgYyA9PSA8c3BhbiBjbGFzcz0iY2hhcmxpdGVyYWwiPidcbic8L3NwYW4+IHx8IGMgPT0gPHNwYW4gY2xhc3M9ImNoYXJsaXRlcmFsIj4nXHInPC9zcGFuPiApOyAKKzxhIG5hbWU9ImwwMDI1MCI+PC9hPjAwMjUwICAgICB9Cis8YSBuYW1lPSJsMDAyNTEiPjwvYT4wMDI1MSAKKzxhIG5hbWU9ImwwMDI1MiI+PC9hPjAwMjUyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQgKFRJWE1MX09TVFJFQU0gKikgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0IDwvc3Bhbj49IDA7Cis8YSBuYW1lPSJsMDAyNTMiPjwvYT4wMDI1MyAKKzxhIG5hbWU9ImwwMDI1NCI+PC9hPjAwMjU0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI1NSI+PC9hPjAwMjU1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gU3RyZWFtV2hpdGVTcGFjZSggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKzxhIG5hbWU9ImwwMDI1NiI+PC9hPjAwMjU2ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBTdHJlYW1UbyggVElYTUxfSVNUUkVBTSAqIGluLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gY2hhcmFjdGVyLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKzxhIG5hbWU9ImwwMDI1NyI+PC9hPjAwMjU3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNTgiPjwvYT4wMDI1OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDAyNTkiPjwvYT4wMDI1OSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBSZWFkcyBhbiBYTUwgbmFtZSBpbnRvIHRoZSBzdHJpbmcgcHJvdmlkZWQuIFJldHVybnM8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNjAiPjwvYT4wMDI2MCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICBhIHBvaW50ZXIganVzdCBwYXN0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgbmFtZSw8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNjEiPjwvYT4wMDI2MSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICBvciAwIGlmIHRoZSBmdW5jdGlvbiBoYXMgYW4gZXJyb3IuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjYyIj48L2E+MDAyNjIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAqLzwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI2MyI+PC9hPjAwMjYzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFJlYWROYW1lKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRJWE1MX1NUUklORyogbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwMjY0Ij48L2E+MDAyNjQgCis8YSBuYW1lPSJsMDAyNjUiPjwvYT4wMDI2NSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBSZWFkcyB0ZXh0LiBSZXR1cm5zIGEgcG9pbnRlciBwYXN0IHRoZSBnaXZlbiBlbmQgdGFnLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI2NiI+PC9hPjAwMjY2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIFdpY2tlZGx5IGNvbXBsZXggb3B0aW9ucywgYnV0IGl0IGtlZXBzIHRoZSAoc2Vuc2l0aXZlKSBjb2RlIGluIG9uZSBwbGFjZS48L3NwYW4+Cis8YSBuYW1lPSJsMDAyNjciPjwvYT4wMDI2NyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgorPGEgbmFtZT0ibDAwMjY4Ij48L2E+MDAyNjggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUmVhZFRleHQoICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogaW4sICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB3aGVyZSB0byBzdGFydDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI2OSI+PC9hPjAwMjY5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJWE1MX1NUUklORyogdGV4dCwgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdGhlIHN0cmluZyByZWFkPC9zcGFuPgorPGEgbmFtZT0ibDAwMjcwIj48L2E+MDAyNzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBpZ25vcmVXaGl0ZVNwYWNlLCAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB3aGV0aGVyIHRvIGtlZXAgdGhlIHdoaXRlIHNwYWNlPC9zcGFuPgorPGEgbmFtZT0ibDAwMjcxIj48L2E+MDAyNzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBlbmRUYWcsICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHdoYXQgZW5kcyB0aGlzIHRleHQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzIiPjwvYT4wMDI3MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGlnbm9yZUNhc2UsICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4gdGhlIGVuZCB0YWc8L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzMiPjwvYT4wMDI3MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7ICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHRoZSBjdXJyZW50IGVuY29kaW5nPC9zcGFuPgorPGEgbmFtZT0ibDAwMjc0Ij48L2E+MDAyNzQgCis8YSBuYW1lPSJsMDAyNzUiPjwvYT4wMDI3NSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIElmIGFuIGVudGl0eSBoYXMgYmVlbiBmb3VuZCwgdHJhbnNmb3JtIGl0IGludG8gYSBjaGFyYWN0ZXIuPC9zcGFuPgorPGEgbmFtZT0ibDAwMjc2Ij48L2E+MDAyNzYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogR2V0RW50aXR5KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGluLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiB2YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBsZW5ndGgsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMDI3NyI+PC9hPjAwMjc3IAorPGEgbmFtZT0ibDAwMjc4Ij48L2E+MDAyNzggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBHZXQgYSBjaGFyYWN0ZXIsIHdoaWxlIGludGVycHJldGluZyBlbnRpdGllcy48L3NwYW4+Cis8YSBuYW1lPSJsMDAyNzkiPjwvYT4wMDI3OSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRoZSBsZW5ndGggY2FuIGJlIGZyb20gMCB0byA0IGJ5dGVzLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDI4MCI+PC9hPjAwMjgwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIEdldENoYXIoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogX3ZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIGxlbmd0aCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCis8YSBuYW1lPSJsMDAyODEiPjwvYT4wMDI4MSAgICAgeworPGEgbmFtZT0ibDAwMjgyIj48L2E+MDAyODIgICAgICAgICBhc3NlcnQoIHAgKTsKKzxhIG5hbWU9ImwwMDI4MyI+PC9hPjAwMjgzICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKKzxhIG5hbWU9ImwwMDI4NCI+PC9hPjAwMjg0ICAgICAgICAgeworPGEgbmFtZT0ibDAwMjg1Ij48L2E+MDAyODUgICAgICAgICAgICAgKmxlbmd0aCA9IHV0ZjhCeXRlVGFibGVbICooKDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dW5zaWduZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qKXApIF07Cis8YSBuYW1lPSJsMDAyODYiPjwvYT4wMDI4NiAgICAgICAgICAgICBhc3NlcnQoICpsZW5ndGggJmd0Oz0gMCAmYW1wOyZhbXA7ICpsZW5ndGggJmx0OyA1ICk7Cis8YSBuYW1lPSJsMDAyODciPjwvYT4wMDI4NyAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDI4OCI+PC9hPjAwMjg4ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5lbHNlPC9zcGFuPgorPGEgbmFtZT0ibDAwMjg5Ij48L2E+MDAyODkgICAgICAgICB7Cis8YSBuYW1lPSJsMDAyOTAiPjwvYT4wMDI5MCAgICAgICAgICAgICAqbGVuZ3RoID0gMTsKKzxhIG5hbWU9ImwwMDI5MSI+PC9hPjAwMjkxICAgICAgICAgfQorPGEgbmFtZT0ibDAwMjkyIj48L2E+MDAyOTIgCis8YSBuYW1lPSJsMDAyOTMiPjwvYT4wMDI5MyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggKmxlbmd0aCA9PSAxICkKKzxhIG5hbWU9ImwwMDI5NCI+PC9hPjAwMjk0ICAgICAgICAgeworPGEgbmFtZT0ibDAwMjk1Ij48L2E+MDAyOTUgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCAqcCA9PSA8c3BhbiBjbGFzcz0iY2hhcmxpdGVyYWwiPicmYW1wOyc8L3NwYW4+ICkKKzxhIG5hbWU9ImwwMDI5NiI+PC9hPjAwMjk2ICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gR2V0RW50aXR5KCBwLCBfdmFsdWUsIGxlbmd0aCwgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMDI5NyI+PC9hPjAwMjk3ICAgICAgICAgICAgICpfdmFsdWUgPSAqcDsKKzxhIG5hbWU9ImwwMDI5OCI+PC9hPjAwMjk4ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBwKzE7Cis8YSBuYW1lPSJsMDAyOTkiPjwvYT4wMDI5OSAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDMwMCI+PC9hPjAwMzAwICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5lbHNlPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoICpsZW5ndGggKQorPGEgbmFtZT0ibDAwMzAxIj48L2E+MDAzMDEgICAgICAgICB7Cis8YSBuYW1lPSJsMDAzMDIiPjwvYT4wMDMwMiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly9zdHJuY3B5KCBfdmFsdWUsIHAsICpsZW5ndGggKTsgICAgLy8gbG90cyBvZiBjb21waWxlcnMgZG9uJ3QgbGlrZSB0aGlzIGZ1bmN0aW9uICh1bnNhZmUpLDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDMwMyI+PC9hPjAwMzAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBhbmQgdGhlIG51bGwgdGVybWluYXRvciBpc24ndCBuZWVkZWQ8L3NwYW4+Cis8YSBuYW1lPSJsMDAzMDQiPjwvYT4wMDMwNCAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmZvcjwvc3Bhbj4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBpPTA7IHBbaV0gJmFtcDsmYW1wOyBpJmx0OypsZW5ndGg7ICsraSApIHsKKzxhIG5hbWU9ImwwMDMwNSI+PC9hPjAwMzA1ICAgICAgICAgICAgICAgICBfdmFsdWVbaV0gPSBwW2ldOworPGEgbmFtZT0ibDAwMzA2Ij48L2E+MDAzMDYgICAgICAgICAgICAgfQorPGEgbmFtZT0ibDAwMzA3Ij48L2E+MDAzMDcgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHAgKyAoKmxlbmd0aCk7Cis8YSBuYW1lPSJsMDAzMDgiPjwvYT4wMDMwOCAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDMwOSI+PC9hPjAwMzA5ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5lbHNlPC9zcGFuPgorPGEgbmFtZT0ibDAwMzEwIj48L2E+MDAzMTAgICAgICAgICB7Cis8YSBuYW1lPSJsMDAzMTEiPjwvYT4wMDMxMSAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gTm90IHZhbGlkIHRleHQuPC9zcGFuPgorPGEgbmFtZT0ibDAwMzEyIj48L2E+MDAzMTIgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDA7Cis8YSBuYW1lPSJsMDAzMTMiPjwvYT4wMDMxMyAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDMxNCI+PC9hPjAwMzE0ICAgICB9Cis8YSBuYW1lPSJsMDAzMTUiPjwvYT4wMDMxNSAKKzxhIG5hbWU9ImwwMDMxNiI+PC9hPjAwMzE2ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUHV0cyBhIHN0cmluZyB0byBhIHN0cmVhbSwgZXhwYW5kaW5nIGVudGl0aWVzIGFzIGl0IGdvZXMuPC9zcGFuPgorPGEgbmFtZT0ibDAwMzE3Ij48L2E+MDAzMTcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBOb3RlIHRoaXMgc2hvdWxkIG5vdCBjb250aWFuIHRoZSAnJmx0OycsICcmZ3Q7JywgZXRjLCBvciB0aGV5IHdpbGwgYmUgdHJhbnNmb3JtZWQgaW50byBlbnRpdGllcyE8L3NwYW4+Cis8YSBuYW1lPSJsMDAzMTgiPjwvYT4wMDMxOCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBQdXRTdHJpbmcoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVElYTUxfU1RSSU5HJmFtcDsgc3RyLCBUSVhNTF9PU1RSRUFNKiBvdXQgKTsKKzxhIG5hbWU9ImwwMDMxOSI+PC9hPjAwMzE5IAorPGEgbmFtZT0ibDAwMzIwIj48L2E+MDAzMjAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gUHV0U3RyaW5nKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRJWE1MX1NUUklORyZhbXA7IHN0ciwgVElYTUxfU1RSSU5HKiBvdXQgKTsKKzxhIG5hbWU9ImwwMDMyMSI+PC9hPjAwMzIxIAorPGEgbmFtZT0ibDAwMzIyIj48L2E+MDAzMjIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJlYW0gYXJlIGFueSBvZiB0aGUgZW5kVGFnIHNlcXVlbmNlcy48L3NwYW4+Cis8YSBuYW1lPSJsMDAzMjMiPjwvYT4wMDMyMyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIElnbm9yZSBjYXNlIG9ubHkgd29ya3MgZm9yIGVuZ2xpc2gsIGFuZCBzaG91bGQgb25seSBiZSByZWxpZWQgb24gd2hlbiBjb21wYXJpbmc8L3NwYW4+Cis8YSBuYW1lPSJsMDAzMjQiPjwvYT4wMDMyNCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHRvIEVuZ2xpc2ggd29yZHM6IFN0cmluZ0VxdWFsKCBwLCAidmVyc2lvbiIsIHRydWUgKSBpcyBmaW5lLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDMyNSI+PC9hPjAwMzI1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IFN0cmluZ0VxdWFsKCAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsCis8YSBuYW1lPSJsMDAzMjYiPjwvYT4wMDMyNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogZW5kVGFnLAorPGEgbmFtZT0ibDAwMzI3Ij48L2E+MDAzMjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGlnbm9yZUNhc2UsCis8YSBuYW1lPSJsMDAzMjgiPjwvYT4wMDMyOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMDMyOSI+PC9hPjAwMzI5IAorPGEgbmFtZT0ibDAwMzMwIj48L2E+MDAzMzAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogZXJyb3JTdHJpbmdbIFRJWE1MX0VSUk9SX1NUUklOR19DT1VOVCBdOworPGEgbmFtZT0ibDAwMzMxIj48L2E+MDAzMzEgCis8YSBuYW1lPSJsMDAzMzIiPjwvYT4wMDMzMiAgICAgVGlYbWxDdXJzb3IgbG9jYXRpb247Cis8YSBuYW1lPSJsMDAzMzMiPjwvYT4wMDMzMyAKKzxhIG5hbWU9ImwwMDMzNSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj4wMDMzNTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4qICAgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+OworPGEgbmFtZT0ibDAwMzM2Ij48L2E+MDAzMzYgICAgIAorPGEgbmFtZT0ibDAwMzM3Ij48L2E+MDAzMzcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBOb25lIG9mIHRoZXNlIG1ldGhvZHMgYXJlIHJlbGlhYmxlIGZvciBhbnkgbGFuZ3VhZ2UgZXhjZXB0IEVuZ2xpc2guPC9zcGFuPgorPGEgbmFtZT0ibDAwMzM4Ij48L2E+MDAzMzggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBHb29kIGZvciBhcHByb3hpbWF0aW9uLCBub3QgZ3JlYXQgZm9yIGFjY3VyYWN5Ljwvc3Bhbj4KKzxhIG5hbWU9ImwwMDMzOSI+PC9hPjAwMzM5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gSXNBbHBoYSggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj51bnNpZ25lZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiBhbnlCeXRlLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDAzNDAiPjwvYT4wMDM0MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IElzQWxwaGFOdW0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dW5zaWduZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gYW55Qnl0ZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwMzQxIj48L2E+MDAzNDEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBUb0xvd2VyKCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gdiwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCis8YSBuYW1lPSJsMDAzNDIiPjwvYT4wMDM0MiAgICAgeworPGEgbmFtZT0ibDAwMzQzIj48L2E+MDAzNDMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQorPGEgbmFtZT0ibDAwMzQ0Ij48L2E+MDAzNDQgICAgICAgICB7Cis8YSBuYW1lPSJsMDAzNDUiPjwvYT4wMDM0NSAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoIHYgJmx0OyAxMjggKSA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdG9sb3dlciggdiApOworPGEgbmFtZT0ibDAwMzQ2Ij48L2E+MDAzNDYgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHY7Cis8YSBuYW1lPSJsMDAzNDciPjwvYT4wMDM0NyAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDM0OCI+PC9hPjAwMzQ4ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5lbHNlPC9zcGFuPgorPGEgbmFtZT0ibDAwMzQ5Ij48L2E+MDAzNDkgICAgICAgICB7Cis8YSBuYW1lPSJsMDAzNTAiPjwvYT4wMDM1MCAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdG9sb3dlciggdiApOworPGEgbmFtZT0ibDAwMzUxIj48L2E+MDAzNTEgICAgICAgICB9Cis8YSBuYW1lPSJsMDAzNTIiPjwvYT4wMDM1MiAgICAgfQorPGEgbmFtZT0ibDAwMzUzIj48L2E+MDAzNTMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29udmVydFVURjMyVG9VVEY4KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmxvbmc8L3NwYW4+IGlucHV0LCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBvdXRwdXQsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogbGVuZ3RoICk7Cis8YSBuYW1lPSJsMDAzNTQiPjwvYT4wMDM1NCAKKzxhIG5hbWU9ImwwMDM1NSI+PC9hPjAwMzU1IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMDM1NiI+PC9hPjAwMzU2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPiZhbXA7ICk7ICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGltcGxlbWVudGVkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDM1NyI+PC9hPjAwMzU3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPiZhbXA7IGJhc2UgKTsgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBhbGxvd2VkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDM1OCI+PC9hPjAwMzU4IAorPGEgbmFtZT0ibDAwMzU5Ij48L2E+MDAzNTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdHJ1Y3QgPC9zcGFuPkVudGl0eQorPGEgbmFtZT0ibDAwMzYwIj48L2E+MDAzNjAgICAgIHsKKzxhIG5hbWU9ImwwMDM2MSI+PC9hPjAwMzYxICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiAgICAgc3RyOworPGEgbmFtZT0ibDAwMzYyIj48L2E+MDAzNjIgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gICAgc3RyTGVuZ3RoOworPGEgbmFtZT0ibDAwMzYzIj48L2E+MDAzNjMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICAgICAgICAgICAgY2hyOworPGEgbmFtZT0ibDAwMzY0Ij48L2E+MDAzNjQgICAgIH07Cis8YSBuYW1lPSJsMDAzNjUiPjwvYT4wMDM2NSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmVudW08L3NwYW4+Cis8YSBuYW1lPSJsMDAzNjYiPjwvYT4wMDM2NiAgICAgeworPGEgbmFtZT0ibDAwMzY3Ij48L2E+MDAzNjcgICAgICAgICBOVU1fRU5USVRZID0gNSwKKzxhIG5hbWU9ImwwMDM2OCI+PC9hPjAwMzY4ICAgICAgICAgTUFYX0VOVElUWV9MRU5HVEggPSA2Cis8YSBuYW1lPSJsMDAzNjkiPjwvYT4wMDM2OSAKKzxhIG5hbWU9ImwwMDM3MCI+PC9hPjAwMzcwICAgICB9OworPGEgbmFtZT0ibDAwMzcxIj48L2E+MDAzNzEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IEVudGl0eSBlbnRpdHlbIE5VTV9FTlRJVFkgXTsKKzxhIG5hbWU9ImwwMDM3MiI+PC9hPjAwMzcyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGNvbmRlbnNlV2hpdGVTcGFjZTsKKzxhIG5hbWU9ImwwMDM3MyI+PC9hPjAwMzczIH07Cis8YSBuYW1lPSJsMDAzNzQiPjwvYT4wMDM3NCAKKzxhIG5hbWU9ImwwMDM3NSI+PC9hPjAwMzc1IAorPGEgbmFtZT0ibDAwMzgyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPjAwMzgyPC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4KKzxhIG5hbWU9ImwwMDM4MyI+PC9hPjAwMzgzIHsKKzxhIG5hbWU9ImwwMDM4NCI+PC9hPjAwMzg0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT47Cis8YSBuYW1lPSJsMDAzODUiPjwvYT4wMDM4NSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjsKKzxhIG5hbWU9ImwwMDM4NiI+PC9hPjAwMzg2IAorPGEgbmFtZT0ibDAwMzg3Ij48L2E+MDAzODcgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDAzODgiPjwvYT4wMDM4OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwgICAgPC9zcGFuPgorPGEgbmFtZT0ibDAwMzg5Ij48L2E+MDAzODkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwMzkzIj48L2E+MDAzOTMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiBzdGQ6OmlzdHJlYW0mYW1wOyA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3IgJmd0OyZndDsgPC9hPihzdGQ6OmlzdHJlYW0mYW1wOyBpbiwgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBiYXNlKTsKKzxhIG5hbWU9ImwwMDM5NCI+PC9hPjAwMzk0IAorPGEgbmFtZT0ibDAwNDExIj48L2E+MDA0MTEgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiBzdGQ6Om9zdHJlYW0mYW1wOyA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMyI+b3BlcmF0b3ImbHQ7Jmx0OyA8L2E+KHN0ZDo6b3N0cmVhbSZhbXA7IG91dCwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGJhc2UpOworPGEgbmFtZT0ibDAwNDEyIj48L2E+MDA0MTIgCis8YSBuYW1lPSJsMDA0MTQiPjwvYT4wMDQxNCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDsgPC9hPihzdGQ6OnN0cmluZyZhbXA7IG91dCwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGJhc2UgKTsKKzxhIG5hbWU9ImwwMDQxNSI+PC9hPjAwNDE1IAorPGEgbmFtZT0ibDAwNDE2Ij48L2E+MDA0MTYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbHNlPC9zcGFuPgorPGEgbmFtZT0ibDAwNDE3Ij48L2E+MDA0MTcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFVzZWQgaW50ZXJuYWxseSwgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuPC9zcGFuPgorPGEgbmFtZT0ibDAwNDE4Ij48L2E+MDA0MTggICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiBUSVhNTF9PU1RSRUFNJmFtcDsgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDsgPC9hPihUSVhNTF9PU1RSRUFNJmFtcDsgb3V0LCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYmFzZSk7Cis8YSBuYW1lPSJsMDA0MTkiPjwvYT4wMDQxOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwNDIwIj48L2E+MDA0MjAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNDI0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPjAwNDI0PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmVudW08L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4KKzxhIG5hbWU9ImwwMDQyNSI+PC9hPjAwNDI1ICAgICB7Cis8YSBuYW1lPSJsMDA0MjYiPjwvYT4wMDQyNiAgICAgICAgIERPQ1VNRU5ULAorPGEgbmFtZT0ibDAwNDI3Ij48L2E+MDA0MjcgICAgICAgICBFTEVNRU5ULAorPGEgbmFtZT0ibDAwNDI4Ij48L2E+MDA0MjggICAgICAgICBDT01NRU5ULAorPGEgbmFtZT0ibDAwNDI5Ij48L2E+MDA0MjkgICAgICAgICBVTktOT1dOLAorPGEgbmFtZT0ibDAwNDMwIj48L2E+MDA0MzAgICAgICAgICBURVhULAorPGEgbmFtZT0ibDAwNDMxIj48L2E+MDA0MzEgICAgICAgICBERUNMQVJBVElPTiwKKzxhIG5hbWU9ImwwMDQzMiI+PC9hPjAwNDMyICAgICAgICAgVFlQRUNPVU5UCis8YSBuYW1lPSJsMDA0MzMiPjwvYT4wMDQzMyAgICAgfTsKKzxhIG5hbWU9ImwwMDQzNCI+PC9hPjAwNDM0IAorPGEgbmFtZT0ibDAwNDM1Ij48L2E+MDA0MzUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oKTsKKzxhIG5hbWU9ImwwMDQzNiI+PC9hPjAwNDM2IAorPGEgbmFtZT0ibDAwNDQ5Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPjAwNDQ5PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICo8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB2YWx1ZS5jX3N0ciAoKTsgfQorPGEgbmFtZT0ibDAwNDUwIj48L2E+MDA0NTAgCis8YSBuYW1lPSJsMDA0NTEiPjwvYT4wMDQ1MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA0NTIiPjwvYT4wMDQ1MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA0NTYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+MDA0NTY8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlZhbHVlU3RyPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdmFsdWU7IH0KKzxhIG5hbWU9ImwwMDQ1NyI+PC9hPjAwNDU3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA0NTgiPjwvYT4wMDQ1OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA0NjgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+MDA0Njg8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4oPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogX3ZhbHVlKSB7IHZhbHVlID0gX3ZhbHVlO30KKzxhIG5hbWU9ImwwMDQ2OSI+PC9hPjAwNDY5IAorPGEgbmFtZT0ibDAwNDcwIj48L2E+MDA0NzAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwNDcxIj48L2E+MDA0NzEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNDcyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPjAwNDcyPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkgICAgCis8YSBuYW1lPSJsMDA0NzMiPjwvYT4wMDQ3MyAgICAgeyAgICAgCis8YSBuYW1lPSJsMDA0NzQiPjwvYT4wMDQ3NCAgICAgICAgIFN0cmluZ1RvQnVmZmVyIGJ1ZiggX3ZhbHVlICk7Cis8YSBuYW1lPSJsMDA0NzUiPjwvYT4wMDQ3NSAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4oIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogPHNwYW4gY2xhc3M9InN0cmluZ2xpdGVyYWwiPiIiPC9zcGFuPiApOyAgICAgICAKKzxhIG5hbWU9ImwwMDQ3NiI+PC9hPjAwNDc2ICAgICB9ICAgCis8YSBuYW1lPSJsMDA0NzciPjwvYT4wMDQ3NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwNDc4Ij48L2E+MDA0NzggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNDgwIj48L2E+MDA0ODAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpOworPGEgbmFtZT0ibDAwNDgxIj48L2E+MDA0ODEgCis8YSBuYW1lPSJsMDA0ODMiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+MDA0ODM8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlBhcmVudDwvYT4oKSAgICAgICAgICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBwYXJlbnQ7IH0KKzxhIG5hbWU9ImwwMDQ4NCI+PC9hPjAwNDg0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcGFyZW50OyB9Cis8YSBuYW1lPSJsMDA0ODUiPjwvYT4wMDQ4NSAKKzxhIG5hbWU9ImwwMDQ4NiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij4wMDQ4NjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgIGNvbnN0ICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGZpcnN0Q2hpbGQ7IH0gICAgICAKKzxhIG5hbWU9ImwwMDQ4NyI+PC9hPjAwNDg3ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGZpcnN0Q2hpbGQ7IH0KKzxhIG5hbWU9ImwwMDQ4OCI+PC9hPjAwNDg4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsgICAgICAgICAgICAKKzxhIG5hbWU9ImwwMDQ4OSI+PC9hPjAwNDg5ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApOyAgICAgICAgICAgICAgICAgICAgICAgIAorPGEgbmFtZT0ibDAwNDkwIj48L2E+MDA0OTAgCis8YSBuYW1lPSJsMDA0OTEiPjwvYT4wMDQ5MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogTGFzdENoaWxkKCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbGFzdENoaWxkOyB9ICAgICAgIAorPGEgbmFtZT0ibDAwNDkyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj4wMDQ5MjwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBMYXN0Q2hpbGQoKSAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbGFzdENoaWxkOyB9Cis8YSBuYW1lPSJsMDA0OTMiPjwvYT4wMDQ5MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogTGFzdENoaWxkKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47ICAgICAgICAgCis8YSBuYW1lPSJsMDA0OTQiPjwvYT4wMDQ5NCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIExhc3RDaGlsZCggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKTsgCis8YSBuYW1lPSJsMDA0OTUiPjwvYT4wMDQ5NSAKKzxhIG5hbWU9ImwwMDQ5NiI+PC9hPjAwNDk2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDQ5NyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+MDA0OTc8L2E+IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICA8L3NwYW4+eyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgIH0gICAKKzxhIG5hbWU9ImwwMDQ5OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+MDA0OTg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkgICAgICAgICAgICAgIHsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgICB9ICAgCis8YSBuYW1lPSJsMDA0OTkiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTgiPjAwNDk5PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogTGFzdENoaWxkKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgPC9zcGFuPnsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gTGFzdENoaWxkIChfdmFsdWUuY19zdHIgKCkpOyB9ICAgCis8YSBuYW1lPSJsMDA1MDAiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTkiPjAwNTAwPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIExhc3RDaGlsZCggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApICAgICAgICAgICAgICAgeyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBMYXN0Q2hpbGQgKF92YWx1ZS5jX3N0ciAoKSk7IH0gICAKKzxhIG5hbWU9ImwwMDUwMSI+PC9hPjAwNTAxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA1MDIiPjwvYT4wMDUwMiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA1MTkiPjwvYT4wMDUxOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBwcmV2aW91cyApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA1MjAiPjwvYT4wMDUyMCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHByZXZpb3VzICk7Cis8YSBuYW1lPSJsMDA1MjEiPjwvYT4wMDUyMSAKKzxhIG5hbWU9ImwwMDUyMyI+PC9hPjAwNTIzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBwcmV2aW91cyApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA1MjQiPjwvYT4wMDUyNCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUsIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBwcmV2aW91cyApOworPGEgbmFtZT0ibDAwNTI1Ij48L2E+MDA1MjUgCis8YSBuYW1lPSJsMDA1MjYiPjwvYT4wMDUyNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA1MjciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPjAwNTI3PC9hPiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcHJldmlvdXMgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgIDwvc3Bhbj57ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiAoX3ZhbHVlLmNfc3RyICgpLCBwcmV2aW91cyk7IH0gICAKKzxhIG5hbWU9ImwwMDUyOCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+MDA1Mjg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlLCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcHJldmlvdXMgKSB7ICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+IChfdmFsdWUuY19zdHIgKCksIHByZXZpb3VzKTsgfSAgIAorPGEgbmFtZT0ibDAwNTI5Ij48L2E+MDA1MjkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDUzMCI+PC9hPjAwNTMwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDUzNCI+PC9hPjAwNTM0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBhZGRUaGlzICk7Cis8YSBuYW1lPSJsMDA1MzUiPjwvYT4wMDUzNSAKKzxhIG5hbWU9ImwwMDUzNiI+PC9hPjAwNTM2IAorPGEgbmFtZT0ibDAwNTQ2Ij48L2E+MDA1NDYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBhZGRUaGlzICk7Cis8YSBuYW1lPSJsMDA1NDciPjwvYT4wMDU0NyAKKzxhIG5hbWU9ImwwMDU1MSI+PC9hPjAwNTUxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBiZWZvcmVUaGlzLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYWRkVGhpcyApOworPGEgbmFtZT0ibDAwNTUyIj48L2E+MDA1NTIgCis8YSBuYW1lPSJsMDA1NTYiPjwvYT4wMDU1NiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogYWZ0ZXJUaGlzLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYWRkVGhpcyApOworPGEgbmFtZT0ibDAwNTU3Ij48L2E+MDA1NTcgCis8YSBuYW1lPSJsMDA1NjEiPjwvYT4wMDU2MSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+UmVwbGFjZUNoaWxkPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHJlcGxhY2VUaGlzLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgd2l0aFRoaXMgKTsKKzxhIG5hbWU9ImwwMDU2MiI+PC9hPjAwNTYyIAorPGEgbmFtZT0ibDAwNTY0Ij48L2E+MDA1NjQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMxIj5SZW1vdmVDaGlsZDwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiByZW1vdmVUaGlzICk7Cis8YSBuYW1lPSJsMDA1NjUiPjwvYT4wMDU2NSAKKzxhIG5hbWU9ImwwMDU2NyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+MDA1Njc8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcHJldjsgfQorPGEgbmFtZT0ibDAwNTY4Ij48L2E+MDA1NjggICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oKSAgICAgICAgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHByZXY7IH0KKzxhIG5hbWU9ImwwMDU2OSI+PC9hPjAwNTY5IAorPGEgbmFtZT0ibDAwNTcxIj48L2E+MDA1NzEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNTcyIj48L2E+MDA1NzIgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqICk7Cis8YSBuYW1lPSJsMDA1NzMiPjwvYT4wMDU3MyAKKzxhIG5hbWU9ImwwMDU3NCI+PC9hPjAwNTc0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDU3NSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+MDA1NzU8L2E+IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICB9ICAgCis8YSBuYW1lPSJsMDA1NzYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPjAwNTc2PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApICAgICAgICAgICAgIHsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgIH0gICAKKzxhIG5hbWU9ImwwMDU3NyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+MDA1Nzc8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgPC9zcGFuPnsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgfSAgIAorPGEgbmFtZT0ibDAwNTc4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij4wMDU3ODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSkgICAgICAgICAgICAgICAgICB7ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgIH0gICAKKzxhIG5hbWU9ImwwMDU3OSI+PC9hPjAwNTc5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA1ODAiPjwvYT4wMDU4MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA1ODIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPjAwNTgyPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IG5leHQ7IH0KKzxhIG5hbWU9ImwwMDU4MyI+PC9hPjAwNTgzICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBuZXh0OyB9Cis8YSBuYW1lPSJsMDA1ODQiPjwvYT4wMDU4NCAKKzxhIG5hbWU9ImwwMDU4NiI+PC9hPjAwNTg2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNTg3Ij48L2E+MDA1ODcgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogKTsKKzxhIG5hbWU9ImwwMDU4OCI+PC9hPjAwNTg4IAorPGEgbmFtZT0ibDAwNTkzIj48L2E+MDA1OTMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA1OTQiPjwvYT4wMDU5NCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpOworPGEgbmFtZT0ibDAwNTk1Ij48L2E+MDA1OTUgCis8YSBuYW1lPSJsMDA2MDAiPjwvYT4wMDYwMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA2MDEiPjwvYT4wMDYwMSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogKTsKKzxhIG5hbWU9ImwwMDYwMiI+PC9hPjAwNjAyIAorPGEgbmFtZT0ibDAwNjAzIj48L2E+MDA2MDMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwNjA0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij4wMDYwNDwvYT4gPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICA8L3NwYW4+eyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgIH0gICAKKzxhIG5hbWU9ImwwMDYwNSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+MDA2MDU8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlKSAgICAgICAgICAgICAgICB7ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICAgfSAgIAorPGEgbmFtZT0ibDAwNjA2Ij48L2E+MDA2MDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDYwNyI+PC9hPjAwNjA3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDYwOSI+PC9hPjAwNjA5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA2MTAiPjwvYT4wMDYxMCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCk7Cis8YSBuYW1lPSJsMDA2MTEiPjwvYT4wMDYxMSAKKzxhIG5hbWU9ImwwMDYxMyI+PC9hPjAwNjEzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNjE0Ij48L2E+MDA2MTQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKTsKKzxhIG5hbWU9ImwwMDYxNSI+PC9hPjAwNjE1IAorPGEgbmFtZT0ibDAwNjE2Ij48L2E+MDA2MTYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwNjE3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU0Ij4wMDYxNzwvYT4gPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICA8L3NwYW4+eyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgfSAgIAorPGEgbmFtZT0ibDAwNjE4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij4wMDYxODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApICAgICAgICAgICAgICAgIHsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7IH0gICAKKzxhIG5hbWU9ImwwMDYxOSI+PC9hPjAwNjE5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA2MjAiPjwvYT4wMDYyMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA2MjUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPjAwNjI1PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB0eXBlOyB9Cis8YSBuYW1lPSJsMDA2MjYiPjwvYT4wMDYyNiAKKzxhIG5hbWU9ImwwMDYzMCI+PC9hPjAwNjMwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDYzMSI+PC9hPjAwNjMxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpOworPGEgbmFtZT0ibDAwNjMyIj48L2E+MDA2MzIgCis8YSBuYW1lPSJsMDA2MzQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPjAwNjM0PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICFmaXJzdENoaWxkOyB9Cis8YSBuYW1lPSJsMDA2MzUiPjwvYT4wMDYzNSAKKzxhIG5hbWU9ImwwMDYzNiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+MDA2MzY8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICBjb25zdCAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IERPQ1VNRU5UICkgPyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KikgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDYzNyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+MDA2Mzc8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gRUxFTUVOVCAgKSA/ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KikgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2MzgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPjAwNjM4PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiogIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IENPTU1FTlQgICkgPyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiopICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAorPGEgbmFtZT0ibDAwNjM5Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj4wMDYzOTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4qICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBVTktOT1dOICApID8gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4qKSAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0MCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+MDA2NDA8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+KiAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICAgY29uc3QgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gVEVYVCAgICAgKSA/ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+KikgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2NDEiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPjAwNjQxPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBERUNMQVJBVElPTiApID8gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiopIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2NDIiPjwvYT4wMDY0MiAKKzxhIG5hbWU9ImwwMDY0MyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+MDA2NDM8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCkgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gRE9DVU1FTlQgKSA/ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KikgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+MDA2NDQ8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBFTEVNRU5UICApID8gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KikgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2NDUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPjAwNjQ1PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4qICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4oKSAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gQ09NTUVOVCAgKSA/ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiopICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAorPGEgbmFtZT0ibDAwNjQ2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij4wMDY0NjwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KiAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IFVOS05PV04gICkgPyAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4qKSAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKKzxhIG5hbWU9ImwwMDY0NyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+MDA2NDc8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiogICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBURVhUICAgICApID8gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+KikgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2NDgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPjAwNjQ4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY1Ij5Ub0RlY2xhcmF0aW9uPC9hPigpICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IERFQ0xBUkFUSU9OICkgPyAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiopIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCis8YSBuYW1lPSJsMDA2NDkiPjwvYT4wMDY0OSAKKzxhIG5hbWU9ImwwMDY1MyI+PC9hPjAwNjUzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MiI+Q2xvbmU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0IDwvc3Bhbj49IDA7Cis8YSBuYW1lPSJsMDA2NTQiPjwvYT4wMDY1NCAKKzxhIG5hbWU9ImwwMDY1NSI+PC9hPjAwNjU1IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+OgorPGEgbmFtZT0ibDAwNjU2Ij48L2E+MDA2NTYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IF90eXBlICk7Cis8YSBuYW1lPSJsMDA2NTciPjwvYT4wMDY1NyAKKzxhIG5hbWU9ImwwMDY1OCI+PC9hPjAwNjU4ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gQ29weSB0byB0aGUgYWxsb2NhdGVkIG9iamVjdC4gU2hhcmVkIGZ1bmN0aW9uYWxpdHkgYmV0d2VlbiBDbG9uZSwgQ29weSBjb25zdHJ1Y3Rvciw8L3NwYW4+Cis8YSBuYW1lPSJsMDA2NTkiPjwvYT4wMDY1OSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGFuZCB0aGUgYXNzaWdubWVudCBvcGVyYXRvci48L3NwYW4+Cis8YSBuYW1lPSJsMDA2NjAiPjwvYT4wMDY2MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb3B5VG8oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiB0YXJnZXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNjYxIj48L2E+MDA2NjEgCis8YSBuYW1lPSJsMDA2NjIiPjwvYT4wMDY2MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA2NjMiPjwvYT4wMDY2MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGhlIHJlYWwgd29yayBvZiB0aGUgaW5wdXQgb3BlcmF0b3IuPC9zcGFuPgorPGEgbmFtZT0ibDAwNjY0Ij48L2E+MDA2NjQgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSogaW4sIFRJWE1MX1NUUklORyogdGFnICkgPSAwOworPGEgbmFtZT0ibDAwNjY1Ij48L2E+MDA2NjUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDY2NiI+PC9hPjAwNjY2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDY2NyI+PC9hPjAwNjY3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gRmlndXJlIG91dCB3aGF0IGlzIGF0ICpwLCBhbmQgcGFyc2UgaXQuIFJldHVybnMgbnVsbCBpZiBpdCBpcyBub3QgYW4geG1sIG5vZGUuPC9zcGFuPgorPGEgbmFtZT0ibDAwNjY4Ij48L2E+MDA2NjggICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBJZGVudGlmeSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBzdGFydCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwNjY5Ij48L2E+MDA2NjkgCis8YSBuYW1lPSJsMDA2NzAiPjwvYT4wMDY3MCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qICAgICAgcGFyZW50OworPGEgbmFtZT0ibDAwNjcxIj48L2E+MDA2NzEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gICAgICAgIHR5cGU7Cis8YSBuYW1lPSJsMDA2NzIiPjwvYT4wMDY3MiAKKzxhIG5hbWU9ImwwMDY3MyI+PC9hPjAwNjczICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogICAgICBmaXJzdENoaWxkOworPGEgbmFtZT0ibDAwNjc0Ij48L2E+MDA2NzQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiAgICAgIGxhc3RDaGlsZDsKKzxhIG5hbWU9ImwwMDY3NSI+PC9hPjAwNjc1IAorPGEgbmFtZT0ibDAwNjc2Ij48L2E+MDA2NzYgICAgIFRJWE1MX1NUUklORyAgICB2YWx1ZTsKKzxhIG5hbWU9ImwwMDY3NyI+PC9hPjAwNjc3IAorPGEgbmFtZT0ibDAwNjc4Ij48L2E+MDA2NzggICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiAgICAgIHByZXY7Cis8YSBuYW1lPSJsMDA2NzkiPjwvYT4wMDY3OSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qICAgICAgbmV4dDsKKzxhIG5hbWU9ImwwMDY4MCI+PC9hPjAwNjgwIAorPGEgbmFtZT0ibDAwNjgxIj48L2E+MDA2ODEgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAwNjgyIj48L2E+MDA2ODIgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgKTsgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgaW1wbGVtZW50ZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwNjgzIj48L2E+MDA2ODMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYmFzZSApOyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGFsbG93ZWQuPC9zcGFuPgorPGEgbmFtZT0ibDAwNjg0Ij48L2E+MDA2ODQgfTsKKzxhIG5hbWU9ImwwMDY4NSI+PC9hPjAwNjg1IAorPGEgbmFtZT0ibDAwNjg2Ij48L2E+MDA2ODYgCis8YSBuYW1lPSJsMDA2OTQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj4wMDY5NDwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPgorPGEgbmFtZT0ibDAwNjk1Ij48L2E+MDA2OTUgeworPGEgbmFtZT0ibDAwNjk2Ij48L2E+MDA2OTYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+VGlYbWxBdHRyaWJ1dGVTZXQ7Cis8YSBuYW1lPSJsMDA2OTciPjwvYT4wMDY5NyAKKzxhIG5hbWU9ImwwMDY5OCI+PC9hPjAwNjk4IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgorPGEgbmFtZT0ibDAwNzAwIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMCI+MDA3MDA8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EwIj5UaVhtbEF0dHJpYnV0ZTwvYT4oKSA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+KCkKKzxhIG5hbWU9ImwwMDcwMSI+PC9hPjAwNzAxICAgICB7Cis8YSBuYW1lPSJsMDA3MDIiPjwvYT4wMDcwMiAgICAgICAgIGRvY3VtZW50ID0gMDsKKzxhIG5hbWU9ImwwMDcwMyI+PC9hPjAwNzAzICAgICAgICAgcHJldiA9IG5leHQgPSAwOworPGEgbmFtZT0ibDAwNzA0Ij48L2E+MDA3MDQgICAgIH0KKzxhIG5hbWU9ImwwMDcwNSI+PC9hPjAwNzA1IAorPGEgbmFtZT0ibDAwNzA2Ij48L2E+MDA3MDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwNzA3Ij48L2E+MDA3MDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNzA4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMSI+MDA3MDg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EwIj5UaVhtbEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApCis8YSBuYW1lPSJsMDA3MDkiPjwvYT4wMDcwOSAgICAgeworPGEgbmFtZT0ibDAwNzEwIj48L2E+MDA3MTAgICAgICAgICBuYW1lID0gX25hbWU7Cis8YSBuYW1lPSJsMDA3MTEiPjwvYT4wMDcxMSAgICAgICAgIHZhbHVlID0gX3ZhbHVlOworPGEgbmFtZT0ibDAwNzEyIj48L2E+MDA3MTIgICAgICAgICBkb2N1bWVudCA9IDA7Cis8YSBuYW1lPSJsMDA3MTMiPjwvYT4wMDcxMyAgICAgICAgIHByZXYgPSBuZXh0ID0gMDsKKzxhIG5hbWU9ImwwMDcxNCI+PC9hPjAwNzE0ICAgICB9Cis8YSBuYW1lPSJsMDA3MTUiPjwvYT4wMDcxNSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAwNzE2Ij48L2E+MDA3MTYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAwNzE4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMiI+MDA3MTg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EwIj5UaVhtbEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIF9uYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBfdmFsdWUgKQorPGEgbmFtZT0ibDAwNzE5Ij48L2E+MDA3MTkgICAgIHsKKzxhIG5hbWU9ImwwMDcyMCI+PC9hPjAwNzIwICAgICAgICAgbmFtZSA9IF9uYW1lOworPGEgbmFtZT0ibDAwNzIxIj48L2E+MDA3MjEgICAgICAgICB2YWx1ZSA9IF92YWx1ZTsKKzxhIG5hbWU9ImwwMDcyMiI+PC9hPjAwNzIyICAgICAgICAgZG9jdW1lbnQgPSAwOworPGEgbmFtZT0ibDAwNzIzIj48L2E+MDA3MjMgICAgICAgICBwcmV2ID0gbmV4dCA9IDA7Cis8YSBuYW1lPSJsMDA3MjQiPjwvYT4wMDcyNCAgICAgfQorPGEgbmFtZT0ibDAwNzI1Ij48L2E+MDA3MjUgCis8YSBuYW1lPSJsMDA3MjYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EzIj4wMDcyNjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTMiPk5hbWU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICBjb25zdCAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbmFtZS5jX3N0ciAoKTsgfSAgICAgICAKKzxhIG5hbWU9ImwwMDcyNyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTQiPjAwNzI3PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+VmFsdWU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB2YWx1ZS5jX3N0ciAoKTsgfSAgICAgIAorPGEgbmFtZT0ibDAwNzI4Ij48L2E+MDA3MjggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiAgICAgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E1Ij5JbnRWYWx1ZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCis8YSBuYW1lPSJsMDA3MjkiPjwvYT4wMDcyOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+ICAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTYiPkRvdWJsZVZhbHVlPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKzxhIG5hbWU9ImwwMDczMCI+PC9hPjAwNzMwIAorPGEgbmFtZT0ibDAwNzQwIj48L2E+MDA3NDAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E3Ij5RdWVyeUludFZhbHVlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBfdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNzQyIj48L2E+MDA3NDIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E4Ij5RdWVyeURvdWJsZVZhbHVlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+KiBfdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwNzQzIj48L2E+MDA3NDMgCis8YSBuYW1lPSJsMDA3NDQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E5Ij4wMDc0NDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOSI+U2V0TmFtZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogX25hbWUgKSAgIHsgbmFtZSA9IF9uYW1lOyB9ICAgICAgICAgICAgICAgCis8YSBuYW1lPSJsMDA3NDUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMCI+MDA3NDU8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEwIj5TZXRWYWx1ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogX3ZhbHVlICkgeyB2YWx1ZSA9IF92YWx1ZTsgfSAgICAgICAgICAgICAKKzxhIG5hbWU9ImwwMDc0NiI+PC9hPjAwNzQ2IAorPGEgbmFtZT0ibDAwNzQ3Ij48L2E+MDA3NDcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTEiPlNldEludFZhbHVlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IF92YWx1ZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKzxhIG5hbWU9ImwwMDc0OCI+PC9hPjAwNzQ4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEyIj5TZXREb3VibGVWYWx1ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiBfdmFsdWUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCis8YSBuYW1lPSJsMDA3NDkiPjwvYT4wMDc0OSAKKzxhIG5hbWU9ImwwMDc1MCI+PC9hPjAwNzUwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc1MSI+PC9hPjAwNzUxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc1MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEzIj4wMDc1MjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOSI+U2V0TmFtZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfbmFtZSApICAgIAorPGEgbmFtZT0ibDAwNzUzIj48L2E+MDA3NTMgICAgIHsgICAKKzxhIG5hbWU9ImwwMDc1NCI+PC9hPjAwNzU0ICAgICAgICAgU3RyaW5nVG9CdWZmZXIgYnVmKCBfbmFtZSApOworPGEgbmFtZT0ibDAwNzU1Ij48L2E+MDA3NTUgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E5Ij5TZXROYW1lPC9hPiAoIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogPHNwYW4gY2xhc3M9InN0cmluZ2xpdGVyYWwiPiJlcnJvciI8L3NwYW4+ICk7ICAKKzxhIG5hbWU9ImwwMDc1NiI+PC9hPjAwNzU2ICAgICB9Cis8YSBuYW1lPSJsMDA3NTgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNCI+MDA3NTg8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEwIj5TZXRWYWx1ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKSAgCis8YSBuYW1lPSJsMDA3NTkiPjwvYT4wMDc1OSAgICAgeyAgIAorPGEgbmFtZT0ibDAwNzYwIj48L2E+MDA3NjAgICAgICAgICBTdHJpbmdUb0J1ZmZlciBidWYoIF92YWx1ZSApOworPGEgbmFtZT0ibDAwNzYxIj48L2E+MDA3NjEgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMCI+U2V0VmFsdWU8L2E+KCBidWYuYnVmZmVyID8gYnVmLmJ1ZmZlciA6IDxzcGFuIGNsYXNzPSJzdHJpbmdsaXRlcmFsIj4iZXJyb3IiPC9zcGFuPiApOyAgCis8YSBuYW1lPSJsMDA3NjIiPjwvYT4wMDc2MiAgICAgfQorPGEgbmFtZT0ibDAwNzYzIj48L2E+MDA3NjMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc2NCI+PC9hPjAwNzY0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc2NiI+PC9hPjAwNzY2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPk5leHQ8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDc2NyI+PC9hPjAwNzY3ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE1Ij5OZXh0PC9hPigpOworPGEgbmFtZT0ibDAwNzY5Ij48L2E+MDA3NjkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNyI+UHJldmlvdXM8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDc3MCI+PC9hPjAwNzcwICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5QcmV2aW91czwvYT4oKTsKKzxhIG5hbWU9ImwwMDc3MSI+PC9hPjAwNzcxIAorPGEgbmFtZT0ibDAwNzcyIj48L2E+MDA3NzIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3I9PSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4mYW1wOyByaHMgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJocy48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI3IxIj5uYW1lPC9hPiA9PSBuYW1lOyB9Cis8YSBuYW1lPSJsMDA3NzMiPjwvYT4wMDc3MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciZsdDsoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+JmFtcDsgcmhzICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbmFtZSAmbHQ7IHJocy48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI3IxIj5uYW1lPC9hPjsgfQorPGEgbmFtZT0ibDAwNzc0Ij48L2E+MDA3NzQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3ImZ3Q7KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiZhbXA7IHJocyApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IG5hbWUgJmd0OyByaHMuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNyMSI+bmFtZTwvYT47IH0KKzxhIG5hbWU9ImwwMDc3NSI+PC9hPjAwNzc1IAorPGEgbmFtZT0ibDAwNzc2Ij48L2E+MDA3NzYgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgQXR0cmlidXRlIHBhcnNpbmcgc3RhcnRzOiBmaXJzdCBsZXR0ZXIgb2YgdGhlIG5hbWU8L3NwYW4+Cis8YSBuYW1lPSJsMDA3NzciPjwvYT4wMDc3NyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnM6IHRoZSBuZXh0IGNoYXIgYWZ0ZXIgdGhlIHZhbHVlIGVuZCBxdW90ZTwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc3OCI+PC9hPjAwNzc4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgKi88L3NwYW4+Cis8YSBuYW1lPSJsMDA3NzkiPjwvYT4wMDc3OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUGFyc2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAwNzgwIj48L2E+MDA3ODAgCis8YSBuYW1lPSJsMDA3ODEiPjwvYT4wMDc4MSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFByaW50cyB0aGlzIEF0dHJpYnV0ZSB0byBhIEZJTEUgc3RyZWFtLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc4MiI+PC9hPjAwNzgyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyMyI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDc4MyI+PC9hPjAwNzgzIAorPGEgbmFtZT0ibDAwNzg0Ij48L2E+MDA3ODQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIG91dCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA3ODUiPjwvYT4wMDc4NSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFtpbnRlcm5hbCB1c2VdPC9zcGFuPgorPGEgbmFtZT0ibDAwNzg2Ij48L2E+MDA3ODYgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBTZXQgdGhlIGRvY3VtZW50IHBvaW50ZXIgc28gdGhlIGF0dHJpYnV0ZSBjYW4gcmVwb3J0IGVycm9ycy48L3NwYW4+Cis8YSBuYW1lPSJsMDA3ODciPjwvYT4wMDc4NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTZXREb2N1bWVudCggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogZG9jICkgIHsgZG9jdW1lbnQgPSBkb2M7IH0KKzxhIG5hbWU9ImwwMDc4OCI+PC9hPjAwNzg4IAorPGEgbmFtZT0ibDAwNzg5Ij48L2E+MDA3ODkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAwNzkwIj48L2E+MDA3OTAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPlRpWG1sQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4mYW1wOyApOyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGltcGxlbWVudGVkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc5MSI+PC9hPjAwNzkxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4mYW1wOyBiYXNlICk7ICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBhbGxvd2VkLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDc5MiI+PC9hPjAwNzkyIAorPGEgbmFtZT0ibDAwNzkzIj48L2E+MDA3OTMgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qICBkb2N1bWVudDsgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gQSBwb2ludGVyIGJhY2sgdG8gYSBkb2N1bWVudCwgZm9yIGVycm9yIHJlcG9ydGluZy48L3NwYW4+Cis8YSBuYW1lPSJsMDA3OTQiPjwvYT4wMDc5NCAgICAgVElYTUxfU1RSSU5HIG5hbWU7Cis8YSBuYW1lPSJsMDA3OTUiPjwvYT4wMDc5NSAgICAgVElYTUxfU1RSSU5HIHZhbHVlOworPGEgbmFtZT0ibDAwNzk2Ij48L2E+MDA3OTYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogcHJldjsKKzxhIG5hbWU9ImwwMDc5NyI+PC9hPjAwNzk3ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIG5leHQ7Cis8YSBuYW1lPSJsMDA3OTgiPjwvYT4wMDc5OCB9OworPGEgbmFtZT0ibDAwNzk5Ij48L2E+MDA3OTkgCis8YSBuYW1lPSJsMDA4MDAiPjwvYT4wMDgwMCAKKzxhIG5hbWU9ImwwMDgwMSI+PC9hPjAwODAxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgQSBjbGFzcyB1c2VkIHRvIG1hbmFnZSBhIGdyb3VwIG9mIGF0dHJpYnV0ZXMuPC9zcGFuPgorPGEgbmFtZT0ibDAwODAyIj48L2E+MDA4MDIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICBJdCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgYm90aCBieSB0aGUgRUxFTUVOVCBhbmQgdGhlIERFQ0xBUkFUSU9OLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgwMyI+PC9hPjAwODAzIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgPC9zcGFuPgorPGEgbmFtZT0ibDAwODA0Ij48L2E+MDA4MDQgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICBUaGUgc2V0IGNhbiBiZSBjaGFuZ2VkIHRyYW5zcGFyZW50IHRvIHRoZSBFbGVtZW50IGFuZCBEZWNsYXJhdGlvbjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgwNSI+PC9hPjAwODA1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgY2xhc3NlcyB0aGF0IHVzZSBpdCwgYnV0IE5PVCB0cmFuc3BhcmVudCB0byB0aGUgQXR0cmlidXRlPC9zcGFuPgorPGEgbmFtZT0ibDAwODA2Ij48L2E+MDA4MDYgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICB3aGljaCBoYXMgdG8gaW1wbGVtZW50IGEgbmV4dCgpIGFuZCBwcmV2aW91cygpIG1ldGhvZC4gV2hpY2ggbWFrZXM8L3NwYW4+Cis8YSBuYW1lPSJsMDA4MDciPjwvYT4wMDgwNyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIGl0IGEgYml0IHByb2JsZW1hdGljIGFuZCBwcmV2ZW50cyB0aGUgdXNlIG9mIFNUTC48L3NwYW4+Cis8YSBuYW1lPSJsMDA4MDgiPjwvYT4wMDgwOCA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgorPGEgbmFtZT0ibDAwODA5Ij48L2E+MDA4MDkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICBUaGlzIHZlcnNpb24gaXMgaW1wbGVtZW50ZWQgd2l0aCBjaXJjdWxhciBsaXN0cyBiZWNhdXNlOjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgxMCI+PC9hPjAwODEwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIC0gSSBsaWtlIGNpcmN1bGFyIGxpc3RzPC9zcGFuPgorPGEgbmFtZT0ibDAwODExIj48L2E+MDA4MTEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgLSBpdCBkZW1vbnN0cmF0ZXMgc29tZSBpbmRlcGVuZGVuY2UgZnJvbSB0aGUgKHR5cGljYWwpIGRvdWJseSBsaW5rZWQgbGlzdC48L3NwYW4+Cis8YSBuYW1lPSJsMDA4MTIiPjwvYT4wMDgxMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ki88L3NwYW4+Cis8YSBuYW1lPSJsMDA4MTMiPjwvYT4wMDgxMyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPlRpWG1sQXR0cmlidXRlU2V0Cis8YSBuYW1lPSJsMDA4MTQiPjwvYT4wMDgxNCB7Cis8YSBuYW1lPSJsMDA4MTUiPjwvYT4wMDgxNSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMDgxNiI+PC9hPjAwODE2ICAgICBUaVhtbEF0dHJpYnV0ZVNldCgpOworPGEgbmFtZT0ibDAwODE3Ij48L2E+MDA4MTcgICAgIH5UaVhtbEF0dHJpYnV0ZVNldCgpOworPGEgbmFtZT0ibDAwODE4Ij48L2E+MDA4MTggCis8YSBuYW1lPSJsMDA4MTkiPjwvYT4wMDgxOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBBZGQoIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogYXR0cmlidXRlICk7Cis8YSBuYW1lPSJsMDA4MjAiPjwvYT4wMDgyMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBSZW1vdmUoIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogYXR0cmlidXRlICk7Cis8YSBuYW1lPSJsMDA4MjEiPjwvYT4wMDgyMSAKKzxhIG5hbWU9ImwwMDgyMiI+PC9hPjAwODIyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogRmlyc3QoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICBjb25zdCAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIHNlbnRpbmVsLm5leHQgPT0gJmFtcDtzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLm5leHQ7IH0KKzxhIG5hbWU9ImwwMDgyMyI+PC9hPjAwODIzICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIEZpcnN0KCkgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggc2VudGluZWwubmV4dCA9PSAmYW1wO3NlbnRpbmVsICkgPyAwIDogc2VudGluZWwubmV4dDsgfQorPGEgbmFtZT0ibDAwODI0Ij48L2E+MDA4MjQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBMYXN0KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggc2VudGluZWwucHJldiA9PSAmYW1wO3NlbnRpbmVsICkgPyAwIDogc2VudGluZWwucHJldjsgfQorPGEgbmFtZT0ibDAwODI1Ij48L2E+MDA4MjUgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogTGFzdCgpICAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCBzZW50aW5lbC5wcmV2ID09ICZhbXA7c2VudGluZWwgKSA/IDAgOiBzZW50aW5lbC5wcmV2OyB9Cis8YSBuYW1lPSJsMDA4MjYiPjwvYT4wMDgyNiAKKzxhIG5hbWU9ImwwMDgyNyI+PC9hPjAwODI3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogICBGaW5kKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBuYW1lICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDgyOCI+PC9hPjAwODI4ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIEZpbmQoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIG5hbWUgKTsKKzxhIG5hbWU9ImwwMDgyOSI+PC9hPjAwODI5IAorPGEgbmFtZT0ibDAwODMwIj48L2E+MDA4MzAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgorPGEgbmFtZT0ibDAwODMxIj48L2E+MDA4MzEgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLypNRTogIEJlY2F1c2Ugb2YgaGlkZGVuL2Rpc2FibGVkIGNvcHktY29uc3RydWt0b3IgaW4gVGlYbWxBdHRyaWJ1dGUgKHNlbnRpbmVsLWVsZW1lbnQpLDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDgzMiI+PC9hPjAwODMyICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8qTUU6ICB0aGlzIGNsYXNzIG11c3QgYmUgYWxzbyB1c2UgYSBoaWRkZW4vZGlzYWJsZWQgY29weS1jb25zdHJ1Y3RvciAhISE8L3NwYW4+Cis8YSBuYW1lPSJsMDA4MzMiPjwvYT4wMDgzMyAgICAgVGlYbWxBdHRyaWJ1dGVTZXQoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxBdHRyaWJ1dGVTZXQmYW1wOyApOyAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBhbGxvd2VkPC9zcGFuPgorPGEgbmFtZT0ibDAwODM0Ij48L2E+MDA4MzQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sQXR0cmlidXRlU2V0JmFtcDsgKTsgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBhbGxvd2VkIChhcyBUaVhtbEF0dHJpYnV0ZSk8L3NwYW4+Cis8YSBuYW1lPSJsMDA4MzUiPjwvYT4wMDgzNSAKKzxhIG5hbWU9ImwwMDgzNiI+PC9hPjAwODM2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4gc2VudGluZWw7Cis8YSBuYW1lPSJsMDA4MzciPjwvYT4wMDgzNyB9OworPGEgbmFtZT0ibDAwODM4Ij48L2E+MDA4MzggCis8YSBuYW1lPSJsMDA4MzkiPjwvYT4wMDgzOSAKKzxhIG5hbWU9ImwwMDg0NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj4wMDg0NDwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+Cis8YSBuYW1lPSJsMDA4NDUiPjwvYT4wMDg0NSB7Cis8YSBuYW1lPSJsMDA4NDYiPjwvYT4wMDg0NiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMDg0OCI+PC9hPjAwODQ4ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMCI+VGlYbWxFbGVtZW50PC9hPiAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogaW5fdmFsdWUpOworPGEgbmFtZT0ibDAwODQ5Ij48L2E+MDA4NDkgCis8YSBuYW1lPSJsMDA4NTAiPjwvYT4wMDg1MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDA4NTEiPjwvYT4wMDg1MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA4NTIiPjwvYT4wMDg1MiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTAiPlRpWG1sRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKTsKKzxhIG5hbWU9ImwwMDg1MyI+PC9hPjAwODUzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA4NTQiPjwvYT4wMDg1NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA4NTUiPjwvYT4wMDg1NSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTAiPlRpWG1sRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4mYW1wOyApOworPGEgbmFtZT0ibDAwODU2Ij48L2E+MDA4NTYgCis8YSBuYW1lPSJsMDA4NTciPjwvYT4wMDg1NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4mYW1wOyBiYXNlICk7Cis8YSBuYW1lPSJsMDA4NTgiPjwvYT4wMDg1OCAKKzxhIG5hbWU9ImwwMDg1OSI+PC9hPjAwODU5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KCk7Cis8YSBuYW1lPSJsMDA4NjAiPjwvYT4wMDg2MCAKKzxhIG5hbWU9ImwwMDg2NCI+PC9hPjAwODY0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG5hbWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwODY1Ij48L2E+MDA4NjUgCis8YSBuYW1lPSJsMDA4NzIiPjwvYT4wMDg3MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIGkgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwODczIj48L2E+MDA4NzMgCis8YSBuYW1lPSJsMDA4ODAiPjwvYT4wMDg4MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4qIGQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwODgxIj48L2E+MDA4ODEgCis8YSBuYW1lPSJsMDA4ODkiPjwvYT4wMDg4OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E4Ij5RdWVyeUludEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBfdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwODkxIj48L2E+MDA4OTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+UXVlcnlEb3VibGVBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiogX3ZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDg5MyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMCI+MDA4OTM8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEwIj5RdWVyeUZsb2F0QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmZsb2F0PC9zcGFuPiogX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57Cis8YSBuYW1lPSJsMDA4OTQiPjwvYT4wMDg5NCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiBkOworPGEgbmFtZT0ibDAwODk1Ij48L2E+MDA4OTUgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gcmVzdWx0ID0gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlF1ZXJ5RG91YmxlQXR0cmlidXRlPC9hPiggbmFtZSwgJmFtcDtkICk7Cis8YSBuYW1lPSJsMDA4OTYiPjwvYT4wMDg5NiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggcmVzdWx0ID09IFRJWE1MX1NVQ0NFU1MgKSB7Cis8YSBuYW1lPSJsMDA4OTciPjwvYT4wMDg5NyAgICAgICAgICAgICAqX3ZhbHVlID0gKGZsb2F0KWQ7Cis8YSBuYW1lPSJsMDA4OTgiPjwvYT4wMDg5OCAgICAgICAgIH0KKzxhIG5hbWU9ImwwMDg5OSI+PC9hPjAwODk5ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlc3VsdDsKKzxhIG5hbWU9ImwwMDkwMCI+PC9hPjAwOTAwICAgICB9Cis8YSBuYW1lPSJsMDA5MDEiPjwvYT4wMDkwMSAKKzxhIG5hbWU9ImwwMDkwNSI+PC9hPjAwOTA1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBfdmFsdWUgKTsKKzxhIG5hbWU9ImwwMDkwNiI+PC9hPjAwOTA2IAorPGEgbmFtZT0ibDAwOTA3Ij48L2E+MDA5MDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAwOTA4Ij48L2E+MDA5MDggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCBuYW1lLmNfc3RyKCkgKTsgfQorPGEgbmFtZT0ibDAwOTA5Ij48L2E+MDA5MDkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIGkgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIG5hbWUuY19zdHIoKSwgaSApOyB9Cis8YSBuYW1lPSJsMDA5MTAiPjwvYT4wMDkxMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiogZCApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggbmFtZS5jX3N0cigpLCBkICk7IH0KKzxhIG5hbWU9ImwwMDkxMSI+PC9hPjAwOTExICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+UXVlcnlJbnRBdHRyaWJ1dGU8L2E+KCBuYW1lLmNfc3RyKCksIF92YWx1ZSApOyB9Cis8YSBuYW1lPSJsMDA5MTIiPjwvYT4wMDkxMiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E5Ij5RdWVyeURvdWJsZUF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4qIF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlF1ZXJ5RG91YmxlQXR0cmlidXRlPC9hPiggbmFtZS5jX3N0cigpLCBfdmFsdWUgKTsgfQorPGEgbmFtZT0ibDAwOTEzIj48L2E+MDA5MTMgCis8YSBuYW1lPSJsMDA5MTUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTciPjAwOTE1PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkgCis8YSBuYW1lPSJsMDA5MTYiPjwvYT4wMDkxNiAgICAgeyAgIAorPGEgbmFtZT0ibDAwOTE3Ij48L2E+MDA5MTcgICAgICAgICBTdHJpbmdUb0J1ZmZlciBuKCBuYW1lICk7Cis8YSBuYW1lPSJsMDA5MTgiPjwvYT4wMDkxOCAgICAgICAgIFN0cmluZ1RvQnVmZmVyIHYoIF92YWx1ZSApOworPGEgbmFtZT0ibDAwOTE5Ij48L2E+MDA5MTkgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoIG4uYnVmZmVyICZhbXA7JmFtcDsgdi5idWZmZXIgKQorPGEgbmFtZT0ibDAwOTIwIj48L2E+MDA5MjAgICAgICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTExIj5TZXRBdHRyaWJ1dGU8L2E+IChuLmJ1ZmZlciwgdi5idWZmZXIgKTsgCis8YSBuYW1lPSJsMDA5MjEiPjwvYT4wMDkyMSAgICAgfSAgIAorPGEgbmFtZT0ibDAwOTIzIj48L2E+MDA5MjMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTExIj5TZXRBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IF92YWx1ZSApICAgIAorPGEgbmFtZT0ibDAwOTI0Ij48L2E+MDA5MjQgICAgIHsgICAKKzxhIG5hbWU9ImwwMDkyNSI+PC9hPjAwOTI1ICAgICAgICAgU3RyaW5nVG9CdWZmZXIgbiggbmFtZSApOworPGEgbmFtZT0ibDAwOTI2Ij48L2E+MDA5MjYgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoIG4uYnVmZmVyICkKKzxhIG5hbWU9ImwwMDkyNyI+PC9hPjAwOTI3ICAgICAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPiAobi5idWZmZXIsIF92YWx1ZSk7ICAgIAorPGEgbmFtZT0ibDAwOTI4Ij48L2E+MDA5MjggICAgIH0gICAKKzxhIG5hbWU9ImwwMDkyOSI+PC9hPjAwOTI5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA5MzAiPjwvYT4wMDkzMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA5MzQiPjwvYT4wMDkzNCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiB2YWx1ZSApOworPGEgbmFtZT0ibDAwOTM1Ij48L2E+MDA5MzUgCis8YSBuYW1lPSJsMDA5MzkiPjwvYT4wMDkzOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjAiPlNldERvdWJsZUF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiB2YWx1ZSApOworPGEgbmFtZT0ibDAwOTQwIj48L2E+MDA5NDAgCis8YSBuYW1lPSJsMDA5NDMiPjwvYT4wMDk0MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjEiPlJlbW92ZUF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIG5hbWUgKTsKKzxhIG5hbWU9ImwwMDk0NCI+PC9hPjAwOTQ0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMDk0NSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMiI+MDA5NDU8L2E+IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjEiPlJlbW92ZUF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lICkgeyAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMSI+UmVtb3ZlQXR0cmlidXRlPC9hPiAobmFtZS5jX3N0ciAoKSk7ICAgIH0gICAKKzxhIG5hbWU9ImwwMDk0NiI+PC9hPjAwOTQ2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDA5NDciPjwvYT4wMDk0NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDA5NDgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjMiPjAwOTQ4PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMyI+Rmlyc3RBdHRyaWJ1dGU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsgfSAgICAgICAgCis8YSBuYW1lPSJsMDA5NDkiPjwvYT4wMDk0OSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjMiPkZpcnN0QXR0cmlidXRlPC9hPigpICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGF0dHJpYnV0ZVNldC5GaXJzdCgpOyB9Cis8YSBuYW1lPSJsMDA5NTAiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjUiPjAwOTUwPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+TGFzdEF0dHJpYnV0ZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICBjb25zdCAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhdHRyaWJ1dGVTZXQuTGFzdCgpOyB9ICAgICAKKzxhIG5hbWU9ImwwMDk1MSI+PC9hPjAwOTUxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+TGFzdEF0dHJpYnV0ZTwvYT4oKSAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXR0cmlidXRlU2V0Lkxhc3QoKTsgfQorPGEgbmFtZT0ibDAwOTUyIj48L2E+MDA5NTIgCis8YSBuYW1lPSJsMDA5ODUiPjwvYT4wMDk4NSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPkdldFRleHQ8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMDk4NiI+PC9hPjAwOTg2IAorPGEgbmFtZT0ibDAwOTg4Ij48L2E+MDA5ODggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5DbG9uZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAwOTg5Ij48L2E+MDA5ODkgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBQcmludCB0aGUgRWxlbWVudCB0byBhIEZJTEUgc3RyZWFtLjwvc3Bhbj4KKzxhIG5hbWU9ImwwMDk5MCI+PC9hPjAwOTkwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjkiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDA5OTEiPjwvYT4wMDk5MSAKKzxhIG5hbWU9ImwwMDk5MiI+PC9hPjAwOTkyICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIEF0dHJpYnR1ZSBwYXJzaW5nIHN0YXJ0czogbmV4dCBjaGFyIHBhc3QgJyZsdDsnPC9zcGFuPgorPGEgbmFtZT0ibDAwOTkzIj48L2E+MDA5OTMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zOiBuZXh0IGNoYXIgcGFzdCAnJmd0Oyc8L3NwYW4+Cis8YSBuYW1lPSJsMDA5OTQiPjwvYT4wMDk5NCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgorPGEgbmFtZT0ibDAwOTk1Ij48L2E+MDA5OTUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFBhcnNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMDk5NiI+PC9hPjAwOTk2IAorPGEgbmFtZT0ibDAwOTk3Ij48L2E+MDA5OTcgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj46Cis8YSBuYW1lPSJsMDA5OTgiPjwvYT4wMDk5OCAKKzxhIG5hbWU9ImwwMDk5OSI+PC9hPjAwOTk5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvcHlUbyggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIHRhcmdldCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEwMDAiPjwvYT4wMTAwMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDbGVhclRoaXMoKTsgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbGlrZSBjbGVhciwgYnV0IGluaXRpYWxpemVzICd0aGlzJyBvYmplY3QgYXMgd2VsbDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTAwMSI+PC9hPjAxMDAxIAorPGEgbmFtZT0ibDAxMDAyIj48L2E+MDEwMDIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBVc2VkIHRvIGJlIHB1YmxpYyBbaW50ZXJuYWwgdXNlXTwvc3Bhbj4KKzxhIG5hbWU9ImwwMTAwMyI+PC9hPjAxMDAzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTAwNCI+PC9hPjAxMDA0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworPGEgbmFtZT0ibDAxMDA1Ij48L2E+MDEwMDUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTAwNiI+PC9hPjAxMDA2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTAwNyI+PC9hPjAxMDA3IAorPGEgbmFtZT0ibDAxMDA4Ij48L2E+MDEwMDggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgW2ludGVybmFsIHVzZV08L3NwYW4+Cis8YSBuYW1lPSJsMDEwMDkiPjwvYT4wMTAwOSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICBSZWFkcyB0aGUgInZhbHVlIiBvZiB0aGUgZWxlbWVudCAtLSBhbm90aGVyIGVsZW1lbnQsIG9yIHRleHQuPC9zcGFuPgorPGEgbmFtZT0ibDAxMDEwIj48L2E+MDEwMTAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgVGhpcyBzaG91bGQgdGVybWluYXRlIHdpdGggdGhlIGN1cnJlbnQgZW5kIHRhZy48L3NwYW4+Cis8YSBuYW1lPSJsMDEwMTEiPjwvYT4wMTAxMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgorPGEgbmFtZT0ibDAxMDEyIj48L2E+MDEwMTIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUmVhZFZhbHVlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGluLCBUaVhtbFBhcnNpbmdEYXRhKiBwcmV2RGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAxMDEzIj48L2E+MDEwMTMgCis8YSBuYW1lPSJsMDEwMTQiPjwvYT4wMTAxNCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDEwMTUiPjwvYT4wMTAxNSAKKzxhIG5hbWU9ImwwMTAxNiI+PC9hPjAxMDE2ICAgICBUaVhtbEF0dHJpYnV0ZVNldCBhdHRyaWJ1dGVTZXQ7Cis8YSBuYW1lPSJsMDEwMTciPjwvYT4wMTAxNyB9OworPGEgbmFtZT0ibDAxMDE4Ij48L2E+MDEwMTggCis8YSBuYW1lPSJsMDEwMTkiPjwvYT4wMTAxOSAKKzxhIG5hbWU9ImwwMTAyMiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj4wMTAyMjwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+Cis8YSBuYW1lPSJsMDEwMjMiPjwvYT4wMTAyMyB7Cis8YSBuYW1lPSJsMDEwMjQiPjwvYT4wMTAyNCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTAyNiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj4wMTAyNjwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+KCkgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT46OkNPTU1FTlQgKSB7fQorPGEgbmFtZT0ibDAxMDI3Ij48L2E+MDEwMjcgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+JmFtcDsgKTsKKzxhIG5hbWU9ImwwMTAyOCI+PC9hPjAxMDI4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiZhbXA7IGJhc2UgKTsKKzxhIG5hbWU9ImwwMTAyOSI+PC9hPjAxMDI5IAorPGEgbmFtZT0ibDAxMDMwIj48L2E+MDEwMzAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4oKSB7fQorPGEgbmFtZT0ibDAxMDMxIj48L2E+MDEwMzEgCis8YSBuYW1lPSJsMDEwMzMiPjwvYT4wMTAzMyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNCI+Q2xvbmU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTAzNSI+PC9hPjAxMDM1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNSI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTAzNiI+PC9hPjAxMDM2IAorPGEgbmFtZT0ibDAxMDM3Ij48L2E+MDEwMzcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgQXR0cmlidHVlIHBhcnNpbmcgc3RhcnRzOiBhdCB0aGUgISBvZiB0aGUgIS0tPC9zcGFuPgorPGEgbmFtZT0ibDAxMDM4Ij48L2E+MDEwMzggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zOiBuZXh0IGNoYXIgcGFzdCAnJmd0Oyc8L3NwYW4+Cis8YSBuYW1lPSJsMDEwMzkiPjwvYT4wMTAzOSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgorPGEgbmFtZT0ibDAxMDQwIj48L2E+MDEwNDAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFBhcnNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKzxhIG5hbWU9ImwwMTA0MSI+PC9hPjAxMDQxIAorPGEgbmFtZT0ibDAxMDQyIj48L2E+MDEwNDIgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj46Cis8YSBuYW1lPSJsMDEwNDMiPjwvYT4wMTA0MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb3B5VG8oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+KiB0YXJnZXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMDQ0Ij48L2E+MDEwNDQgCis8YSBuYW1lPSJsMDEwNDUiPjwvYT4wMTA0NSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHVzZWQgdG8gYmUgcHVibGljPC9zcGFuPgorPGEgbmFtZT0ibDAxMDQ2Ij48L2E+MDEwNDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAxMDQ3Ij48L2E+MDEwNDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Cis8YSBuYW1lPSJsMDEwNDgiPjwvYT4wMTA0OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgorPGEgbmFtZT0ibDAxMDQ5Ij48L2E+MDEwNDkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMDUwIj48L2E+MDEwNTAgCis8YSBuYW1lPSJsMDEwNTEiPjwvYT4wMTA1MSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDEwNTIiPjwvYT4wMTA1MiAKKzxhIG5hbWU9ImwwMTA1MyI+PC9hPjAxMDUzIH07Cis8YSBuYW1lPSJsMDEwNTQiPjwvYT4wMTA1NCAKKzxhIG5hbWU9ImwwMTA1NSI+PC9hPjAxMDU1IAorPGEgbmFtZT0ibDAxMDYxIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPjAxMDYxPC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4KKzxhIG5hbWU9ImwwMTA2MiI+PC9hPjAxMDYyIHsKKzxhIG5hbWU9ImwwMTA2MyI+PC9hPjAxMDYzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+OworPGEgbmFtZT0ibDAxMDY0Ij48L2E+MDEwNjQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDEwNjkiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMCI+MDEwNjk8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMCI+VGlYbWxUZXh0PC9hPiAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogaW5pdFZhbHVlICkgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT46OlRFWFQpCis8YSBuYW1lPSJsMDEwNzAiPjwvYT4wMTA3MCAgICAgeworPGEgbmFtZT0ibDAxMDcxIj48L2E+MDEwNzEgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KCBpbml0VmFsdWUgKTsKKzxhIG5hbWU9ImwwMTA3MiI+PC9hPjAxMDcyICAgICAgICAgY2RhdGEgPSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZmFsc2U8L3NwYW4+OworPGEgbmFtZT0ibDAxMDczIj48L2E+MDEwNzMgICAgIH0KKzxhIG5hbWU9ImwwMTA3NCI+PC9hPjAxMDc0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+KCkge30KKzxhIG5hbWU9ImwwMTA3NSI+PC9hPjAxMDc1IAorPGEgbmFtZT0ibDAxMDc2Ij48L2E+MDEwNzYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAxMDc3Ij48L2E+MDEwNzcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgorPGEgbmFtZT0ibDAxMDc4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTIiPjAxMDc4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTAiPlRpWG1sVGV4dDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBpbml0VmFsdWUgKSA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjo6VEVYVCkKKzxhIG5hbWU9ImwwMTA3OSI+PC9hPjAxMDc5ICAgICB7Cis8YSBuYW1lPSJsMDEwODAiPjwvYT4wMTA4MCAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4oIGluaXRWYWx1ZSApOworPGEgbmFtZT0ibDAxMDgxIj48L2E+MDEwODEgICAgICAgICBjZGF0YSA9IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mYWxzZTwvc3Bhbj47Cis8YSBuYW1lPSJsMDEwODIiPjwvYT4wMTA4MiAgICAgfQorPGEgbmFtZT0ibDAxMDgzIj48L2E+MDEwODMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTA4NCI+PC9hPjAxMDg0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTA4NSI+PC9hPjAxMDg1ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMCI+VGlYbWxUZXh0PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiZhbXA7IGNvcHkgKSA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjo6VEVYVCApICAgeyBjb3B5LjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IxIj5Db3B5VG88L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gKTsgfQorPGEgbmFtZT0ibDAxMDg2Ij48L2E+MDEwODYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+JmFtcDsgYmFzZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGJhc2UuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYjEiPkNvcHlUbzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiApOyB9Cis8YSBuYW1lPSJsMDEwODciPjwvYT4wMTA4NyAKKzxhIG5hbWU9ImwwMTA4OSI+PC9hPjAxMDg5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNSI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTA5MCI+PC9hPjAxMDkwIAorPGEgbmFtZT0ibDAxMDkyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPjAxMDkyPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNiI+Q0RBVEE8L2E+KCkgICAgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGNkYXRhOyB9Cis8YSBuYW1lPSJsMDEwOTQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNyI+MDEwOTQ8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij5TZXRDREFUQTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gX2NkYXRhICkgICAgeyBjZGF0YSA9IF9jZGF0YTsgfQorPGEgbmFtZT0ibDAxMDk1Ij48L2E+MDEwOTUgCis8YSBuYW1lPSJsMDEwOTYiPjwvYT4wMTA5NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUGFyc2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAxMDk3Ij48L2E+MDEwOTcgCis8YSBuYW1lPSJsMDEwOTgiPjwvYT4wMTA5OCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPiA6Cis8YSBuYW1lPSJsMDExMDAiPjwvYT4wMTEwMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMCI+Q2xvbmU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTEwMSI+PC9hPjAxMTAxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvcHlUbyggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4qIHRhcmdldCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDExMDIiPjwvYT4wMTEwMiAKKzxhIG5hbWU9ImwwMTEwMyI+PC9hPjAxMTAzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQgKCBUSVhNTF9PU1RSRUFNICogb3V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTEwNCI+PC9hPjAxMTA0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IEJsYW5rKCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgd2hpdGUgc3BhY2UgYW5kIG5ldyBsaW5lczwvc3Bhbj4KKzxhIG5hbWU9ImwwMTEwNSI+PC9hPjAxMTA1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gW2ludGVybmFsIHVzZV08L3NwYW4+Cis8YSBuYW1lPSJsMDExMDYiPjwvYT4wMTEwNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDExMDciPjwvYT4wMTEwNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKzxhIG5hbWU9ImwwMTEwOCI+PC9hPjAxMTA4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDExMDkiPjwvYT4wMTEwOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDExMTAiPjwvYT4wMTExMCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDExMTEiPjwvYT4wMTExMSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBjZGF0YTsgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdHJ1ZSBpZiB0aGlzIHNob3VsZCBiZSBpbnB1dCBhbmQgb3V0cHV0IGFzIGEgQ0RBVEEgc3R5bGUgdGV4dCBlbGVtZW50PC9zcGFuPgorPGEgbmFtZT0ibDAxMTEyIj48L2E+MDExMTIgfTsKKzxhIG5hbWU9ImwwMTExMyI+PC9hPjAxMTEzIAorPGEgbmFtZT0ibDAxMTE0Ij48L2E+MDExMTQgCis8YSBuYW1lPSJsMDExMjgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPjAxMTI4PC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPgorPGEgbmFtZT0ibDAxMTI5Ij48L2E+MDExMjkgeworPGEgbmFtZT0ibDAxMTMwIj48L2E+MDExMzAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDExMzIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPjAxMTMyPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EwIj5UaVhtbERlY2xhcmF0aW9uPC9hPigpICAgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT46OkRFQ0xBUkFUSU9OICkge30KKzxhIG5hbWU9ImwwMTEzMyI+PC9hPjAxMTMzIAorPGEgbmFtZT0ibDAxMTM0Ij48L2E+MDExMzQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDExMzUiPjwvYT4wMTEzNSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDExMzYiPjwvYT4wMTEzNiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EwIj5UaVhtbERlY2xhcmF0aW9uPC9hPiggICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZlcnNpb24sCis8YSBuYW1lPSJsMDExMzciPjwvYT4wMTEzNyAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX2VuY29kaW5nLAorPGEgbmFtZT0ibDAxMTM4Ij48L2E+MDExMzggICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF9zdGFuZGFsb25lICk7Cis8YSBuYW1lPSJsMDExMzkiPjwvYT4wMTEzOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDExNDAiPjwvYT4wMTE0MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDExNDIiPjwvYT4wMTE0MiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EwIj5UaVhtbERlY2xhcmF0aW9uPC9hPiggICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIF92ZXJzaW9uLAorPGEgbmFtZT0ibDAxMTQzIj48L2E+MDExNDMgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBfZW5jb2RpbmcsCis8YSBuYW1lPSJsMDExNDQiPjwvYT4wMTE0NCAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIF9zdGFuZGFsb25lICk7Cis8YSBuYW1lPSJsMDExNDUiPjwvYT4wMTE0NSAKKzxhIG5hbWU9ImwwMTE0NiI+PC9hPjAxMTQ2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPlRpWG1sRGVjbGFyYXRpb248L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4mYW1wOyBjb3B5ICk7Cis8YSBuYW1lPSJsMDExNDciPjwvYT4wMTE0NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiZhbXA7IGNvcHkgKTsKKzxhIG5hbWU9ImwwMTE0OCI+PC9hPjAxMTQ4IAorPGEgbmFtZT0ibDAxMTQ5Ij48L2E+MDExNDkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPigpIHt9Cis8YSBuYW1lPSJsMDExNTAiPjwvYT4wMTE1MCAKKzxhIG5hbWU9ImwwMTE1MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNiI+MDExNTI8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNiI+VmVyc2lvbjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdmVyc2lvbi5jX3N0ciAoKTsgfQorPGEgbmFtZT0ibDAxMTU0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E3Ij4wMTE1NDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E3Ij5FbmNvZGluZzwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBlbmNvZGluZy5jX3N0ciAoKTsgfQorPGEgbmFtZT0ibDAxMTU2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E4Ij4wMTE1NjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E4Ij5TdGFuZGFsb25lPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBzdGFuZGFsb25lLmNfc3RyICgpOyB9Cis8YSBuYW1lPSJsMDExNTciPjwvYT4wMTE1NyAKKzxhIG5hbWU9ImwwMTE1OSI+PC9hPjAxMTU5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+Q2xvbmU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTE2MSI+PC9hPjAxMTYxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEwIj5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMTYyIj48L2E+MDExNjIgCis8YSBuYW1lPSJsMDExNjMiPjwvYT4wMTE2MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUGFyc2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAxMTY0Ij48L2E+MDExNjQgCis8YSBuYW1lPSJsMDExNjUiPjwvYT4wMTE2NSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTE2NiI+PC9hPjAxMTY2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvcHlUbyggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiogdGFyZ2V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTE2NyI+PC9hPjAxMTY3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gdXNlZCB0byBiZSBwdWJsaWM8L3NwYW4+Cis8YSBuYW1lPSJsMDExNjgiPjwvYT4wMTE2OCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDExNjkiPjwvYT4wMTE2OSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKzxhIG5hbWU9ImwwMTE3MCI+PC9hPjAxMTcwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDExNzEiPjwvYT4wMTE3MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDExNzIiPjwvYT4wMTE3MiAKKzxhIG5hbWU9ImwwMTE3MyI+PC9hPjAxMTczIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTE3NCI+PC9hPjAxMTc0IAorPGEgbmFtZT0ibDAxMTc1Ij48L2E+MDExNzUgICAgIFRJWE1MX1NUUklORyB2ZXJzaW9uOworPGEgbmFtZT0ibDAxMTc2Ij48L2E+MDExNzYgICAgIFRJWE1MX1NUUklORyBlbmNvZGluZzsKKzxhIG5hbWU9ImwwMTE3NyI+PC9hPjAxMTc3ICAgICBUSVhNTF9TVFJJTkcgc3RhbmRhbG9uZTsKKzxhIG5hbWU9ImwwMTE3OCI+PC9hPjAxMTc4IH07Cis8YSBuYW1lPSJsMDExNzkiPjwvYT4wMTE3OSAKKzxhIG5hbWU9ImwwMTE4MCI+PC9hPjAxMTgwIAorPGEgbmFtZT0ibDAxMTg4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPjAxMTg4PC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4KKzxhIG5hbWU9ImwwMTE4OSI+PC9hPjAxMTg5IHsKKzxhIG5hbWU9ImwwMTE5MCI+PC9hPjAxMTkwIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgorPGEgbmFtZT0ibDAxMTkxIj48L2E+MDExOTEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KCkgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiggVGlYbWxOb2RlOjpVTktOT1dOICkgICAge30KKzxhIG5hbWU9ImwwMTE5MiI+PC9hPjAxMTkyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KCkge30KKzxhIG5hbWU9ImwwMTE5MyI+PC9hPjAxMTkzIAorPGEgbmFtZT0ibDAxMTk0Ij48L2E+MDExOTQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+JmFtcDsgY29weSApIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oIFRpWG1sTm9kZTo6VU5LTk9XTiApICAgICAgeyBjb3B5LjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2IwIj5Db3B5VG88L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gKTsgfQorPGEgbmFtZT0ibDAxMTk1Ij48L2E+MDExOTUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+JmFtcDsgY29weSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGNvcHkuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYjAiPkNvcHlUbzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiApOyB9Cis8YSBuYW1lPSJsMDExOTYiPjwvYT4wMTE5NiAKKzxhIG5hbWU9ImwwMTE5OCI+PC9hPjAxMTk4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E0Ij5DbG9uZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMjAwIj48L2E+MDEyMDAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E1Ij5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMjAxIj48L2E+MDEyMDEgCis8YSBuYW1lPSJsMDEyMDIiPjwvYT4wMTIwMiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogUGFyc2UoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworPGEgbmFtZT0ibDAxMjAzIj48L2E+MDEyMDMgCis8YSBuYW1lPSJsMDEyMDQiPjwvYT4wMTIwNCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTIwNSI+PC9hPjAxMjA1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvcHlUbyggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4qIHRhcmdldCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEyMDYiPjwvYT4wMTIwNiAKKzxhIG5hbWU9ImwwMTIwNyI+PC9hPjAxMjA3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTIwOCI+PC9hPjAxMjA4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworPGEgbmFtZT0ibDAxMjA5Ij48L2E+MDEyMDkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTIxMCI+PC9hPjAxMjEwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDEyMTEiPjwvYT4wMTIxMSAKKzxhIG5hbWU9ImwwMTIxMiI+PC9hPjAxMjEyIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTIxMyI+PC9hPjAxMjEzIAorPGEgbmFtZT0ibDAxMjE0Ij48L2E+MDEyMTQgfTsKKzxhIG5hbWU9ImwwMTIxNSI+PC9hPjAxMjE1IAorPGEgbmFtZT0ibDAxMjE2Ij48L2E+MDEyMTYgCis8YSBuYW1lPSJsMDEyMjEiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPjAxMjIxPC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPgorPGEgbmFtZT0ibDAxMjIyIj48L2E+MDEyMjIgeworPGEgbmFtZT0ibDAxMjIzIj48L2E+MDEyMjMgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDEyMjUiPjwvYT4wMTIyNSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EwIj5UaVhtbERvY3VtZW50PC9hPigpOworPGEgbmFtZT0ibDAxMjI3Ij48L2E+MDEyMjcgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMCI+VGlYbWxEb2N1bWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGRvY3VtZW50TmFtZSApOworPGEgbmFtZT0ibDAxMjI4Ij48L2E+MDEyMjggCis8YSBuYW1lPSJsMDEyMjkiPjwvYT4wMTIyOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Cis8YSBuYW1lPSJsMDEyMzAiPjwvYT4wMTIzMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDEyMzEiPjwvYT4wMTIzMSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EwIj5UaVhtbERvY3VtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IGRvY3VtZW50TmFtZSApOworPGEgbmFtZT0ibDAxMjMyIj48L2E+MDEyMzIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTIzMyI+PC9hPjAxMjMzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTIzNCI+PC9hPjAxMjM0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTAiPlRpWG1sRG9jdW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4mYW1wOyBjb3B5ICk7Cis8YSBuYW1lPSJsMDEyMzUiPjwvYT4wMTIzNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiZhbXA7IGNvcHkgKTsKKzxhIG5hbWU9ImwwMTIzNiI+PC9hPjAxMjM2IAorPGEgbmFtZT0ibDAxMjM3Ij48L2E+MDEyMzcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiB+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPigpIHt9Cis8YSBuYW1lPSJsMDEyMzgiPjwvYT4wMTIzOCAKKzxhIG5hbWU9ImwwMTI0MyI+PC9hPjAxMjQzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNiI+TG9hZEZpbGU8L2E+KCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApOworPGEgbmFtZT0ibDAxMjQ1Ij48L2E+MDEyNDUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E3Ij5TYXZlRmlsZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMjQ3Ij48L2E+MDEyNDcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E2Ij5Mb2FkRmlsZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApOworPGEgbmFtZT0ibDAxMjQ5Ij48L2E+MDEyNDkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E3Ij5TYXZlRmlsZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGZpbGVuYW1lICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTI1MCI+PC9hPjAxMjUwIAorPGEgbmFtZT0ibDAxMjUxIj48L2E+MDEyNTEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAxMjUyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMCI+MDEyNTI8L2E+IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTYiPkxvYWRGaWxlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IGZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApICAgICAgICAgICAKKzxhIG5hbWU9ImwwMTI1MyI+PC9hPjAxMjUzICAgICB7Cis8YSBuYW1lPSJsMDEyNTQiPjwvYT4wMTI1NCAgICAgICAgIFN0cmluZ1RvQnVmZmVyIGYoIGZpbGVuYW1lICk7Cis8YSBuYW1lPSJsMDEyNTUiPjwvYT4wMTI1NSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIGYuYnVmZmVyICZhbXA7JmFtcDsgTG9hZEZpbGUoIGYuYnVmZmVyLCBlbmNvZGluZyApKTsKKzxhIG5hbWU9ImwwMTI1NiI+PC9hPjAxMjU2ICAgICB9Cis8YSBuYW1lPSJsMDEyNTciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTExIj4wMTI1NzwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E3Ij5TYXZlRmlsZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBmaWxlbmFtZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gICAgICAKKzxhIG5hbWU9ImwwMTI1OCI+PC9hPjAxMjU4ICAgICB7Cis8YSBuYW1lPSJsMDEyNTkiPjwvYT4wMTI1OSAgICAgICAgIFN0cmluZ1RvQnVmZmVyIGYoIGZpbGVuYW1lICk7Cis8YSBuYW1lPSJsMDEyNjAiPjwvYT4wMTI2MCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIGYuYnVmZmVyICZhbXA7JmFtcDsgU2F2ZUZpbGUoIGYuYnVmZmVyICkpOworPGEgbmFtZT0ibDAxMjYxIj48L2E+MDEyNjEgICAgIH0KKzxhIG5hbWU9ImwwMTI2MiI+PC9hPjAxMjYyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDEyNjMiPjwvYT4wMTI2MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDEyNjgiPjwvYT4wMTI2OCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMiI+UGFyc2U8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEgPSAwLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApOworPGEgbmFtZT0ibDAxMjY5Ij48L2E+MDEyNjkgCis8YSBuYW1lPSJsMDEyNzQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj4wMTI3NDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTMiPlJvb3RFbGVtZW50PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCk7IH0KKzxhIG5hbWU9ImwwMTI3NSI+PC9hPjAxMjc1ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+Um9vdEVsZW1lbnQ8L2E+KCkgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCk7IH0KKzxhIG5hbWU9ImwwMTI3NiI+PC9hPjAxMjc2IAorPGEgbmFtZT0ibDAxMjgyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNSI+MDEyODI8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTUiPkVycm9yPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZXJyb3I7IH0KKzxhIG5hbWU9ImwwMTI4MyI+PC9hPjAxMjgzIAorPGEgbmFtZT0ibDAxMjg1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+MDEyODU8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5FcnJvckRlc2M8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZXJyb3JEZXNjLmNfc3RyICgpOyB9Cis8YSBuYW1lPSJsMDEyODYiPjwvYT4wMTI4NiAKKzxhIG5hbWU9ImwwMTI5MCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTciPjAxMjkwPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTciPkVycm9ySWQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgY29uc3QgICAgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZXJyb3JJZDsgfQorPGEgbmFtZT0ibDAxMjkxIj48L2E+MDEyOTEgCis8YSBuYW1lPSJsMDEyOTkiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij4wMTI5OTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdzwvYT4oKSAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZXJyb3JMb2NhdGlvbi5yb3crMTsgfQorPGEgbmFtZT0ibDAxMzAwIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+MDEzMDA8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+RXJyb3JDb2w8L2E+KCkgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGVycm9yTG9jYXRpb24uY29sKzE7IH0gCis8YSBuYW1lPSJsMDEzMDEiPjwvYT4wMTMwMSAKKzxhIG5hbWU9ImwwMTMyNiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPjAxMzI2PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5TZXRUYWJTaXplPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IF90YWJzaXplICkgICAgIHsgdGFic2l6ZSA9IF90YWJzaXplOyB9Cis8YSBuYW1lPSJsMDEzMjciPjwvYT4wMTMyNyAKKzxhIG5hbWU9ImwwMTMyOCI+PC9hPjAxMzI4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gVGFiU2l6ZSgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdGFic2l6ZTsgfQorPGEgbmFtZT0ibDAxMzI5Ij48L2E+MDEzMjkgCis8YSBuYW1lPSJsMDEzMzMiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIyIj4wMTMzMzwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+Q2xlYXJFcnJvcjwvYT4oKSAgICAgICAgICAgICAgICAgICAgICAgeyAgIGVycm9yID0gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZhbHNlPC9zcGFuPjsgCis8YSBuYW1lPSJsMDEzMzQiPjwvYT4wMTMzNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcklkID0gMDsgCis8YSBuYW1lPSJsMDEzMzUiPjwvYT4wMTMzNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRlc2MgPSA8c3BhbiBjbGFzcz0ic3RyaW5nbGl0ZXJhbCI+IiI8L3NwYW4+OyAKKzxhIG5hbWU9ImwwMTMzNiI+PC9hPjAxMzM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTG9jYXRpb24ucm93ID0gZXJyb3JMb2NhdGlvbi5jb2wgPSAwOyAKKzxhIG5hbWU9ImwwMTMzNyI+PC9hPjAxMzM3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vL2Vycm9yTG9jYXRpb24ubGFzdCA9IDA7IDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTMzOCI+PC9hPjAxMzM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorPGEgbmFtZT0ibDAxMzM5Ij48L2E+MDEzMzkgCis8YSBuYW1lPSJsMDEzNDEiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIzIj4wMTM0MTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMyI+UHJpbnQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj57IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjMiPlByaW50PC9hPiggc3Rkb3V0LCAwICk7IH0KKzxhIG5hbWU9ImwwMTM0MiI+PC9hPjAxMzQyIAorPGEgbmFtZT0ibDAxMzQ0Ij48L2E+MDEzNDQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjMiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCA9IDAgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMzQ1Ij48L2E+MDEzNDUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbaW50ZXJuYWwgdXNlXTwvc3Bhbj4KKzxhIG5hbWU9ImwwMTM0NiI+PC9hPjAxMzQ2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFNldEVycm9yKCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZXJyLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGVycm9yTG9jYXRpb24sIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Cis8YSBuYW1lPSJsMDEzNDciPjwvYT4wMTM0NyAKKzxhIG5hbWU9ImwwMTM0OCI+PC9hPjAxMzQ4IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+IDoKKzxhIG5hbWU9ImwwMTM0OSI+PC9hPjAxMzQ5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQgKCBUSVhNTF9PU1RSRUFNICogb3V0KSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxMzUwIj48L2E+MDEzNTAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbaW50ZXJuYWwgdXNlXTwvc3Bhbj4KKzxhIG5hbWU9ImwwMTM1MSI+PC9hPjAxMzUxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNiMSI+Q2xvbmU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTM1MiI+PC9hPjAxMzUyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KKzxhIG5hbWU9ImwwMTM1MyI+PC9hPjAxMzUzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworPGEgbmFtZT0ibDAxMzU0Ij48L2E+MDEzNTQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTM1NSI+PC9hPjAxMzU1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTM1NiI+PC9hPjAxMzU2IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKKzxhIG5hbWU9ImwwMTM1NyI+PC9hPjAxMzU3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvcHlUbyggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogdGFyZ2V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTM1OCI+PC9hPjAxMzU4IAorPGEgbmFtZT0ibDAxMzU5Ij48L2E+MDEzNTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gZXJyb3I7Cis8YSBuYW1lPSJsMDEzNjAiPjwvYT4wMTM2MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+ICBlcnJvcklkOworPGEgbmFtZT0ibDAxMzYxIj48L2E+MDEzNjEgICAgIFRJWE1MX1NUUklORyBlcnJvckRlc2M7Cis8YSBuYW1lPSJsMDEzNjIiPjwvYT4wMTM2MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IHRhYnNpemU7Cis8YSBuYW1lPSJsMDEzNjMiPjwvYT4wMTM2MyAgICAgVGlYbWxDdXJzb3IgZXJyb3JMb2NhdGlvbjsKKzxhIG5hbWU9ImwwMTM2NCI+PC9hPjAxMzY0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IHVzZU1pY3Jvc29mdEJPTTsgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHRoZSBVVEYtOCBCT00gd2VyZSBmb3VuZCB3aGVuIHJlYWQuIE5vdGUgdGhpcywgYW5kIHRyeSB0byB3cml0ZS48L3NwYW4+Cis8YSBuYW1lPSJsMDEzNjUiPjwvYT4wMTM2NSB9OworPGEgbmFtZT0ibDAxMzY2Ij48L2E+MDEzNjYgCis8YSBuYW1lPSJsMDEzNjciPjwvYT4wMTM2NyAKKzxhIG5hbWU9ImwwMTQ0OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPjAxNDQ4PC9hPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPgorPGEgbmFtZT0ibDAxNDQ5Ij48L2E+MDE0NDkgeworPGEgbmFtZT0ibDAxNDUwIj48L2E+MDE0NTAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Cis8YSBuYW1lPSJsMDE0NTIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EwIj4wMTQ1MjwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTAiPlRpWG1sSGFuZGxlPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIF9ub2RlICkgICAgICAgICAgICAgICAgIHsgdGhpcy0mZ3Q7bm9kZSA9IF9ub2RlOyB9Cis8YSBuYW1lPSJsMDE0NTQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExIj4wMTQ1NDwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTAiPlRpWG1sSGFuZGxlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mYW1wOyByZWYgKSAgICAgICAgICAgeyB0aGlzLSZndDtub2RlID0gcmVmLjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjcjAiPm5vZGU8L2E+OyB9Cis8YSBuYW1lPSJsMDE0NTUiPjwvYT4wMTQ1NSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mYW1wOyByZWYgKSB7IHRoaXMtJmd0O25vZGUgPSByZWYuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNyMCI+bm9kZTwvYT47IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAqPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+OyB9Cis8YSBuYW1lPSJsMDE0NTYiPjwvYT4wMTQ1NiAKKzxhIG5hbWU9ImwwMTQ1OCI+PC9hPjAxNDU4ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMyI+Rmlyc3RDaGlsZDwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxNDYwIj48L2E+MDE0NjAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EzIj5GaXJzdENoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxNDYyIj48L2E+MDE0NjIgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OworPGEgbmFtZT0ibDAxNDY0Ij48L2E+MDE0NjQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTQ2NSI+PC9hPjAxNDY1IAorPGEgbmFtZT0ibDAxNDY5Ij48L2E+MDE0NjkgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E3Ij5DaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBpbmRleCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Cis8YSBuYW1lPSJsMDE0NzMiPjwvYT4wMTQ3MyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTciPkNoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGluZGV4ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTQ3OCI+PC9hPjAxNDc4ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOSI+Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiB2YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGluZGV4ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTQ4MyI+PC9hPjAxNDgzICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOSI+Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGluZGV4ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKKzxhIG5hbWU9ImwwMTQ4NCI+PC9hPjAxNDg0IAorPGEgbmFtZT0ibDAxNDg1Ij48L2E+MDE0ODUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgorPGEgbmFtZT0ibDAxNDg2Ij48L2E+MDE0ODYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMyI+Rmlyc3RDaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMyI+Rmlyc3RDaGlsZDwvYT4oIF92YWx1ZS5jX3N0cigpICk7IH0KKzxhIG5hbWU9ImwwMTQ4NyI+PC9hPjAxNDg3ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCBfdmFsdWUuY19zdHIoKSApOyB9Cis8YSBuYW1lPSJsMDE0ODgiPjwvYT4wMTQ4OCAKKzxhIG5hbWU9ImwwMTQ4OSI+PC9hPjAxNDg5ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNyI+Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gaW5kZXggKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNyI+Q2hpbGQ8L2E+KCBfdmFsdWUuY19zdHIoKSwgaW5kZXggKTsgfQorPGEgbmFtZT0ibDAxNDkwIj48L2E+MDE0OTAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E5Ij5DaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gaW5kZXggKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E5Ij5DaGlsZEVsZW1lbnQ8L2E+KCBfdmFsdWUuY19zdHIoKSwgaW5kZXggKTsgfQorPGEgbmFtZT0ibDAxNDkxIj48L2E+MDE0OTEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTQ5MiI+PC9hPjAxNDkyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KKzxhIG5hbWU9ImwwMTQ5NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE1Ij4wMTQ5NDwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNSI+Tm9kZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbm9kZTsgfSAKKzxhIG5hbWU9ImwwMTQ5NiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE2Ij4wMTQ5NjwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNiI+RWxlbWVudDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCAoIG5vZGUgJmFtcDsmYW1wOyBub2RlLSZndDs8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSApID8gbm9kZS0mZ3Q7PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCkgOiAwICk7IH0KKzxhIG5hbWU9ImwwMTQ5OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE3Ij4wMTQ5ODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNyI+VGV4dDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCAoIG5vZGUgJmFtcDsmYW1wOyBub2RlLSZndDs8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSApID8gbm9kZS0mZ3Q7PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgOiAwICk7IH0KKzxhIG5hbWU9ImwwMTUwMCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE4Ij4wMTUwMDwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExOCI+VW5rbm93bjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoICggbm9kZSAmYW1wOyZhbXA7IG5vZGUtJmd0OzxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpICkgPyBub2RlLSZndDs8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKSA6IDAgKTsgfQorPGEgbmFtZT0ibDAxNTAxIj48L2E+MDE1MDEgCis8YSBuYW1lPSJsMDE1MDIiPjwvYT4wMTUwMiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Cis8YSBuYW1lPSJsMDE1MDMiPjwvYT4wMTUwMyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIG5vZGU7Cis8YSBuYW1lPSJsMDE1MDQiPjwvYT4wMTUwNCB9OworPGEgbmFtZT0ibDAxNTA1Ij48L2E+MDE1MDUgCis8YSBuYW1lPSJsMDE1MDYiPjwvYT4wMTUwNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZkZWYgX01TQ19WRVI8L3NwYW4+Cis8YSBuYW1lPSJsMDE1MDciPjwvYT4wMTUwNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I3ByYWdtYSB3YXJuaW5nKCBwb3AgKTwvc3Bhbj4KKzxhIG5hbWU9ImwwMTUwOCI+PC9hPjAxNTA4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDE1MDkiPjwvYT4wMTUwOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8YSBuYW1lPSJsMDE1MTAiPjwvYT4wMTUxMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWY8L3NwYW4+Cis8YSBuYW1lPSJsMDE1MTEiPjwvYT4wMTUxMSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Cis8L3ByZT48L2Rpdj48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKKzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Cis8aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy90dXRvcmlhbDAuaHRtbCBiL2RvY3MvdHV0b3JpYWwwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYyNWQzNwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvdHV0b3JpYWwwLmh0bWwKQEAgLTAsMCArMSwzMjMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KKzx0aXRsZT5UaW55WG1sOiBUaW55WE1MIFR1dG9yaWFsPC90aXRsZT4KKzxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD48Ym9keT4KKzwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Cis8ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Cis8ZGl2IGNsYXNzPSJuYXYiPgorPGEgY2xhc3M9ImVsIiBocmVmPSJpbmRleC5odG1sIj5pbmRleDwvYT48L2Rpdj4KKzxoMT48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJ0dXRvcmlhbDAiPlRpbnlYTUwgVHV0b3JpYWw8L2E+PC9oMT48aDE+VHV0b3JpYWwgUHJlbGltaW5hcnkgPC9oMT4KKzxwPgorVGhlc2UgcGFnZXMgY29udGFpbnMgYSBidW5jaCBvZiBleGFtcGxlcyBvZiB1c2luZyBUaW55WG1sLjxwPgorRWFjaCBkZW1vIGlzIHdyaXR0ZW4gaW4gYSBzdGFuZGFsb25lIGZ1bmN0aW9uLiBJZiB5b3Ugd2FudCB0byB0cnkgdGhlIGNvZGUsIGFsbCB5b3UgbmVlZCB0byBkbyBpcyBjb3B5L3Bhc3RlIHRoZSBjb2RlIGludG8gYSBmaWxlLCB0aGVuIGhhdmUgYSBtYWluIHRvIGNhbGwgaXQuPHA+CitTbyBpZiB0aGUgZXhhbXBsZSBoYXMgYSBmdW5jdGlvbjo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CXZvaWQgd3JpdGVfc2ltcGxlX2RvYygpCisJeworCQkuLi4KKwl9CisJPC9wcmU+PC9kaXY+PHA+Cit0aGVuIHRoZSAqY29tcGxldGUqIHByb2dyYW0geW91IG5lZWQgdG8gdHJ5IGl0IGlzOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JI2luY2x1ZGUgInN0ZGFmeC5oIiAvLyAmbHQ7LS0geW91IE1JR0hUIG5lZWQgdGhpcworCSNpbmNsdWRlICJ0aW55eG1sLmgiIC8vICZsdDstLSB5b3UgZGVmaW5pdGVseSBuZWVkIHRoaXMgOykKKworCXZvaWQgd3JpdGVfc2ltcGxlX2RvYygpCisJeworCQkuLi4KKwl9CisKKwl2b2lkIG1haW4oIHZvaWQgKQorCXsKKwkJd3JpdGVfc2ltcGxlX2RvYygpOworCX0KKwk8L3ByZT48L2Rpdj48cD4KK1R3byBleGFtcGxlIFhNTCBkYXRhc2V0cy9maWxlcyB3aWxsIGJlIHVzZWQuIFRoZSBmaXJzdCBsb29rcyBsaWtlIHRoaXM6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiID8mZ3Q7CisJJmx0O0hlbGxvJmd0O1dvcmxkJmx0Oy9IZWxsbyZndDsKKwk8L3ByZT48L2Rpdj48cD4KK1RoZSBvdGhlcjo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDs/eG1sIHZlcnNpb249IjEuMCIgPyZndDsKKwkmbHQ7cG9ldHJ5Jmd0OworCQkmbHQ7dmVyc2UmZ3Q7CisJCQlBbGFzCisJCQkgIEdyZWF0IFdoYXRldmVyCisJCQkJQWxhcyAoYWdhaW4pCisJCSZsdDsvdmVyc2UmZ3Q7CisJJmx0Oy9wb2V0cnkmZ3Q7CisJPC9wcmU+PC9kaXY+PHA+Cis8aDE+R2V0dGluZyBTdGFydGVkIDwvaDE+Cis8cD4KKzxoMj5Mb2FkIFhNTCBmcm9tIGEgZmlsZSA8L2gyPgorPHA+CitMb2FkaW5nIGEgZmlsZSBpcyBhcyBzaW1wbGUgYXM6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgl2b2lkIGxvYWRfZmlsZSggKQorCXsKKwkJVGlYbWxEb2N1bWVudCBkb2MoICJkZW1vLnhtbCIgKTsKKwkJYm9vbCBsb2FkT2theSA9IGRvYy5Mb2FkRmlsZSgpOworCisJCWlmICggbG9hZE9rYXkgKQorCQl7CisJCQkvLyBZb3VyIGRvY3VtZW50IGlzIGxvYWRlZCAtIGRvIHdoYXQgeW91IGxpa2UKKwkJCS8vIHdpdGggaXQuCisJCQkvLworCQkJLy8gSGVyZSB3ZSdsbCBkdW1wIHRoZSBzdHJ1Y3R1cmUgdG8gU1RET1VULAorCQkJLy8ganVzdCBmb3IgZXhhbXBsZQorCQkJZHVtcF90b19zdGRvdXQoICZhbXA7ZG9jICk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvLyBsb2FkIGZhaWxlZAorCQl9CisJfQorCTwvcHJlPjwvZGl2PjxwPgorVGhlIGBgZHVtcF90b19zdGRvdXRgYCBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoZSBzZWN0aW9uIGBEdW1wIHN0cnVjdHVyZSBvZiBhIERvY3VtZW50IHRvIFNURE9VVGAgYmVsb3cuIElmIHlvdSBydW4gdGhpcyBwcm9ncmFtIHdpdGggdGhpcyBYTUw6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiID8mZ3Q7CisJJmx0O0hlbGxvJmd0O1dvcmxkJmx0Oy9IZWxsbyZndDsKKwk8L3ByZT48L2Rpdj48cD4KK1lvdSdsbCBzZWUgdGhpczo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CURPQ1VNRU5UCisJKyBERUNMQVJBVElPTgorCSsgRUxFTUVOVCBIZWxsbworCSAgKyBURVhUW1dvcmxkXQorCTwvcHJlPjwvZGl2PjxwPgorPGgyPkJ1aWxkaW5nIERvY3VtZW50cyBQcm9ncmFtYXRpY2FsbHkgPC9oMj4KKzxwPgorRXhhbXBsZTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CXZvaWQgd3JpdGVfc2ltcGxlX2RvYyggKQorCXsKKwkJLy8gTWFrZSB4bWw6ICZsdDs/eG1sIC4uJmd0OyZsdDtIZWxsbyZndDtXb3JsZCZsdDsvSGVsbG8mZ3Q7CisJCVRpWG1sRG9jdW1lbnQgZG9jOworCQlUaVhtbERlY2xhcmF0aW9uICogZGVjbCA9IG5ldyBUaVhtbERlY2xhcmF0aW9uKCAiMS4wIiwgIiIsICIiICk7CisJCVRpWG1sRWxlbWVudCAqIGVsZW1lbnQgPSBuZXcgVGlYbWxFbGVtZW50KCAiSGVsbG8iICk7CisJCVRpWG1sVGV4dCAqIHRleHQgPSBuZXcgVGlYbWxUZXh0KCAiV29ybGQiICk7CisJCWVsZW1lbnQtJmd0O0xpbmtFbmRDaGlsZCggdGV4dCApOworCQlkb2MuTGlua0VuZENoaWxkKCBkZWNsICk7CisJCWRvYy5MaW5rRW5kQ2hpbGQoIGVsZW1lbnQgKTsKKwkJCisJCWR1bXBfdG9fc3Rkb3V0KCAmYW1wO2RvYyApOworCQlkb2MuU2F2ZUZpbGUoICJtYWRlQnlIYW5kLnhtbCIgKTsKKwl9CisJPC9wcmU+PC9kaXY+PHA+CitBbHRlcm5hdGl2ZWx5OjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCB3cml0ZV9zaW1wbGVfZG9jMiggKQorCXsKKwkJLy8gc2FtZSBhcyB3cml0ZV9zaW1wbGVfZG9jMSBidXQgYWRkIGVhY2ggbm9kZQorCQkvLyBhcyBlYXJseSBhcyBwb3NzaWJsZSBpbnRvIHRoZSB0cmVlLgorCQorCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJVGlYbWxEZWNsYXJhdGlvbiAqIGRlY2wgPSBuZXcgVGlYbWxEZWNsYXJhdGlvbiggIjEuMCIsICIiLCAiIiApOworCQlkb2MuTGlua0VuZENoaWxkKCBkZWNsICk7CisJCQorCQlUaVhtbEVsZW1lbnQgKiBlbGVtZW50ID0gbmV3IFRpWG1sRWxlbWVudCggIkhlbGxvIiApOworCQlkb2MuTGlua0VuZENoaWxkKCBlbGVtZW50ICk7CisJCQorCQlUaVhtbFRleHQgKiB0ZXh0ID0gbmV3IFRpWG1sVGV4dCggIldvcmxkIiApOworCQllbGVtZW50LSZndDtMaW5rRW5kQ2hpbGQoIHRleHQgKTsKKwkJCisJCWR1bXBfdG9fc3Rkb3V0KCAmYW1wO2RvYyApOworCQlkb2MuU2F2ZUZpbGUoICJtYWRlQnlIYW5kMi54bWwiICk7CisJfQorCTwvcHJlPjwvZGl2PjxwPgorQm90aCBvZiB0aGVzZSBwcm9kdWNlIHRoZSBzYW1lIFhNTCwgbmFtZWx5OjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiA/Jmd0OworCSZsdDtIZWxsbyZndDtXb3JsZCZsdDsvSGVsbG8mZ3Q7CisJPC9wcmU+PC9kaXY+PHA+CitPciBpbiBzdHJ1Y3R1cmUgZm9ybTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CURPQ1VNRU5UCisJKyBERUNMQVJBVElPTgorCSsgRUxFTUVOVCBIZWxsbworCSAgKyBURVhUW1dvcmxkXQorCTwvcHJlPjwvZGl2PjxwPgorPGgyPlNhdmluZyBEb2N1bWVudHMgdG8gRmlsZSA8L2gyPgorPHA+CitUaGlzIGZ1bmN0aW9uOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCB3cml0ZV9zaW1wbGVfZG9jMyggKSAgCisJeyAgCisJCS8vIFRoaXMgZXhhbXBsZSBjb3VydGVzeSBvZiBwb2xvY29sZWdlCisJIAorCQlUaVhtbERvY3VtZW50IGRvYzsgIAorCQlUaVhtbERlY2xhcmF0aW9uICogZGVjbCA9IG5ldyBUaVhtbERlY2xhcmF0aW9uKCAiMS4wIiwgIiIsICIiICk7ICAKKwkJZG9jLkxpbmtFbmRDaGlsZCggZGVjbCApOyAgCisJIAorCQlUaVhtbEVsZW1lbnQgKiBlbGVtZW50ID0gbmV3IFRpWG1sRWxlbWVudCggIkhlbGxvIiApOyAgCisJCWRvYy5MaW5rRW5kQ2hpbGQoIGVsZW1lbnQgKTsgIAorCSAKKwkJVGlYbWxUZXh0ICogdGV4dCA9IG5ldyBUaVhtbFRleHQoICJPcGVuaW5nIGEgbmV3IHNhbHV0YXRpb24iICk7ICAKKwkJZWxlbWVudC0mZ3Q7TGlua0VuZENoaWxkKCB0ZXh0ICk7ICAKKwkgCisJCVRpWG1sRWxlbWVudCAqIGVsZW1lbnQyID0gbmV3IFRpWG1sRWxlbWVudCggIkdyZWV0aW5nIiApOyAgCisJCWVsZW1lbnQtJmd0O0xpbmtFbmRDaGlsZCggZWxlbWVudDIgKTsgIAorCSAKKwkJVGlYbWxUZXh0ICogdGV4dDIgPSBuZXcgVGlYbWxUZXh0KCAiSG93IGFyZSB5b3U/IiApOyAgCisJCWVsZW1lbnQyLSZndDtMaW5rRW5kQ2hpbGQoIHRleHQyICk7ICAKKwkgCisJCVRpWG1sRWxlbWVudCAqIGVsZW1lbnQzID0gbmV3IFRpWG1sRWxlbWVudCggIkxhbmd1YWdlIiApOyAgCisJCWVsZW1lbnQyLSZndDtMaW5rRW5kQ2hpbGQoIGVsZW1lbnQzICk7ICAKKwkgCisJCVRpWG1sVGV4dCAqIHRleHQzID0gbmV3IFRpWG1sVGV4dCggIkVuZ2xpc2giICk7ICAKKwkJZWxlbWVudDMtJmd0O0xpbmtFbmRDaGlsZCggdGV4dDMgKTsgIAorCSAKKwkJVGlYbWxFbGVtZW50ICogZWxlbWVudDQgPSBuZXcgVGlYbWxFbGVtZW50KCAiRXhjbGFtYXRpb24iICk7ICAKKwkJZWxlbWVudC0mZ3Q7TGlua0VuZENoaWxkKCBlbGVtZW50NCApOyAgCisJIAorCQlUaVhtbFRleHQgKiB0ZXh0NCA9IG5ldyBUaVhtbFRleHQoICJZb3UgaGF2ZSBjaGlsZHJlbiEiICk7ICAKKwkJZWxlbWVudDQtJmd0O0xpbmtFbmRDaGlsZCggdGV4dDQgKTsgIAorCSAKKwkJZHVtcF90b19zdGRvdXQoICZhbXA7ZG9jICk7CisJCWRvYy5TYXZlRmlsZSggIm1hZGVCeUhhbmQzLnhtbCIgKTsgIAorCX0gIAorCTwvcHJlPjwvZGl2PjxwPgorUHJvZHVjZXMgdGhpcyBzdHJ1Y3R1cmU6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglEb2N1bWVudAorCSsgRGVjbGFyYXRpb24KKwkrIEVsZW1lbnQgIkhlbGxvIgorCSAgKyBUZXh0OiBbT3BlbmluZyBhIG5ldyBzYWx1dGF0aW9uXQorCSAgKyBFbGVtZW50ICJHcmVldGluZyIKKwkJKyBUZXh0OiBbSG93IGFyZSB5b3U/XQorCQkrIEVsZW1lbnQgIkxhbmd1YWdlIgorCQkgICsgVGV4dDogW0VuZ2xpc2hdCisJICArIEVsZW1lbnQgIkV4Y2xhbWF0aW9uIgorCQkrIFRleHQ6IFtZb3UgaGF2ZSBjaGlsZHJlbiFdCisJPC9wcmU+PC9kaXY+PHA+CitUaGUgZmlsZSBgYG1hZGVCeUhhbmQzLnhtbGBgIGxvb2tzIGV4YWN0bHkgbGlrZSB0aGlzIChpbmNsdWRpbmcgaW5kZW50cyk6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiID8mZ3Q7CisJJmx0O0hlbGxvJmd0O09wZW5pbmcgYSBuZXcgc2FsdXRhdGlvbgorCSAgICAmbHQ7R3JlZXRpbmcmZ3Q7SG93IGFyZSB5b3U/CisJICAgICAgICAmbHQ7TGFuZ3VhZ2UmZ3Q7RW5nbGlzaCZsdDsvTGFuZ3VhZ2UmZ3Q7CisJICAgICZsdDsvR3JlZXRpbmcmZ3Q7CisJICAgICZsdDtFeGNsYW1hdGlvbiZndDtZb3UgaGF2ZSBjaGlsZHJlbiEmbHQ7L0V4Y2xhbWF0aW9uJmd0OworCSZsdDsvSGVsbG8mZ3Q7CisJPC9wcmU+PC9kaXY+PHA+CitJIHdhcyBzdXJwcmlzZWQgdGhhdCBUaW55WG1sLCBieSBkZWZhdWx0LCB3cml0ZXMgdGhlIFhNTCBpbiB3aGF0IG90aGVyIEFQSXMgY2FsbCBhICJwcmV0dHkiIGZvcm1hdCAtIGl0IG1vZGlmaWVzIHRoZSB3aGl0ZXNwYWNlIG9mIHRleHQgb2YgZWxlbWVudHMgdGhhdCBjb250YWluIG90aGVyIG5vZGVzIHNvIHRoYXQgd3JpdGluZyB0aGUgdHJlZSBpbmNsdWRlcyBhbiBpbmRpY2F0aW9uIG9mIG5lc3RpbmcgbGV2ZWwuPHA+CitJIGhhdmVuJ3QgbG9va2VkIHlldCB0byBzZWUgaWYgdGhlcmUgaXMgYSB3YXkgdG8gdHVybiBvZmYgaW5kZW50aW5nIHdoZW4gd3JpdGluZyBhIGZpbGUgLSBpdHMgYm91bmQgdG8gYmUgZWFzeS48cD4KK1tMZWU6IEl0J3MgZWFzeSBpbiBTVEwgbW9kZSwganVzdCB1c2UgY291dCAmbHQ7Jmx0OyBteURvYy4gTm9uLVNUTCBtb2RlIGlzIGFsd2F5cyBpbiAicHJldHR5IiBmb3JtYXQuIEFkZGluZyBhIHN3aXRjaCB3b3VsZCBiZSBhIG5pY2UgZmVhdHVyZSBhbmQgaGFzIGJlZW4gcmVxdWVzdGVkLl08cD4KKzxoMT5JdGVyYXRpbmcgT3ZlciBEb2N1bWVudHMgPC9oMT4KKzxwPgorPGgyPkR1bXAgc3RydWN0dXJlIG9mIGEgRG9jdW1lbnQgdG8gU1RET1VUIDwvaDI+Cis8cD4KK09mdGVuIHdoZW4geW91J3JlIHN0YXJ0aW5nIGl0cyBoZWxwZnVsIGFuZCByZWFzc3VyaW5nIHRvIGtub3cgdGhhdCB5b3UncmUgZG9jdW1lbnQgZ290IGxvYWRlZCBhcyB5b3UgZXhwZWN0IGl0IHRvLjxwPgorQmVsb3cgSSd2ZSBkZWZpbmVkIGEgZnVuY3Rpb24gdG8gd2FsayBhIGRvY3VtZW50IGFuZCB3cml0ZSBjb250ZW50cyB0byBTVERPVVQ6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkvLyBhIHV0aWxpdHkgZnVuY3Rpb24gZGVmaW5pbmcgYSB2ZXJ5IHNpbXBsZSBtZXRob2QgdG8gaW5kZW50IGEgbGluZSBvZiB0ZXh0CisJY29uc3QgY2hhciAqIGdldEluZGVudCggdW5zaWduZWQgaW50IG51bUluZGVudHMgKQorCXsKKwkJc3RhdGljIGNvbnN0IGNoYXIgKiBwSU5ERU5UID0gIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOworCQlzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IExFTkdUSCA9IHN0cmxlbiggcElOREVOVCApOworCQorCQlpZiAoIG51bUluZGVudHMgJmd0OyBMRU5HVEggKSBudW1JbmRlbnRzID0gTEVOR1RIOworCQorCQlyZXR1cm4gJmFtcDtwSU5ERU5UWyBMRU5HVEgtbnVtSW5kZW50cyBdOworCX0KKwkKKwl2b2lkIGR1bXBfdG9fc3Rkb3V0KCBUaVhtbE5vZGUgKiBwUGFyZW50LCB1bnNpZ25lZCBpbnQgaW5kZW50ID0gMCApCisJeworCQlpZiAoICFwUGFyZW50ICkgcmV0dXJuOworCQorCQlUaVhtbFRleHQgKnBUZXh0OworCQlpbnQgdCA9IHBQYXJlbnQtJmd0O1R5cGUoKTsKKwkJcHJpbnRmKCAiJXMiLCBnZXRJbmRlbnQoIGluZGVudCkpOworCQorCQlzd2l0Y2ggKCB0ICkKKwkJeworCQljYXNlIFRpWG1sTm9kZTo6RE9DVU1FTlQ6CisJCQlwcmludGYoICJEb2N1bWVudCIgKTsKKwkJCWJyZWFrOworCQorCQljYXNlIFRpWG1sTm9kZTo6RUxFTUVOVDoKKwkJCXByaW50ZiggIkVsZW1lbnQgXCIlc1wiIiwgcFBhcmVudC0mZ3Q7VmFsdWUoKSApOworCQkJYnJlYWs7CisJCisJCWNhc2UgVGlYbWxOb2RlOjpDT01NRU5UOgorCQkJcHJpbnRmKCAiQ29tbWVudDogXCIlc1wiIiwgcFBhcmVudC0mZ3Q7VmFsdWUoKSk7CisJCQlicmVhazsKKwkKKwkJY2FzZSBUaVhtbE5vZGU6OlVOS05PV046CisJCQlwcmludGYoICJVbmtub3duIiApOworCQkJYnJlYWs7CisJCisJCWNhc2UgVGlYbWxOb2RlOjpURVhUOgorCQkJcFRleHQgPSBwUGFyZW50LSZndDtUb1RleHQoKTsKKwkJCXByaW50ZiggIlRleHQ6IFslc10iLCBwVGV4dC0mZ3Q7VmFsdWUoKSApOworCQkJYnJlYWs7CisJCisJCWNhc2UgVGlYbWxOb2RlOjpERUNMQVJBVElPTjoKKwkJCXByaW50ZiggIkRlY2xhcmF0aW9uIiApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCQlwcmludGYoICJcbiIgKTsKKwkKKwkJVGlYbWxOb2RlICogcENoaWxkOworCQorCQlmb3IgKCBwQ2hpbGQgPSBwUGFyZW50LSZndDtGaXJzdENoaWxkKCk7IHBDaGlsZCAhPSAwOyBwQ2hpbGQgPSBwQ2hpbGQtJmd0O05leHRTaWJsaW5nKCkpIAorCQl7CisJCQlkdW1wX3RvX3N0ZG91dCggcENoaWxkLCBpbmRlbnQrMiApOworCQl9CisJfQorCTwvcHJlPjwvZGl2PjxwPgorVG8gbG9hZCBhIGZpbGUgYW5kIGR1bXAgaXRzIHN0cnVjdHVyZTo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CXZvaWQgbG9hZF9hbmRfZGlzcGxheSggKQorCXsKKwkJLy8gaW1wb3J0YW50IGZvciB0aGUgcG9ldHJ5IGRlbW8sIGJ1dCB5b3UgbWF5IG5vdCBuZWVkIHRoaXMgCisJCS8vIGluIHlvdXIgb3duIHByb2plY3RzCisJCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBmYWxzZSApOworCQorCQlUaVhtbERvY3VtZW50IGRvYyggImRlbW8ueG1sIiApOworCQlib29sIGxvYWRPa2F5ID0gZG9jLkxvYWRGaWxlKCk7CisJCisJCWlmICggbG9hZE9rYXkgKQorCQl7CisJCQlkdW1wX3RvX3N0ZG91dCggJmFtcDtkb2MgKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXByaW50ZiggIlNvbWV0aGluZyB3ZW50IHdyb25nXG4iICk7CisJCX0KKwl9CisJPC9wcmU+PC9kaXY+PHA+CitJZiB5b3UgcnVuIHRoaXMgd2l0aCB0aGUgZmlyc3QgWE1MIGZpbGUgeW91J2xsIHNlZSB0aGlzIG9uIFNURE9VVDo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CURPQ1VNRU5UCisJKyBERUNMQVJBVElPTgorCSsgRUxFTUVOVCBIZWxsbworCSAgKyBURVhUW1dvcmxkXQorCTwvcHJlPjwvZGl2PjxwPgorYW5kIG9uIHRoZSBzZWNvbmQgWE1MIGZpbGU6PHA+Cis8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglET0NVTUVOVAorCSsgREVDTEFSQVRJT04KKwkrIEVMRU1FTlQgcG9ldHJ5CisJICArIENPTU1FTlQ6ICBteSBncmVhdCB3b3JrIG9mIGFydAorCSAgKyBFTEVNRU5UIHZlcnNlCisJICAgICsgVEVYVFsKKwlBbGFzCisJICBHcmVhdCBXaGF0ZXZlcgorCSAgICBBbGFzIChhZ2FpbikKKwldCisJPC9wcmU+PC9kaXY+PHA+CitOb3RlIHRoYXQgaWYgeW91IGNhbGwgZHVtcF90b19zdGRvdXQgbGlrZSB0aGlzOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JZHVtcF90b19zdGRvdXQoIGRvYy5Sb290RWxlbWVudCgpKTsKKwk8L3ByZT48L2Rpdj48cD4KK1lvdSdsbCBzZWUgdGhpcyBpbnN0ZWFkOjxwPgorPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRUxFTUVOVCBIZWxsbworCSsgVEVYVFtXb3JsZF0KKwk8L3ByZT48L2Rpdj48cD4KK2FuZDo8cD4KKzxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CUVMRU1FTlQgcG9ldHJ5CisJKyBDT01NRU5UOiAgbXkgZ3JlYXQgd29yayBvZiBhcnQKKwkrIEVMRU1FTlQgdmVyc2UKKyAgCSsgVEVYVFsKKwlBbGFzCisJICBHcmVhdCBXaGF0ZXZlcgorCSAgICBBbGFzIChhZ2FpbikKKwldIAorCTwvcHJlPjwvZGl2PjxwPgorPGVtPiBBdXRob3JzIGFuZCBDaGFuZ2VzIDx1bD4KKzxsaT4KK1dyaXR0ZW4gYnkgRWxsZXJzLCBBcHJpbCAyMDA1ICA8L2xpPgorPGxpPgorTWlub3IgZWRpdHMgYW5kIGludGVncmF0aW9uIGludG8gZG9jIHN5c3RlbSwgTGVlIFRob21hc29uIFNlcHRlbWJlciAyMDA1ICA8L2xpPgorPC91bD4KKzwvZW0+IDxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOworPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KKzxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9lY2hvLmRzcCBiL2VjaG8uZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZWI4OTYKLS0tIC9kZXYvbnVsbAorKysgYi9lY2hvLmRzcApAQCAtMCwwICsxLDExMyBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJlY2hvIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KKyMgKiogRE8gTk9UIEVESVQgKioNCisNCisjIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMNCisNCitDRkc9ZWNobyAtIFdpbjMyIERlYnVnDQorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJlY2hvLm1hayIuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJlY2hvLm1hayIgQ0ZHPSJlY2hvIC0gV2luMzIgRGVidWciDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQorIU1FU1NBR0UgDQorIU1FU1NBR0UgImVjaG8gLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJlY2hvIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQorIU1FU1NBR0UgDQorDQorIyBCZWdpbiBQcm9qZWN0DQorIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCisjIFBST1AgU2NjX1Byb2pOYW1lICIiDQorIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCitDUFA9Y2wuZXhlDQorUlNDPXJjLmV4ZQ0KKw0KKyFJRiAgIiQoQ0ZHKSIgPT0gImVjaG8gLSBXaW4zMiBSZWxlYXNlIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAiZWNob1JlbGVhc2UiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgImVjaG9SZWxlYXNlIg0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIlRJWE1MX1VTRV9TVEwiIC9ZWCAvRkQgL2MNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCisjIEFERCBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJlY2hvIC0gV2luMzIgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiZWNob19fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgImVjaG9fX19XaW4zMl9EZWJ1ZyINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAiZWNob0RlYnVnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJlY2hvRGVidWciDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIlRJWE1MX1VTRV9TVEwiIC9GUiAvWVggL0ZEIC9HWiAvYw0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElOSzMyPWxpbmsuZXhlDQorIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KKyMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQorDQorIUVORElGIA0KKw0KKyMgQmVnaW4gVGFyZ2V0DQorDQorIyBOYW1lICJlY2hvIC0gV2luMzIgUmVsZWFzZSINCisjIE5hbWUgImVjaG8gLSBXaW4zMiBEZWJ1ZyINCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5ceG1sdGVzdGVyXGJ1Z3Rlc3QuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXN0ci5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55c3RyLmgNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55eG1sLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWwuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWxlcnJvci5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55eG1scGFyc2VyLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgVGFyZ2V0DQorIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3JlYWRtZS50eHQgYi9yZWFkbWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyODA4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9yZWFkbWUudHh0CkBAIC0wLDAgKzEsNTAyIEBACisvKiogQG1haW5wYWdlCisKKzxoMT4gVGlueVhtbCA8L2gxPgorCitUaW55WG1sIGlzIGEgc2ltcGxlLCBzbWFsbCwgQysrIFhNTCBwYXJzZXIgdGhhdCBjYW4gYmUgZWFzaWx5IAoraW50ZWdyYXRpbmcgaW50byBvdGhlciBwcm9ncmFtcy4KKworPGgyPiBXaGF0IGl0IGRvZXMuIDwvaDI+CisJCitJbiBicmllZiwgVGlueVhtbCBwYXJzZXMgYW4gWE1MIGRvY3VtZW50LCBhbmQgYnVpbGRzIGZyb20gdGhhdCBhIAorRG9jdW1lbnQgT2JqZWN0IE1vZGVsIChET00pIHRoYXQgY2FuIGJlIHJlYWQsIG1vZGlmaWVkLCBhbmQgc2F2ZWQuCisKK1hNTCBzdGFuZHMgZm9yICJlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZS4iIEl0IGFsbG93cyB5b3UgdG8gY3JlYXRlIAoreW91ciBvd24gZG9jdW1lbnQgbWFya3Vwcy4gV2hlcmUgSFRNTCBkb2VzIGEgdmVyeSBnb29kIGpvYiBvZiBtYXJraW5nIAorZG9jdW1lbnRzIGZvciBicm93c2VycywgWE1MIGFsbG93cyB5b3UgdG8gZGVmaW5lIGFueSBraW5kIG9mIGRvY3VtZW50IAorbWFya3VwLCBmb3IgZXhhbXBsZSBhIGRvY3VtZW50IHRoYXQgZGVzY3JpYmVzIGEgInRvIGRvIiBsaXN0IGZvciBhbiAKK29yZ2FuaXplciBhcHBsaWNhdGlvbi4gWE1MIGlzIGEgdmVyeSBzdHJ1Y3R1cmVkIGFuZCBjb252ZW5pZW50IGZvcm1hdC4KK0FsbCB0aG9zZSByYW5kb20gZmlsZSBmb3JtYXRzIGNyZWF0ZWQgdG8gc3RvcmUgYXBwbGljYXRpb24gZGF0YSBjYW4gCithbGwgYmUgcmVwbGFjZWQgd2l0aCBYTUwuIE9uZSBwYXJzZXIgZm9yIGV2ZXJ5dGhpbmcuCisKK1RoZSBiZXN0IHBsYWNlIGZvciB0aGUgY29tcGxldGUsIGNvcnJlY3QsIGFuZCBxdWl0ZSBmcmFua2x5IGhhcmQgdG8KK3JlYWQgc3BlYyBpcyBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvIj4KK2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC88L2E+LiBBbiBpbnRybyB0byBYTUwKKyh0aGF0IEkgcmVhbGx5IGxpa2UpIGNhbiBiZSBmb3VuZCBhdCAKKzxhIGhyZWY9Imh0dHA6Ly9za2V3Lm9yZy94bWwvdHV0b3JpYWwvIj5odHRwOi8vc2tldy5vcmcveG1sL3R1dG9yaWFsPC9hPi4KKworVGhlcmUgYXJlIGRpZmZlcmVudCB3YXlzIHRvIGFjY2VzcyBhbmQgaW50ZXJhY3Qgd2l0aCBYTUwgZGF0YS4KK1RpbnlYbWwgdXNlcyBhIERvY3VtZW50IE9iamVjdCBNb2RlbCAoRE9NKSwgbWVhbmluZyB0aGUgWE1MIGRhdGEgaXMgcGFyc2VkCitpbnRvIGEgQysrIG9iamVjdHMgdGhhdCBjYW4gYmUgYnJvd3NlZCBhbmQgbWFuaXB1bGF0ZWQsIGFuZCB0aGVuIAord3JpdHRlbiB0byBkaXNrIG9yIGFub3RoZXIgb3V0cHV0IHN0cmVhbS4gWW91IGNhbiBhbHNvIGNvbnN0cnVjdCBhbiBYTUwgZG9jdW1lbnQgZnJvbQorc2NyYXRjaCB3aXRoIEMrKyBvYmplY3RzIGFuZCB3cml0ZSB0aGlzIHRvIGRpc2sgb3IgYW5vdGhlciBvdXRwdXQKK3N0cmVhbS4KKworVGlueVhtbCBpcyBkZXNpZ25lZCB0byBiZSBlYXN5IGFuZCBmYXN0IHRvIGxlYXJuLiBJdCBpcyB0d28gaGVhZGVycyAKK2FuZCBmb3VyIGNwcCBmaWxlcy4gU2ltcGx5IGFkZCB0aGVzZSB0byB5b3VyIHByb2plY3QgYW5kIG9mZiB5b3UgZ28uIAorVGhlcmUgaXMgYW4gZXhhbXBsZSBmaWxlIC0geG1sdGVzdC5jcHAgLSB0byBnZXQgeW91IHN0YXJ0ZWQuIAorCitUaW55WG1sIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBaTGliIGxpY2Vuc2UsIAorc28geW91IGNhbiB1c2UgaXQgaW4gb3BlbiBzb3VyY2Ugb3IgY29tbWVyY2lhbCBjb2RlLiBUaGUgZGV0YWlscworb2YgdGhlIGxpY2Vuc2UgYXJlIGF0IHRoZSB0b3Agb2YgZXZlcnkgc291cmNlIGZpbGUuCisKK1RpbnlYbWwgYXR0ZW1wdHMgdG8gYmUgYSBmbGV4aWJsZSBwYXJzZXIsIGJ1dCB3aXRoIHRydWx5IGNvcnJlY3QgYW5kCitjb21wbGlhbnQgWE1MIG91dHB1dC4gVGlueVhtbCBzaG91bGQgY29tcGlsZSBvbiBhbnkgcmVhc29uYWJseSBDKysKK2NvbXBsaWFudCBzeXN0ZW0uIEl0IGRvZXMgbm90IHJlbHkgb24gZXhjZXB0aW9ucyBvciBSVFRJLiBJdCBjYW4gYmUgCitjb21waWxlZCB3aXRoIG9yIHdpdGhvdXQgU1RMIHN1cHBvcnQuIFRpbnlYbWwgZnVsbHkgc3VwcG9ydHMKK3RoZSBVVEYtOCBlbmNvZGluZywgYW5kIHRoZSBmaXJzdCA2NGsgY2hhcmFjdGVyIGVudGl0aWVzLgorCisKKzxoMj4gV2hhdCBpdCBkb2Vzbid0IGRvLiA8L2gyPgorCitJdCBkb2VzbnQgcGFyc2Ugb3IgdXNlIERURHMgKERvY3VtZW50IFR5cGUgRGVmaW5pdGlvbnMpIG9yIFhTTHMKKyhlWHRlbnNpYmxlIFN0eWxlc2hlZXQgTGFuZ3VhZ2UuKSBUaGVyZSBhcmUgb3RoZXIgcGFyc2VycyBvdXQgdGhlcmUgCisoY2hlY2sgb3V0IHd3dy5zb3VyY2Vmb3JnZS5vcmcsIHNlYXJjaCBmb3IgWE1MKSB0aGF0IGFyZSBtdWNoIG1vcmUgZnVsbHkKK2ZlYXR1cmVkLiBCdXQgdGhleSBhcmUgYWxzbyBtdWNoIGJpZ2dlciwgdGFrZSBsb25nZXIgdG8gc2V0IHVwIGluCit5b3VyIHByb2plY3QsIGhhdmUgYSBoaWdoZXIgbGVhcm5pbmcgY3VydmUsIGFuZCBvZnRlbiBoYXZlIGEgbW9yZQorcmVzdHJpY3RpdmUgbGljZW5zZS4gSWYgeW91IGFyZSB3b3JraW5nIHdpdGggYnJvd3NlcnMgb3IgaGF2ZSBtb3JlCitjb21wbGV0ZSBYTUwgbmVlZHMsIFRpbnlYbWwgaXMgbm90IHRoZSBwYXJzZXIgZm9yIHlvdS4KKworVGhlIGZvbGxvd2luZyBEVEQgc3ludGF4IHdpbGwgbm90IHBhcnNlIGF0IHRoaXMgdGltZSBpbiBUaW55WG1sOgorCitAdmVyYmF0aW0KKwk8IURPQ1RZUEUgQXJjaGl2IFsKKwkgPCFFTEVNRU5UIENvbW1lbnQgKCNQQ0RBVEEpPgorCV0+CitAZW5kdmVyYmF0aW0KKworYmVjYXVzZSBUaW55WG1sIHNlZXMgdGhpcyBhcyBhICFET0NUWVBFIG5vZGUgd2l0aCBhbiBpbGxlZ2FsbHkgCitlbWJlZGRlZCAhRUxFTUVOVCBub2RlLiBUaGlzIG1heSBiZSBhZGRyZXNzZWQgaW4gdGhlIGZ1dHVyZS4KKworPGgyPiBUdXRvcmlhbHMuIDwvaDI+CisKK0ZvciB0aGUgaW1wYXRpZW50LCBoZXJlIGlzIGEgdHV0b3JpYWwgdG8gZ2V0IHlvdSBnb2luZy4gQSBncmVhdCB3YXkgdG8gZ2V0IHN0YXJ0ZWQsIAorYnV0IGl0IGlzIHdvcnRoIHlvdXIgdGltZSB0byByZWFkIHRoaXMgKHZlcnkgc2hvcnQpIG1hbnVhbCBjb21wbGV0ZWx5LgorCistIEBzdWJwYWdlIHR1dG9yaWFsMAorCis8aDI+IENvZGUgU3RhdHVzLiAgPC9oMj4KKworVGlueVhtbCBpcyBtYXR1cmUsIHRlc3RlZCBjb2RlLiBJdCBpcyB2ZXJ5IHN0YWJsZS4gSWYgeW91IGZpbmQKK2J1Z3MsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCBvbiB0aGUgc291cmNlZm9yZ2Ugd2ViIHNpdGUKKyh3d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWwpLgorV2UnbGwgZ2V0IHRoZW0gc3RyYWlnaHRlbmVkIG91dCBhcyBzb29uIGFzIHBvc3NpYmxlLgorCitUaGVyZSBhcmUgc29tZSBhcmVhcyBvZiBpbXByb3ZlbWVudDsgcGxlYXNlIGNoZWNrIHNvdXJjZWZvcmdlIGlmIHlvdSBhcmUKK2ludGVyZXN0ZWQgaW4gd29ya2luZyBvbiBUaW55WG1sLgorCisKKzxoMj4gRmVhdHVyZXMgPC9oMj4KKworPGgzPiBVc2luZyBTVEwgPC9oMz4KKworVGlueVhtbCBjYW4gYmUgY29tcGlsZWQgdG8gdXNlIG9yIG5vdCB1c2UgU1RMLiBXaGVuIHVzaW5nIFNUTCwgVGlueVhtbAordXNlcyB0aGUgc3RkOjpzdHJpbmcgY2xhc3MsIGFuZCBmdWxseSBzdXBwb3J0cyBzdGQ6OmlzdHJlYW0sIHN0ZDo6b3N0cmVhbSwKK29wZXJhdG9yPDwsIGFuZCBvcGVyYXRvcj4+LiBNYW55IEFQSSBtZXRob2RzIGhhdmUgYm90aCAnY29uc3QgY2hhcionIGFuZAorJ2NvbnN0IHN0ZDo6c3RyaW5nJicgZm9ybXMuCisKK1doZW4gU1RMIHN1cHBvcnQgaXMgY29tcGlsZWQgb3V0LCBubyBTVEwgZmlsZXMgYXJlIGluY2x1ZGVkIHdoYXRzb3Zlci4gQWxsCit0aGUgc3RyaW5nIGNsYXNzZXMgYXJlIGltcGxlbWVudGVkIGJ5IFRpbnlYbWwgaXRzZWxmLiBBUEkgbWV0aG9kcworYWxsIHVzZSB0aGUgJ2NvbnN0IGNoYXIqJyBmb3JtIGZvciBpbnB1dC4KKworVXNlIHRoZSBjb21waWxlIHRpbWUgI2RlZmluZToKKworCVRJWE1MX1VTRV9TVEwKKwordG8gY29tcGlsZSBvbmUgdmVyc2lvbiBvciB0aGUgb3RoZXIuIFRoaXMgY2FuIGJlIHBhc3NlZCBieSB0aGUgY29tcGlsZXIsCitvciBzZXQgYXMgdGhlIGZpcnN0IGxpbmUgb2YgInRpbnl4bWwuaCIuCisKK05vdGU6IElmIGNvbXBpbGluZyB0aGUgdGVzdCBjb2RlIGluIExpbnV4LCBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudAordmFyaWFibGUgVElOWVhNTF9VU0VfU1RMPVlFUy9OTyB3aWxsIGNvbnRyb2wgU1RMIGNvbXBpbGF0aW9uLiBJbiB0aGUKK1dpbmRvd3MgcHJvamVjdCBmaWxlLCBTVEwgYW5kIG5vbiBTVEwgdGFyZ2V0cyBhcmUgcHJvdmlkZWQuIEluIHlvdXIgcHJvamVjdCwKK2l0cyBwcm9iYWJseSBlYXNpZXN0IHRvIGFkZCB0aGUgbGluZSAiI2RlZmluZSBUSVhNTF9VU0VfU1RMIiBhcyB0aGUgZmlyc3QKK2xpbmUgb2YgdGlueXhtbC5oLgorCis8aDM+IFVURi04IDwvaDM+CisKK1RpbnlYbWwgc3VwcG9ydHMgVVRGLTggYWxsb3dpbmcgdG8gbWFuaXB1bGF0ZSBYTUwgZmlsZXMgaW4gYW55IGxhbmd1YWdlLiBUaW55WG1sCithbHNvIHN1cHBvcnRzICJsZWdhY3kgbW9kZSIgLSB0aGUgZW5jb2RpbmcgdXNlZCBiZWZvcmUgVVRGLTggc3VwcG9ydCBhbmQKK3Byb2JhYmx5IGJlc3QgZGVzY3JpYmVkIGFzICJleHRlbmRlZCBhc2NpaSIuCisKK05vcm1hbGx5LCBUaW55WG1sIHdpbGwgdHJ5IHRvIGRldGVjdCB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgdXNlIGl0LiBIb3dldmVyLAorYnkgc2V0dGluZyB0aGUgdmFsdWUgb2YgVElYTUxfREVGQVVMVF9FTkNPRElORyBpbiB0aGUgaGVhZGVyIGZpbGUsIFRpbnlYbWwKK2NhbiBiZSBmb3JjZWQgdG8gYWx3YXlzIHVzZSBvbmUgZW5jb2RpbmcuCisKK1RpbnlYbWwgd2lsbCBhc3N1bWUgTGVnYWN5IE1vZGUgdW50aWwgb25lIG9mIHRoZSBmb2xsb3dpbmcgb2NjdXJzOgorPG9sPgorCTxsaT4gSWYgdGhlIG5vbi1zdGFuZGFyZCBidXQgY29tbW9uICJVVEYtOCBsZWFkIGJ5dGVzIiAoMHhlZiAweGJiIDB4YmYpCisJCSBiZWdpbiB0aGUgZmlsZSBvciBkYXRhIHN0cmVhbSwgVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguIDwvbGk+CisJPGxpPiBJZiB0aGUgZGVjbGFyYXRpb24gdGFnIGlzIHJlYWQsIGFuZCBpdCBoYXMgYW4gZW5jb2Rpbmc9IlVURi04IiwgdGhlbgorCQkgVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguIDwvbGk+CisJPGxpPiBJZiB0aGUgZGVjbGFyYXRpb24gdGFnIGlzIHJlYWQsIGFuZCBpdCBoYXMgbm8gZW5jb2Rpbmcgc3BlY2lmaWVkLCB0aGVuCisJCSBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBVVEYtOC4gPC9saT4KKwk8bGk+IElmIHRoZSBkZWNsYXJhdGlvbiB0YWcgaXMgcmVhZCwgYW5kIGl0IGhhcyBhbiBlbmNvZGluZz0ic29tZXRoaW5nIGVsc2UiLCB0aGVuCisJCSBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBMZWdhY3kgTW9kZS4gSW4gbGVnYWN5IG1vZGUsIFRpbnlYbWwgd2lsbCAKKwkJIHdvcmsgYXMgaXQgZGlkIGJlZm9yZS4gSXQncyBub3QgY2xlYXIgd2hhdCB0aGF0IG1vZGUgZG9lcyBleGFjdGx5LCBidXQgCisJCSBvbGQgY29udGVudCBzaG91bGQga2VlcCB3b3JraW5nLjwvbGk+CisJPGxpPiBVbnRpbCBvbmUgb2YgdGhlIGFib3ZlIGNyaXRlcmlhIGlzIG1ldCwgVGlueVhtbCBydW5zIGluIExlZ2FjeSBNb2RlLjwvbGk+Cis8L29sPgorCitXaGF0IGhhcHBlbnMgaWYgdGhlIGVuY29kaW5nIGlzIGluY29ycmVjdGx5IHNldCBvciBkZXRlY3RlZD8gVGlueVhtbCB3aWxsIHRyeQordG8gcmVhZCBhbmQgcGFzcyB0aHJvdWdoIHRleHQgc2VlbiBhcyBpbXByb3Blcmx5IGVuY29kZWQuIFlvdSBtYXkgZ2V0IHNvbWUgc3RyYW5nZQorcmVzdWx0cyBvciBtYW5nbGVkIGNoYXJhY3RlcnMuIFlvdSBtYXkgd2FudCB0byBmb3JjZSBUaW55WG1sIHRvIHRoZSBjb3JyZWN0IG1vZGUuCisKKzxiPiBZb3UgbWF5IGZvcmNlIFRpbnlYbWwgdG8gTGVnYWN5IE1vZGUgYnkgdXNpbmcgTG9hZEZpbGUoIFRJWE1MX0VOQ09ESU5HX0xFR0FDWSApIG9yCitMb2FkRmlsZSggZmlsZW5hbWUsIFRJWE1MX0VOQ09ESU5HX0xFR0FDWSApLiBZb3UgbWF5IGZvcmNlIGl0IHRvIHVzZSBsZWdhY3kgbW9kZSBhbGwKK3RoZSB0aW1lIGJ5IHNldHRpbmcgVElYTUxfREVGQVVMVF9FTkNPRElORyA9IFRJWE1MX0VOQ09ESU5HX0xFR0FDWS4gTGlrZXdpc2UsIHlvdSBtYXkgCitmb3JjZSBpdCB0byBUSVhNTF9FTkNPRElOR19VVEY4IHdpdGggdGhlIHNhbWUgdGVjaG5pcXVlLjwvYj4KKworRm9yIEVuZ2xpc2ggdXNlcnMsIHVzaW5nIEVuZ2xpc2ggWE1MLCBVVEYtOCBpcyB0aGUgc2FtZSBhcyBsb3ctQVNDSUkuIFlvdQorZG9uJ3QgbmVlZCB0byBiZSBhd2FyZSBvZiBVVEYtOCBvciBjaGFuZ2UgeW91ciBjb2RlIGluIGFueSB3YXkuIFlvdSBjYW4gdGhpbmsKK29mIFVURi04IGFzIGEgInN1cGVyc2V0IiBvZiBBU0NJSS4KKworVVRGLTggaXMgbm90IGEgZG91YmxlIGJ5dGUgZm9ybWF0IC0gYnV0IGl0IGlzIGEgc3RhbmRhcmQgZW5jb2Rpbmcgb2YgVW5pY29kZSEKK1RpbnlYbWwgZG9lcyBub3QgdXNlIG9yIGRpcmVjdGx5IHN1cHBvcnQgd2NoYXIsIFRDSEFSLCBvciBNaWNyb3NvZnRzIF9VTklDT0RFIGF0IHRoaXMgdGltZS4gCitJdCBpcyBjb21tb24gdG8gc2VlIHRoZSB0ZXJtICJVbmljb2RlIiBpbXByb3Blcmx5IHJlZmVyIHRvIFVURi0xNiwgYSB3aWRlIGJ5dGUgZW5jb2RpbmcKK29mIHVuaWNvZGUuIFRoaXMgaXMgYSBzb3VyY2Ugb2YgY29uZnVzaW9uLgorCitGb3IgImhpZ2gtYXNjaWkiIGxhbmd1YWdlcyAtIGV2ZXJ5dGhpbmcgbm90IEVuZ2xpc2gsIHByZXR0eSBtdWNoIC0gVGlueVhtbCBjYW4KK2hhbmRsZSBhbGwgbGFuZ3VhZ2VzLCBhdCB0aGUgc2FtZSB0aW1lLCBhcyBsb25nIGFzIHRoZSBYTUwgaXMgZW5jb2RlZAoraW4gVVRGLTguIFRoYXQgY2FuIGJlIGEgbGl0dGxlIHRyaWNreSwgb2xkZXIgcHJvZ3JhbXMgYW5kIG9wZXJhdGluZyBzeXN0ZW1zCit0ZW5kIHRvIHVzZSB0aGUgImRlZmF1bHQiIG9yICJ0cmFkaXRpb25hbCIgY29kZSBwYWdlLiBNYW55IGFwcHMgKGFuZCBhbG1vc3QgYWxsCittb2Rlcm4gb25lcykgY2FuIG91dHB1dCBVVEYtOCwgYnV0IG9sZGVyIG9yIHN0dWJib3JuIChvciBqdXN0IGJyb2tlbikgb25lcworc3RpbGwgb3V0cHV0IHRleHQgaW4gdGhlIGRlZmF1bHQgY29kZSBwYWdlLiAKKworRm9yIGV4YW1wbGUsIEphcGFuZXNlIHN5c3RlbXMgdHJhZGl0aW9uYWxseSB1c2UgU0hJRlQtSklTIGVuY29kaW5nLiAKK1RleHQgZW5jb2RlZCBhcyBTSElGVC1KSVMgY2FuIG5vdCBiZSByZWFkIGJ5IHRpbnl4bWwuIAorQSBnb29kIHRleHQgZWRpdG9yIGNhbiBpbXBvcnQgU0hJRlQtSklTIGFuZCB0aGVuIHNhdmUgYXMgVVRGLTguCisKK1RoZSA8YSBocmVmPSJodHRwOi8vc2tldy5vcmcveG1sL3R1dG9yaWFsLyI+U2tldy5vcmcgbGluazwvYT4gZG9lcyBhIGdyZWF0Citqb2IgY292ZXJpbmcgdGhlIGVuY29kaW5nIGlzc3VlLgorCitUaGUgdGVzdCBmaWxlICJ1dGY4dGVzdC54bWwiIGlzIGFuIFhNTCBjb250YWluaW5nIEVuZ2xpc2gsIFNwYW5pc2gsIFJ1c3NpYW4sCithbmQgU2ltcGxpZmllZCBDaGluZXNlLiAoSG9wZWZ1bGx5IHRoZXkgYXJlIHRyYW5zbGF0ZWQgY29ycmVjdGx5KS4gVGhlIGZpbGUKKyJ1dGY4dGVzdC5naWYiIGlzIGEgc2NyZWVuIGNhcHR1cmUgb2YgdGhlIFhNTCBmaWxlLCByZW5kZXJlZCBpbiBJRS4gTm90ZSB0aGF0CitpZiB5b3UgZG9uJ3QgaGF2ZSB0aGUgY29ycmVjdCBmb250cyAoU2ltcGxpZmllZCBDaGluZXNlIG9yIFJ1c3NpYW4pIG9uIHlvdXIKK3N5c3RlbSwgeW91IHdvbid0IHNlZSBvdXRwdXQgdGhhdCBtYXRjaGVzIHRoZSBHSUYgZmlsZSBldmVuIGlmIHlvdSBjYW4gcGFyc2UKK2l0IGNvcnJlY3RseS4gQWxzbyBub3RlIHRoYXQgKGF0IGxlYXN0IG9uIG15IFdpbmRvd3MgbWFjaGluZSkgY29uc29sZSBvdXRwdXQKK2lzIGluIGEgV2VzdGVybiBjb2RlIHBhZ2UsIHNvIHRoYXQgUHJpbnQoKSBvciBwcmludGYoKSBjYW5ub3QgY29ycmVjdGx5IGRpc3BsYXkKK3RoZSBmaWxlLiBUaGlzIGlzIG5vdCBhIGJ1ZyBpbiBUaW55WG1sIC0ganVzdCBhbiBPUyBpc3N1ZS4gTm8gZGF0YSBpcyBsb3N0IG9yIAorZGVzdHJveWVkIGJ5IFRpbnlYbWwuIFRoZSBjb25zb2xlIGp1c3QgZG9lc24ndCByZW5kZXIgVVRGLTguCisKKworPGgzPiBFbnRpdGllcyA8L2gzPgorVGlueVhtbCByZWNvZ25pemVzIHRoZSBwcmUtZGVmaW5lZCAiY2hhcmFjdGVyIGVudGl0aWVzIiwgbWVhbmluZyBzcGVjaWFsCitjaGFyYWN0ZXJzLiBOYW1lbHk6CisKK0B2ZXJiYXRpbQorCSZhbXA7CSYKKwkmbHQ7CTwKKwkmZ3Q7CT4KKwkmcXVvdDsJIgorCSZhcG9zOwknCitAZW5kdmVyYmF0aW0KKworVGhlc2UgYXJlIHJlY29nbml6ZWQgd2hlbiB0aGUgWE1MIGRvY3VtZW50IGlzIHJlYWQsIGFuZCB0cmFuc2xhdGVkIHRvIHRoZXJlCitVVEYtOCBlcXVpdmFsZW50cy4gRm9yIGluc3RhbmNlLCB0ZXh0IHdpdGggdGhlIFhNTCBvZjoKKworQHZlcmJhdGltCisJRmFyICZhbXA7IEF3YXkKK0BlbmR2ZXJiYXRpbQorCit3aWxsIGhhdmUgdGhlIFZhbHVlKCkgb2YgIkZhciAmIEF3YXkiIHdoZW4gcXVlcmllZCBmcm9tIHRoZSBUaVhtbFRleHQgb2JqZWN0LAorYW5kIHdpbGwgYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBYTUwgc3RyZWFtL2ZpbGUgYXMgYW4gYW1wZXJzYW5kLiBPbGRlciB2ZXJzaW9ucworb2YgVGlueVhtbCAicHJlc2VydmVkIiBjaGFyYWN0ZXIgZW50aXRpZXMsIGJ1dCB0aGUgbmV3ZXIgdmVyc2lvbnMgd2lsbCB0cmFuc2xhdGUKK3RoZW0gaW50byBjaGFyYWN0ZXJzLgorCitBZGRpdGlvbmFsbHksIGFueSBjaGFyYWN0ZXIgY2FuIGJlIHNwZWNpZmllZCBieSBpdHMgVW5pY29kZSBjb2RlIHBvaW50OgorVGhlIHN5bnRheCAiJiN4QTA7IiBvciAiJiMxNjA7IiBhcmUgYm90aCB0byB0aGUgbm9uLWJyZWFraW5nIHNwYWNlIGNoYXJhY2hlci4KKworCis8aDM+IFN0cmVhbXMgPC9oMz4KK1dpdGggVElYTUxfVVNFX1NUTCBvbiwKK1RpWG1sIGhhcyBiZWVuIG1vZGlmaWVkIHRvIHN1cHBvcnQgYm90aCBDIChGSUxFKSBhbmQgQysrIChvcGVyYXRvciA8PCw+PikgCitzdHJlYW1zLiBUaGVyZSBhcmUgc29tZSBkaWZmZXJlbmNlcyB0aGF0IHlvdSBtYXkgbmVlZCB0byBiZSBhd2FyZSBvZi4KKworQyBzdHlsZSBvdXRwdXQ6CisJLSBiYXNlZCBvbiBGSUxFKgorCS0gdGhlIFByaW50KCkgYW5kIFNhdmVGaWxlKCkgbWV0aG9kcworCisJR2VuZXJhdGVzIGZvcm1hdHRlZCBvdXRwdXQsIHdpdGggcGxlbnR5IG9mIHdoaXRlIHNwYWNlLCBpbnRlbmRlZCB0byBiZSBhcyAKKwlodW1hbi1yZWFkYWJsZSBhcyBwb3NzaWJsZS4gVGhleSBhcmUgdmVyeSBmYXN0LCBhbmQgdG9sZXJhbnQgb2YgaWxsIGZvcm1lZCAKKwlYTUwgZG9jdW1lbnRzLiBGb3IgZXhhbXBsZSwgYW4gWE1MIGRvY3VtZW50IHRoYXQgY29udGFpbnMgMiByb290IGVsZW1lbnRzIAorCWFuZCAyIGRlY2xhcmF0aW9ucywgd2lsbCBzdGlsbCBwcmludC4KKworQyBzdHlsZSBpbnB1dDoKKwktIGJhc2VkIG9uIEZJTEUqCisJLSB0aGUgUGFyc2UoKSBhbmQgTG9hZEZpbGUoKSBtZXRob2RzCisKKwlBIGZhc3QsIHRvbGVyYW50IHJlYWQuIFVzZSB3aGVuZXZlciB5b3UgZG9uJ3QgbmVlZCB0aGUgQysrIHN0cmVhbXMuCisKK0MrKyBzdHlsZSBvdXB1dDoKKwktIGJhc2VkIG9uIHN0ZDo6b3N0cmVhbQorCS0gb3BlcmF0b3I8PAorCisJR2VuZXJhdGVzIGNvbmRlbnNlZCBvdXRwdXQsIGludGVuZGVkIGZvciBuZXR3b3JrIHRyYW5zbWlzc2lvbiByYXRoZXIgdGhhbgorCXJlYWRhYmlsaXR5LiBEZXBlbmRpbmcgb24geW91ciBzeXN0ZW0ncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgb3N0cmVhbSBjbGFzcywKKwl0aGVzZSBtYXkgYmUgc29tZXdoYXQgc2xvd2VyLiAoT3IgbWF5IG5vdC4pIE5vdCB0b2xlcmFudCBvZiBpbGwgZm9ybWVkIFhNTDoKKwlhIGRvY3VtZW50IHNob3VsZCBjb250YWluIHRoZSBjb3JyZWN0IG9uZSByb290IGVsZW1lbnQuIEFkZGl0aW9uYWwgcm9vdCBsZXZlbAorCWVsZW1lbnRzIHdpbGwgbm90IGJlIHN0cmVhbWVkIG91dC4KKworQysrIHN0eWxlIGlucHV0OgorCS0gYmFzZWQgb24gc3RkOjppc3RyZWFtCisJLSBvcGVyYXRvcj4+CisKKwlSZWFkcyBYTUwgZnJvbSBhIHN0cmVhbSwgbWFraW5nIGl0IHVzZWZ1bCBmb3IgbmV0d29yayB0cmFuc21pc3Npb24uIFRoZSB0cmlja3kKKwlwYXJ0IGlzIGtub3dpbmcgd2hlbiB0aGUgWE1MIGRvY3VtZW50IGlzIGNvbXBsZXRlLCBzaW5jZSB0aGVyZSB3aWxsIGFsbW9zdAorCWNlcnRhaW5seSBiZSBvdGhlciBkYXRhIGluIHRoZSBzdHJlYW0uIFRpbnlYbWwgd2lsbCBhc3N1bWUgdGhlIFhNTCBkYXRhIGlzCisJY29tcGxldGUgYWZ0ZXIgaXQgcmVhZHMgdGhlIHJvb3QgZWxlbWVudC4gUHV0IGFub3RoZXIgd2F5LCBkb2N1bWVudHMgdGhhdAorCWFyZSBpbGwtY29uc3RydWN0ZWQgd2l0aCBtb3JlIHRoYW4gb25lIHJvb3QgZWxlbWVudCB3aWxsIG5vdCByZWFkIGNvcnJlY3RseS4KKwlBbHNvIG5vdGUgdGhhdCBvcGVyYXRvcj4+IGlzIHNvbWV3aGF0IHNsb3dlciB0aGFuIFBhcnNlLCBkdWUgdG8gYm90aCAKKwlpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU1RMIGFuZCBsaW1pdGF0aW9ucyBvZiBUaW55WG1sLgorCis8aDM+IFdoaXRlIHNwYWNlIDwvaDM+CitUaGUgd29ybGQgc2ltcGx5IGRvZXMgbm90IGFncmVlIG9uIHdoZXRoZXIgd2hpdGUgc3BhY2Ugc2hvdWxkIGJlIGtlcHQsIG9yIGNvbmRlbnNlZC4KK0ZvciBleGFtcGxlLCBwcmV0ZW5kIHRoZSAnXycgaXMgYSBzcGFjZSwgYW5kIGxvb2sgYXQgIkhlbGxvX19fX3dvcmxkIi4gSFRNTCwgYW5kIAorYXQgbGVhc3Qgc29tZSBYTUwgcGFyc2Vycywgd2lsbCBpbnRlcnByZXQgdGhpcyBhcyAiSGVsbG9fd29ybGQiLiBUaGV5IGNvbmRlbnNlIHdoaXRlCitzcGFjZS4gU29tZSBYTUwgcGFyc2VycyBkbyBub3QsIGFuZCB3aWxsIGxlYXZlIGl0IGFzICJIZWxsb19fX193b3JsZCIuIChSZW1lbWJlcgordG8ga2VlcCBwcmV0ZW5kaW5nIHRoZSBfIGlzIGEgc3BhY2UuKSBPdGhlcnMgc3VnZ2VzdCB0aGF0IF9fSGVsbG9fX193b3JsZF9fIHNob3VsZCBiZWNvbWUKK0hlbGxvX19fd29ybGQuCisKK0l0J3MgYW4gaXNzdWUgdGhhdCBoYXNuJ3QgYmVlbiByZXNvbHZlZCB0byBteSBzYXRpc2ZhY3Rpb24uIFRpbnlYbWwgc3VwcG9ydHMgdGhlCitmaXJzdCAyIGFwcHJvYWNoZXMuIENhbGwgVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGJvb2wgKSB0byBzZXQgdGhlIGRlc2lyZWQgYmVoYXZpb3IuCitUaGUgZGVmYXVsdCBpcyB0byBjb25kZW5zZSB3aGl0ZSBzcGFjZS4KKworSWYgeW91IGNoYW5nZSB0aGUgZGVmYXVsdCwgeW91IHNob3VsZCBjYWxsIFRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBib29sICkKK2JlZm9yZSBtYWtpbmcgYW55IGNhbGxzIHRvIFBhcnNlIFhNTCBkYXRhLCBhbmQgSSBkb24ndCByZWNvbW1lbmQgY2hhbmdpbmcgaXQgYWZ0ZXIKK2l0IGhhcyBiZWVuIHNldC4KKworCis8aDM+IEhhbmRsZXMgPC9oMz4KKworV2hlcmUgYnJvd3NpbmcgYW4gWE1MIGRvY3VtZW50IGluIGEgcm9idXN0IHdheSwgaXQgaXMgaW1wb3J0YW50IHRvIGNoZWNrCitmb3IgbnVsbCByZXR1cm5zIGZyb20gbWV0aG9kIGNhbGxzLiBBbiBlcnJvciBzYWZlIGltcGxlbWVudGF0aW9uIGNhbgorZ2VuZXJhdGUgYSBsb3Qgb2YgY29kZSBsaWtlOgorCitAdmVyYmF0aW0KK1RpWG1sRWxlbWVudCogcm9vdCA9IGRvY3VtZW50LkZpcnN0Q2hpbGRFbGVtZW50KCAiRG9jdW1lbnQiICk7CitpZiAoIHJvb3QgKQoreworCVRpWG1sRWxlbWVudCogZWxlbWVudCA9IHJvb3QtPkZpcnN0Q2hpbGRFbGVtZW50KCAiRWxlbWVudCIgKTsKKwlpZiAoIGVsZW1lbnQgKQorCXsKKwkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IGVsZW1lbnQtPkZpcnN0Q2hpbGRFbGVtZW50KCAiQ2hpbGQiICk7CisJCWlmICggY2hpbGQgKQorCQl7CisJCQlUaVhtbEVsZW1lbnQqIGNoaWxkMiA9IGNoaWxkLT5OZXh0U2libGluZ0VsZW1lbnQoICJDaGlsZCIgKTsKKwkJCWlmICggY2hpbGQyICkKKwkJCXsKKwkJCQkvLyBGaW5hbGx5IGRvIHNvbWV0aGluZyB1c2VmdWwuCitAZW5kdmVyYmF0aW0KKworSGFuZGxlcyBoYXZlIGJlZW4gaW50cm9kdWNlZCB0byBjbGVhbiB0aGlzIHVwLiBVc2luZyB0aGUgVGlYbWxIYW5kbGUgY2xhc3MsCit0aGUgcHJldmlvdXMgY29kZSByZWR1Y2VzIHRvOgorCitAdmVyYmF0aW0KK1RpWG1sSGFuZGxlIGRvY0hhbmRsZSggJmRvY3VtZW50ICk7CitUaVhtbEVsZW1lbnQqIGNoaWxkMiA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuQ2hpbGQoICJDaGlsZCIsIDEgKS5FbGVtZW50KCk7CitpZiAoIGNoaWxkMiApCit7CisJLy8gZG8gc29tZXRoaW5nIHVzZWZ1bAorQGVuZHZlcmJhdGltCisKK1doaWNoIGlzIG11Y2ggZWFzaWVyIHRvIGRlYWwgd2l0aC4gU2VlIFRpWG1sSGFuZGxlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKKzxoMz4gUm93IGFuZCBDb2x1bW4gdHJhY2tpbmcgPC9oMz4KK0JlaW5nIGFibGUgdG8gdHJhY2sgbm9kZXMgYW5kIGF0dHJpYnV0ZXMgYmFjayB0byB0aGVpciBvcmlnaW4gbG9jYXRpb24KK2luIHNvdXJjZSBmaWxlcyBjYW4gYmUgdmVyeSBpbXBvcnRhbnQgZm9yIHNvbWUgYXBwbGljYXRpb25zLiBBZGRpdGlvbmFsbHksCitrbm93aW5nIHdoZXJlIHBhcnNpbmcgZXJyb3JzIG9jY3VyZWQgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBjYW4gYmUgdmVyeQordGltZSBzYXZpbmcuCisKK1RpbnlYbWwgY2FuIHRyYWNrcyB0aGUgcm93IGFuZCBjb2x1bW4gb3JpZ2luIG9mIGFsbCBub2RlcyBhbmQgYXR0cmlidXRlcworaW4gYSB0ZXh0IGZpbGUuIFRoZSBUaVhtbEJhc2U6OlJvdygpIGFuZCBUaVhtbEJhc2U6OkNvbHVtbigpIG1ldGhvZHMgcmV0dXJuCit0aGUgb3JpZ2luIG9mIHRoZSBub2RlIGluIHRoZSBzb3VyY2UgdGV4dC4gVGhlIGNvcnJlY3QgdGFicyBjYW4gYmUgCitjb25maWd1cmVkIGluIFRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUoKS4KKworCis8aDI+IFVzaW5nIGFuZCBJbnN0YWxsaW5nIDwvaDI+CisKK1RvIENvbXBpbGUgYW5kIFJ1biB4bWx0ZXN0OgorCitBIExpbnV4IE1ha2VmaWxlIGFuZCBhIFdpbmRvd3MgVmlzdWFsIEMrKyAuZHN3IGZpbGUgaXMgcHJvdmlkZWQuIAorU2ltcGx5IGNvbXBpbGUgYW5kIHJ1bi4gSXQgd2lsbCB3cml0ZSB0aGUgZmlsZSBkZW1vdGVzdC54bWwgdG8geW91ciAKK2Rpc2sgYW5kIGdlbmVyYXRlIG91dHB1dCBvbiB0aGUgc2NyZWVuLiBJdCBhbHNvIHRlc3RzIHdhbGtpbmcgdGhlCitET00gYnkgcHJpbnRpbmcgb3V0IHRoZSBudW1iZXIgb2Ygbm9kZXMgZm91bmQgdXNpbmcgZGlmZmVyZW50IAordGVjaG5pcXVlcy4KKworVGhlIExpbnV4IG1ha2VmaWxlIGlzIHZlcnkgZ2VuZXJpYyBhbmQgd2lsbAorcHJvYmFibHkgcnVuIG9uIG90aGVyIHN5c3RlbXMsIGJ1dCBpcyBvbmx5IHRlc3RlZCBvbiBMaW51eC4gWW91IG5vCitsb25nZXIgbmVlZCB0byBydW4gJ21ha2UgZGVwZW5kJy4gVGhlIGRlcGVuZGVjaWVzIGhhdmUgYmVlbgoraGFyZCBjb2RlZC4KKworPGgzPldpbmRvd3MgcHJvamVjdCBmaWxlIGZvciBWQzY8L2gzPgorPHVsPgorPGxpPnRpbnl4bWw6CQl0aW55eG1sIGxpYnJhcnksIG5vbi1TVEwgPC9saT4KKzxsaT50aW55eG1sU1RMOgkJdGlueXhtbCBsaWJyYXJ5LCBTVEwgPC9saT4KKzxsaT50aW55WG1sVGVzdDoJdGVzdCBhcHAsIG5vbi1TVEwgPC9saT4KKzxsaT50aW55WG1sVGVzdFNUTDogdGVzdCBhcHAsIFNUTCA8L2xpPgorPC91bD4KKworPGgzPkxpbnV4IE1ha2UgZmlsZTwvaDM+CitBdCB0aGUgdG9wIG9mIHRoZSBtYWtlZmlsZSB5b3UgY2FuIHNldDoKKworUFJPRklMRSwgREVCVUcsIGFuZCBUSU5ZWE1MX1VTRV9TVEwuIERldGFpbHMgKHN1Y2ggdGhhdCB0aGV5IGFyZSkgYXJlIGluCit0aGUgbWFrZWZpbGUuCisKK0luIHRoZSB0aW55eG1sIGRpcmVjdG9yeSwgdHlwZSAibWFrZSBjbGVhbiIgdGhlbiAibWFrZSIuIFRoZSBleGVjdXRhYmxlCitmaWxlICd4bWx0ZXN0JyB3aWxsIGJlIGNyZWF0ZWQuCisKKworCis8aDM+VG8gVXNlIGluIGFuIEFwcGxpY2F0aW9uOjwvaDM+CisKK0FkZCB0aW55eG1sLmNwcCwgdGlueXhtbC5oLCB0aW55eG1sZXJyb3IuY3BwLCB0aW55eG1scGFyc2VyLmNwcCwgdGlueXN0ci5jcHAsIGFuZCB0aW55c3RyLmggdG8geW91cgorcHJvamVjdCBvciBtYWtlIGZpbGUuIFRoYXQncyBpdCEgSXQgc2hvdWxkIGNvbXBpbGUgb24gYW55IHJlYXNvbmFibHkKK2NvbXBsaWFudCBDKysgc3lzdGVtLiBZb3UgZG8gbm90IG5lZWQgdG8gZW5hYmxlIGV4Y2VwdGlvbnMgb3IKK1JUVEkgZm9yIFRpbnlYbWwuCisKKworPGgyPiBIb3cgVGlueVhtbCB3b3Jrcy4gIDwvaDI+CisKK0FuIGV4YW1wbGUgaXMgcHJvYmFibHkgdGhlIGJlc3Qgd2F5IHRvIGdvLiBUYWtlOgorQHZlcmJhdGltCisJPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPW5vPgorCTwhLS0gT3VyIHRvIGRvIGxpc3QgZGF0YSAtLT4KKwk8VG9Ebz4KKwkJPEl0ZW0gcHJpb3JpdHk9IjEiPiBHbyB0byB0aGUgPGJvbGQ+VG95IHN0b3JlITwvYm9sZD48L0l0ZW0+CisJCTxJdGVtIHByaW9yaXR5PSIyIj4gRG8gYmlsbHM8L0l0ZW0+CisJPC9Ub0RvPgorQGVuZHZlcmJhdGltCisKK0l0cyBub3QgbXVjaCBvZiBhIFRvIERvIGxpc3QsIGJ1dCBpdCB3aWxsIGRvLiBUbyByZWFkIHRoaXMgZmlsZSAKKyhzYXkgImRlbW8ueG1sIikgeW91IHdvdWxkIGNyZWF0ZSBhIGRvY3VtZW50LCBhbmQgcGFyc2UgaXQgaW46CitAdmVyYmF0aW0KKwlUaVhtbERvY3VtZW50IGRvYyggImRlbW8ueG1sIiApOworCWRvYy5Mb2FkRmlsZSgpOworQGVuZHZlcmJhdGltCisKK0FuZCBpdHMgcmVhZHkgdG8gZ28uIE5vdyBsZXRzIGxvb2sgYXQgc29tZSBsaW5lcyBhbmQgaG93IHRoZXkgCityZWxhdGUgdG8gdGhlIERPTS4KKworQHZlcmJhdGltCis8P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9bm8+CitAZW5kdmVyYmF0aW0KKworCVRoZSBmaXJzdCBsaW5lIGlzIGEgZGVjbGFyYXRpb24sIGFuZCBnZXRzIHR1cm5lZCBpbnRvIHRoZQorCVRpWG1sRGVjbGFyYXRpb24gY2xhc3MuIEl0IHdpbGwgYmUgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZQorCWRvY3VtZW50IG5vZGUuCisJCisJVGhpcyBpcyB0aGUgb25seSBkaXJlY3RpdmUvc3BlY2lhbCB0YWcgcGFyc2VkIGJ5IGJ5IFRpbnlYbWwuCisJR2VuZXJhbGx5IGRpcmVjdGl2ZSB0YXJncyBhcmUgc3RvcmVkIGluIFRpWG1sVW5rbm93biBzbyB0aGUgCisJY29tbWFuZHMgd29udCBiZSBsb3N0IHdoZW4gaXQgaXMgc2F2ZWQgYmFjayB0byBkaXNrLgorCitAdmVyYmF0aW0KKzwhLS0gT3VyIHRvIGRvIGxpc3QgZGF0YSAtLT4KK0BlbmR2ZXJiYXRpbQorCisJQSBjb21tZW50LiBXaWxsIGJlY29tZSBhIFRpWG1sQ29tbWVudCBvYmplY3QuCisKK0B2ZXJiYXRpbQorPFRvRG8+CitAZW5kdmVyYmF0aW0KKworCVRoZSAiVG9EbyIgdGFnIGRlZmluZXMgYSBUaVhtbEVsZW1lbnQgb2JqZWN0LiBUaGlzIG9uZSBkb2VzIG5vdCBoYXZlIAorCWFueSBhdHRyaWJ1dGVzLCBidXQgZG9lcyBjb250YWluIDIgb3RoZXIgZWxlbWVudHMuCisKK0B2ZXJiYXRpbQorPEl0ZW0gcHJpb3JpdHk9IjEiPiAKK0BlbmR2ZXJiYXRpbQorCisJQ3JlYXRlcyBhbm90aGVyIFRpWG1sRWxlbWVudCB3aGljaCBpcyBhIGNoaWxkIG9mIHRoZSAiVG9EbyIgZWxlbWVudC4gCisJVGhpcyBlbGVtZW50IGhhcyAxIGF0dHJpYnV0ZSwgd2l0aCB0aGUgbmFtZSAicHJpb3JpdHkiIGFuZCB0aGUgdmFsdWUgCisJIjEiLgorCitHbyB0byB0aGUgCisKKwlBIFRpWG1sVGV4dC4gVGhpcyBpcyBhIGxlYWYgbm9kZSBhbmQgY2Fubm90IGNvbnRhaW4gb3RoZXIgbm9kZXMuIAorCUl0IGlzIGEgY2hpbGQgb2YgdGhlICJJdGVtIiBUaVhtbEVsZW1lbnQuCisKK0B2ZXJiYXRpbQorPGJvbGQ+CitAZW5kdmVyYmF0aW0KKworCQorCUFub3RoZXIgVGlYbWxFbGVtZW50LCB0aGlzIG9uZSBhIGNoaWxkIG9mIHRoZSAiSXRlbSIgZWxlbWVudC4KKworRXRjLgorCitMb29raW5nIGF0IHRoZSBlbnRpcmUgb2JqZWN0IHRyZWUsIHlvdSBlbmQgdXAgd2l0aDoKK0B2ZXJiYXRpbQorVGlYbWxEb2N1bWVudAkJCQkiZGVtby54bWwiCisJVGlYbWxEZWNsYXJhdGlvbgkJInZlcnNpb249JzEuMCciICJzdGFuZGFsb25lPW5vIgorCVRpWG1sQ29tbWVudAkJCSIgT3VyIHRvIGRvIGxpc3QgZGF0YSIKKwlUaVhtbEVsZW1lbnQJCQkiVG9EbyIKKwkJVGlYbWxFbGVtZW50CQkiSXRlbSIJCUF0dHJpYnR1dGVzOiBwcmlvcml0eSA9IDEKKwkJCVRpWG1sVGV4dAkJIkdvIHRvIHRoZSAiCisJCQlUaVhtbEVsZW1lbnQgICAgImJvbGQiCisJCQkJVGlYbWxUZXh0CSJUb3kgc3RvcmUhIgorCQlUaVhtbEVsZW1lbnQJCQkiSXRlbSIJCUF0dHJpYnV0ZXM6IHByaW9yaXR5PTIKKwkJCVRpWG1sVGV4dAkJCSJEbyBiaWxscyIKK0BlbmR2ZXJiYXRpbQorCis8aDI+IERvY3VtZW50YXRpb24gPC9oMj4KKworVGhlIGRvY3VtZW50YXRpb24gaXMgYnVpbGQgd2l0aCBEb3h5Z2VuLCB1c2luZyB0aGUgJ2RveCcgCitjb25maWd1cmF0aW9uIGZpbGUuCisKKzxoMj4gTGljZW5zZSA8L2gyPgorCitUaW55WG1sIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB6bGliIGxpY2Vuc2U6CisKK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkIAord2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSAKK2RhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KKworUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IAorcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIAorcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKworMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCAKK25vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyAKK3NvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiAKK3dvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCisKKzIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIAorbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgorCiszLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgCitkaXN0cmlidXRpb24uCisKKzxoMj4gUmVmZXJlbmNlcyAgPC9oMj4KKworVGhlIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0gaXMgdGhlIGRlZmluaXRpdmUgc3RhbmRhcmQgYm9keSBmb3IgCitYTUwsIGFuZCB0aGVyZSB3ZWIgcGFnZXMgY29udGFpbiBodWdlIGFtb3VudHMgb2YgaW5mb3JtYXRpb24uIAorCitUaGUgZGVmaW5pdGl2ZSBzcGVjOiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvIj4KK2h0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC88L2E+CisKK0kgYWxzbyByZWNvbW1lbmQgIlhNTCBQb2NrZXQgUmVmZXJlbmNlIiBieSBSb2JlcnQgRWNrc3RlaW4gYW5kIHB1Ymxpc2hlZCBieSAKK09SZWlsbHkuLi50aGUgYm9vayB0aGF0IGdvdCB0aGUgd2hvbGUgdGhpbmcgc3RhcnRlZC4KKworPGgyPiBDb250cmlidXRvcnMsIENvbnRhY3RzLCBhbmQgYSBCcmllZiBIaXN0b3J5IDwvaDI+CisKK1RoYW5rcyB2ZXJ5IG11Y2ggdG8gZXZlcnlvbmUgd2hvIHNlbmRzIHN1Z2dlc3Rpb25zLCBidWdzLCBpZGVhcywgYW5kIAorZW5jb3VyYWdlbWVudC4gSXQgYWxsIGhlbHBzLCBhbmQgbWFrZXMgdGhpcyBwcm9qZWN0IGZ1bi4gQSBzcGVjaWFsIHRoYW5rcwordG8gdGhlIGNvbnRyaWJ1dG9ycyBvbiB0aGUgd2ViIHBhZ2VzIHRoYXQga2VlcCBpdCBsaXZlbHkuCisKK1NvIG1hbnkgcGVvcGxlIGhhdmUgc2VudCBpbiBidWdzIGFuZCBpZGVhcywgdGhhdCByYXRoZXIgdGhhbiBsaXN0IGhlcmUgCit3ZSB0cnkgdG8gZ2l2ZSBjcmVkaXQgZHVlIGluIHRoZSAiY2hhbmdlcy50eHQiIGZpbGUuCisKK1RpbnlYbWwgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBiZSBMZWUgVGhvbWFzb24uIChPZnRlbiB0aGUgIkkiIHN0aWxsCitpbiB0aGUgZG9jdW1lbmF0aW9uLikgTGVlIHJldmlld3MgY2hhbmdlcyBhbmQgcmVsZWFzZXMgbmV3IHZlcnNpb25zLAord2l0aCB0aGUgaGVscCBvZiBZdmVzIEJlcnF1aW4gYW5kIHRoZSB0aW55WG1sIGNvbW11bml0eS4KKworV2UgYXBwcmVjaWF0ZSB5b3VyIHN1Z2dlc3Rpb25zLCBhbmQgd291bGQgbG92ZSB0byBrbm93IGlmIHlvdSAKK3VzZSBUaW55WG1sLiBIb3BlZnVsbHkgeW91IHdpbGwgZW5qb3kgaXQgYW5kIGZpbmQgaXQgdXNlZnVsLiAKK1BsZWFzZSBwb3N0IHF1ZXN0aW9ucywgY29tbWVudHMsIGZpbGUgYnVncywgb3IgY29udGFjdCB1cyBhdDoKKword3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCisKK0xlZSBUaG9tYXNvbiwKK1l2ZXMgQmVycXVpbgorKi8KZGlmZiAtLWdpdCBhL3RpbnlYbWxUZXN0LmRzcCBiL3RpbnlYbWxUZXN0LmRzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzI2MmI5Ci0tLSAvZGV2L251bGwKKysrIGIvdGlueVhtbFRlc3QuZHNwCkBAIC0wLDAgKzEsOTIgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0idGlueVhtbFRlc3QiIC0gUGFja2FnZSBPd25lcj08ND4NCisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQorIyAqKiBETyBOT1QgRURJVCAqKg0KKw0KKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iIDB4MDEwMw0KKw0KK0NGRz10aW55WG1sVGVzdCAtIFdpbjMyIERlYnVnDQorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJ0aW55WG1sVGVzdC5tYWsiLg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQorIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCishTUVTU0FHRSANCishTUVTU0FHRSBOTUFLRSAvZiAidGlueVhtbFRlc3QubWFrIiBDRkc9InRpbnlYbWxUZXN0IC0gV2luMzIgRGVidWciDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQorIU1FU1NBR0UgDQorIU1FU1NBR0UgInRpbnlYbWxUZXN0IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSAidGlueVhtbFRlc3QgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIikNCishTUVTU0FHRSANCisNCisjIEJlZ2luIFByb2plY3QNCisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KKyMgUFJPUCBTY2NfUHJvak5hbWUgIiINCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KK0NQUD1jbC5leGUNCitSU0M9cmMuZXhlDQorDQorIUlGICAiJChDRkcpIiA9PSAidGlueVhtbFRlc3QgLSBXaW4zMiBSZWxlYXNlIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX1JlbGVhc2UiDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIE91dHB1dF9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfUmVsZWFzZSINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAidGlueVhtbFRlc3RfX19XaW4zMl9SZWxlYXNlIg0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIgL0ZEIC9jDQorIyBTVUJUUkFDVCBDUFAgL1lYDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgIk5ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQorIyBBREQgTElOSzMyIC4vUmVsZWFzZS90aW55eG1sLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQorDQorIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInRpbnlYbWxUZXN0IC0gV2luMzIgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueVhtbFRlc3RfX19XaW4zMl9EZWJ1ZyINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX0RlYnVnIg0KKyMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvR1ogL2MNCisjIEFERCBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiAvRkQgL0daIC9jDQorIyBTVUJUUkFDVCBDUFAgL1lYDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSU5LMzI9bGluay5leGUNCisjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQorIyBBREQgTElOSzMyIC4vRGVidWcvdGlueXhtbGQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCisNCishRU5ESUYgDQorDQorIyBCZWdpbiBUYXJnZXQNCisNCisjIE5hbWUgInRpbnlYbWxUZXN0IC0gV2luMzIgUmVsZWFzZSINCisjIE5hbWUgInRpbnlYbWxUZXN0IC0gV2luMzIgRGVidWciDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHhtbHRlc3QuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBUYXJnZXQNCisjIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvdGlueVhtbFRlc3RTVEwuZHNwIGIvdGlueVhtbFRlc3RTVEwuZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNDllMDYKLS0tIC9kZXYvbnVsbAorKysgYi90aW55WG1sVGVzdFNUTC5kc3AKQEAgLTAsMCArMSw5MiBAQAorIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ0aW55WG1sVGVzdFNUTCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCisjICoqIERPIE5PVCBFRElUICoqDQorDQorIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzDQorDQorQ0ZHPXRpbnlYbWxUZXN0U1RMIC0gV2luMzIgRGVidWcNCishTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQorIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgInRpbnlYbWxUZXN0U1RMLm1hayIuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJ0aW55WG1sVGVzdFNUTC5tYWsiIENGRz0idGlueVhtbFRlc3RTVEwgLSBXaW4zMiBEZWJ1ZyINCishTUVTU0FHRSANCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCishTUVTU0FHRSANCishTUVTU0FHRSAidGlueVhtbFRlc3RTVEwgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KKyFNRVNTQUdFIA0KKw0KKyMgQmVnaW4gUHJvamVjdA0KKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQorQ1BQPWNsLmV4ZQ0KK1JTQz1yYy5leGUNCisNCishSUYgICIkKENGRykiID09ICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9SZWxlYXNlIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0U1RMX19fV2luMzJfUmVsZWFzZSINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgT3V0cHV0X0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9SZWxlYXNlIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdFNUTF9fX1dpbjMyX1JlbGVhc2UiDQorIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJUSVhNTF9VU0VfU1RMIiAvRkQgL2MNCisjIFNVQlRSQUNUIENQUCAvWVgNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCisjIEFERCBMSU5LMzIgLi9SZWxlYXNlX1NUTC90aW55eG1sX3N0bC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIERlYnVnIg0KKw0KKyMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KKyMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInRpbnlYbWxUZXN0U1RMX19fV2luMzJfRGVidWciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9EZWJ1ZyINCisjIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQorIyBQUk9QIFVzZV9NRkMgMA0KKyMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCisjIFBST1AgT3V0cHV0X0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9EZWJ1ZyINCisjIFBST1AgSW50ZXJtZWRpYXRlX0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9EZWJ1ZyINCisjIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KKyMgUFJPUCBUYXJnZXRfRGlyICIiDQorIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiVElYTUxfVVNFX1NUTCIgL0ZSIC9GRCAvR1ogL2MNCisjIFNVQlRSQUNUIENQUCAvWVgNCisjIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KKyMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KK0JTQzMyPWJzY21ha2UuZXhlDQorIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQorIyBBREQgQlNDMzIgL25vbG9nbw0KK0xJTkszMj1saW5rLmV4ZQ0KKyMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCisjIEFERCBMSU5LMzIgLi9EZWJ1Z19TVEwvdGlueXhtbGRfc3RsLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KKw0KKyFFTkRJRiANCisNCisjIEJlZ2luIFRhcmdldA0KKw0KKyMgTmFtZSAidGlueVhtbFRlc3RTVEwgLSBXaW4zMiBSZWxlYXNlIg0KKyMgTmFtZSAidGlueVhtbFRlc3RTVEwgLSBXaW4zMiBEZWJ1ZyINCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5ceG1sdGVzdC5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIFRhcmdldA0KKyMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS90aW55c3RyLmNwcCBiL3RpbnlzdHIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMjUyNDIKLS0tIC9kZXYvbnVsbAorKysgYi90aW55c3RyLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKK3d3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAorT3JpZ2luYWwgZmlsZSBieSBZdmVzIEJlcnF1aW4uCisKK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCit3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55CitkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCityZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Citub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKK3NvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgord291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKworMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKK211c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KKworMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCitkaXN0cmlidXRpb24uCisqLworCisvKgorICogVEhJUyBGSUxFIFdBUyBBTFRFUkVEIEJZIFR5Z2UgTPh2c2V0LCA3LiBBcHJpbCAyMDA1LgorICovCisKKworI2lmbmRlZiBUSVhNTF9VU0VfU1RMCisKKyNpbmNsdWRlICJ0aW55c3RyLmgiCisKKy8vIEVycm9yIHZhbHVlIGZvciBmaW5kIHByaW1pdGl2ZQorY29uc3QgVGlYbWxTdHJpbmc6OnNpemVfdHlwZSBUaVhtbFN0cmluZzo6bnBvcyA9IHN0YXRpY19jYXN0PCBzaXplX3R5cGUgPigtMSk7CisKKy8vIE51bGwgcmVwLgorVGlYbWxTdHJpbmc6OlJlcCBUaVhtbFN0cmluZzo6bnVsbHJlcF8gPSB7IDAsIDAsICdcMCcgfTsKKworCit2b2lkIFRpWG1sU3RyaW5nOjpyZXNlcnZlIChzaXplX3R5cGUgY2FwKQoreworCWlmIChjYXAgPiBjYXBhY2l0eSgpKQorCXsKKwkJVGlYbWxTdHJpbmcgdG1wOworCQl0bXAuaW5pdChsZW5ndGgoKSwgY2FwKTsKKwkJbWVtY3B5KHRtcC5zdGFydCgpLCBkYXRhKCksIGxlbmd0aCgpKTsKKwkJc3dhcCh0bXApOworCX0KK30KKworCitUaVhtbFN0cmluZyYgVGlYbWxTdHJpbmc6OmFzc2lnbihjb25zdCBjaGFyKiBzdHIsIHNpemVfdHlwZSBsZW4pCit7CisJc2l6ZV90eXBlIGNhcCA9IGNhcGFjaXR5KCk7CisJaWYgKGxlbiA+IGNhcCB8fCBjYXAgPiAzKihsZW4gKyA4KSkKKwl7CisJCVRpWG1sU3RyaW5nIHRtcDsKKwkJdG1wLmluaXQobGVuKTsKKwkJbWVtY3B5KHRtcC5zdGFydCgpLCBzdHIsIGxlbik7CisJCXN3YXAodG1wKTsKKwl9CisJZWxzZQorCXsKKwkJbWVtbW92ZShzdGFydCgpLCBzdHIsIGxlbik7CisJCXNldF9zaXplKGxlbik7CisJfQorCXJldHVybiAqdGhpczsKK30KKworCitUaVhtbFN0cmluZyYgVGlYbWxTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdHlwZSBsZW4pCit7CisJc2l6ZV90eXBlIG5ld3NpemUgPSBsZW5ndGgoKSArIGxlbjsKKwlpZiAobmV3c2l6ZSA+IGNhcGFjaXR5KCkpCisJeworCQlyZXNlcnZlIChuZXdzaXplICsgY2FwYWNpdHkoKSk7CisJfQorCW1lbW1vdmUoZmluaXNoKCksIHN0ciwgbGVuKTsKKwlzZXRfc2l6ZShuZXdzaXplKTsKKwlyZXR1cm4gKnRoaXM7Cit9CisKKworVGlYbWxTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpCit7CisJVGlYbWxTdHJpbmcgdG1wOworCXRtcC5yZXNlcnZlKGEubGVuZ3RoKCkgKyBiLmxlbmd0aCgpKTsKKwl0bXAgKz0gYTsKKwl0bXAgKz0gYjsKKwlyZXR1cm4gdG1wOworfQorCitUaVhtbFN0cmluZyBvcGVyYXRvciArIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IGNoYXIqIGIpCit7CisJVGlYbWxTdHJpbmcgdG1wOworCVRpWG1sU3RyaW5nOjpzaXplX3R5cGUgYl9sZW4gPSBzdGF0aWNfY2FzdDxUaVhtbFN0cmluZzo6c2l6ZV90eXBlPiggc3RybGVuKGIpICk7CisJdG1wLnJlc2VydmUoYS5sZW5ndGgoKSArIGJfbGVuKTsKKwl0bXAgKz0gYTsKKwl0bXAuYXBwZW5kKGIsIGJfbGVuKTsKKwlyZXR1cm4gdG1wOworfQorCitUaVhtbFN0cmluZyBvcGVyYXRvciArIChjb25zdCBjaGFyKiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpCit7CisJVGlYbWxTdHJpbmcgdG1wOworCVRpWG1sU3RyaW5nOjpzaXplX3R5cGUgYV9sZW4gPSBzdGF0aWNfY2FzdDxUaVhtbFN0cmluZzo6c2l6ZV90eXBlPiggc3RybGVuKGEpICk7CisJdG1wLnJlc2VydmUoYV9sZW4gKyBiLmxlbmd0aCgpKTsKKwl0bXAuYXBwZW5kKGEsIGFfbGVuKTsKKwl0bXAgKz0gYjsKKwlyZXR1cm4gdG1wOworfQorCisKKyNlbmRpZgkvLyBUSVhNTF9VU0VfU1RMCmRpZmYgLS1naXQgYS90aW55c3RyLmggYi90aW55c3RyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkZDJmOQotLS0gL2Rldi9udWxsCisrKyBiL3RpbnlzdHIuaApAQCAtMCwwICsxLDI5NCBAQAorLyoKK3d3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAorT3JpZ2luYWwgZmlsZSBieSBZdmVzIEJlcnF1aW4uCisKK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCit3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55CitkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCityZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Citub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKK3NvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgord291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKworMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKK211c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KKworMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCitkaXN0cmlidXRpb24uCisqLworCisvKgorICogVEhJUyBGSUxFIFdBUyBBTFRFUkVEIEJZIFR5Z2UgTG92c2V0LCA3LiBBcHJpbCAyMDA1LgorICoKKyAqIC0gY29tcGxldGVseSByZXdyaXR0ZW4uIGNvbXBhY3QsIGNsZWFuLCBhbmQgZmFzdCBpbXBsZW1lbnRhdGlvbi4KKyAqIC0gc2l6ZW9mKFRpWG1sU3RyaW5nKSA9IHBvaW50ZXIgc2l6ZSAoNCBieXRlcyBvbiAzMi1iaXQgc3lzdGVtcykKKyAqIC0gZml4ZWQgcmVzZXJ2ZSgpIHRvIHdvcmsgYXMgcGVyIHNwZWNpZmljYXRpb24uCisgKiAtIGZpeGVkIGJ1Z2d5IGNvbXBhcmVzIG9wZXJhdG9yPT0oKSwgb3BlcmF0b3I8KCksIGFuZCBvcGVyYXRvcj4oKQorICogLSBmaXhlZCBvcGVyYXRvcis9KCkgdG8gdGFrZSBhIGNvbnN0IHJlZiBhcmd1bWVudCwgZm9sbG93aW5nIHNwZWMuCisgKiAtIGFkZGVkICJjb3B5IiBjb25zdHJ1Y3RvciB3aXRoIGxlbmd0aCwgYW5kIG1vc3QgY29tcGFyZSBvcGVyYXRvcnMuCisgKiAtIGFkZGVkIHN3YXAoKSwgY2xlYXIoKSwgc2l6ZSgpLCBjYXBhY2l0eSgpLCBvcGVyYXRvcisoKS4KKyAqLworCisjaWZuZGVmIFRJWE1MX1VTRV9TVEwKKworI2lmbmRlZiBUSVhNTF9TVFJJTkdfSU5DTFVERUQKKyNkZWZpbmUgVElYTUxfU1RSSU5HX0lOQ0xVREVECisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyoKKyAgIFRpWG1sU3RyaW5nIGlzIGFuIGVtdWxhdGlvbiBvZiBhIHN1YnNldCBvZiB0aGUgc3RkOjpzdHJpbmcgdGVtcGxhdGUuCisgICBJdHMgcHVycG9zZSBpcyB0byBhbGxvdyBjb21waWxpbmcgVGlueVhNTCBvbiBjb21waWxlcnMgd2l0aCBubyBvciBwb29yIFNUTCBzdXBwb3J0LgorICAgT25seSB0aGUgbWVtYmVyIGZ1bmN0aW9ucyByZWxldmFudCB0byB0aGUgVGlueVhNTCBwcm9qZWN0IGhhdmUgYmVlbiBpbXBsZW1lbnRlZC4KKyAgIFRoZSBidWZmZXIgYWxsb2NhdGlvbiBpcyBtYWRlIGJ5IGEgc2ltcGxpc3RpYyBwb3dlciBvZiAyIGxpa2UgbWVjaGFuaXNtIDogaWYgd2UgaW5jcmVhc2UKKyAgIGEgc3RyaW5nIGFuZCB0aGVyZSdzIG5vIG1vcmUgcm9vbSwgd2UgYWxsb2NhdGUgYSBidWZmZXIgdHdpY2UgYXMgYmlnIGFzIHdlIG5lZWQuCisqLworY2xhc3MgVGlYbWxTdHJpbmcKK3sKKyAgcHVibGljIDoKKwkvLyBUaGUgc2l6ZSB0eXBlIHVzZWQKKyAgCXR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdHlwZTsKKworCS8vIEVycm9yIHZhbHVlIGZvciBmaW5kIHByaW1pdGl2ZQorCXN0YXRpYyBjb25zdCBzaXplX3R5cGUgbnBvczsgLy8gPSAtMTsKKworCisJLy8gVGlYbWxTdHJpbmcgZW1wdHkgY29uc3RydWN0b3IKKwlUaVhtbFN0cmluZyAoKSA6IHJlcF8oJm51bGxyZXBfKQorCXsKKwl9CisKKwkvLyBUaVhtbFN0cmluZyBjb3B5IGNvbnN0cnVjdG9yCisJVGlYbWxTdHJpbmcgKGNvbnN0IFRpWG1sU3RyaW5nICYgY29weSkKKwl7CisJCWluaXQoY29weS5sZW5ndGgoKSk7CisJCW1lbWNweShzdGFydCgpLCBjb3B5LmRhdGEoKSwgbGVuZ3RoKCkpOworCX0KKworCS8vIFRpWG1sU3RyaW5nIGNvbnN0cnVjdG9yLCBiYXNlZCBvbiBhIHN0cmluZworCVRpWG1sU3RyaW5nIChjb25zdCBjaGFyICogY29weSkKKwl7CisJCWluaXQoIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oIHN0cmxlbihjb3B5KSApKTsKKwkJbWVtY3B5KHN0YXJ0KCksIGNvcHksIGxlbmd0aCgpKTsKKwl9CisKKwkvLyBUaVhtbFN0cmluZyBjb25zdHJ1Y3RvciwgYmFzZWQgb24gYSBzdHJpbmcKKwlUaVhtbFN0cmluZyAoY29uc3QgY2hhciAqIHN0ciwgc2l6ZV90eXBlIGxlbikKKwl7CisJCWluaXQobGVuKTsKKwkJbWVtY3B5KHN0YXJ0KCksIHN0ciwgbGVuKTsKKwl9CisKKwkvLyBUaVhtbFN0cmluZyBkZXN0cnVjdG9yCisJflRpWG1sU3RyaW5nICgpCisJeworCQlxdWl0KCk7CisJfQorCisJLy8gPSBvcGVyYXRvcgorCVRpWG1sU3RyaW5nJiBvcGVyYXRvciA9IChjb25zdCBjaGFyICogY29weSkKKwl7CisJCXJldHVybiBhc3NpZ24oIGNvcHksIChzaXplX3R5cGUpc3RybGVuKGNvcHkpKTsKKwl9CisKKwkvLyA9IG9wZXJhdG9yCisJVGlYbWxTdHJpbmcmIG9wZXJhdG9yID0gKGNvbnN0IFRpWG1sU3RyaW5nICYgY29weSkKKwl7CisJCXJldHVybiBhc3NpZ24oY29weS5zdGFydCgpLCBjb3B5Lmxlbmd0aCgpKTsKKwl9CisKKworCS8vICs9IG9wZXJhdG9yLiBNYXBzIHRvIGFwcGVuZAorCVRpWG1sU3RyaW5nJiBvcGVyYXRvciArPSAoY29uc3QgY2hhciAqIHN1ZmZpeCkKKwl7CisJCXJldHVybiBhcHBlbmQoc3VmZml4LCBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KCBzdHJsZW4oc3VmZml4KSApKTsKKwl9CisKKwkvLyArPSBvcGVyYXRvci4gTWFwcyB0byBhcHBlbmQKKwlUaVhtbFN0cmluZyYgb3BlcmF0b3IgKz0gKGNoYXIgc2luZ2xlKQorCXsKKwkJcmV0dXJuIGFwcGVuZCgmc2luZ2xlLCAxKTsKKwl9CisKKwkvLyArPSBvcGVyYXRvci4gTWFwcyB0byBhcHBlbmQKKwlUaVhtbFN0cmluZyYgb3BlcmF0b3IgKz0gKGNvbnN0IFRpWG1sU3RyaW5nICYgc3VmZml4KQorCXsKKwkJcmV0dXJuIGFwcGVuZChzdWZmaXguZGF0YSgpLCBzdWZmaXgubGVuZ3RoKCkpOworCX0KKworCisJLy8gQ29udmVydCBhIFRpWG1sU3RyaW5nIGludG8gYSBudWxsLXRlcm1pbmF0ZWQgY2hhciAqCisJY29uc3QgY2hhciAqIGNfc3RyICgpIGNvbnN0IHsgcmV0dXJuIHJlcF8tPnN0cjsgfQorCisJLy8gQ29udmVydCBhIFRpWG1sU3RyaW5nIGludG8gYSBjaGFyICogKG5lZWQgbm90IGJlIG51bGwgdGVybWluYXRlZCkuCisJY29uc3QgY2hhciAqIGRhdGEgKCkgY29uc3QgeyByZXR1cm4gcmVwXy0+c3RyOyB9CisKKwkvLyBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIFRpWG1sU3RyaW5nCisJc2l6ZV90eXBlIGxlbmd0aCAoKSBjb25zdCB7IHJldHVybiByZXBfLT5zaXplOyB9CisKKwkvLyBBbGlhcyBmb3IgbGVuZ3RoKCkKKwlzaXplX3R5cGUgc2l6ZSAoKSBjb25zdCB7IHJldHVybiByZXBfLT5zaXplOyB9CisKKwkvLyBDaGVja3MgaWYgYSBUaVhtbFN0cmluZyBpcyBlbXB0eQorCWJvb2wgZW1wdHkgKCkgY29uc3QgeyByZXR1cm4gcmVwXy0+c2l6ZSA9PSAwOyB9CisKKwkvLyBSZXR1cm4gY2FwYWNpdHkgb2Ygc3RyaW5nCisJc2l6ZV90eXBlIGNhcGFjaXR5ICgpIGNvbnN0IHsgcmV0dXJuIHJlcF8tPmNhcGFjaXR5OyB9CisKKworCS8vIHNpbmdsZSBjaGFyIGV4dHJhY3Rpb24KKwljb25zdCBjaGFyJiBhdCAoc2l6ZV90eXBlIGluZGV4KSBjb25zdAorCXsKKwkJYXNzZXJ0KCBpbmRleCA8IGxlbmd0aCgpICk7CisJCXJldHVybiByZXBfLT5zdHJbIGluZGV4IF07CisJfQorCisJLy8gW10gb3BlcmF0b3IKKwljaGFyJiBvcGVyYXRvciBbXSAoc2l6ZV90eXBlIGluZGV4KSBjb25zdAorCXsKKwkJYXNzZXJ0KCBpbmRleCA8IGxlbmd0aCgpICk7CisJCXJldHVybiByZXBfLT5zdHJbIGluZGV4IF07CisJfQorCisJLy8gZmluZCBhIGNoYXIgaW4gYSBzdHJpbmcuIFJldHVybiBUaVhtbFN0cmluZzo6bnBvcyBpZiBub3QgZm91bmQKKwlzaXplX3R5cGUgZmluZCAoY2hhciBsb29rdXApIGNvbnN0CisJeworCQlyZXR1cm4gZmluZChsb29rdXAsIDApOworCX0KKworCS8vIGZpbmQgYSBjaGFyIGluIGEgc3RyaW5nIGZyb20gYW4gb2Zmc2V0LiBSZXR1cm4gVGlYbWxTdHJpbmc6Om5wb3MgaWYgbm90IGZvdW5kCisJc2l6ZV90eXBlIGZpbmQgKGNoYXIgdG9maW5kLCBzaXplX3R5cGUgb2Zmc2V0KSBjb25zdAorCXsKKwkJaWYgKG9mZnNldCA+PSBsZW5ndGgoKSkgcmV0dXJuIG5wb3M7CisKKwkJZm9yIChjb25zdCBjaGFyKiBwID0gY19zdHIoKSArIG9mZnNldDsgKnAgIT0gJ1wwJzsgKytwKQorCQl7CisJCSAgIGlmICgqcCA9PSB0b2ZpbmQpIHJldHVybiBzdGF0aWNfY2FzdDwgc2l6ZV90eXBlID4oIHAgLSBjX3N0cigpICk7CisJCX0KKwkJcmV0dXJuIG5wb3M7CisJfQorCisJdm9pZCBjbGVhciAoKQorCXsKKwkJLy9MZWU6CisJCS8vVGhlIG9yaWdpbmFsIHdhcyBqdXN0IHRvbyBzdHJhbmdlLCB0aG91Z2ggY29ycmVjdDoKKwkJLy8JVGlYbWxTdHJpbmcoKS5zd2FwKCp0aGlzKTsKKwkJLy9JbnN0ZWFkIHVzZSB0aGUgcXVpdCAmIHJlLWluaXQ6CisJCXF1aXQoKTsKKwkJaW5pdCgwLDApOworCX0KKworCS8qCUZ1bmN0aW9uIHRvIHJlc2VydmUgYSBiaWcgYW1vdW50IG9mIGRhdGEgd2hlbiB3ZSBrbm93IHdlJ2xsIG5lZWQgaXQuIEJlIGF3YXJlIHRoYXQgdGhpcworCQlmdW5jdGlvbiBET0VTIE5PVCBjbGVhciB0aGUgY29udGVudCBvZiB0aGUgVGlYbWxTdHJpbmcgaWYgYW55IGV4aXN0cy4KKwkqLworCXZvaWQgcmVzZXJ2ZSAoc2l6ZV90eXBlIGNhcCk7CisKKwlUaVhtbFN0cmluZyYgYXNzaWduIChjb25zdCBjaGFyKiBzdHIsIHNpemVfdHlwZSBsZW4pOworCisJVGlYbWxTdHJpbmcmIGFwcGVuZCAoY29uc3QgY2hhciogc3RyLCBzaXplX3R5cGUgbGVuKTsKKworCXZvaWQgc3dhcCAoVGlYbWxTdHJpbmcmIG90aGVyKQorCXsKKwkJUmVwKiByID0gcmVwXzsKKwkJcmVwXyA9IG90aGVyLnJlcF87CisJCW90aGVyLnJlcF8gPSByOworCX0KKworICBwcml2YXRlOgorCisJdm9pZCBpbml0KHNpemVfdHlwZSBzeikgeyBpbml0KHN6LCBzeik7IH0KKwl2b2lkIHNldF9zaXplKHNpemVfdHlwZSBzeikgeyByZXBfLT5zdHJbIHJlcF8tPnNpemUgPSBzeiBdID0gJ1wwJzsgfQorCWNoYXIqIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gcmVwXy0+c3RyOyB9CisJY2hhciogZmluaXNoKCkgY29uc3QgeyByZXR1cm4gcmVwXy0+c3RyICsgcmVwXy0+c2l6ZTsgfQorCisJc3RydWN0IFJlcAorCXsKKwkJc2l6ZV90eXBlIHNpemUsIGNhcGFjaXR5OworCQljaGFyIHN0clsxXTsKKwl9OworCisJdm9pZCBpbml0KHNpemVfdHlwZSBzeiwgc2l6ZV90eXBlIGNhcCkKKwl7CisJCWlmIChjYXApCisJCXsKKwkJCXJlcF8gPSBzdGF0aWNfY2FzdDxSZXAqPihvcGVyYXRvciBuZXcoc2l6ZW9mKFJlcCkgKyBjYXApKTsKKwkJCXJlcF8tPnN0clsgcmVwXy0+c2l6ZSA9IHN6IF0gPSAnXDAnOworCQkJcmVwXy0+Y2FwYWNpdHkgPSBjYXA7CisJCX0KKwkJZWxzZQorCQl7CisJCQlyZXBfID0gJm51bGxyZXBfOworCQl9CisJfQorCisJdm9pZCBxdWl0KCkKKwl7CisJCWlmIChyZXBfICE9ICZudWxscmVwXykKKwkJeworCQkJb3BlcmF0b3IgZGVsZXRlKHJlcF8pOworCQl9CisJfQorCisJUmVwICogcmVwXzsKKwlzdGF0aWMgUmVwIG51bGxyZXBfOworCit9IDsKKworCitpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpCit7CisJcmV0dXJuICAgICggYS5sZW5ndGgoKSA9PSBiLmxlbmd0aCgpICkJCQkJLy8gb3B0aW1pemF0aW9uIG9uIHNvbWUgcGxhdGZvcm1zCisJICAgICAgICYmICggc3RyY21wKGEuY19zdHIoKSwgYi5jX3N0cigpKSA9PSAwICk7CS8vIGFjdHVhbCBjb21wYXJlCit9CitpbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikKK3sKKwlyZXR1cm4gc3RyY21wKGEuY19zdHIoKSwgYi5jX3N0cigpKSA8IDA7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciA+ICAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpIHsgcmV0dXJuIGIgPCBhOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpIHsgcmV0dXJuICEoYiA8IGEpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpIHsgcmV0dXJuICEoYSA8IGIpOyB9CisKK2lubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIHN0cmNtcChhLmNfc3RyKCksIGIpID09IDA7IH0KK2lubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBjaGFyKiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgY2hhciogYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKSB7IHJldHVybiAhKGIgPT0gYSk7IH0KKworVGlYbWxTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpOworVGlYbWxTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBjaGFyKiBiKTsKK1RpWG1sU3RyaW5nIG9wZXJhdG9yICsgKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYik7CisKKworLyoKKyAgIFRpWG1sT3V0U3RyZWFtIGlzIGFuIGVtdWxhdGlvbiBvZiBzdGQ6Om9zdHJlYW0uIEl0IGlzIGJhc2VkIG9uIFRpWG1sU3RyaW5nLgorICAgT25seSB0aGUgb3BlcmF0b3JzIHRoYXQgd2UgbmVlZCBmb3IgVGlueVhNTCBoYXZlIGJlZW4gZGV2ZWxvcHBlZC4KKyovCitjbGFzcyBUaVhtbE91dFN0cmVhbSA6IHB1YmxpYyBUaVhtbFN0cmluZworeworcHVibGljIDoKKworCS8vIFRpWG1sT3V0U3RyZWFtIDw8IG9wZXJhdG9yLgorCVRpWG1sT3V0U3RyZWFtICYgb3BlcmF0b3IgPDwgKGNvbnN0IFRpWG1sU3RyaW5nICYgaW4pCisJeworCQkqdGhpcyArPSBpbjsKKwkJcmV0dXJuICp0aGlzOworCX0KKworCS8vIFRpWG1sT3V0U3RyZWFtIDw8IG9wZXJhdG9yLgorCVRpWG1sT3V0U3RyZWFtICYgb3BlcmF0b3IgPDwgKGNvbnN0IGNoYXIgKiBpbikKKwl7CisJCSp0aGlzICs9IGluOworCQlyZXR1cm4gKnRoaXM7CisJfQorCit9IDsKKworI2VuZGlmCS8vIFRJWE1MX1NUUklOR19JTkNMVURFRAorI2VuZGlmCS8vIFRJWE1MX1VTRV9TVEwKZGlmZiAtLWdpdCBhL3Rpbnl4bWwuY3BwIGIvdGlueXhtbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4NGRlYwotLS0gL2Rldi9udWxsCisrKyBiL3Rpbnl4bWwuY3BwCkBAIC0wLDAgKzEsMTczOCBAQAorLyoKK3d3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAorT3JpZ2luYWwgY29kZSAoMi4wIGFuZCBlYXJsaWVyICljb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBMZWUgVGhvbWFzb24gKHd3dy5ncmlubmluZ2xpemFyZC5jb20pCisKK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCit3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55CitkYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCityZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Citub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKK3NvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgord291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KKworMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKK211c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KKworMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCitkaXN0cmlidXRpb24uCisqLworCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlICJ0aW55eG1sLmgiCisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisjaW5jbHVkZSA8c3N0cmVhbT4KKyNlbmRpZgorCisKK2Jvb2wgVGlYbWxCYXNlOjpjb25kZW5zZVdoaXRlU3BhY2UgPSB0cnVlOworCit2b2lkIFRpWG1sQmFzZTo6UHV0U3RyaW5nKCBjb25zdCBUSVhNTF9TVFJJTkcmIHN0ciwgVElYTUxfT1NUUkVBTSogc3RyZWFtICkKK3sKKwlUSVhNTF9TVFJJTkcgYnVmZmVyOworCVB1dFN0cmluZyggc3RyLCAmYnVmZmVyICk7CisJKCpzdHJlYW0pIDw8IGJ1ZmZlcjsKK30KKwordm9pZCBUaVhtbEJhc2U6OlB1dFN0cmluZyggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIsIFRJWE1MX1NUUklORyogb3V0U3RyaW5nICkKK3sKKwlpbnQgaT0wOworCisJd2hpbGUoIGk8KGludClzdHIubGVuZ3RoKCkgKQorCXsKKwkJdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpIHN0cltpXTsKKworCQlpZiAoICAgIGMgPT0gJyYnIAorCQkgICAgICYmIGkgPCAoIChpbnQpc3RyLmxlbmd0aCgpIC0gMiApCisJCQkgJiYgc3RyW2krMV0gPT0gJyMnCisJCQkgJiYgc3RyW2krMl0gPT0gJ3gnICkKKwkJeworCQkJLy8gSGV4YWRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZS4KKwkJCS8vIFBhc3MgdGhyb3VnaCB1bmNoYW5nZWQuCisJCQkvLyAmI3hBOTsJLS0gY29weXJpZ2h0IHN5bWJvbCwgZm9yIGV4YW1wbGUuCisJCQkvLworCQkJLy8gVGhlIC0xIGlzIGEgYnVnIGZpeCBmcm9tIFJvYiBMYXZlYXV4LiBJdCBrZWVwcworCQkJLy8gYW4gb3ZlcmZsb3cgZnJvbSBoYXBwZW5pbmcgaWYgdGhlcmUgaXMgbm8gJzsnLgorCQkJLy8gVGhlcmUgYXJlIGFjdHVhbGx5IDIgd2F5cyB0byBleGl0IHRoaXMgbG9vcCAtCisJCQkvLyB3aGlsZSBmYWlscyAoZXJyb3IgY2FzZSkgYW5kIGJyZWFrIChzZW1pY29sb24gZm91bmQpLgorCQkJLy8gSG93ZXZlciwgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIChjdXJyZW50bHkpIGZvcgorCQkJLy8gdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYW4gZXJyb3IuCisJCQl3aGlsZSAoIGk8KGludClzdHIubGVuZ3RoKCktMSApCisJCQl7CisJCQkJb3V0U3RyaW5nLT5hcHBlbmQoIHN0ci5jX3N0cigpICsgaSwgMSApOworCQkJCSsraTsKKwkJCQlpZiAoIHN0cltpXSA9PSAnOycgKQorCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCQllbHNlIGlmICggYyA9PSAnJicgKQorCQl7CisJCQlvdXRTdHJpbmctPmFwcGVuZCggZW50aXR5WzBdLnN0ciwgZW50aXR5WzBdLnN0ckxlbmd0aCApOworCQkJKytpOworCQl9CisJCWVsc2UgaWYgKCBjID09ICc8JyApCisJCXsKKwkJCW91dFN0cmluZy0+YXBwZW5kKCBlbnRpdHlbMV0uc3RyLCBlbnRpdHlbMV0uc3RyTGVuZ3RoICk7CisJCQkrK2k7CisJCX0KKwkJZWxzZSBpZiAoIGMgPT0gJz4nICkKKwkJeworCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGVudGl0eVsyXS5zdHIsIGVudGl0eVsyXS5zdHJMZW5ndGggKTsKKwkJCSsraTsKKwkJfQorCQllbHNlIGlmICggYyA9PSAnXCInICkKKwkJeworCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGVudGl0eVszXS5zdHIsIGVudGl0eVszXS5zdHJMZW5ndGggKTsKKwkJCSsraTsKKwkJfQorCQllbHNlIGlmICggYyA9PSAnXCcnICkKKwkJeworCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGVudGl0eVs0XS5zdHIsIGVudGl0eVs0XS5zdHJMZW5ndGggKTsKKwkJCSsraTsKKwkJfQorCQllbHNlIGlmICggYyA8IDMyICkKKwkJeworCQkJLy8gRWFzeSBwYXNzIGF0IG5vbi1hbHBoYS9udW1lcmljL3N5bWJvbAorCQkJLy8gQmVsb3cgMzIgaXMgc3ltYm9saWMuCisJCQljaGFyIGJ1ZlsgMzIgXTsKKwkJCQorCQkJI2lmIGRlZmluZWQoVElYTUxfU05QUklOVEYpCQkKKwkJCQlUSVhNTF9TTlBSSU5URiggYnVmLCBzaXplb2YoYnVmKSwgIiYjeCUwMlg7IiwgKHVuc2lnbmVkKSAoIGMgJiAweGZmICkgKTsKKwkJCSNlbHNlCisJCQkJc3ByaW50ZiggYnVmLCAiJiN4JTAyWDsiLCAodW5zaWduZWQpICggYyAmIDB4ZmYgKSApOworCQkJI2VuZGlmCQkKKworCQkJLy8qTUU6CXdhcm5pbmcgQzQyNjc6IGNvbnZlcnQgJ3NpemVfdCcgdG8gJ2ludCcKKwkJCS8vKk1FOglJbnQtQ2FzdCB0byBtYWtlIGNvbXBpbGVyIGhhcHB5IC4uLgorCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGJ1ZiwgKGludClzdHJsZW4oIGJ1ZiApICk7CisJCQkrK2k7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvL2NoYXIgcmVhbGMgPSAoY2hhcikgYzsKKwkJCS8vb3V0U3RyaW5nLT5hcHBlbmQoICZyZWFsYywgMSApOworCQkJKm91dFN0cmluZyArPSAoY2hhcikgYzsJLy8gc29tZXdoYXQgbW9yZSBlZmZpY2llbnQgZnVuY3Rpb24gY2FsbC4KKwkJCSsraTsKKwkJfQorCX0KK30KKworCisvLyA8LS0gU3RyYW5nZSBjbGFzcyBmb3IgYSBidWcgZml4LiBTZWFyY2ggZm9yIFNUTF9TVFJJTkdfQlVHCitUaVhtbEJhc2U6OlN0cmluZ1RvQnVmZmVyOjpTdHJpbmdUb0J1ZmZlciggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIgKQoreworCWJ1ZmZlciA9IG5ldyBjaGFyWyBzdHIubGVuZ3RoKCkrMSBdOworCWlmICggYnVmZmVyICkKKwl7CisJCXN0cmNweSggYnVmZmVyLCBzdHIuY19zdHIoKSApOworCX0KK30KKworCitUaVhtbEJhc2U6OlN0cmluZ1RvQnVmZmVyOjp+U3RyaW5nVG9CdWZmZXIoKQoreworCWRlbGV0ZSBbXSBidWZmZXI7Cit9CisvLyBFbmQgc3RyYW5nZSBidWcgZml4LiAtLT4KKworCitUaVhtbE5vZGU6OlRpWG1sTm9kZSggTm9kZVR5cGUgX3R5cGUgKSA6IFRpWG1sQmFzZSgpCit7CisJcGFyZW50ID0gMDsKKwl0eXBlID0gX3R5cGU7CisJZmlyc3RDaGlsZCA9IDA7CisJbGFzdENoaWxkID0gMDsKKwlwcmV2ID0gMDsKKwluZXh0ID0gMDsKK30KKworCitUaVhtbE5vZGU6On5UaVhtbE5vZGUoKQoreworCVRpWG1sTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQ7CisJVGlYbWxOb2RlKiB0ZW1wID0gMDsKKworCXdoaWxlICggbm9kZSApCisJeworCQl0ZW1wID0gbm9kZTsKKwkJbm9kZSA9IG5vZGUtPm5leHQ7CisJCWRlbGV0ZSB0ZW1wOworCX0JCit9CisKKwordm9pZCBUaVhtbE5vZGU6OkNvcHlUbyggVGlYbWxOb2RlKiB0YXJnZXQgKSBjb25zdAoreworCXRhcmdldC0+U2V0VmFsdWUgKHZhbHVlLmNfc3RyKCkgKTsKKwl0YXJnZXQtPnVzZXJEYXRhID0gdXNlckRhdGE7IAorfQorCisKK3ZvaWQgVGlYbWxOb2RlOjpDbGVhcigpCit7CisJVGlYbWxOb2RlKiBub2RlID0gZmlyc3RDaGlsZDsKKwlUaVhtbE5vZGUqIHRlbXAgPSAwOworCisJd2hpbGUgKCBub2RlICkKKwl7CisJCXRlbXAgPSBub2RlOworCQlub2RlID0gbm9kZS0+bmV4dDsKKwkJZGVsZXRlIHRlbXA7CisJfQkKKworCWZpcnN0Q2hpbGQgPSAwOworCWxhc3RDaGlsZCA9IDA7Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6OkxpbmtFbmRDaGlsZCggVGlYbWxOb2RlKiBub2RlICkKK3sKKwlub2RlLT5wYXJlbnQgPSB0aGlzOworCisJbm9kZS0+cHJldiA9IGxhc3RDaGlsZDsKKwlub2RlLT5uZXh0ID0gMDsKKworCWlmICggbGFzdENoaWxkICkKKwkJbGFzdENoaWxkLT5uZXh0ID0gbm9kZTsKKwllbHNlCisJCWZpcnN0Q2hpbGQgPSBub2RlOwkJCS8vIGl0IHdhcyBhbiBlbXB0eSBsaXN0LgorCisJbGFzdENoaWxkID0gbm9kZTsKKwlyZXR1cm4gbm9kZTsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6SW5zZXJ0RW5kQ2hpbGQoIGNvbnN0IFRpWG1sTm9kZSYgYWRkVGhpcyApCit7CisJVGlYbWxOb2RlKiBub2RlID0gYWRkVGhpcy5DbG9uZSgpOworCWlmICggIW5vZGUgKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBMaW5rRW5kQ2hpbGQoIG5vZGUgKTsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6SW5zZXJ0QmVmb3JlQ2hpbGQoIFRpWG1sTm9kZSogYmVmb3JlVGhpcywgY29uc3QgVGlYbWxOb2RlJiBhZGRUaGlzICkKK3sJCisJaWYgKCAhYmVmb3JlVGhpcyB8fCBiZWZvcmVUaGlzLT5wYXJlbnQgIT0gdGhpcyApCisJCXJldHVybiAwOworCisJVGlYbWxOb2RlKiBub2RlID0gYWRkVGhpcy5DbG9uZSgpOworCWlmICggIW5vZGUgKQorCQlyZXR1cm4gMDsKKwlub2RlLT5wYXJlbnQgPSB0aGlzOworCisJbm9kZS0+bmV4dCA9IGJlZm9yZVRoaXM7CisJbm9kZS0+cHJldiA9IGJlZm9yZVRoaXMtPnByZXY7CisJaWYgKCBiZWZvcmVUaGlzLT5wcmV2ICkKKwl7CisJCWJlZm9yZVRoaXMtPnByZXYtPm5leHQgPSBub2RlOworCX0KKwllbHNlCisJeworCQlhc3NlcnQoIGZpcnN0Q2hpbGQgPT0gYmVmb3JlVGhpcyApOworCQlmaXJzdENoaWxkID0gbm9kZTsKKwl9CisJYmVmb3JlVGhpcy0+cHJldiA9IG5vZGU7CisJcmV0dXJuIG5vZGU7Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6Okluc2VydEFmdGVyQ2hpbGQoIFRpWG1sTm9kZSogYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUmIGFkZFRoaXMgKQoreworCWlmICggIWFmdGVyVGhpcyB8fCBhZnRlclRoaXMtPnBhcmVudCAhPSB0aGlzICkKKwkJcmV0dXJuIDA7CisKKwlUaVhtbE5vZGUqIG5vZGUgPSBhZGRUaGlzLkNsb25lKCk7CisJaWYgKCAhbm9kZSApCisJCXJldHVybiAwOworCW5vZGUtPnBhcmVudCA9IHRoaXM7CisKKwlub2RlLT5wcmV2ID0gYWZ0ZXJUaGlzOworCW5vZGUtPm5leHQgPSBhZnRlclRoaXMtPm5leHQ7CisJaWYgKCBhZnRlclRoaXMtPm5leHQgKQorCXsKKwkJYWZ0ZXJUaGlzLT5uZXh0LT5wcmV2ID0gbm9kZTsKKwl9CisJZWxzZQorCXsKKwkJYXNzZXJ0KCBsYXN0Q2hpbGQgPT0gYWZ0ZXJUaGlzICk7CisJCWxhc3RDaGlsZCA9IG5vZGU7CisJfQorCWFmdGVyVGhpcy0+bmV4dCA9IG5vZGU7CisJcmV0dXJuIG5vZGU7Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6OlJlcGxhY2VDaGlsZCggVGlYbWxOb2RlKiByZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlJiB3aXRoVGhpcyApCit7CisJaWYgKCByZXBsYWNlVGhpcy0+cGFyZW50ICE9IHRoaXMgKQorCQlyZXR1cm4gMDsKKworCVRpWG1sTm9kZSogbm9kZSA9IHdpdGhUaGlzLkNsb25lKCk7CisJaWYgKCAhbm9kZSApCisJCXJldHVybiAwOworCisJbm9kZS0+bmV4dCA9IHJlcGxhY2VUaGlzLT5uZXh0OworCW5vZGUtPnByZXYgPSByZXBsYWNlVGhpcy0+cHJldjsKKworCWlmICggcmVwbGFjZVRoaXMtPm5leHQgKQorCQlyZXBsYWNlVGhpcy0+bmV4dC0+cHJldiA9IG5vZGU7CisJZWxzZQorCQlsYXN0Q2hpbGQgPSBub2RlOworCisJaWYgKCByZXBsYWNlVGhpcy0+cHJldiApCisJCXJlcGxhY2VUaGlzLT5wcmV2LT5uZXh0ID0gbm9kZTsKKwllbHNlCisJCWZpcnN0Q2hpbGQgPSBub2RlOworCisJZGVsZXRlIHJlcGxhY2VUaGlzOworCW5vZGUtPnBhcmVudCA9IHRoaXM7CisJcmV0dXJuIG5vZGU7Cit9CisKKworYm9vbCBUaVhtbE5vZGU6OlJlbW92ZUNoaWxkKCBUaVhtbE5vZGUqIHJlbW92ZVRoaXMgKQoreworCWlmICggcmVtb3ZlVGhpcy0+cGFyZW50ICE9IHRoaXMgKQorCXsJCisJCWFzc2VydCggMCApOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKCByZW1vdmVUaGlzLT5uZXh0ICkKKwkJcmVtb3ZlVGhpcy0+bmV4dC0+cHJldiA9IHJlbW92ZVRoaXMtPnByZXY7CisJZWxzZQorCQlsYXN0Q2hpbGQgPSByZW1vdmVUaGlzLT5wcmV2OworCisJaWYgKCByZW1vdmVUaGlzLT5wcmV2ICkKKwkJcmVtb3ZlVGhpcy0+cHJldi0+bmV4dCA9IHJlbW92ZVRoaXMtPm5leHQ7CisJZWxzZQorCQlmaXJzdENoaWxkID0gcmVtb3ZlVGhpcy0+bmV4dDsKKworCWRlbGV0ZSByZW1vdmVUaGlzOworCXJldHVybiB0cnVlOworfQorCitjb25zdCBUaVhtbE5vZGUqIFRpWG1sTm9kZTo6Rmlyc3RDaGlsZCggY29uc3QgY2hhciAqIF92YWx1ZSApIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCApCisJeworCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbE5vZGU6OkZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQoreworCVRpWG1sTm9kZSogbm9kZTsKKwlmb3IgKCBub2RlID0gZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHQgKQorCXsKKwkJaWYgKCBzdHJjbXAoIG5vZGUtPlZhbHVlKCksIF92YWx1ZSApID09IDAgKQorCQkJcmV0dXJuIG5vZGU7CisJfQorCXJldHVybiAwOworfQorCisKK2NvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpMYXN0Q2hpbGQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKSBjb25zdAoreworCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKKwlmb3IgKCBub2RlID0gbGFzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+cHJldiApCisJeworCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpMYXN0Q2hpbGQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQoreworCVRpWG1sTm9kZSogbm9kZTsKKwlmb3IgKCBub2RlID0gbGFzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+cHJldiApCisJeworCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IFRpWG1sTm9kZSogcHJldmlvdXMgKSBjb25zdAoreworCWlmICggIXByZXZpb3VzICkKKwl7CisJCXJldHVybiBGaXJzdENoaWxkKCk7CisJfQorCWVsc2UKKwl7CisJCWFzc2VydCggcHJldmlvdXMtPnBhcmVudCA9PSB0aGlzICk7CisJCXJldHVybiBwcmV2aW91cy0+TmV4dFNpYmxpbmcoKTsKKwl9Cit9CisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4oIFRpWG1sTm9kZSogcHJldmlvdXMgKQoreworCWlmICggIXByZXZpb3VzICkKKwl7CisJCXJldHVybiBGaXJzdENoaWxkKCk7CisJfQorCWVsc2UKKwl7CisJCWFzc2VydCggcHJldmlvdXMtPnBhcmVudCA9PSB0aGlzICk7CisJCXJldHVybiBwcmV2aW91cy0+TmV4dFNpYmxpbmcoKTsKKwl9Cit9CisKK2NvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IGNoYXIgKiB2YWwsIGNvbnN0IFRpWG1sTm9kZSogcHJldmlvdXMgKSBjb25zdAoreworCWlmICggIXByZXZpb3VzICkKKwl7CisJCXJldHVybiBGaXJzdENoaWxkKCB2YWwgKTsKKwl9CisJZWxzZQorCXsKKwkJYXNzZXJ0KCBwcmV2aW91cy0+cGFyZW50ID09IHRoaXMgKTsKKwkJcmV0dXJuIHByZXZpb3VzLT5OZXh0U2libGluZyggdmFsICk7CisJfQorfQorCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6SXRlcmF0ZUNoaWxkcmVuKCBjb25zdCBjaGFyICogdmFsLCBUaVhtbE5vZGUqIHByZXZpb3VzICkKK3sKKwlpZiAoICFwcmV2aW91cyApCisJeworCQlyZXR1cm4gRmlyc3RDaGlsZCggdmFsICk7CisJfQorCWVsc2UKKwl7CisJCWFzc2VydCggcHJldmlvdXMtPnBhcmVudCA9PSB0aGlzICk7CisJCXJldHVybiBwcmV2aW91cy0+TmV4dFNpYmxpbmcoIHZhbCApOworCX0KK30KKworY29uc3QgVGlYbWxOb2RlKiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nKCBjb25zdCBjaGFyICogX3ZhbHVlICkgY29uc3QgCit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGUgPSBuZXh0OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCApCisJeworCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpOZXh0U2libGluZyggY29uc3QgY2hhciAqIF92YWx1ZSApCit7CisJVGlYbWxOb2RlKiBub2RlOworCWZvciAoIG5vZGUgPSBuZXh0OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCApCisJeworCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpQcmV2aW91c1NpYmxpbmcoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKSBjb25zdAoreworCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKKwlmb3IgKCBub2RlID0gcHJldjsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXYgKQorCXsKKwkJaWYgKCBzdHJjbXAoIG5vZGUtPlZhbHVlKCksIF92YWx1ZSApID09IDAgKQorCQkJcmV0dXJuIG5vZGU7CisJfQorCXJldHVybiAwOworfQorCitUaVhtbE5vZGUqIFRpWG1sTm9kZTo6UHJldmlvdXNTaWJsaW5nKCBjb25zdCBjaGFyICogX3ZhbHVlICkKK3sKKwlUaVhtbE5vZGUqIG5vZGU7CisJZm9yICggbm9kZSA9IHByZXY7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2ICkKKwl7CisJCWlmICggc3RyY21wKCBub2RlLT5WYWx1ZSgpLCBfdmFsdWUgKSA9PSAwICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKwordm9pZCBUaVhtbEVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUgKQoreworCVRpWG1sQXR0cmlidXRlKiBub2RlID0gYXR0cmlidXRlU2V0LkZpbmQoIG5hbWUgKTsKKwlpZiAoIG5vZGUgKQorCXsKKwkJYXR0cmlidXRlU2V0LlJlbW92ZSggbm9kZSApOworCQlkZWxldGUgbm9kZTsKKwl9Cit9CisKK2NvbnN0IFRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCgpIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCisJZm9yICgJbm9kZSA9IEZpcnN0Q2hpbGQoKTsKKwkJCW5vZGU7CisJCQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCisJeworCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCgpCit7CisJVGlYbWxOb2RlKiBub2RlOworCisJZm9yICgJbm9kZSA9IEZpcnN0Q2hpbGQoKTsKKwkJCW5vZGU7CisJCQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCisJeworCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IFRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCggY29uc3QgY2hhciAqIF92YWx1ZSApIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCisJZm9yICgJbm9kZSA9IEZpcnN0Q2hpbGQoIF92YWx1ZSApOworCQkJbm9kZTsKKwkJCW5vZGUgPSBub2RlLT5OZXh0U2libGluZyggX3ZhbHVlICkgKQorCXsKKwkJaWYgKCBub2RlLT5Ub0VsZW1lbnQoKSApCisJCQlyZXR1cm4gbm9kZS0+VG9FbGVtZW50KCk7CisJfQorCXJldHVybiAwOworfQorCitUaVhtbEVsZW1lbnQqIFRpWG1sTm9kZTo6Rmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQoreworCVRpWG1sTm9kZSogbm9kZTsKKworCWZvciAoCW5vZGUgPSBGaXJzdENoaWxkKCBfdmFsdWUgKTsKKwkJCW5vZGU7CisJCQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoIF92YWx1ZSApICkKKwl7CisJCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOworCX0KKwlyZXR1cm4gMDsKK30KKworY29uc3QgVGlYbWxFbGVtZW50KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCgpIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBub2RlOworCisJZm9yICgJbm9kZSA9IE5leHRTaWJsaW5nKCk7CisJbm9kZTsKKwlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCisJeworCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQoKQoreworCVRpWG1sTm9kZSogbm9kZTsKKworCWZvciAoCW5vZGUgPSBOZXh0U2libGluZygpOworCW5vZGU7CisJbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCkgKQorCXsKKwkJaWYgKCBub2RlLT5Ub0VsZW1lbnQoKSApCisJCQlyZXR1cm4gbm9kZS0+VG9FbGVtZW50KCk7CisJfQorCXJldHVybiAwOworfQorCitjb25zdCBUaVhtbEVsZW1lbnQqIFRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBjaGFyICogX3ZhbHVlICkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisKKwlmb3IgKAlub2RlID0gTmV4dFNpYmxpbmcoIF92YWx1ZSApOworCW5vZGU7CisJbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCBfdmFsdWUgKSApCisJeworCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQoreworCVRpWG1sTm9kZSogbm9kZTsKKworCWZvciAoCW5vZGUgPSBOZXh0U2libGluZyggX3ZhbHVlICk7CisJbm9kZTsKKwlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoIF92YWx1ZSApICkKKwl7CisJCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQorCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOworCX0KKwlyZXR1cm4gMDsKK30KKworCitjb25zdCBUaVhtbERvY3VtZW50KiBUaVhtbE5vZGU6OkdldERvY3VtZW50KCkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisKKwlmb3IoIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50ICkKKwl7CisJCWlmICggbm9kZS0+VG9Eb2N1bWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0RvY3VtZW50KCk7CisJfQorCXJldHVybiAwOworfQorCitUaVhtbERvY3VtZW50KiBUaVhtbE5vZGU6OkdldERvY3VtZW50KCkKK3sKKwlUaVhtbE5vZGUqIG5vZGU7CisKKwlmb3IoIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50ICkKKwl7CisJCWlmICggbm9kZS0+VG9Eb2N1bWVudCgpICkKKwkJCXJldHVybiBub2RlLT5Ub0RvY3VtZW50KCk7CisJfQorCXJldHVybiAwOworfQorCitUaVhtbEVsZW1lbnQ6OlRpWG1sRWxlbWVudCAoY29uc3QgY2hhciAqIF92YWx1ZSkKKwk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpFTEVNRU5UICkKK3sKKwlmaXJzdENoaWxkID0gbGFzdENoaWxkID0gMDsKKwl2YWx1ZSA9IF92YWx1ZTsKK30KKworCisjaWZkZWYgVElYTUxfVVNFX1NUTAorVGlYbWxFbGVtZW50OjpUaVhtbEVsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSAKKwk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpFTEVNRU5UICkKK3sKKwlmaXJzdENoaWxkID0gbGFzdENoaWxkID0gMDsKKwl2YWx1ZSA9IF92YWx1ZTsKK30KKyNlbmRpZgorCisKK1RpWG1sRWxlbWVudDo6VGlYbWxFbGVtZW50KCBjb25zdCBUaVhtbEVsZW1lbnQmIGNvcHkpCisJOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6RUxFTUVOVCApCit7CisJZmlyc3RDaGlsZCA9IGxhc3RDaGlsZCA9IDA7CisJY29weS5Db3B5VG8oIHRoaXMgKTsJCit9CisKKwordm9pZCBUaVhtbEVsZW1lbnQ6Om9wZXJhdG9yPSggY29uc3QgVGlYbWxFbGVtZW50JiBiYXNlICkKK3sKKwlDbGVhclRoaXMoKTsKKwliYXNlLkNvcHlUbyggdGhpcyApOworfQorCisKK1RpWG1sRWxlbWVudDo6flRpWG1sRWxlbWVudCgpCit7CisJQ2xlYXJUaGlzKCk7Cit9CisKKwordm9pZCBUaVhtbEVsZW1lbnQ6OkNsZWFyVGhpcygpCit7CisJQ2xlYXIoKTsKKwl3aGlsZSggYXR0cmlidXRlU2V0LkZpcnN0KCkgKQorCXsKKwkJVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsKKwkJYXR0cmlidXRlU2V0LlJlbW92ZSggbm9kZSApOworCQlkZWxldGUgbm9kZTsKKwl9Cit9CisKKworY29uc3QgY2hhciAqIFRpWG1sRWxlbWVudDo6QXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSApIGNvbnN0Cit7CisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggbmFtZSApOworCisJaWYgKCBub2RlICkKKwkJcmV0dXJuIG5vZGUtPlZhbHVlKCk7CisKKwlyZXR1cm4gMDsKK30KKworCitjb25zdCBjaGFyICogVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBpbnQqIGkgKSBjb25zdAoreworCWNvbnN0IGNoYXIgKiBzID0gQXR0cmlidXRlKCBuYW1lICk7CisJaWYgKCBpICkKKwl7CisJCWlmICggcyApCisJCQkqaSA9IGF0b2koIHMgKTsKKwkJZWxzZQorCQkJKmkgPSAwOworCX0KKwlyZXR1cm4gczsKK30KKworCitjb25zdCBjaGFyICogVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBkb3VibGUqIGQgKSBjb25zdAoreworCWNvbnN0IGNoYXIgKiBzID0gQXR0cmlidXRlKCBuYW1lICk7CisJaWYgKCBkICkKKwl7CisJCWlmICggcyApCisJCQkqZCA9IGF0b2YoIHMgKTsKKwkJZWxzZQorCQkJKmQgPSAwOworCX0KKwlyZXR1cm4gczsKK30KKworCitpbnQgVGlYbWxFbGVtZW50OjpRdWVyeUludEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgaW50KiBpdmFsICkgY29uc3QKK3sKKwljb25zdCBUaVhtbEF0dHJpYnV0ZSogbm9kZSA9IGF0dHJpYnV0ZVNldC5GaW5kKCBuYW1lICk7CisJaWYgKCAhbm9kZSApCisJCXJldHVybiBUSVhNTF9OT19BVFRSSUJVVEU7CisKKwlyZXR1cm4gbm9kZS0+UXVlcnlJbnRWYWx1ZSggaXZhbCApOworfQorCisKK2ludCBUaVhtbEVsZW1lbnQ6OlF1ZXJ5RG91YmxlQXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUqIGR2YWwgKSBjb25zdAoreworCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBub2RlID0gYXR0cmlidXRlU2V0LkZpbmQoIG5hbWUgKTsKKwlpZiAoICFub2RlICkKKwkJcmV0dXJuIFRJWE1MX05PX0FUVFJJQlVURTsKKworCXJldHVybiBub2RlLT5RdWVyeURvdWJsZVZhbHVlKCBkdmFsICk7Cit9CisKKwordm9pZCBUaVhtbEVsZW1lbnQ6OlNldEF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUsIGludCB2YWwgKQorewkKKwljaGFyIGJ1Zls2NF07CisJI2lmIGRlZmluZWQoVElYTUxfU05QUklOVEYpCQkKKwkJVElYTUxfU05QUklOVEYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIHZhbCApOworCSNlbHNlCisJCXNwcmludGYoIGJ1ZiwgIiVkIiwgdmFsICk7CisJI2VuZGlmCisJU2V0QXR0cmlidXRlKCBuYW1lLCBidWYgKTsKK30KKworCit2b2lkIFRpWG1sRWxlbWVudDo6U2V0RG91YmxlQXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSwgZG91YmxlIHZhbCApCit7CQorCWNoYXIgYnVmWzI1Nl07CisJI2lmIGRlZmluZWQoVElYTUxfU05QUklOVEYpCQkKKwkJVElYTUxfU05QUklOVEYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZiIsIHZhbCApOworCSNlbHNlCisJCXNwcmludGYoIGJ1ZiwgIiVmIiwgdmFsICk7CisJI2VuZGlmCisJU2V0QXR0cmlidXRlKCBuYW1lLCBidWYgKTsKK30KKworCit2b2lkIFRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSwgY29uc3QgY2hhciAqIF92YWx1ZSApCit7CisJVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggbmFtZSApOworCWlmICggbm9kZSApCisJeworCQlub2RlLT5TZXRWYWx1ZSggX3ZhbHVlICk7CisJCXJldHVybjsKKwl9CisKKwlUaVhtbEF0dHJpYnV0ZSogYXR0cmliID0gbmV3IFRpWG1sQXR0cmlidXRlKCBuYW1lLCBfdmFsdWUgKTsKKwlpZiAoIGF0dHJpYiApCisJeworCQlhdHRyaWJ1dGVTZXQuQWRkKCBhdHRyaWIgKTsKKwl9CisJZWxzZQorCXsKKwkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9PVVRfT0ZfTUVNT1JZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJfQorfQorCit2b2lkIFRpWG1sRWxlbWVudDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAoreworCWludCBpOworCWZvciAoIGk9MDsgaTxkZXB0aDsgaSsrICkKKwl7CisJCWZwcmludGYoIGNmaWxlLCAiICAgICIgKTsKKwl9CisKKwlmcHJpbnRmKCBjZmlsZSwgIjwlcyIsIHZhbHVlLmNfc3RyKCkgKTsKKworCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBhdHRyaWI7CisJZm9yICggYXR0cmliID0gYXR0cmlidXRlU2V0LkZpcnN0KCk7IGF0dHJpYjsgYXR0cmliID0gYXR0cmliLT5OZXh0KCkgKQorCXsKKwkJZnByaW50ZiggY2ZpbGUsICIgIiApOworCQlhdHRyaWItPlByaW50KCBjZmlsZSwgZGVwdGggKTsKKwl9CisKKwkvLyBUaGVyZSBhcmUgMyBkaWZmZXJlbnQgZm9ybWF0dGluZyBhcHByb2FjaGVzOgorCS8vIDEpIEFuIGVsZW1lbnQgd2l0aG91dCBjaGlsZHJlbiBpcyBwcmludGVkIGFzIGEgPGZvbyAvPiBub2RlCisJLy8gMikgQW4gZWxlbWVudCB3aXRoIG9ubHkgYSB0ZXh0IGNoaWxkIGlzIHByaW50ZWQgYXMgPGZvbz4gdGV4dCA8L2Zvbz4KKwkvLyAzKSBBbiBlbGVtZW50IHdpdGggY2hpbGRyZW4gaXMgcHJpbnRlZCBvbiBtdWx0aXBsZSBsaW5lcy4KKwlUaVhtbE5vZGUqIG5vZGU7CisJaWYgKCAhZmlyc3RDaGlsZCApCisJeworCQlmcHJpbnRmKCBjZmlsZSwgIiAvPiIgKTsKKwl9CisJZWxzZSBpZiAoIGZpcnN0Q2hpbGQgPT0gbGFzdENoaWxkICYmIGZpcnN0Q2hpbGQtPlRvVGV4dCgpICkKKwl7CisJCWZwcmludGYoIGNmaWxlLCAiPiIgKTsKKwkJZmlyc3RDaGlsZC0+UHJpbnQoIGNmaWxlLCBkZXB0aCArIDEgKTsKKwkJZnByaW50ZiggY2ZpbGUsICI8LyVzPiIsIHZhbHVlLmNfc3RyKCkgKTsKKwl9CisJZWxzZQorCXsKKwkJZnByaW50ZiggY2ZpbGUsICI+IiApOworCisJCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlPW5vZGUtPk5leHRTaWJsaW5nKCkgKQorCQl7CisJCQlpZiAoICFub2RlLT5Ub1RleHQoKSApCisJCQl7CisJCQkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKKwkJCX0KKwkJCW5vZGUtPlByaW50KCBjZmlsZSwgZGVwdGgrMSApOworCQl9CisJCWZwcmludGYoIGNmaWxlLCAiXG4iICk7CisJCWZvciggaT0wOyBpPGRlcHRoOyArK2kgKQorCQlmcHJpbnRmKCBjZmlsZSwgIiAgICAiICk7CisJCWZwcmludGYoIGNmaWxlLCAiPC8lcz4iLCB2YWx1ZS5jX3N0cigpICk7CisJfQorfQorCit2b2lkIFRpWG1sRWxlbWVudDo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogc3RyZWFtICkgY29uc3QKK3sKKwkoKnN0cmVhbSkgPDwgIjwiIDw8IHZhbHVlOworCisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIGF0dHJpYjsKKwlmb3IgKCBhdHRyaWIgPSBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsgYXR0cmliOyBhdHRyaWIgPSBhdHRyaWItPk5leHQoKSApCisJewkKKwkJKCpzdHJlYW0pIDw8ICIgIjsKKwkJYXR0cmliLT5TdHJlYW1PdXQoIHN0cmVhbSApOworCX0KKworCS8vIElmIHRoaXMgbm9kZSBoYXMgY2hpbGRyZW4sIGdpdmUgaXQgYSBjbG9zaW5nIHRhZy4gRWxzZQorCS8vIG1ha2UgaXQgYW4gZW1wdHkgdGFnLgorCVRpWG1sTm9kZSogbm9kZTsKKwlpZiAoIGZpcnN0Q2hpbGQgKQorCXsgCQkKKwkJKCpzdHJlYW0pIDw8ICI+IjsKKworCQlmb3IgKCBub2RlID0gZmlyc3RDaGlsZDsgbm9kZTsgbm9kZT1ub2RlLT5OZXh0U2libGluZygpICkKKwkJeworCQkJbm9kZS0+U3RyZWFtT3V0KCBzdHJlYW0gKTsKKwkJfQorCQkoKnN0cmVhbSkgPDwgIjwvIiA8PCB2YWx1ZSA8PCAiPiI7CisJfQorCWVsc2UKKwl7CisJCSgqc3RyZWFtKSA8PCAiIC8+IjsKKwl9Cit9CisKKwordm9pZCBUaVhtbEVsZW1lbnQ6OkNvcHlUbyggVGlYbWxFbGVtZW50KiB0YXJnZXQgKSBjb25zdAoreworCS8vIHN1cGVyY2xhc3M6CisJVGlYbWxOb2RlOjpDb3B5VG8oIHRhcmdldCApOworCisJLy8gRWxlbWVudCBjbGFzczogCisJLy8gQ2xvbmUgdGhlIGF0dHJpYnV0ZXMsIHRoZW4gY2xvbmUgdGhlIGNoaWxkcmVuLgorCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSAwOworCWZvcigJYXR0cmlidXRlID0gYXR0cmlidXRlU2V0LkZpcnN0KCk7CisJYXR0cmlidXRlOworCWF0dHJpYnV0ZSA9IGF0dHJpYnV0ZS0+TmV4dCgpICkKKwl7CisJCXRhcmdldC0+U2V0QXR0cmlidXRlKCBhdHRyaWJ1dGUtPk5hbWUoKSwgYXR0cmlidXRlLT5WYWx1ZSgpICk7CisJfQorCisJVGlYbWxOb2RlKiBub2RlID0gMDsKKwlmb3IgKCBub2RlID0gZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCkgKQorCXsKKwkJdGFyZ2V0LT5MaW5rRW5kQ2hpbGQoIG5vZGUtPkNsb25lKCkgKTsKKwl9Cit9CisKKworVGlYbWxOb2RlKiBUaVhtbEVsZW1lbnQ6OkNsb25lKCkgY29uc3QKK3sKKwlUaVhtbEVsZW1lbnQqIGNsb25lID0gbmV3IFRpWG1sRWxlbWVudCggVmFsdWUoKSApOworCWlmICggIWNsb25lICkKKwkJcmV0dXJuIDA7CisKKwlDb3B5VG8oIGNsb25lICk7CisJcmV0dXJuIGNsb25lOworfQorCisKK2NvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6R2V0VGV4dCgpIGNvbnN0Cit7CisJY29uc3QgVGlYbWxOb2RlKiBjaGlsZCA9IHRoaXMtPkZpcnN0Q2hpbGQoKTsKKwlpZiAoIGNoaWxkICkgeworCQljb25zdCBUaVhtbFRleHQqIGNoaWxkVGV4dCA9IGNoaWxkLT5Ub1RleHQoKTsKKwkJaWYgKCBjaGlsZFRleHQgKSB7CisJCQlyZXR1cm4gY2hpbGRUZXh0LT5WYWx1ZSgpOworCQl9CisJfQorCXJldHVybiAwOworfQorCisKK1RpWG1sRG9jdW1lbnQ6OlRpWG1sRG9jdW1lbnQoKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpET0NVTUVOVCApCit7CisJdGFic2l6ZSA9IDQ7CisJdXNlTWljcm9zb2Z0Qk9NID0gZmFsc2U7CisJQ2xlYXJFcnJvcigpOworfQorCitUaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50KCBjb25zdCBjaGFyICogZG9jdW1lbnROYW1lICkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6RE9DVU1FTlQgKQoreworCXRhYnNpemUgPSA0OworCXVzZU1pY3Jvc29mdEJPTSA9IGZhbHNlOworCXZhbHVlID0gZG9jdW1lbnROYW1lOworCUNsZWFyRXJyb3IoKTsKK30KKworCisjaWZkZWYgVElYTUxfVVNFX1NUTAorVGlYbWxEb2N1bWVudDo6VGlYbWxEb2N1bWVudCggY29uc3Qgc3RkOjpzdHJpbmcmIGRvY3VtZW50TmFtZSApIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkRPQ1VNRU5UICkKK3sKKwl0YWJzaXplID0gNDsKKwl1c2VNaWNyb3NvZnRCT00gPSBmYWxzZTsKKyAgICB2YWx1ZSA9IGRvY3VtZW50TmFtZTsKKwlDbGVhckVycm9yKCk7Cit9CisjZW5kaWYKKworCitUaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50KCBjb25zdCBUaVhtbERvY3VtZW50JiBjb3B5ICkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6RE9DVU1FTlQgKQoreworCWNvcHkuQ29weVRvKCB0aGlzICk7Cit9CisKKwordm9pZCBUaVhtbERvY3VtZW50OjpvcGVyYXRvcj0oIGNvbnN0IFRpWG1sRG9jdW1lbnQmIGNvcHkgKQoreworCUNsZWFyKCk7CisJY29weS5Db3B5VG8oIHRoaXMgKTsKK30KKworCitib29sIFRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlKCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwkvLyBTZWUgU1RMX1NUUklOR19CVUcgYmVsb3cuCisJU3RyaW5nVG9CdWZmZXIgYnVmKCB2YWx1ZSApOworCisJaWYgKCBidWYuYnVmZmVyICYmIExvYWRGaWxlKCBidWYuYnVmZmVyLCBlbmNvZGluZyApICkKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKworYm9vbCBUaVhtbERvY3VtZW50OjpTYXZlRmlsZSgpIGNvbnN0Cit7CisJLy8gU2VlIFNUTF9TVFJJTkdfQlVHIGJlbG93LgorCVN0cmluZ1RvQnVmZmVyIGJ1ZiggdmFsdWUgKTsKKworCWlmICggYnVmLmJ1ZmZlciAmJiBTYXZlRmlsZSggYnVmLmJ1ZmZlciApICkKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUoIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwkvLyBEZWxldGUgdGhlIGV4aXN0aW5nIGRhdGE6CisJQ2xlYXIoKTsKKwlsb2NhdGlvbi5DbGVhcigpOworCisJLy8gVGhlcmUgd2FzIGEgcmVhbGx5IHRlcnJpZnlpbmcgbGl0dGxlIGJ1ZyBoZXJlLiBUaGUgY29kZToKKwkvLwkJdmFsdWUgPSBmaWxlbmFtZQorCS8vIGluIHRoZSBTVEwgY2FzZSwgY2F1c2UgdGhlIGFzc2lnbm1lbnQgbWV0aG9kIG9mIHRoZSBzdGQ6OnN0cmluZyB0bworCS8vIGJlIGNhbGxlZC4gV2hhdCBpcyBzdHJhbmdlLCBpcyB0aGF0IHRoZSBzdGQ6OnN0cmluZyBoYWQgdGhlIHNhbWUKKwkvLyBhZGRyZXNzIGFzIGl0J3MgY19zdHIoKSBtZXRob2QsIGFuZCBzbyBiYWQgdGhpbmdzIGhhcHBlbi4gTG9va3MKKwkvLyBsaWtlIGEgYnVnIGluIHRoZSBNaWNyb3NvZnQgU1RMIGltcGxlbWVudGF0aW9uLgorCS8vIFNlZSBTVExfU1RSSU5HX0JVRyBhYm92ZS4KKwkvLyBGaXhlZCB3aXRoIHRoZSBTdHJpbmdUb0J1ZmZlciBjbGFzcy4KKwl2YWx1ZSA9IGZpbGVuYW1lOworCisJLy8gcmVhZGluZyBpbiBiaW5hcnkgbW9kZSBzbyB0aGF0IHRpbnl4bWwgY2FuIG5vcm1hbGl6ZSB0aGUgRU9MCisJRklMRSogZmlsZSA9IGZvcGVuKCB2YWx1ZS5jX3N0ciAoKSwgInJiIiApOwkKKworCWlmICggZmlsZSApCisJeworCQkvLyBHZXQgdGhlIGZpbGUgc2l6ZSwgc28gd2UgY2FuIHByZS1hbGxvY2F0ZSB0aGUgc3RyaW5nLiBIVUdFIHNwZWVkIGltcGFjdC4KKwkJbG9uZyBsZW5ndGggPSAwOworCQlmc2VlayggZmlsZSwgMCwgU0VFS19FTkQgKTsKKwkJbGVuZ3RoID0gZnRlbGwoIGZpbGUgKTsKKwkJZnNlZWsoIGZpbGUsIDAsIFNFRUtfU0VUICk7CisKKwkJLy8gU3RyYW5nZSBjYXNlLCBidXQgZ29vZCB0byBoYW5kbGUgdXAgZnJvbnQuCisJCWlmICggbGVuZ3RoID09IDAgKQorCQl7CisJCQlmY2xvc2UoIGZpbGUgKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCS8vIElmIHdlIGhhdmUgYSBmaWxlLCBhc3N1bWUgaXQgaXMgYWxsIG9uZSBiaWcgWE1MIGZpbGUsIGFuZCByZWFkIGl0IGluLgorCQkvLyBUaGUgZG9jdW1lbnQgcGFyc2VyIG1heSBkZWNpZGUgdGhlIGRvY3VtZW50IGVuZHMgc29vbmVyIHRoYW4gdGhlIGVudGlyZSBmaWxlLCBob3dldmVyLgorCQlUSVhNTF9TVFJJTkcgZGF0YTsKKwkJZGF0YS5yZXNlcnZlKCBsZW5ndGggKTsKKworCQkvLyBTdWJ0bGUgYnVnIGhlcmUuIFRpbnlYbWwgZGlkIHVzZSBmZ2V0cy4gQnV0IGZyb20gdGhlIFhNTCBzcGVjOgorCQkvLyAyLjExIEVuZC1vZi1MaW5lIEhhbmRsaW5nCisJCS8vIDxzbmlwPgorCQkvLyA8cXVvdGU+CisJCS8vIC4uLnRoZSBYTUwgcHJvY2Vzc29yIE1VU1QgYmVoYXZlIGFzIGlmIGl0IG5vcm1hbGl6ZWQgYWxsIGxpbmUgYnJlYWtzIGluIGV4dGVybmFsIAorCQkvLyBwYXJzZWQgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZG9jdW1lbnQgZW50aXR5KSBvbiBpbnB1dCwgYmVmb3JlIHBhcnNpbmcsIGJ5IHRyYW5zbGF0aW5nIAorCQkvLyBib3RoIHRoZSB0d28tY2hhcmFjdGVyIHNlcXVlbmNlICN4RCAjeEEgYW5kIGFueSAjeEQgdGhhdCBpcyBub3QgZm9sbG93ZWQgYnkgI3hBIHRvIAorCQkvLyBhIHNpbmdsZSAjeEEgY2hhcmFjdGVyLgorCQkvLyA8L3F1b3RlPgorCQkvLworCQkvLyBJdCBpcyBub3QgY2xlYXIgZmdldHMgZG9lcyB0aGF0LCBhbmQgY2VydGFpbmx5IGlzbid0IGNsZWFyIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3JtLiAKKwkJLy8gR2VuZXJhbGx5LCB5b3UgZXhwZWN0IGZnZXRzIHRvIHRyYW5zbGF0ZSBmcm9tIHRoZSBjb252ZW50aW9uIG9mIHRoZSBPUyB0byB0aGUgYy91bml4CisJCS8vIGNvbnZlbnRpb24sIGFuZCBub3Qgd29yayBnZW5lcmFsbHkuCisKKwkJLyoKKwkJd2hpbGUoIGZnZXRzKCBidWYsIHNpemVvZihidWYpLCBmaWxlICkgKQorCQl7CisJCQlkYXRhICs9IGJ1ZjsKKwkJfQorCQkqLworCisJCWNoYXIqIGJ1ZiA9IG5ldyBjaGFyWyBsZW5ndGgrMSBdOworCQlidWZbMF0gPSAwOworCisJCWlmICggZnJlYWQoIGJ1ZiwgbGVuZ3RoLCAxLCBmaWxlICkgIT0gMSApIHsKKwkJLy9pZiAoIGZyZWFkKCBidWYsIDEsIGxlbmd0aCwgZmlsZSApICE9IChzaXplX3QpbGVuZ3RoICkgeworCQkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX09QRU5JTkdfRklMRSwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJZmNsb3NlKCBmaWxlICk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJZmNsb3NlKCBmaWxlICk7CisKKwkJY29uc3QgY2hhciogbGFzdFBvcyA9IGJ1ZjsKKwkJY29uc3QgY2hhciogcCA9IGJ1ZjsKKworCQlidWZbbGVuZ3RoXSA9IDA7CisJCXdoaWxlKCAqcCApIHsKKwkJCWFzc2VydCggcCA8IChidWYrbGVuZ3RoKSApOworCQkJaWYgKCAqcCA9PSAweGEgKSB7CisJCQkJLy8gTmV3bGluZSBjaGFyYWN0ZXIuIE5vIHNwZWNpYWwgcnVsZXMgZm9yIHRoaXMuIEFwcGVuZCBhbGwgdGhlIGNoYXJhY3RlcnMKKwkJCQkvLyBzaW5jZSB0aGUgbGFzdCBzdHJpbmcsIGFuZCBpbmNsdWRlIHRoZSBuZXdsaW5lLgorCQkJCWRhdGEuYXBwZW5kKCBsYXN0UG9zLCBwLWxhc3RQb3MrMSApOwkvLyBhcHBlbmQsIGluY2x1ZGUgdGhlIG5ld2xpbmUKKwkJCQkrK3A7CQkJCQkJCQkJLy8gbW92ZSBwYXN0IHRoZSBuZXdsaW5lCisJCQkJbGFzdFBvcyA9IHA7CQkJCQkJCS8vIGFuZCBwb2ludCB0byB0aGUgbmV3IGJ1ZmZlciAobWF5IGJlIDApCisJCQkJYXNzZXJ0KCBwIDw9IChidWYrbGVuZ3RoKSApOworCQkJfQorCQkJZWxzZSBpZiAoICpwID09IDB4ZCApIHsKKwkJCQkvLyBDYXJyaWFnZSByZXR1cm4uIEFwcGVuZCB3aGF0IHdlIGhhdmUgc28gZmFyLCB0aGVuCisJCQkJLy8gaGFuZGxlIG1vdmluZyBmb3J3YXJkIGluIHRoZSBidWZmZXIuCisJCQkJaWYgKCAocC1sYXN0UG9zKSA+IDAgKSB7CisJCQkJCWRhdGEuYXBwZW5kKCBsYXN0UG9zLCBwLWxhc3RQb3MgKTsJLy8gZG8gbm90IGFkZCB0aGUgQ1IKKwkJCQl9CisJCQkJZGF0YSArPSAoY2hhcikweGE7CQkJCQkJLy8gYSBwcm9wZXIgbmV3bGluZQorCisJCQkJaWYgKCAqKHArMSkgPT0gMHhhICkgeworCQkJCQkvLyBDYXJyaWFnZSByZXR1cm4gLSBuZXcgbGluZSBzZXF1ZW5jZQorCQkJCQlwICs9IDI7CisJCQkJCWxhc3RQb3MgPSBwOworCQkJCQlhc3NlcnQoIHAgPD0gKGJ1ZitsZW5ndGgpICk7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQkvLyBpdCB3YXMgZm9sbG93ZWQgYnkgc29tZXRoaW5nIGVsc2UuLi50aGF0IGlzIHByZXN1bWFibHkgY2hhcmFjdGVycyBhZ2Fpbi4KKwkJCQkJKytwOworCQkJCQlsYXN0UG9zID0gcDsKKwkJCQkJYXNzZXJ0KCBwIDw9IChidWYrbGVuZ3RoKSApOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgeworCQkJCSsrcDsKKwkJCX0KKwkJfQorCQkvLyBIYW5kbGUgYW55IGxlZnQgb3ZlciBjaGFyYWN0ZXJzLgorCQlpZiAoIHAtbGFzdFBvcyApIHsKKwkJCWRhdGEuYXBwZW5kKCBsYXN0UG9zLCBwLWxhc3RQb3MgKTsKKwkJfQkJCisJCWRlbGV0ZSBbXSBidWY7CisJCWJ1ZiA9IDA7CisKKwkJUGFyc2UoIGRhdGEuY19zdHIoKSwgMCwgZW5jb2RpbmcgKTsKKworCQlpZiAoICBFcnJvcigpICkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZWxzZQorCQkJcmV0dXJuIHRydWU7CisJfQorCVNldEVycm9yKCBUSVhNTF9FUlJPUl9PUEVOSU5HX0ZJTEUsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVGlYbWxEb2N1bWVudDo6U2F2ZUZpbGUoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSApIGNvbnN0Cit7CisJLy8gVGhlIG9sZCBjIHN0dWZmIGxpdmVzIG9uLi4uCisJRklMRSogZnAgPSBmb3BlbiggZmlsZW5hbWUsICJ3IiApOworCWlmICggZnAgKQorCXsKKwkJaWYgKCB1c2VNaWNyb3NvZnRCT00gKSAKKwkJeworCQkJY29uc3QgdW5zaWduZWQgY2hhciBUSVhNTF9VVEZfTEVBRF8wID0gMHhlZlU7CisJCQljb25zdCB1bnNpZ25lZCBjaGFyIFRJWE1MX1VURl9MRUFEXzEgPSAweGJiVTsKKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgVElYTUxfVVRGX0xFQURfMiA9IDB4YmZVOworCisJCQlmcHV0YyggVElYTUxfVVRGX0xFQURfMCwgZnAgKTsKKwkJCWZwdXRjKCBUSVhNTF9VVEZfTEVBRF8xLCBmcCApOworCQkJZnB1dGMoIFRJWE1MX1VURl9MRUFEXzIsIGZwICk7CisJCX0KKwkJUHJpbnQoIGZwLCAwICk7CisJCWZjbG9zZSggZnAgKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCXJldHVybiBmYWxzZTsKK30KKworCit2b2lkIFRpWG1sRG9jdW1lbnQ6OkNvcHlUbyggVGlYbWxEb2N1bWVudCogdGFyZ2V0ICkgY29uc3QKK3sKKwlUaVhtbE5vZGU6OkNvcHlUbyggdGFyZ2V0ICk7CisKKwl0YXJnZXQtPmVycm9yID0gZXJyb3I7CisJdGFyZ2V0LT5lcnJvckRlc2MgPSBlcnJvckRlc2MuY19zdHIgKCk7CisKKwlUaVhtbE5vZGUqIG5vZGUgPSAwOworCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCisJeworCQl0YXJnZXQtPkxpbmtFbmRDaGlsZCggbm9kZS0+Q2xvbmUoKSApOworCX0JCit9CisKKworVGlYbWxOb2RlKiBUaVhtbERvY3VtZW50OjpDbG9uZSgpIGNvbnN0Cit7CisJVGlYbWxEb2N1bWVudCogY2xvbmUgPSBuZXcgVGlYbWxEb2N1bWVudCgpOworCWlmICggIWNsb25lICkKKwkJcmV0dXJuIDA7CisKKwlDb3B5VG8oIGNsb25lICk7CisJcmV0dXJuIGNsb25lOworfQorCisKK3ZvaWQgVGlYbWxEb2N1bWVudDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAoreworCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKKwlmb3IgKCBub2RlPUZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZT1ub2RlLT5OZXh0U2libGluZygpICkKKwl7CisJCW5vZGUtPlByaW50KCBjZmlsZSwgZGVwdGggKTsKKwkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKKwl9Cit9CisKK3ZvaWQgVGlYbWxEb2N1bWVudDo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgY29uc3QKK3sKKwljb25zdCBUaVhtbE5vZGUqIG5vZGU7CisJZm9yICggbm9kZT1GaXJzdENoaWxkKCk7IG5vZGU7IG5vZGU9bm9kZS0+TmV4dFNpYmxpbmcoKSApCisJeworCQlub2RlLT5TdHJlYW1PdXQoIG91dCApOworCisJCS8vIFNwZWNpYWwgcnVsZSBmb3Igc3RyZWFtczogc3RvcCBhZnRlciB0aGUgcm9vdCBlbGVtZW50LgorCQkvLyBUaGUgc3RyZWFtIGluIGNvZGUgd2lsbCBvbmx5IHJlYWQgb25lIGVsZW1lbnQsIHNvIGRvbid0CisJCS8vIHdyaXRlIG1vcmUgdGhhbiBvbmUuCisJCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQorCQkJYnJlYWs7CisJfQorfQorCisKK2NvbnN0IFRpWG1sQXR0cmlidXRlKiBUaVhtbEF0dHJpYnV0ZTo6TmV4dCgpIGNvbnN0Cit7CisJLy8gV2UgYXJlIHVzaW5nIGtub3dsZWRnZSBvZiB0aGUgc2VudGluZWwuIFRoZSBzZW50aW5lbAorCS8vIGhhdmUgYSB2YWx1ZSBvciBuYW1lLgorCWlmICggbmV4dC0+dmFsdWUuZW1wdHkoKSAmJiBuZXh0LT5uYW1lLmVtcHR5KCkgKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gbmV4dDsKK30KKworVGlYbWxBdHRyaWJ1dGUqIFRpWG1sQXR0cmlidXRlOjpOZXh0KCkKK3sKKwkvLyBXZSBhcmUgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBzZW50aW5lbC4gVGhlIHNlbnRpbmVsCisJLy8gaGF2ZSBhIHZhbHVlIG9yIG5hbWUuCisJaWYgKCBuZXh0LT52YWx1ZS5lbXB0eSgpICYmIG5leHQtPm5hbWUuZW1wdHkoKSApCisJCXJldHVybiAwOworCXJldHVybiBuZXh0OworfQorCitjb25zdCBUaVhtbEF0dHJpYnV0ZSogVGlYbWxBdHRyaWJ1dGU6OlByZXZpb3VzKCkgY29uc3QKK3sKKwkvLyBXZSBhcmUgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBzZW50aW5lbC4gVGhlIHNlbnRpbmVsCisJLy8gaGF2ZSBhIHZhbHVlIG9yIG5hbWUuCisJaWYgKCBwcmV2LT52YWx1ZS5lbXB0eSgpICYmIHByZXYtPm5hbWUuZW1wdHkoKSApCisJCXJldHVybiAwOworCXJldHVybiBwcmV2OworfQorCitUaVhtbEF0dHJpYnV0ZSogVGlYbWxBdHRyaWJ1dGU6OlByZXZpb3VzKCkKK3sKKwkvLyBXZSBhcmUgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBzZW50aW5lbC4gVGhlIHNlbnRpbmVsCisJLy8gaGF2ZSBhIHZhbHVlIG9yIG5hbWUuCisJaWYgKCBwcmV2LT52YWx1ZS5lbXB0eSgpICYmIHByZXYtPm5hbWUuZW1wdHkoKSApCisJCXJldHVybiAwOworCXJldHVybiBwcmV2OworfQorCit2b2lkIFRpWG1sQXR0cmlidXRlOjpQcmludCggRklMRSogY2ZpbGUsIGludCAvKmRlcHRoKi8gKSBjb25zdAoreworCVRJWE1MX1NUUklORyBuLCB2OworCisJUHV0U3RyaW5nKCBuYW1lLCAmbiApOworCVB1dFN0cmluZyggdmFsdWUsICZ2ICk7CisKKwlpZiAodmFsdWUuZmluZCAoJ1wiJykgPT0gVElYTUxfU1RSSU5HOjpucG9zKQorCQlmcHJpbnRmIChjZmlsZSwgIiVzPVwiJXNcIiIsIG4uY19zdHIoKSwgdi5jX3N0cigpICk7CisJZWxzZQorCQlmcHJpbnRmIChjZmlsZSwgIiVzPSclcyciLCBuLmNfc3RyKCksIHYuY19zdHIoKSApOworfQorCisKK3ZvaWQgVGlYbWxBdHRyaWJ1dGU6OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Cit7CisJaWYgKHZhbHVlLmZpbmQoICdcIicgKSAhPSBUSVhNTF9TVFJJTkc6Om5wb3MpCisJeworCQlQdXRTdHJpbmcoIG5hbWUsIHN0cmVhbSApOworCQkoKnN0cmVhbSkgPDwgIj0iIDw8ICInIjsKKwkJUHV0U3RyaW5nKCB2YWx1ZSwgc3RyZWFtICk7CisJCSgqc3RyZWFtKSA8PCAiJyI7CisJfQorCWVsc2UKKwl7CisJCVB1dFN0cmluZyggbmFtZSwgc3RyZWFtICk7CisJCSgqc3RyZWFtKSA8PCAiPSIgPDwgIlwiIjsKKwkJUHV0U3RyaW5nKCB2YWx1ZSwgc3RyZWFtICk7CisJCSgqc3RyZWFtKSA8PCAiXCIiOworCX0KK30KKworaW50IFRpWG1sQXR0cmlidXRlOjpRdWVyeUludFZhbHVlKCBpbnQqIGl2YWwgKSBjb25zdAoreworCWlmICggc3NjYW5mKCB2YWx1ZS5jX3N0cigpLCAiJWQiLCBpdmFsICkgPT0gMSApCisJCXJldHVybiBUSVhNTF9TVUNDRVNTOworCXJldHVybiBUSVhNTF9XUk9OR19UWVBFOworfQorCitpbnQgVGlYbWxBdHRyaWJ1dGU6OlF1ZXJ5RG91YmxlVmFsdWUoIGRvdWJsZSogZHZhbCApIGNvbnN0Cit7CisJaWYgKCBzc2NhbmYoIHZhbHVlLmNfc3RyKCksICIlbGYiLCBkdmFsICkgPT0gMSApCisJCXJldHVybiBUSVhNTF9TVUNDRVNTOworCXJldHVybiBUSVhNTF9XUk9OR19UWVBFOworfQorCit2b2lkIFRpWG1sQXR0cmlidXRlOjpTZXRJbnRWYWx1ZSggaW50IF92YWx1ZSApCit7CisJY2hhciBidWYgWzY0XTsKKwkjaWYgZGVmaW5lZChUSVhNTF9TTlBSSU5URikJCQorCQlUSVhNTF9TTlBSSU5URihidWYsIHNpemVvZihidWYpLCAiJWQiLCBfdmFsdWUpOworCSNlbHNlCisJCXNwcmludGYgKGJ1ZiwgIiVkIiwgX3ZhbHVlKTsKKwkjZW5kaWYKKwlTZXRWYWx1ZSAoYnVmKTsKK30KKwordm9pZCBUaVhtbEF0dHJpYnV0ZTo6U2V0RG91YmxlVmFsdWUoIGRvdWJsZSBfdmFsdWUgKQoreworCWNoYXIgYnVmIFsyNTZdOworCSNpZiBkZWZpbmVkKFRJWE1MX1NOUFJJTlRGKQkJCisJCVRJWE1MX1NOUFJJTlRGKCBidWYsIHNpemVvZihidWYpLCAiJWxmIiwgX3ZhbHVlKTsKKwkjZWxzZQorCQlzcHJpbnRmIChidWYsICIlbGYiLCBfdmFsdWUpOworCSNlbmRpZgorCVNldFZhbHVlIChidWYpOworfQorCitpbnQgVGlYbWxBdHRyaWJ1dGU6OkludFZhbHVlKCkgY29uc3QKK3sKKwlyZXR1cm4gYXRvaSAodmFsdWUuY19zdHIgKCkpOworfQorCitkb3VibGUgIFRpWG1sQXR0cmlidXRlOjpEb3VibGVWYWx1ZSgpIGNvbnN0Cit7CisJcmV0dXJuIGF0b2YgKHZhbHVlLmNfc3RyICgpKTsKK30KKworCitUaVhtbENvbW1lbnQ6OlRpWG1sQ29tbWVudCggY29uc3QgVGlYbWxDb21tZW50JiBjb3B5ICkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6Q09NTUVOVCApCit7CisJY29weS5Db3B5VG8oIHRoaXMgKTsKK30KKworCit2b2lkIFRpWG1sQ29tbWVudDo6b3BlcmF0b3I9KCBjb25zdCBUaVhtbENvbW1lbnQmIGJhc2UgKQoreworCUNsZWFyKCk7CisJYmFzZS5Db3B5VG8oIHRoaXMgKTsKK30KKworCit2b2lkIFRpWG1sQ29tbWVudDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAoreworCWZvciAoIGludCBpPTA7IGk8ZGVwdGg7IGkrKyApCisJeworCQlmcHV0cyggIiAgICAiLCBjZmlsZSApOworCX0KKwlmcHJpbnRmKCBjZmlsZSwgIjwhLS0lcy0tPiIsIHZhbHVlLmNfc3RyKCkgKTsKK30KKwordm9pZCBUaVhtbENvbW1lbnQ6OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Cit7CisJKCpzdHJlYW0pIDw8ICI8IS0tIjsKKwkvL1B1dFN0cmluZyggdmFsdWUsIHN0cmVhbSApOworCSgqc3RyZWFtKSA8PCB2YWx1ZTsKKwkoKnN0cmVhbSkgPDwgIi0tPiI7Cit9CisKKwordm9pZCBUaVhtbENvbW1lbnQ6OkNvcHlUbyggVGlYbWxDb21tZW50KiB0YXJnZXQgKSBjb25zdAoreworCVRpWG1sTm9kZTo6Q29weVRvKCB0YXJnZXQgKTsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sQ29tbWVudDo6Q2xvbmUoKSBjb25zdAoreworCVRpWG1sQ29tbWVudCogY2xvbmUgPSBuZXcgVGlYbWxDb21tZW50KCk7CisKKwlpZiAoICFjbG9uZSApCisJCXJldHVybiAwOworCisJQ29weVRvKCBjbG9uZSApOworCXJldHVybiBjbG9uZTsKK30KKworCit2b2lkIFRpWG1sVGV4dDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAoreworCWlmICggY2RhdGEgKQorCXsKKwkJaW50IGk7CisJCWZwcmludGYoIGNmaWxlLCAiXG4iICk7CisJCWZvciAoIGk9MDsgaTxkZXB0aDsgaSsrICkgeworCQkJZnByaW50ZiggY2ZpbGUsICIgICAgIiApOworCQl9CisJCWZwcmludGYoIGNmaWxlLCAiPCFbQ0RBVEFbXG4iICk7CisKKwkJZnByaW50ZiggY2ZpbGUsICIlcyIsIHZhbHVlLmNfc3RyKCkgKTsJLy8gdW5mb3JtYXR0ZWQgb3V0cHV0CisKKwkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKKwkJZm9yICggaT0wOyBpPGRlcHRoOyBpKysgKSB7CisJCQlmcHJpbnRmKCBjZmlsZSwgIiAgICAiICk7CisJCX0KKwkJZnByaW50ZiggY2ZpbGUsICJdXT5cbiIgKTsKKwl9CisJZWxzZQorCXsKKwkJVElYTUxfU1RSSU5HIGJ1ZmZlcjsKKwkJUHV0U3RyaW5nKCB2YWx1ZSwgJmJ1ZmZlciApOworCQlmcHJpbnRmKCBjZmlsZSwgIiVzIiwgYnVmZmVyLmNfc3RyKCkgKTsKKwl9Cit9CisKKwordm9pZCBUaVhtbFRleHQ6OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Cit7CisJaWYgKCBjZGF0YSApCisJeworCQkoKnN0cmVhbSkgPDwgIjwhW0NEQVRBWyIgPDwgdmFsdWUgPDwgIl1dPiI7CisJfQorCWVsc2UKKwl7CisJCVB1dFN0cmluZyggdmFsdWUsIHN0cmVhbSApOworCX0KK30KKworCit2b2lkIFRpWG1sVGV4dDo6Q29weVRvKCBUaVhtbFRleHQqIHRhcmdldCApIGNvbnN0Cit7CisJVGlYbWxOb2RlOjpDb3B5VG8oIHRhcmdldCApOworCXRhcmdldC0+Y2RhdGEgPSBjZGF0YTsKK30KKworCitUaVhtbE5vZGUqIFRpWG1sVGV4dDo6Q2xvbmUoKSBjb25zdAorewkKKwlUaVhtbFRleHQqIGNsb25lID0gMDsKKwljbG9uZSA9IG5ldyBUaVhtbFRleHQoICIiICk7CisKKwlpZiAoICFjbG9uZSApCisJCXJldHVybiAwOworCisJQ29weVRvKCBjbG9uZSApOworCXJldHVybiBjbG9uZTsKK30KKworCitUaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uKCBjb25zdCBjaGFyICogX3ZlcnNpb24sCisJCQkJCQkJCQljb25zdCBjaGFyICogX2VuY29kaW5nLAorCQkJCQkJCQkJY29uc3QgY2hhciAqIF9zdGFuZGFsb25lICkKKwk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpERUNMQVJBVElPTiApCit7CisJdmVyc2lvbiA9IF92ZXJzaW9uOworCWVuY29kaW5nID0gX2VuY29kaW5nOworCXN0YW5kYWxvbmUgPSBfc3RhbmRhbG9uZTsKK30KKworCisjaWZkZWYgVElYTUxfVVNFX1NUTAorVGlYbWxEZWNsYXJhdGlvbjo6VGlYbWxEZWNsYXJhdGlvbigJY29uc3Qgc3RkOjpzdHJpbmcmIF92ZXJzaW9uLAorCQkJCQkJCQkJY29uc3Qgc3RkOjpzdHJpbmcmIF9lbmNvZGluZywKKwkJCQkJCQkJCWNvbnN0IHN0ZDo6c3RyaW5nJiBfc3RhbmRhbG9uZSApCisJOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6REVDTEFSQVRJT04gKQoreworCXZlcnNpb24gPSBfdmVyc2lvbjsKKwllbmNvZGluZyA9IF9lbmNvZGluZzsKKwlzdGFuZGFsb25lID0gX3N0YW5kYWxvbmU7Cit9CisjZW5kaWYKKworCitUaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uKCBjb25zdCBUaVhtbERlY2xhcmF0aW9uJiBjb3B5ICkKKwk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpERUNMQVJBVElPTiApCit7CisJY29weS5Db3B5VG8oIHRoaXMgKTsJCit9CisKKwordm9pZCBUaVhtbERlY2xhcmF0aW9uOjpvcGVyYXRvcj0oIGNvbnN0IFRpWG1sRGVjbGFyYXRpb24mIGNvcHkgKQoreworCUNsZWFyKCk7CisJY29weS5Db3B5VG8oIHRoaXMgKTsKK30KKworCit2b2lkIFRpWG1sRGVjbGFyYXRpb246OlByaW50KCBGSUxFKiBjZmlsZSwgaW50IC8qZGVwdGgqLyApIGNvbnN0Cit7CisJZnByaW50ZiAoY2ZpbGUsICI8P3htbCAiKTsKKworCWlmICggIXZlcnNpb24uZW1wdHkoKSApCisJCWZwcmludGYgKGNmaWxlLCAidmVyc2lvbj1cIiVzXCIgIiwgdmVyc2lvbi5jX3N0ciAoKSk7CisJaWYgKCAhZW5jb2RpbmcuZW1wdHkoKSApCisJCWZwcmludGYgKGNmaWxlLCAiZW5jb2Rpbmc9XCIlc1wiICIsIGVuY29kaW5nLmNfc3RyICgpKTsKKwlpZiAoICFzdGFuZGFsb25lLmVtcHR5KCkgKQorCQlmcHJpbnRmIChjZmlsZSwgInN0YW5kYWxvbmU9XCIlc1wiICIsIHN0YW5kYWxvbmUuY19zdHIgKCkpOworCWZwcmludGYgKGNmaWxlLCAiPz4iKTsKK30KKwordm9pZCBUaVhtbERlY2xhcmF0aW9uOjpTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBzdHJlYW0gKSBjb25zdAoreworCSgqc3RyZWFtKSA8PCAiPD94bWwgIjsKKworCWlmICggIXZlcnNpb24uZW1wdHkoKSApCisJeworCQkoKnN0cmVhbSkgPDwgInZlcnNpb249XCIiOworCQlQdXRTdHJpbmcoIHZlcnNpb24sIHN0cmVhbSApOworCQkoKnN0cmVhbSkgPDwgIlwiICI7CisJfQorCWlmICggIWVuY29kaW5nLmVtcHR5KCkgKQorCXsKKwkJKCpzdHJlYW0pIDw8ICJlbmNvZGluZz1cIiI7CisJCVB1dFN0cmluZyggZW5jb2RpbmcsIHN0cmVhbSApOworCQkoKnN0cmVhbSApIDw8ICJcIiAiOworCX0KKwlpZiAoICFzdGFuZGFsb25lLmVtcHR5KCkgKQorCXsKKwkJKCpzdHJlYW0pIDw8ICJzdGFuZGFsb25lPVwiIjsKKwkJUHV0U3RyaW5nKCBzdGFuZGFsb25lLCBzdHJlYW0gKTsKKwkJKCpzdHJlYW0pIDw8ICJcIiAiOworCX0KKwkoKnN0cmVhbSkgPDwgIj8+IjsKK30KKworCit2b2lkIFRpWG1sRGVjbGFyYXRpb246OkNvcHlUbyggVGlYbWxEZWNsYXJhdGlvbiogdGFyZ2V0ICkgY29uc3QKK3sKKwlUaVhtbE5vZGU6OkNvcHlUbyggdGFyZ2V0ICk7CisKKwl0YXJnZXQtPnZlcnNpb24gPSB2ZXJzaW9uOworCXRhcmdldC0+ZW5jb2RpbmcgPSBlbmNvZGluZzsKKwl0YXJnZXQtPnN0YW5kYWxvbmUgPSBzdGFuZGFsb25lOworfQorCisKK1RpWG1sTm9kZSogVGlYbWxEZWNsYXJhdGlvbjo6Q2xvbmUoKSBjb25zdAorewkKKwlUaVhtbERlY2xhcmF0aW9uKiBjbG9uZSA9IG5ldyBUaVhtbERlY2xhcmF0aW9uKCk7CisKKwlpZiAoICFjbG9uZSApCisJCXJldHVybiAwOworCisJQ29weVRvKCBjbG9uZSApOworCXJldHVybiBjbG9uZTsKK30KKworCit2b2lkIFRpWG1sVW5rbm93bjo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAoreworCWZvciAoIGludCBpPTA7IGk8ZGVwdGg7IGkrKyApCisJCWZwcmludGYoIGNmaWxlLCAiICAgICIgKTsKKwlmcHJpbnRmKCBjZmlsZSwgIjwlcz4iLCB2YWx1ZS5jX3N0cigpICk7Cit9CisKKwordm9pZCBUaVhtbFVua25vd246OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Cit7CisJKCpzdHJlYW0pIDw8ICI8IiA8PCB2YWx1ZSA8PCAiPiI7CQkvLyBEb24ndCB1c2UgZW50aXRpZXMgaGVyZSEgSXQgaXMgdW5rbm93bi4KK30KKworCit2b2lkIFRpWG1sVW5rbm93bjo6Q29weVRvKCBUaVhtbFVua25vd24qIHRhcmdldCApIGNvbnN0Cit7CisJVGlYbWxOb2RlOjpDb3B5VG8oIHRhcmdldCApOworfQorCisKK1RpWG1sTm9kZSogVGlYbWxVbmtub3duOjpDbG9uZSgpIGNvbnN0Cit7CisJVGlYbWxVbmtub3duKiBjbG9uZSA9IG5ldyBUaVhtbFVua25vd24oKTsKKworCWlmICggIWNsb25lICkKKwkJcmV0dXJuIDA7CisKKwlDb3B5VG8oIGNsb25lICk7CisJcmV0dXJuIGNsb25lOworfQorCisKK1RpWG1sQXR0cmlidXRlU2V0OjpUaVhtbEF0dHJpYnV0ZVNldCgpCit7CisJc2VudGluZWwubmV4dCA9ICZzZW50aW5lbDsKKwlzZW50aW5lbC5wcmV2ID0gJnNlbnRpbmVsOworfQorCisKK1RpWG1sQXR0cmlidXRlU2V0Ojp+VGlYbWxBdHRyaWJ1dGVTZXQoKQoreworCWFzc2VydCggc2VudGluZWwubmV4dCA9PSAmc2VudGluZWwgKTsKKwlhc3NlcnQoIHNlbnRpbmVsLnByZXYgPT0gJnNlbnRpbmVsICk7Cit9CisKKwordm9pZCBUaVhtbEF0dHJpYnV0ZVNldDo6QWRkKCBUaVhtbEF0dHJpYnV0ZSogYWRkTWUgKQoreworCWFzc2VydCggIUZpbmQoIGFkZE1lLT5OYW1lKCkgKSApOwkvLyBTaG91bGRuJ3QgYmUgbXVsdGlwbHkgYWRkaW5nIHRvIHRoZSBzZXQuCisKKwlhZGRNZS0+bmV4dCA9ICZzZW50aW5lbDsKKwlhZGRNZS0+cHJldiA9IHNlbnRpbmVsLnByZXY7CisKKwlzZW50aW5lbC5wcmV2LT5uZXh0ID0gYWRkTWU7CisJc2VudGluZWwucHJldiAgICAgID0gYWRkTWU7Cit9CisKK3ZvaWQgVGlYbWxBdHRyaWJ1dGVTZXQ6OlJlbW92ZSggVGlYbWxBdHRyaWJ1dGUqIHJlbW92ZU1lICkKK3sKKwlUaVhtbEF0dHJpYnV0ZSogbm9kZTsKKworCWZvciggbm9kZSA9IHNlbnRpbmVsLm5leHQ7IG5vZGUgIT0gJnNlbnRpbmVsOyBub2RlID0gbm9kZS0+bmV4dCApCisJeworCQlpZiAoIG5vZGUgPT0gcmVtb3ZlTWUgKQorCQl7CisJCQlub2RlLT5wcmV2LT5uZXh0ID0gbm9kZS0+bmV4dDsKKwkJCW5vZGUtPm5leHQtPnByZXYgPSBub2RlLT5wcmV2OworCQkJbm9kZS0+bmV4dCA9IDA7CisJCQlub2RlLT5wcmV2ID0gMDsKKwkJCXJldHVybjsKKwkJfQorCX0KKwlhc3NlcnQoIDAgKTsJCS8vIHdlIHRyaWVkIHRvIHJlbW92ZSBhIG5vbi1saW5rZWQgYXR0cmlidXRlLgorfQorCitjb25zdCBUaVhtbEF0dHJpYnV0ZSogVGlYbWxBdHRyaWJ1dGVTZXQ6OkZpbmQoIGNvbnN0IGNoYXIgKiBuYW1lICkgY29uc3QKK3sKKwljb25zdCBUaVhtbEF0dHJpYnV0ZSogbm9kZTsKKworCWZvciggbm9kZSA9IHNlbnRpbmVsLm5leHQ7IG5vZGUgIT0gJnNlbnRpbmVsOyBub2RlID0gbm9kZS0+bmV4dCApCisJeworCQlpZiAoIG5vZGUtPm5hbWUgPT0gbmFtZSApCisJCQlyZXR1cm4gbm9kZTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK1RpWG1sQXR0cmlidXRlKglUaVhtbEF0dHJpYnV0ZVNldDo6RmluZCggY29uc3QgY2hhciAqIG5hbWUgKQoreworCVRpWG1sQXR0cmlidXRlKiBub2RlOworCisJZm9yKCBub2RlID0gc2VudGluZWwubmV4dDsgbm9kZSAhPSAmc2VudGluZWw7IG5vZGUgPSBub2RlLT5uZXh0ICkKKwl7CisJCWlmICggbm9kZS0+bmFtZSA9PSBuYW1lICkKKwkJCXJldHVybiBub2RlOworCX0KKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwJCitUSVhNTF9JU1RSRUFNICYgb3BlcmF0b3IgPj4gKFRJWE1MX0lTVFJFQU0gJiBpbiwgVGlYbWxOb2RlICYgYmFzZSkKK3sKKwlUSVhNTF9TVFJJTkcgdGFnOworCXRhZy5yZXNlcnZlKCA4ICogMTAwMCApOworCWJhc2UuU3RyZWFtSW4oICZpbiwgJnRhZyApOworCisJYmFzZS5QYXJzZSggdGFnLmNfc3RyKCksIDAsIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKKwlyZXR1cm4gaW47Cit9CisjZW5kaWYKKworCitUSVhNTF9PU1RSRUFNICYgb3BlcmF0b3I8PCAoVElYTUxfT1NUUkVBTSAmIG91dCwgY29uc3QgVGlYbWxOb2RlICYgYmFzZSkKK3sKKwliYXNlLlN0cmVhbU91dCAoJiBvdXQpOworCXJldHVybiBvdXQ7Cit9CisKKworI2lmZGVmIFRJWE1MX1VTRV9TVEwJCitzdGQ6OnN0cmluZyAmIG9wZXJhdG9yPDwgKHN0ZDo6c3RyaW5nJiBvdXQsIGNvbnN0IFRpWG1sTm9kZSYgYmFzZSApCit7CisgICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3Nfc3RyZWFtKCBzdGQ6Om9zdHJpbmdzdHJlYW06Om91dCApOworICAgYmFzZS5TdHJlYW1PdXQoICZvc19zdHJlYW0gKTsKKyAgIAorICAgb3V0LmFwcGVuZCggb3Nfc3RyZWFtLnN0cigpICk7CisgICByZXR1cm4gb3V0OworfQorI2VuZGlmCisKKworVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGQoKSBjb25zdAoreworCWlmICggbm9kZSApCisJeworCQlUaVhtbE5vZGUqIGNoaWxkID0gbm9kZS0+Rmlyc3RDaGlsZCgpOworCQlpZiAoIGNoaWxkICkKKwkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKKwl9CisJcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Cit9CisKKworVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0Cit7CisJaWYgKCBub2RlICkKKwl7CisJCVRpWG1sTm9kZSogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCB2YWx1ZSApOworCQlpZiAoIGNoaWxkICkKKwkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKKwl9CisJcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Cit9CisKKworVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGRFbGVtZW50KCkgY29uc3QKK3sKKwlpZiAoIG5vZGUgKQorCXsKKwkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGRFbGVtZW50KCk7CisJCWlmICggY2hpbGQgKQorCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOworCX0KKwlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKK30KKworCitUaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0Cit7CisJaWYgKCBub2RlICkKKwl7CisJCVRpWG1sRWxlbWVudCogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkRWxlbWVudCggdmFsdWUgKTsKKwkJaWYgKCBjaGlsZCApCisJCQlyZXR1cm4gVGlYbWxIYW5kbGUoIGNoaWxkICk7CisJfQorCXJldHVybiBUaVhtbEhhbmRsZSggMCApOworfQorCisKK1RpWG1sSGFuZGxlIFRpWG1sSGFuZGxlOjpDaGlsZCggaW50IGNvdW50ICkgY29uc3QKK3sKKwlpZiAoIG5vZGUgKQorCXsKKwkJaW50IGk7CisJCVRpWG1sTm9kZSogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCk7CisJCWZvciAoCWk9MDsKKwkJCQljaGlsZCAmJiBpPGNvdW50OworCQkJCWNoaWxkID0gY2hpbGQtPk5leHRTaWJsaW5nKCksICsraSApCisJCXsKKwkJCS8vIG5vdGhpbmcKKwkJfQorCQlpZiAoIGNoaWxkICkKKwkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKKwl9CisJcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Cit9CisKKworVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkNoaWxkKCBjb25zdCBjaGFyKiB2YWx1ZSwgaW50IGNvdW50ICkgY29uc3QKK3sKKwlpZiAoIG5vZGUgKQorCXsKKwkJaW50IGk7CisJCVRpWG1sTm9kZSogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCB2YWx1ZSApOworCQlmb3IgKAlpPTA7CisJCQkJY2hpbGQgJiYgaTxjb3VudDsKKwkJCQljaGlsZCA9IGNoaWxkLT5OZXh0U2libGluZyggdmFsdWUgKSwgKytpICkKKwkJeworCQkJLy8gbm90aGluZworCQl9CisJCWlmICggY2hpbGQgKQorCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOworCX0KKwlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKK30KKworCitUaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Q2hpbGRFbGVtZW50KCBpbnQgY291bnQgKSBjb25zdAoreworCWlmICggbm9kZSApCisJeworCQlpbnQgaTsKKwkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGRFbGVtZW50KCk7CisJCWZvciAoCWk9MDsKKwkJCQljaGlsZCAmJiBpPGNvdW50OworCQkJCWNoaWxkID0gY2hpbGQtPk5leHRTaWJsaW5nRWxlbWVudCgpLCArK2kgKQorCQl7CisJCQkvLyBub3RoaW5nCisJCX0KKwkJaWYgKCBjaGlsZCApCisJCQlyZXR1cm4gVGlYbWxIYW5kbGUoIGNoaWxkICk7CisJfQorCXJldHVybiBUaVhtbEhhbmRsZSggMCApOworfQorCisKK1RpWG1sSGFuZGxlIFRpWG1sSGFuZGxlOjpDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQgY291bnQgKSBjb25zdAoreworCWlmICggbm9kZSApCisJeworCQlpbnQgaTsKKwkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGRFbGVtZW50KCB2YWx1ZSApOworCQlmb3IgKAlpPTA7CisJCQkJY2hpbGQgJiYgaTxjb3VudDsKKwkJCQljaGlsZCA9IGNoaWxkLT5OZXh0U2libGluZ0VsZW1lbnQoIHZhbHVlICksICsraSApCisJCXsKKwkJCS8vIG5vdGhpbmcKKwkJfQorCQlpZiAoIGNoaWxkICkKKwkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKKwl9CisJcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Cit9CmRpZmYgLS1naXQgYS90aW55eG1sLmRzdyBiL3Rpbnl4bWwuZHN3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOWQwZWUKLS0tIC9kZXYvbnVsbAorKysgYi90aW55eG1sLmRzdwpAQCAtMCwwICsxLDcxIEBACitNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBXb3Jrc3BhY2UgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KKyMgV0FSTklORzogRE8gTk9UIEVESVQgT1IgREVMRVRFIFRISVMgV09SS1NQQUNFIEZJTEUhDQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK1Byb2plY3Q6ICJ0aW55WG1sVGVzdCI9Llx0aW55WG1sVGVzdC5kc3AgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKw0KK1BhY2thZ2U9PDU+DQore3t7DQorfX19DQorDQorUGFja2FnZT08ND4NCit7e3sNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgdGlueXhtbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorfX19DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK1Byb2plY3Q6ICJ0aW55WG1sVGVzdFNUTCI9Llx0aW55WG1sVGVzdFNUTC5kc3AgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKw0KK1BhY2thZ2U9PDU+DQore3t7DQorfX19DQorDQorUGFja2FnZT08ND4NCit7e3sNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgdGlueXhtbFNUTA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorfX19DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK1Byb2plY3Q6ICJ0aW55eG1sIj0uXHRpbnl4bWxfbGliLmRzcCAtIFBhY2thZ2UgT3duZXI9PDQ+DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTw0Pg0KK3t7ew0KK319fQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCitQcm9qZWN0OiAidGlueXhtbFNUTCI9Llx0aW55eG1sU1RMLmRzcCAtIFBhY2thZ2UgT3duZXI9PDQ+DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTw0Pg0KK3t7ew0KK319fQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCitHbG9iYWw6DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTwzPg0KK3t7ew0KK319fQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCmRpZmYgLS1naXQgYS90aW55eG1sLmggYi90aW55eG1sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThjZjk0ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rpbnl4bWwuaApAQCAtMCwwICsxLDE1MTEgQEAKKy8qCit3d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWwKK09yaWdpbmFsIGNvZGUgKDIuMCBhbmQgZWFybGllciApY29weXJpZ2h0IChjKSAyMDAwLTIwMDIgTGVlIFRob21hc29uICh3d3cuZ3Jpbm5pbmdsaXphcmQuY29tKQorCitUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAord2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQorZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgorCitQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKK3B1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZAorcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKworMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdAorbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCitzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24KK3dvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCisKKzIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kCittdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCisKKzMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQorZGlzdHJpYnV0aW9uLgorKi8KKworCisjaWZuZGVmIFRJTllYTUxfSU5DTFVERUQKKyNkZWZpbmUgVElOWVhNTF9JTkNMVURFRAorCisjaWZkZWYgX01TQ19WRVIKKyNwcmFnbWEgd2FybmluZyggcHVzaCApCisjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0NTMwICkKKyNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ3ODYgKQorI2VuZGlmCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKy8vIEhlbHAgb3V0IHdpbmRvd3M6CisjaWYgZGVmaW5lZCggX0RFQlVHICkgJiYgIWRlZmluZWQoIERFQlVHICkKKyNkZWZpbmUgREVCVUcKKyNlbmRpZgorCisjaWYgZGVmaW5lZCggREVCVUcgKSAmJiBkZWZpbmVkKCBfTVNDX1ZFUiApCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2RlZmluZSBUSVhNTF9MT0cgT3V0cHV0RGVidWdTdHJpbmcKKyNlbHNlCisjZGVmaW5lIFRJWE1MX0xPRyBwcmludGYKKyNlbmRpZgorCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCSNpbmNsdWRlIDxzdHJpbmc+CisgCSNpbmNsdWRlIDxpb3N0cmVhbT4KKwkjZGVmaW5lIFRJWE1MX1NUUklORwlzdGQ6OnN0cmluZworCSNkZWZpbmUgVElYTUxfSVNUUkVBTQlzdGQ6OmlzdHJlYW0KKwkjZGVmaW5lIFRJWE1MX09TVFJFQU0Jc3RkOjpvc3RyZWFtCisjZWxzZQorCSNpbmNsdWRlICJ0aW55c3RyLmgiCisJI2RlZmluZSBUSVhNTF9TVFJJTkcJVGlYbWxTdHJpbmcKKwkjZGVmaW5lIFRJWE1MX09TVFJFQU0JVGlYbWxPdXRTdHJlYW0KKyNlbmRpZgorCisvLyBEZXByZWNhdGVkIGxpYnJhcnkgZnVuY3Rpb24gaGVsbC4gQ29tcGlsZXJzIHdhbnQgdG8gdXNlIHRoZQorLy8gbmV3IHNhZmUgdmVyc2lvbnMuIFRoaXMgcHJvYmFibHkgZG9lc24ndCBmdWxseSBhZGRyZXNzIHRoZSBwcm9ibGVtLAorLy8gYnV0IGl0IGdldHMgY2xvc2VyLiBUaGVyZSBhcmUgdG9vIG1hbnkgY29tcGlsZXJzIGZvciBtZSB0byBmdWxseQorLy8gdGVzdC4gSWYgeW91IGdldCBjb21waWxhdGlvbiB0cm91YmxlcywgdW5kZWZpbmUgVElYTUxfU0FGRQorCisjZGVmaW5lIFRJWE1MX1NBRkUJCS8vIFRpbnlYbWwgaXNuJ3QgZnVsbHkgYnVmZmVyIG92ZXJydW4gcHJvdGVjdGVkLCBzYWZlIGNvZGUuIFRoaXMgaXMgd29yayBpbiBwcm9ncmVzcy4KKyNpZmRlZiBUSVhNTF9TQUZFCisJI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwICkKKwkJLy8gTWljcm9zb2Z0IHZpc3VhbCBzdHVkaW8sIHZlcnNpb24gNiBhbmQgaGlnaGVyLgorCQkvLyNwcmFnbWEgbWVzc2FnZSggIlVzaW5nIF9zbiogZnVuY3Rpb25zLiIgKQorCQkjZGVmaW5lIFRJWE1MX1NOUFJJTlRGIF9zbnByaW50ZgorCQkjZGVmaW5lIFRJWE1MX1NOU0NBTkYgIF9zbnNjYW5mCisJI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMgKQorCQkvLyBHQ0MgdmVyc2lvbiAzIGFuZCBoaWdoZXIucworCQkvLyN3YXJuaW5nKCAiVXNpbmcgc24qIGZ1bmN0aW9ucy4iICkKKwkJI2RlZmluZSBUSVhNTF9TTlBSSU5URiBzbnByaW50ZgorCQkjZGVmaW5lIFRJWE1MX1NOU0NBTkYgIHNuc2NhbmYKKwkjZW5kaWYKKyNlbmRpZgkKKworY2xhc3MgVGlYbWxEb2N1bWVudDsKK2NsYXNzIFRpWG1sRWxlbWVudDsKK2NsYXNzIFRpWG1sQ29tbWVudDsKK2NsYXNzIFRpWG1sVW5rbm93bjsKK2NsYXNzIFRpWG1sQXR0cmlidXRlOworY2xhc3MgVGlYbWxUZXh0OworY2xhc3MgVGlYbWxEZWNsYXJhdGlvbjsKK2NsYXNzIFRpWG1sUGFyc2luZ0RhdGE7CisKK2NvbnN0IGludCBUSVhNTF9NQUpPUl9WRVJTSU9OID0gMjsKK2NvbnN0IGludCBUSVhNTF9NSU5PUl9WRVJTSU9OID0gNDsKK2NvbnN0IGludCBUSVhNTF9QQVRDSF9WRVJTSU9OID0gMDsKKworLyoJSW50ZXJuYWwgc3RydWN0dXJlIGZvciB0cmFja2luZyBsb2NhdGlvbiBvZiBpdGVtcyAKKwlpbiB0aGUgWE1MIGZpbGUuCisqLworc3RydWN0IFRpWG1sQ3Vyc29yCit7CisJVGlYbWxDdXJzb3IoKQkJeyBDbGVhcigpOyB9CisJdm9pZCBDbGVhcigpCQl7IHJvdyA9IGNvbCA9IC0xOyB9CisKKwlpbnQgcm93OwkvLyAwIGJhc2VkLgorCWludCBjb2w7CS8vIDAgYmFzZWQuCit9OworCisKKy8vIE9ubHkgdXNlZCBieSBBdHRyaWJ1dGU6OlF1ZXJ5IGZ1bmN0aW9ucworZW51bSAKK3sgCisJVElYTUxfU1VDQ0VTUywKKwlUSVhNTF9OT19BVFRSSUJVVEUsCisJVElYTUxfV1JPTkdfVFlQRQorfTsKKworCisvLyBVc2VkIGJ5IHRoZSBwYXJzaW5nIHJvdXRpbmVzLgorZW51bSBUaVhtbEVuY29kaW5nCit7CisJVElYTUxfRU5DT0RJTkdfVU5LTk9XTiwKKwlUSVhNTF9FTkNPRElOR19VVEY4LAorCVRJWE1MX0VOQ09ESU5HX0xFR0FDWQorfTsKKworY29uc3QgVGlYbWxFbmNvZGluZyBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HID0gVElYTUxfRU5DT0RJTkdfVU5LTk9XTjsKKworLyoqIFRpWG1sQmFzZSBpcyBhIGJhc2UgY2xhc3MgZm9yIGV2ZXJ5IGNsYXNzIGluIFRpbnlYbWwuCisJSXQgZG9lcyBsaXR0bGUgZXhjZXB0IHRvIGVzdGFibGlzaCB0aGF0IFRpbnlYbWwgY2xhc3NlcworCWNhbiBiZSBwcmludGVkIGFuZCBwcm92aWRlIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMuCisKKwlJbiBYTUwsIHRoZSBkb2N1bWVudCBhbmQgZWxlbWVudHMgY2FuIGNvbnRhaW4KKwlvdGhlciBlbGVtZW50cyBhbmQgb3RoZXIgdHlwZXMgb2Ygbm9kZXMuCisKKwlAdmVyYmF0aW0KKwlBIERvY3VtZW50IGNhbiBjb250YWluOglFbGVtZW50CShjb250YWluZXIgb3IgbGVhZikKKwkJCQkJCQlDb21tZW50IChsZWFmKQorCQkJCQkJCVVua25vd24gKGxlYWYpCisJCQkJCQkJRGVjbGFyYXRpb24oIGxlYWYgKQorCisJQW4gRWxlbWVudCBjYW4gY29udGFpbjoJRWxlbWVudCAoY29udGFpbmVyIG9yIGxlYWYpCisJCQkJCQkJVGV4dAkobGVhZikKKwkJCQkJCQlBdHRyaWJ1dGVzIChub3Qgb24gdHJlZSkKKwkJCQkJCQlDb21tZW50IChsZWFmKQorCQkJCQkJCVVua25vd24gKGxlYWYpCisKKwlBIERlY2xlcmF0aW9uIGNvbnRhaW5zOiBBdHRyaWJ1dGVzIChub3Qgb24gdHJlZSkKKwlAZW5kdmVyYmF0aW0KKyovCitjbGFzcyBUaVhtbEJhc2UKK3sKKwlmcmllbmQgY2xhc3MgVGlYbWxOb2RlOworCWZyaWVuZCBjbGFzcyBUaVhtbEVsZW1lbnQ7CisJZnJpZW5kIGNsYXNzIFRpWG1sRG9jdW1lbnQ7CisKK3B1YmxpYzoKKwlUaVhtbEJhc2UoKQk6CXVzZXJEYXRhKDApIHt9CisJdmlydHVhbCB+VGlYbWxCYXNlKCkJCQkJCXt9CisKKwkvKioJQWxsIFRpbnlYbWwgY2xhc3NlcyBjYW4gcHJpbnQgdGhlbXNlbHZlcyB0byBhIGZpbGVzdHJlYW0uCisJCVRoaXMgaXMgYSBmb3JtYXR0ZWQgcHJpbnQsIGFuZCB3aWxsIGluc2VydCB0YWJzIGFuZCBuZXdsaW5lcy4KKwkJCisJCShGb3IgYW4gdW5mb3JtYXR0ZWQgc3RyZWFtLCB1c2UgdGhlIDw8IG9wZXJhdG9yLikKKwkqLworCXZpcnR1YWwgdm9pZCBQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0ID0gMDsKKworCS8qKglUaGUgd29ybGQgZG9lcyBub3QgYWdyZWUgb24gd2hldGhlciB3aGl0ZSBzcGFjZSBzaG91bGQgYmUga2VwdCBvcgorCQlub3QuIEluIG9yZGVyIHRvIG1ha2UgZXZlcnlvbmUgaGFwcHksIHRoZXNlIGdsb2JhbCwgc3RhdGljIGZ1bmN0aW9ucworCQlhcmUgcHJvdmlkZWQgdG8gc2V0IHdoZXRoZXIgb3Igbm90IFRpbnlYbWwgd2lsbCBjb25kZW5zZSBhbGwgd2hpdGUgc3BhY2UKKwkJaW50byBhIHNpbmdsZSBzcGFjZSBvciBub3QuIFRoZSBkZWZhdWx0IGlzIHRvIGNvbmRlbnNlLiBOb3RlIGNoYW5naW5nIHRoaXMKKwkJdmFsdWVzIGlzIG5vdCB0aHJlYWQgc2FmZS4KKwkqLworCXN0YXRpYyB2b2lkIFNldENvbmRlbnNlV2hpdGVTcGFjZSggYm9vbCBjb25kZW5zZSApCQl7IGNvbmRlbnNlV2hpdGVTcGFjZSA9IGNvbmRlbnNlOyB9CisKKwkvLy8gUmV0dXJuIHRoZSBjdXJyZW50IHdoaXRlIHNwYWNlIHNldHRpbmcuCisJc3RhdGljIGJvb2wgSXNXaGl0ZVNwYWNlQ29uZGVuc2VkKCkJCQkJCQl7IHJldHVybiBjb25kZW5zZVdoaXRlU3BhY2U7IH0KKworCS8qKiBSZXR1cm4gdGhlIHBvc2l0aW9uLCBpbiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9mIHRoaXMgbm9kZSBvciBhdHRyaWJ1dGUuCisJCVRoZSByb3cgYW5kIGNvbHVtbiBhcmUgMS1iYXNlZC4gKFRoYXQgaXMgdGhlIGZpcnN0IHJvdyBhbmQgZmlyc3QgY29sdW1uIGlzCisJCTEsMSkuIElmIHRoZSByZXR1cm5zIHZhbHVlcyBhcmUgMCBvciBsZXNzLCB0aGVuIHRoZSBwYXJzZXIgZG9lcyBub3QgaGF2ZQorCQlhIHJvdyBhbmQgY29sdW1uIHZhbHVlLgorCisJCUdlbmVyYWxseSwgdGhlIHJvdyBhbmQgY29sdW1uIHZhbHVlIHdpbGwgYmUgc2V0IHdoZW4gdGhlIFRpWG1sRG9jdW1lbnQ6OkxvYWQoKSwKKwkJVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUoKSwgb3IgYW55IFRpWG1sTm9kZTo6UGFyc2UoKSBpcyBjYWxsZWQuIEl0IHdpbGwgTk9UIGJlIHNldAorCQl3aGVuIHRoZSBET00gd2FzIGNyZWF0ZWQgZnJvbSBvcGVyYXRvcj4+LgorCisJCVRoZSB2YWx1ZXMgcmVmbGVjdCB0aGUgaW5pdGlhbCBsb2FkLiBPbmNlIHRoZSBET00gaXMgbW9kaWZpZWQgcHJvZ3JhbW1hdGljYWxseQorCQkoYnkgYWRkaW5nIG9yIGNoYW5naW5nIG5vZGVzIGFuZCBhdHRyaWJ1dGVzKSB0aGUgbmV3IHZhbHVlcyB3aWxsIE5PVCB1cGRhdGUgdG8KKwkJcmVmbGVjdCBjaGFuZ2VzIGluIHRoZSBkb2N1bWVudC4KKworCQlUaGVyZSBpcyBhIG1pbm9yIHBlcmZvcm1hbmNlIGNvc3QgdG8gY29tcHV0aW5nIHRoZSByb3cgYW5kIGNvbHVtbi4gQ29tcHV0YXRpb24KKwkJY2FuIGJlIGRpc2FibGVkIGlmIFRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUoKSBpcyBjYWxsZWQgd2l0aCAwIGFzIHRoZSB2YWx1ZS4KKworCQlAc2EgVGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSgpCisJKi8KKwlpbnQgUm93KCkgY29uc3QJCQl7IHJldHVybiBsb2NhdGlvbi5yb3cgKyAxOyB9CisJaW50IENvbHVtbigpIGNvbnN0CQl7IHJldHVybiBsb2NhdGlvbi5jb2wgKyAxOyB9CS8vLzwgU2VlIFJvdygpCisKKwl2b2lkICBTZXRVc2VyRGF0YSggdm9pZCogdXNlciApCQkJeyB1c2VyRGF0YSA9IHVzZXI7IH0KKwl2b2lkKiBHZXRVc2VyRGF0YSgpCQkJCQkJeyByZXR1cm4gdXNlckRhdGE7IH0KKworCS8vIFRhYmxlIHRoYXQgcmV0dXJzLCBmb3IgYSBnaXZlbiBsZWFkIGJ5dGUsIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMKKwkvLyBpbiB0aGUgVVRGLTggc2VxdWVuY2UuCisJc3RhdGljIGNvbnN0IGludCB1dGY4Qnl0ZVRhYmxlWzI1Nl07CisKKwl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKAljb25zdCBjaGFyKiBwLCAKKwkJCQkJCQkJVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgCisJCQkJCQkJCVRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgLyo9IFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKi8gKSA9IDA7CisKKwllbnVtCisJeworCQlUSVhNTF9OT19FUlJPUiA9IDAsCisJCVRJWE1MX0VSUk9SLAorCQlUSVhNTF9FUlJPUl9PUEVOSU5HX0ZJTEUsCisJCVRJWE1MX0VSUk9SX09VVF9PRl9NRU1PUlksCisJCVRJWE1MX0VSUk9SX1BBUlNJTkdfRUxFTUVOVCwKKwkJVElYTUxfRVJST1JfRkFJTEVEX1RPX1JFQURfRUxFTUVOVF9OQU1FLAorCQlUSVhNTF9FUlJPUl9SRUFESU5HX0VMRU1FTlRfVkFMVUUsCisJCVRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywKKwkJVElYTUxfRVJST1JfUEFSU0lOR19FTVBUWSwKKwkJVElYTUxfRVJST1JfUkVBRElOR19FTkRfVEFHLAorCQlUSVhNTF9FUlJPUl9QQVJTSU5HX1VOS05PV04sCisJCVRJWE1MX0VSUk9SX1BBUlNJTkdfQ09NTUVOVCwKKwkJVElYTUxfRVJST1JfUEFSU0lOR19ERUNMQVJBVElPTiwKKwkJVElYTUxfRVJST1JfRE9DVU1FTlRfRU1QVFksCisJCVRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsCisJCVRJWE1MX0VSUk9SX1BBUlNJTkdfQ0RBVEEsCisKKwkJVElYTUxfRVJST1JfU1RSSU5HX0NPVU5UCisJfTsKKworcHJvdGVjdGVkOgorCisJLy8gU2VlIFNUTF9TVFJJTkdfQlVHCisJLy8gVXRpbGl0eSBjbGFzcyB0byBvdmVyY29tZSBhIGJ1Zy4KKwljbGFzcyBTdHJpbmdUb0J1ZmZlcgorCXsKKwkgIHB1YmxpYzoKKwkJU3RyaW5nVG9CdWZmZXIoIGNvbnN0IFRJWE1MX1NUUklORyYgc3RyICk7CisJCX5TdHJpbmdUb0J1ZmZlcigpOworCQljaGFyKiBidWZmZXI7CisJfTsKKworCXN0YXRpYyBjb25zdCBjaGFyKglTa2lwV2hpdGVTcGFjZSggY29uc3QgY2hhciosIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKwlpbmxpbmUgc3RhdGljIGJvb2wJSXNXaGl0ZVNwYWNlKCBjaGFyIGMgKQkJCisJeyAKKwkJcmV0dXJuICggaXNzcGFjZSggKHVuc2lnbmVkIGNoYXIpIGMgKSB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInICk7IAorCX0KKworCXZpcnR1YWwgdm9pZCBTdHJlYW1PdXQgKFRJWE1MX09TVFJFQU0gKikgY29uc3QgPSAwOworCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkgICAgc3RhdGljIGJvb2wJU3RyZWFtV2hpdGVTcGFjZSggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKwkgICAgc3RhdGljIGJvb2wgU3RyZWFtVG8oIFRJWE1MX0lTVFJFQU0gKiBpbiwgaW50IGNoYXJhY3RlciwgVElYTUxfU1RSSU5HICogdGFnICk7CisJI2VuZGlmCisKKwkvKglSZWFkcyBhbiBYTUwgbmFtZSBpbnRvIHRoZSBzdHJpbmcgcHJvdmlkZWQuIFJldHVybnMKKwkJYSBwb2ludGVyIGp1c3QgcGFzdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIG5hbWUsCisJCW9yIDAgaWYgdGhlIGZ1bmN0aW9uIGhhcyBhbiBlcnJvci4KKwkqLworCXN0YXRpYyBjb25zdCBjaGFyKiBSZWFkTmFtZSggY29uc3QgY2hhciogcCwgVElYTUxfU1RSSU5HKiBuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKKwkvKglSZWFkcyB0ZXh0LiBSZXR1cm5zIGEgcG9pbnRlciBwYXN0IHRoZSBnaXZlbiBlbmQgdGFnLgorCQlXaWNrZWRseSBjb21wbGV4IG9wdGlvbnMsIGJ1dCBpdCBrZWVwcyB0aGUgKHNlbnNpdGl2ZSkgY29kZSBpbiBvbmUgcGxhY2UuCisJKi8KKwlzdGF0aWMgY29uc3QgY2hhciogUmVhZFRleHQoCWNvbnN0IGNoYXIqIGluLAkJCQkvLyB3aGVyZSB0byBzdGFydAorCQkJCQkJCQkJVElYTUxfU1RSSU5HKiB0ZXh0LAkJCS8vIHRoZSBzdHJpbmcgcmVhZAorCQkJCQkJCQkJYm9vbCBpZ25vcmVXaGl0ZVNwYWNlLAkJLy8gd2hldGhlciB0byBrZWVwIHRoZSB3aGl0ZSBzcGFjZQorCQkJCQkJCQkJY29uc3QgY2hhciogZW5kVGFnLAkJCS8vIHdoYXQgZW5kcyB0aGlzIHRleHQKKwkJCQkJCQkJCWJvb2wgaWdub3JlQ2FzZSwJCQkvLyB3aGV0aGVyIHRvIGlnbm9yZSBjYXNlIGluIHRoZSBlbmQgdGFnCisJCQkJCQkJCQlUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CS8vIHRoZSBjdXJyZW50IGVuY29kaW5nCisKKwkvLyBJZiBhbiBlbnRpdHkgaGFzIGJlZW4gZm91bmQsIHRyYW5zZm9ybSBpdCBpbnRvIGEgY2hhcmFjdGVyLgorCXN0YXRpYyBjb25zdCBjaGFyKiBHZXRFbnRpdHkoIGNvbnN0IGNoYXIqIGluLCBjaGFyKiB2YWx1ZSwgaW50KiBsZW5ndGgsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKworCS8vIEdldCBhIGNoYXJhY3Rlciwgd2hpbGUgaW50ZXJwcmV0aW5nIGVudGl0aWVzLgorCS8vIFRoZSBsZW5ndGggY2FuIGJlIGZyb20gMCB0byA0IGJ5dGVzLgorCWlubGluZSBzdGF0aWMgY29uc3QgY2hhciogR2V0Q2hhciggY29uc3QgY2hhciogcCwgY2hhciogX3ZhbHVlLCBpbnQqIGxlbmd0aCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCisJeworCQlhc3NlcnQoIHAgKTsKKwkJaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKKwkJeworCQkJKmxlbmd0aCA9IHV0ZjhCeXRlVGFibGVbICooKHVuc2lnbmVkIGNoYXIqKXApIF07CisJCQlhc3NlcnQoICpsZW5ndGggPj0gMCAmJiAqbGVuZ3RoIDwgNSApOworCQl9CisJCWVsc2UKKwkJeworCQkJKmxlbmd0aCA9IDE7CisJCX0KKworCQlpZiAoICpsZW5ndGggPT0gMSApCisJCXsKKwkJCWlmICggKnAgPT0gJyYnICkKKwkJCQlyZXR1cm4gR2V0RW50aXR5KCBwLCBfdmFsdWUsIGxlbmd0aCwgZW5jb2RpbmcgKTsKKwkJCSpfdmFsdWUgPSAqcDsKKwkJCXJldHVybiBwKzE7CisJCX0KKwkJZWxzZSBpZiAoICpsZW5ndGggKQorCQl7CisJCQkvL3N0cm5jcHkoIF92YWx1ZSwgcCwgKmxlbmd0aCApOwkvLyBsb3RzIG9mIGNvbXBpbGVycyBkb24ndCBsaWtlIHRoaXMgZnVuY3Rpb24gKHVuc2FmZSksCisJCQkJCQkJCQkJCQkvLyBhbmQgdGhlIG51bGwgdGVybWluYXRvciBpc24ndCBuZWVkZWQKKwkJCWZvciggaW50IGk9MDsgcFtpXSAmJiBpPCpsZW5ndGg7ICsraSApIHsKKwkJCQlfdmFsdWVbaV0gPSBwW2ldOworCQkJfQorCQkJcmV0dXJuIHAgKyAoKmxlbmd0aCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvLyBOb3QgdmFsaWQgdGV4dC4KKwkJCXJldHVybiAwOworCQl9CisJfQorCisJLy8gUHV0cyBhIHN0cmluZyB0byBhIHN0cmVhbSwgZXhwYW5kaW5nIGVudGl0aWVzIGFzIGl0IGdvZXMuCisJLy8gTm90ZSB0aGlzIHNob3VsZCBub3QgY29udGlhbiB0aGUgJzwnLCAnPicsIGV0Yywgb3IgdGhleSB3aWxsIGJlIHRyYW5zZm9ybWVkIGludG8gZW50aXRpZXMhCisJc3RhdGljIHZvaWQgUHV0U3RyaW5nKCBjb25zdCBUSVhNTF9TVFJJTkcmIHN0ciwgVElYTUxfT1NUUkVBTSogb3V0ICk7CisKKwlzdGF0aWMgdm9pZCBQdXRTdHJpbmcoIGNvbnN0IFRJWE1MX1NUUklORyYgc3RyLCBUSVhNTF9TVFJJTkcqIG91dCApOworCisJLy8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgY2hhcmFjdGVycyBpbiB0aGUgc3RyZWFtIGFyZSBhbnkgb2YgdGhlIGVuZFRhZyBzZXF1ZW5jZXMuCisJLy8gSWdub3JlIGNhc2Ugb25seSB3b3JrcyBmb3IgZW5nbGlzaCwgYW5kIHNob3VsZCBvbmx5IGJlIHJlbGllZCBvbiB3aGVuIGNvbXBhcmluZworCS8vIHRvIEVuZ2xpc2ggd29yZHM6IFN0cmluZ0VxdWFsKCBwLCAidmVyc2lvbiIsIHRydWUgKSBpcyBmaW5lLgorCXN0YXRpYyBib29sIFN0cmluZ0VxdWFsKAljb25zdCBjaGFyKiBwLAorCQkJCQkJCQljb25zdCBjaGFyKiBlbmRUYWcsCisJCQkJCQkJCWJvb2wgaWdub3JlQ2FzZSwKKwkJCQkJCQkJVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCisJc3RhdGljIGNvbnN0IGNoYXIqIGVycm9yU3RyaW5nWyBUSVhNTF9FUlJPUl9TVFJJTkdfQ09VTlQgXTsKKworCVRpWG1sQ3Vyc29yIGxvY2F0aW9uOworCisgICAgLy8vIEZpZWxkIGNvbnRhaW5pbmcgYSBnZW5lcmljIHVzZXIgcG9pbnRlcgorCXZvaWQqCQkJdXNlckRhdGE7CisJCisJLy8gTm9uZSBvZiB0aGVzZSBtZXRob2RzIGFyZSByZWxpYWJsZSBmb3IgYW55IGxhbmd1YWdlIGV4Y2VwdCBFbmdsaXNoLgorCS8vIEdvb2QgZm9yIGFwcHJveGltYXRpb24sIG5vdCBncmVhdCBmb3IgYWNjdXJhY3kuCisJc3RhdGljIGludCBJc0FscGhhKCB1bnNpZ25lZCBjaGFyIGFueUJ5dGUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKwlzdGF0aWMgaW50IElzQWxwaGFOdW0oIHVuc2lnbmVkIGNoYXIgYW55Qnl0ZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCWlubGluZSBzdGF0aWMgaW50IFRvTG93ZXIoIGludCB2LCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKKwl7CisJCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCisJCXsKKwkJCWlmICggdiA8IDEyOCApIHJldHVybiB0b2xvd2VyKCB2ICk7CisJCQlyZXR1cm4gdjsKKwkJfQorCQllbHNlCisJCXsKKwkJCXJldHVybiB0b2xvd2VyKCB2ICk7CisJCX0KKwl9CisJc3RhdGljIHZvaWQgQ29udmVydFVURjMyVG9VVEY4KCB1bnNpZ25lZCBsb25nIGlucHV0LCBjaGFyKiBvdXRwdXQsIGludCogbGVuZ3RoICk7CisKK3ByaXZhdGU6CisJVGlYbWxCYXNlKCBjb25zdCBUaVhtbEJhc2UmICk7CQkJCS8vIG5vdCBpbXBsZW1lbnRlZC4KKwl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxCYXNlJiBiYXNlICk7CS8vIG5vdCBhbGxvd2VkLgorCisJc3RydWN0IEVudGl0eQorCXsKKwkJY29uc3QgY2hhciogICAgIHN0cjsKKwkJdW5zaWduZWQgaW50CXN0ckxlbmd0aDsKKwkJY2hhcgkJICAgIGNocjsKKwl9OworCWVudW0KKwl7CisJCU5VTV9FTlRJVFkgPSA1LAorCQlNQVhfRU5USVRZX0xFTkdUSCA9IDYKKworCX07CisJc3RhdGljIEVudGl0eSBlbnRpdHlbIE5VTV9FTlRJVFkgXTsKKwlzdGF0aWMgYm9vbCBjb25kZW5zZVdoaXRlU3BhY2U7Cit9OworCisKKy8qKiBUaGUgcGFyZW50IGNsYXNzIGZvciBldmVyeXRoaW5nIGluIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwuCisJKEV4Y2VwdCBmb3IgYXR0cmlidXRlcykuCisJTm9kZXMgaGF2ZSBzaWJsaW5ncywgYSBwYXJlbnQsIGFuZCBjaGlsZHJlbi4gQSBub2RlIGNhbiBiZQorCWluIGEgZG9jdW1lbnQsIG9yIHN0YW5kIG9uIGl0cyBvd24uIFRoZSB0eXBlIG9mIGEgVGlYbWxOb2RlCisJY2FuIGJlIHF1ZXJpZWQsIGFuZCBpdCBjYW4gYmUgY2FzdCB0byBpdHMgbW9yZSBkZWZpbmVkIHR5cGUuCisqLworY2xhc3MgVGlYbWxOb2RlIDogcHVibGljIFRpWG1sQmFzZQoreworCWZyaWVuZCBjbGFzcyBUaVhtbERvY3VtZW50OworCWZyaWVuZCBjbGFzcyBUaVhtbEVsZW1lbnQ7CisKK3B1YmxpYzoKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAkKKworCSAgICAvKiogQW4gaW5wdXQgc3RyZWFtIG9wZXJhdG9yLCBmb3IgZXZlcnkgY2xhc3MuIFRvbGVyYW50IG9mIG5ld2xpbmVzIGFuZAorCQkgICAgZm9ybWF0dGluZywgYnV0IGRvZXNuJ3QgZXhwZWN0IHRoZW0uCisJICAgICovCisJICAgIGZyaWVuZCBzdGQ6OmlzdHJlYW0mIG9wZXJhdG9yID4+IChzdGQ6OmlzdHJlYW0mIGluLCBUaVhtbE5vZGUmIGJhc2UpOworCisJICAgIC8qKiBBbiBvdXRwdXQgc3RyZWFtIG9wZXJhdG9yLCBmb3IgZXZlcnkgY2xhc3MuIE5vdGUgdGhhdCB0aGlzIG91dHB1dHMKKwkJICAgIHdpdGhvdXQgYW55IG5ld2xpbmVzIG9yIGZvcm1hdHRpbmcsIGFzIG9wcG9zZWQgdG8gUHJpbnQoKSwgd2hpY2gKKwkJICAgIGluY2x1ZGVzIHRhYnMgYW5kIG5ldyBsaW5lcy4KKworCQkgICAgVGhlIG9wZXJhdG9yPDwgYW5kIG9wZXJhdG9yPj4gYXJlIG5vdCBjb21wbGV0ZWx5IHN5bW1ldHJpYy4gV3JpdGluZworCQkgICAgYSBub2RlIHRvIGEgc3RyZWFtIGlzIHZlcnkgd2VsbCBkZWZpbmVkLiBZb3UnbGwgZ2V0IGEgbmljZSBzdHJlYW0KKwkJICAgIG9mIG91dHB1dCwgd2l0aG91dCBhbnkgZXh0cmEgd2hpdGVzcGFjZSBvciBuZXdsaW5lcy4KKwkJICAgIAorCQkgICAgQnV0IHJlYWRpbmcgaXMgbm90IGFzIHdlbGwgZGVmaW5lZC4gKEFzIGl0IGFsd2F5cyBpcy4pIElmIHlvdSBjcmVhdGUKKwkJICAgIGEgVGlYbWxFbGVtZW50IChmb3IgZXhhbXBsZSkgYW5kIHJlYWQgdGhhdCBmcm9tIGFuIGlucHV0IHN0cmVhbSwKKwkJICAgIHRoZSB0ZXh0IG5lZWRzIHRvIGRlZmluZSBhbiBlbGVtZW50IG9yIGp1bmsgd2lsbCByZXN1bHQuIFRoaXMgaXMKKwkJICAgIHRydWUgb2YgYWxsIGlucHV0IHN0cmVhbXMsIGJ1dCBpdCdzIHdvcnRoIGtlZXBpbmcgaW4gbWluZC4KKworCQkgICAgQSBUaVhtbERvY3VtZW50IHdpbGwgcmVhZCBub2RlcyB1bnRpbCBpdCByZWFkcyBhIHJvb3QgZWxlbWVudCwgYW5kCisJCQlhbGwgdGhlIGNoaWxkcmVuIG9mIHRoYXQgcm9vdCBlbGVtZW50LgorCSAgICAqLwkKKwkgICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCAoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IFRpWG1sTm9kZSYgYmFzZSk7CisKKwkJLy8vIEFwcGVuZHMgdGhlIFhNTCBub2RlIG9yIGF0dHJpYnV0ZSB0byBhIHN0ZDo6c3RyaW5nLgorCQlmcmllbmQgc3RkOjpzdHJpbmcmIG9wZXJhdG9yPDwgKHN0ZDo6c3RyaW5nJiBvdXQsIGNvbnN0IFRpWG1sTm9kZSYgYmFzZSApOworCisJI2Vsc2UKKwkgICAgLy8gVXNlZCBpbnRlcm5hbGx5LCBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSS4KKwkgICAgZnJpZW5kIFRJWE1MX09TVFJFQU0mIG9wZXJhdG9yPDwgKFRJWE1MX09TVFJFQU0mIG91dCwgY29uc3QgVGlYbWxOb2RlJiBiYXNlKTsKKwkjZW5kaWYKKworCS8qKiBUaGUgdHlwZXMgb2YgWE1MIG5vZGVzIHN1cHBvcnRlZCBieSBUaW55WG1sLiAoQWxsIHRoZQorCQkJdW5zdXBwb3J0ZWQgdHlwZXMgYXJlIHBpY2tlZCB1cCBieSBVTktOT1dOLikKKwkqLworCWVudW0gTm9kZVR5cGUKKwl7CisJCURPQ1VNRU5ULAorCQlFTEVNRU5ULAorCQlDT01NRU5ULAorCQlVTktOT1dOLAorCQlURVhULAorCQlERUNMQVJBVElPTiwKKwkJVFlQRUNPVU5UCisJfTsKKworCXZpcnR1YWwgflRpWG1sTm9kZSgpOworCisJLyoqIFRoZSBtZWFuaW5nIG9mICd2YWx1ZScgY2hhbmdlcyBmb3IgdGhlIHNwZWNpZmljIHR5cGUgb2YKKwkJVGlYbWxOb2RlLgorCQlAdmVyYmF0aW0KKwkJRG9jdW1lbnQ6CWZpbGVuYW1lIG9mIHRoZSB4bWwgZmlsZQorCQlFbGVtZW50OgluYW1lIG9mIHRoZSBlbGVtZW50CisJCUNvbW1lbnQ6CXRoZSBjb21tZW50IHRleHQKKwkJVW5rbm93bjoJdGhlIHRhZyBjb250ZW50cworCQlUZXh0OgkJdGhlIHRleHQgc3RyaW5nCisJCUBlbmR2ZXJiYXRpbQorCisJCVRoZSBzdWJjbGFzc2VzIHdpbGwgd3JhcCB0aGlzIGZ1bmN0aW9uLgorCSovCisJY29uc3QgY2hhciAqVmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZS5jX3N0ciAoKTsgfQorCisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkvKiogUmV0dXJuIFZhbHVlKCkgYXMgYSBzdGQ6OnN0cmluZy4gSWYgeW91IG9ubHkgdXNlIFNUTCwKKwkgICAgdGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGNhbGxpbmcgVmFsdWUoKS4KKwkJT25seSBhdmFpbGFibGUgaW4gU1RMIG1vZGUuCisJKi8KKwljb25zdCBzdGQ6OnN0cmluZyYgVmFsdWVTdHIoKSBjb25zdCB7IHJldHVybiB2YWx1ZTsgfQorCSNlbmRpZgorCisJLyoqIENoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBub2RlLiBEZWZpbmVkIGFzOgorCQlAdmVyYmF0aW0KKwkJRG9jdW1lbnQ6CWZpbGVuYW1lIG9mIHRoZSB4bWwgZmlsZQorCQlFbGVtZW50OgluYW1lIG9mIHRoZSBlbGVtZW50CisJCUNvbW1lbnQ6CXRoZSBjb21tZW50IHRleHQKKwkJVW5rbm93bjoJdGhlIHRhZyBjb250ZW50cworCQlUZXh0OgkJdGhlIHRleHQgc3RyaW5nCisJCUBlbmR2ZXJiYXRpbQorCSovCisJdm9pZCBTZXRWYWx1ZShjb25zdCBjaGFyICogX3ZhbHVlKSB7IHZhbHVlID0gX3ZhbHVlO30KKworICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCisJLy8vIFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCXZvaWQgU2V0VmFsdWUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSAgICAKKwl7CSAgCisJCVN0cmluZ1RvQnVmZmVyIGJ1ZiggX3ZhbHVlICk7CisJCVNldFZhbHVlKCBidWYuYnVmZmVyID8gYnVmLmJ1ZmZlciA6ICIiICk7ICAgIAkKKwl9CQorCSNlbmRpZgorCisJLy8vIERlbGV0ZSBhbGwgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZS4gRG9lcyBub3QgYWZmZWN0ICd0aGlzJy4KKwl2b2lkIENsZWFyKCk7CisKKwkvLy8gT25lIHN0ZXAgdXAgdGhlIERPTS4KKwlUaVhtbE5vZGUqIFBhcmVudCgpCQkJCQkJCXsgcmV0dXJuIHBhcmVudDsgfQorCWNvbnN0IFRpWG1sTm9kZSogUGFyZW50KCkgY29uc3QJCQkJeyByZXR1cm4gcGFyZW50OyB9CisKKwljb25zdCBUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoKQljb25zdAl7IHJldHVybiBmaXJzdENoaWxkOyB9CQkvLy88IFRoZSBmaXJzdCBjaGlsZCBvZiB0aGlzIG5vZGUuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4uCisJVGlYbWxOb2RlKiBGaXJzdENoaWxkKCkJCQkJCXsgcmV0dXJuIGZpcnN0Q2hpbGQ7IH0KKwljb25zdCBUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OwkJCS8vLzwgVGhlIGZpcnN0IGNoaWxkIG9mIHRoaXMgbm9kZSB3aXRoIHRoZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgbm9uZSBmb3VuZC4KKwlUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApOwkJCQkJCS8vLzwgVGhlIGZpcnN0IGNoaWxkIG9mIHRoaXMgbm9kZSB3aXRoIHRoZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgbm9uZSBmb3VuZC4KKworCWNvbnN0IFRpWG1sTm9kZSogTGFzdENoaWxkKCkgY29uc3QJeyByZXR1cm4gbGFzdENoaWxkOyB9CQkvLy8gVGhlIGxhc3QgY2hpbGQgb2YgdGhpcyBub2RlLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLgorCVRpWG1sTm9kZSogTGFzdENoaWxkKCkJeyByZXR1cm4gbGFzdENoaWxkOyB9CisJY29uc3QgVGlYbWxOb2RlKiBMYXN0Q2hpbGQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OwkJCS8vLyBUaGUgbGFzdCBjaGlsZCBvZiB0aGlzIG5vZGUgbWF0Y2hpbmcgJ3ZhbHVlJy4gV2lsbCBiZSBudWxsIGlmIHRoZXJlIGFyZSBubyBjaGlsZHJlbi4KKwlUaVhtbE5vZGUqIExhc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICk7CQorCisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwljb25zdCBUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSBjb25zdAl7CXJldHVybiBGaXJzdENoaWxkIChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJVGlYbWxOb2RlKiBGaXJzdENoaWxkKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkJCQkJewlyZXR1cm4gRmlyc3RDaGlsZCAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCWNvbnN0IFRpWG1sTm9kZSogTGFzdENoaWxkKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJewlyZXR1cm4gTGFzdENoaWxkIChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJVGlYbWxOb2RlKiBMYXN0Q2hpbGQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKQkJCQl7CXJldHVybiBMYXN0Q2hpbGQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwkjZW5kaWYKKworCS8qKiBBbiBhbHRlcm5hdGUgd2F5IHRvIHdhbGsgdGhlIGNoaWxkcmVuIG9mIGEgbm9kZS4KKwkJT25lIHdheSB0byBpdGVyYXRlIG92ZXIgbm9kZXMgaXM6CisJCUB2ZXJiYXRpbQorCQkJZm9yKCBjaGlsZCA9IHBhcmVudC0+Rmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+TmV4dFNpYmxpbmcoKSApCisJCUBlbmR2ZXJiYXRpbQorCisJCUl0ZXJhdGVDaGlsZHJlbiBkb2VzIHRoZSBzYW1lIHRoaW5nIHdpdGggdGhlIHN5bnRheDoKKwkJQHZlcmJhdGltCisJCQljaGlsZCA9IDA7CisJCQl3aGlsZSggY2hpbGQgPSBwYXJlbnQtPkl0ZXJhdGVDaGlsZHJlbiggY2hpbGQgKSApCisJCUBlbmR2ZXJiYXRpbQorCisJCUl0ZXJhdGVDaGlsZHJlbiB0YWtlcyB0aGUgcHJldmlvdXMgY2hpbGQgYXMgaW5wdXQgYW5kIGZpbmRzCisJCXRoZSBuZXh0IG9uZS4gSWYgdGhlIHByZXZpb3VzIGNoaWxkIGlzIG51bGwsIGl0IHJldHVybnMgdGhlCisJCWZpcnN0LiBJdGVyYXRlQ2hpbGRyZW4gd2lsbCByZXR1cm4gbnVsbCB3aGVuIGRvbmUuCisJKi8KKwljb25zdCBUaVhtbE5vZGUqIEl0ZXJhdGVDaGlsZHJlbiggY29uc3QgVGlYbWxOb2RlKiBwcmV2aW91cyApIGNvbnN0OworCVRpWG1sTm9kZSogSXRlcmF0ZUNoaWxkcmVuKCBUaVhtbE5vZGUqIHByZXZpb3VzICk7CisKKwkvLy8gVGhpcyBmbGF2b3Igb2YgSXRlcmF0ZUNoaWxkcmVuIHNlYXJjaGVzIGZvciBjaGlsZHJlbiB3aXRoIGEgcGFydGljdWxhciAndmFsdWUnCisJY29uc3QgVGlYbWxOb2RlKiBJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IGNoYXIgKiB2YWx1ZSwgY29uc3QgVGlYbWxOb2RlKiBwcmV2aW91cyApIGNvbnN0OworCVRpWG1sTm9kZSogSXRlcmF0ZUNoaWxkcmVuKCBjb25zdCBjaGFyICogdmFsdWUsIFRpWG1sTm9kZSogcHJldmlvdXMgKTsKKworICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCisJY29uc3QgVGlYbWxOb2RlKiBJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSogcHJldmlvdXMgKSBjb25zdAl7CXJldHVybiBJdGVyYXRlQ2hpbGRyZW4gKF92YWx1ZS5jX3N0ciAoKSwgcHJldmlvdXMpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJVGlYbWxOb2RlKiBJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUsIFRpWG1sTm9kZSogcHJldmlvdXMgKSB7CXJldHVybiBJdGVyYXRlQ2hpbGRyZW4gKF92YWx1ZS5jX3N0ciAoKSwgcHJldmlvdXMpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJI2VuZGlmCisKKwkvKiogQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiBBZGRzIGEgY2hpbGQgcGFzdCB0aGUgTGFzdENoaWxkLgorCQlSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuCisJKi8KKwlUaVhtbE5vZGUqIEluc2VydEVuZENoaWxkKCBjb25zdCBUaVhtbE5vZGUmIGFkZFRoaXMgKTsKKworCisJLyoqIEFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gQWRkcyBhIGNoaWxkIHBhc3QgdGhlIExhc3RDaGlsZC4KKworCQlOT1RFOiB0aGUgbm9kZSB0byBiZSBhZGRlZCBpcyBwYXNzZWQgYnkgcG9pbnRlciwgYW5kIHdpbGwgYmUKKwkJaGVuY2Vmb3J0aCBvd25lZCAoYW5kIGRlbGV0ZWQpIGJ5IHRpbnlYbWwuIFRoaXMgbWV0aG9kIGlzIGVmZmljaWVudAorCQlhbmQgYXZvaWRzIGFuIGV4dHJhIGNvcHksIGJ1dCBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUgYXMgaXQKKwkJdXNlcyBhIGRpZmZlcmVudCBtZW1vcnkgbW9kZWwgdGhhbiB0aGUgb3RoZXIgaW5zZXJ0IGZ1bmN0aW9ucy4KKworCQlAc2EgSW5zZXJ0RW5kQ2hpbGQKKwkqLworCVRpWG1sTm9kZSogTGlua0VuZENoaWxkKCBUaVhtbE5vZGUqIGFkZFRoaXMgKTsKKworCS8qKiBBZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuIEFkZHMgYSBjaGlsZCBiZWZvcmUgdGhlIHNwZWNpZmllZCBjaGlsZC4KKwkJUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ldyBvYmplY3Qgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLgorCSovCisJVGlYbWxOb2RlKiBJbnNlcnRCZWZvcmVDaGlsZCggVGlYbWxOb2RlKiBiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUmIGFkZFRoaXMgKTsKKworCS8qKiBBZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuIEFkZHMgYSBjaGlsZCBhZnRlciB0aGUgc3BlY2lmaWVkIGNoaWxkLgorCQlSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuCisJKi8KKwlUaVhtbE5vZGUqIEluc2VydEFmdGVyQ2hpbGQoICBUaVhtbE5vZGUqIGFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlJiBhZGRUaGlzICk7CisKKwkvKiogUmVwbGFjZSBhIGNoaWxkIG9mIHRoaXMgbm9kZS4KKwkJUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ldyBvYmplY3Qgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLgorCSovCisJVGlYbWxOb2RlKiBSZXBsYWNlQ2hpbGQoIFRpWG1sTm9kZSogcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSYgd2l0aFRoaXMgKTsKKworCS8vLyBEZWxldGUgYSBjaGlsZCBvZiB0aGlzIG5vZGUuCisJYm9vbCBSZW1vdmVDaGlsZCggVGlYbWxOb2RlKiByZW1vdmVUaGlzICk7CisKKwkvLy8gTmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuCisJY29uc3QgVGlYbWxOb2RlKiBQcmV2aW91c1NpYmxpbmcoKSBjb25zdAkJCXsgcmV0dXJuIHByZXY7IH0KKwlUaVhtbE5vZGUqIFByZXZpb3VzU2libGluZygpCQkJCQkJeyByZXR1cm4gcHJldjsgfQorCisJLy8vIE5hdmlnYXRlIHRvIGEgc2libGluZyBub2RlLgorCWNvbnN0IFRpWG1sTm9kZSogUHJldmlvdXNTaWJsaW5nKCBjb25zdCBjaGFyICogKSBjb25zdDsKKwlUaVhtbE5vZGUqIFByZXZpb3VzU2libGluZyggY29uc3QgY2hhciAqICk7CisKKyAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAorCWNvbnN0IFRpWG1sTm9kZSogUHJldmlvdXNTaWJsaW5nKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJewlyZXR1cm4gUHJldmlvdXNTaWJsaW5nIChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJVGlYbWxOb2RlKiBQcmV2aW91c1NpYmxpbmcoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSAJCQl7CXJldHVybiBQcmV2aW91c1NpYmxpbmcgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwljb25zdCBUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlKSBjb25zdAkJewlyZXR1cm4gTmV4dFNpYmxpbmcgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwlUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlKSAJCQkJCXsJcmV0dXJuIE5leHRTaWJsaW5nIChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJI2VuZGlmCisKKwkvLy8gTmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuCisJY29uc3QgVGlYbWxOb2RlKiBOZXh0U2libGluZygpIGNvbnN0CQkJCXsgcmV0dXJuIG5leHQ7IH0KKwlUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCkJCQkJCQkJeyByZXR1cm4gbmV4dDsgfQorCisJLy8vIE5hdmlnYXRlIHRvIGEgc2libGluZyBub2RlIHdpdGggdGhlIGdpdmVuICd2YWx1ZScuCisJY29uc3QgVGlYbWxOb2RlKiBOZXh0U2libGluZyggY29uc3QgY2hhciAqICkgY29uc3Q7CisJVGlYbWxOb2RlKiBOZXh0U2libGluZyggY29uc3QgY2hhciAqICk7CisKKwkvKiogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuCisJCUNhbGxzIE5leHRTaWJsaW5nIGFuZCBUb0VsZW1lbnQuIFdpbGwgc2tpcCBhbGwgbm9uLUVsZW1lbnQKKwkJbm9kZXMuIFJldHVybnMgMCBpZiB0aGVyZSBpcyBub3QgYW5vdGhlciBlbGVtZW50LgorCSovCisJY29uc3QgVGlYbWxFbGVtZW50KiBOZXh0U2libGluZ0VsZW1lbnQoKSBjb25zdDsKKwlUaVhtbEVsZW1lbnQqIE5leHRTaWJsaW5nRWxlbWVudCgpOworCisJLyoqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCB0aHJvdWdoIGVsZW1lbnRzLgorCQlDYWxscyBOZXh0U2libGluZyBhbmQgVG9FbGVtZW50LiBXaWxsIHNraXAgYWxsIG5vbi1FbGVtZW50CisJCW5vZGVzLiBSZXR1cm5zIDAgaWYgdGhlcmUgaXMgbm90IGFub3RoZXIgZWxlbWVudC4KKwkqLworCWNvbnN0IFRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBjaGFyICogKSBjb25zdDsKKwlUaVhtbEVsZW1lbnQqIE5leHRTaWJsaW5nRWxlbWVudCggY29uc3QgY2hhciAqICk7CisKKyAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAorCWNvbnN0IFRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlKSBjb25zdAl7CXJldHVybiBOZXh0U2libGluZ0VsZW1lbnQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwlUaVhtbEVsZW1lbnQqIE5leHRTaWJsaW5nRWxlbWVudCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSkJCQkJewlyZXR1cm4gTmV4dFNpYmxpbmdFbGVtZW50IChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJI2VuZGlmCisKKwkvLy8gQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuCisJY29uc3QgVGlYbWxFbGVtZW50KiBGaXJzdENoaWxkRWxlbWVudCgpCWNvbnN0OworCVRpWG1sRWxlbWVudCogRmlyc3RDaGlsZEVsZW1lbnQoKTsKKworCS8vLyBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4KKwljb25zdCBUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBjaGFyICogdmFsdWUgKSBjb25zdDsKKwlUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBjaGFyICogdmFsdWUgKTsKKworICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCisJY29uc3QgVGlYbWxFbGVtZW50KiBGaXJzdENoaWxkRWxlbWVudCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIGNvbnN0CXsJcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50IChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJVGlYbWxFbGVtZW50KiBGaXJzdENoaWxkRWxlbWVudCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApCQkJCXsJcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50IChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJI2VuZGlmCisKKwkvKiogUXVlcnkgdGhlIHR5cGUgKGFzIGFuIGVudW1lcmF0ZWQgdmFsdWUsIGFib3ZlKSBvZiB0aGlzIG5vZGUuCisJCVRoZSBwb3NzaWJsZSB0eXBlcyBhcmU6IERPQ1VNRU5ULCBFTEVNRU5ULCBDT01NRU5ULAorCQkJCQkJCQlVTktOT1dOLCBURVhULCBhbmQgREVDTEFSQVRJT04uCisJKi8KKwl2aXJ0dWFsIGludCBUeXBlKCkgY29uc3QJeyByZXR1cm4gdHlwZTsgfQorCisJLyoqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIERvY3VtZW50IHRoaXMgbm9kZSBsaXZlcyBpbi4KKwkJUmV0dXJucyBudWxsIGlmIG5vdCBpbiBhIGRvY3VtZW50LgorCSovCisJY29uc3QgVGlYbWxEb2N1bWVudCogR2V0RG9jdW1lbnQoKSBjb25zdDsKKwlUaVhtbERvY3VtZW50KiBHZXREb2N1bWVudCgpOworCisJLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaGFzIG5vIGNoaWxkcmVuLgorCWJvb2wgTm9DaGlsZHJlbigpIGNvbnN0CQkJCQkJeyByZXR1cm4gIWZpcnN0Q2hpbGQ7IH0KKworCWNvbnN0IFRpWG1sRG9jdW1lbnQqIFRvRG9jdW1lbnQoKQljb25zdAkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gRE9DVU1FTlQgKSA/IChjb25zdCBUaVhtbERvY3VtZW50KikgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKwljb25zdCBUaVhtbEVsZW1lbnQqICBUb0VsZW1lbnQoKSBjb25zdAkJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IEVMRU1FTlQgICkgPyAoY29uc3QgVGlYbWxFbGVtZW50KikgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCisJY29uc3QgVGlYbWxDb21tZW50KiAgVG9Db21tZW50KCkgY29uc3QJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBDT01NRU5UICApID8gKGNvbnN0IFRpWG1sQ29tbWVudCopICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCWNvbnN0IFRpWG1sVW5rbm93biogIFRvVW5rbm93bigpIGNvbnN0CQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gVU5LTk9XTiAgKSA/IChjb25zdCBUaVhtbFVua25vd24qKSAgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKwljb25zdCBUaVhtbFRleHQqCSAgIFRvVGV4dCgpICAgIGNvbnN0CQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBURVhUICAgICApID8gKGNvbnN0IFRpWG1sVGV4dCopICAgICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCWNvbnN0IFRpWG1sRGVjbGFyYXRpb24qIFRvRGVjbGFyYXRpb24oKSBjb25zdAl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBERUNMQVJBVElPTiApID8gKGNvbnN0IFRpWG1sRGVjbGFyYXRpb24qKSB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCisJVGlYbWxEb2N1bWVudCogVG9Eb2N1bWVudCgpCQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gRE9DVU1FTlQgKSA/IChUaVhtbERvY3VtZW50KikgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKwlUaVhtbEVsZW1lbnQqICBUb0VsZW1lbnQoKQkJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IEVMRU1FTlQgICkgPyAoVGlYbWxFbGVtZW50KikgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCisJVGlYbWxDb21tZW50KiAgVG9Db21tZW50KCkJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBDT01NRU5UICApID8gKFRpWG1sQ29tbWVudCopICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgorCVRpWG1sVW5rbm93biogIFRvVW5rbm93bigpCQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gVU5LTk9XTiAgKSA/IChUaVhtbFVua25vd24qKSAgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKwlUaVhtbFRleHQqCSAgIFRvVGV4dCgpICAgCQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gVEVYVCAgICAgKSA/IChUaVhtbFRleHQqKSAgICAgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKwlUaVhtbERlY2xhcmF0aW9uKiBUb0RlY2xhcmF0aW9uKCkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gREVDTEFSQVRJT04gKSA/IChUaVhtbERlY2xhcmF0aW9uKikgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KKworCS8qKiBDcmVhdGUgYW4gZXhhY3QgZHVwbGljYXRlIG9mIHRoaXMgbm9kZSBhbmQgcmV0dXJuIGl0LiBUaGUgbWVtb3J5IG11c3QgYmUgZGVsZXRlZAorCQlieSB0aGUgY2FsbGVyLiAKKwkqLworCXZpcnR1YWwgVGlYbWxOb2RlKiBDbG9uZSgpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgorCVRpWG1sTm9kZSggTm9kZVR5cGUgX3R5cGUgKTsKKworCS8vIENvcHkgdG8gdGhlIGFsbG9jYXRlZCBvYmplY3QuIFNoYXJlZCBmdW5jdGlvbmFsaXR5IGJldHdlZW4gQ2xvbmUsIENvcHkgY29uc3RydWN0b3IsCisJLy8gYW5kIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLgorCXZvaWQgQ29weVRvKCBUaVhtbE5vZGUqIHRhcmdldCApIGNvbnN0OworCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkgICAgLy8gVGhlIHJlYWwgd29yayBvZiB0aGUgaW5wdXQgb3BlcmF0b3IuCisJICAgIHZpcnR1YWwgdm9pZCBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSogaW4sIFRJWE1MX1NUUklORyogdGFnICkgPSAwOworCSNlbmRpZgorCisJLy8gRmlndXJlIG91dCB3aGF0IGlzIGF0ICpwLCBhbmQgcGFyc2UgaXQuIFJldHVybnMgbnVsbCBpZiBpdCBpcyBub3QgYW4geG1sIG5vZGUuCisJVGlYbWxOb2RlKiBJZGVudGlmeSggY29uc3QgY2hhciogc3RhcnQsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKworCVRpWG1sTm9kZSoJCXBhcmVudDsKKwlOb2RlVHlwZQkJdHlwZTsKKworCVRpWG1sTm9kZSoJCWZpcnN0Q2hpbGQ7CisJVGlYbWxOb2RlKgkJbGFzdENoaWxkOworCisJVElYTUxfU1RSSU5HCXZhbHVlOworCisJVGlYbWxOb2RlKgkJcHJldjsKKwlUaVhtbE5vZGUqCQluZXh0OworCitwcml2YXRlOgorCVRpWG1sTm9kZSggY29uc3QgVGlYbWxOb2RlJiApOwkJCQkvLyBub3QgaW1wbGVtZW50ZWQuCisJdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sTm9kZSYgYmFzZSApOwkvLyBub3QgYWxsb3dlZC4KK307CisKKworLyoqIEFuIGF0dHJpYnV0ZSBpcyBhIG5hbWUtdmFsdWUgcGFpci4gRWxlbWVudHMgaGF2ZSBhbiBhcmJpdHJhcnkKKwludW1iZXIgb2YgYXR0cmlidXRlcywgZWFjaCB3aXRoIGEgdW5pcXVlIG5hbWUuCisKKwlAbm90ZSBUaGUgYXR0cmlidXRlcyBhcmUgbm90IFRpWG1sTm9kZXMsIHNpbmNlIHRoZXkgYXJlIG5vdAorCQkgIHBhcnQgb2YgdGhlIHRpbnlYTUwgZG9jdW1lbnQgb2JqZWN0IG1vZGVsLiBUaGVyZSBhcmUgb3RoZXIKKwkJICBzdWdnZXN0ZWQgd2F5cyB0byBsb29rIGF0IHRoaXMgcHJvYmxlbS4KKyovCitjbGFzcyBUaVhtbEF0dHJpYnV0ZSA6IHB1YmxpYyBUaVhtbEJhc2UKK3sKKwlmcmllbmQgY2xhc3MgVGlYbWxBdHRyaWJ1dGVTZXQ7CisKK3B1YmxpYzoKKwkvLy8gQ29uc3RydWN0IGFuIGVtcHR5IGF0dHJpYnV0ZS4KKwlUaVhtbEF0dHJpYnV0ZSgpIDogVGlYbWxCYXNlKCkKKwl7CisJCWRvY3VtZW50ID0gMDsKKwkJcHJldiA9IG5leHQgPSAwOworCX0KKworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJLy8vIHN0ZDo6c3RyaW5nIGNvbnN0cnVjdG9yLgorCVRpWG1sQXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgX25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKQorCXsKKwkJbmFtZSA9IF9uYW1lOworCQl2YWx1ZSA9IF92YWx1ZTsKKwkJZG9jdW1lbnQgPSAwOworCQlwcmV2ID0gbmV4dCA9IDA7CisJfQorCSNlbmRpZgorCisJLy8vIENvbnN0cnVjdCBhbiBhdHRyaWJ1dGUgd2l0aCBhIG5hbWUgYW5kIHZhbHVlLgorCVRpWG1sQXR0cmlidXRlKCBjb25zdCBjaGFyICogX25hbWUsIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQorCXsKKwkJbmFtZSA9IF9uYW1lOworCQl2YWx1ZSA9IF92YWx1ZTsKKwkJZG9jdW1lbnQgPSAwOworCQlwcmV2ID0gbmV4dCA9IDA7CisJfQorCisJY29uc3QgY2hhcioJCU5hbWUoKSAgY29uc3QJCXsgcmV0dXJuIG5hbWUuY19zdHIgKCk7IH0JCS8vLzwgUmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgYXR0cmlidXRlLgorCWNvbnN0IGNoYXIqCQlWYWx1ZSgpIGNvbnN0CQl7IHJldHVybiB2YWx1ZS5jX3N0ciAoKTsgfQkJLy8vPCBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLgorCWludAkJCQlJbnRWYWx1ZSgpIGNvbnN0OwkJCQkJCQkJCS8vLzwgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwgY29udmVydGVkIHRvIGFuIGludGVnZXIuCisJZG91YmxlCQkJRG91YmxlVmFsdWUoKSBjb25zdDsJCQkJCQkJCS8vLzwgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwgY29udmVydGVkIHRvIGEgZG91YmxlLgorCisJLyoqIFF1ZXJ5SW50VmFsdWUgZXhhbWluZXMgdGhlIHZhbHVlIHN0cmluZy4gSXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlCisJCUludFZhbHVlKCkgbWV0aG9kIHdpdGggcmljaGVyIGVycm9yIGNoZWNraW5nLgorCQlJZiB0aGUgdmFsdWUgaXMgYW4gaW50ZWdlciwgaXQgaXMgc3RvcmVkIGluICd2YWx1ZScgYW5kIAorCQl0aGUgY2FsbCByZXR1cm5zIFRJWE1MX1NVQ0NFU1MuIElmIGl0IGlzIG5vdAorCQlhbiBpbnRlZ2VyLCBpdCByZXR1cm5zIFRJWE1MX1dST05HX1RZUEUuCisKKwkJQSBzcGVjaWFsaXplZCBidXQgdXNlZnVsIGNhbGwuIE5vdGUgdGhhdCBmb3Igc3VjY2VzcyBpdCByZXR1cm5zIDAsCisJCXdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBvZiBhbG1vc3QgYWxsIG90aGVyIFRpbnlYbWwgY2FsbHMuCisJKi8KKwlpbnQgUXVlcnlJbnRWYWx1ZSggaW50KiBfdmFsdWUgKSBjb25zdDsKKwkvLy8gUXVlcnlEb3VibGVWYWx1ZSBleGFtaW5lcyB0aGUgdmFsdWUgc3RyaW5nLiBTZWUgUXVlcnlJbnRWYWx1ZSgpLgorCWludCBRdWVyeURvdWJsZVZhbHVlKCBkb3VibGUqIF92YWx1ZSApIGNvbnN0OworCisJdm9pZCBTZXROYW1lKCBjb25zdCBjaGFyKiBfbmFtZSApCXsgbmFtZSA9IF9uYW1lOyB9CQkJCS8vLzwgU2V0IHRoZSBuYW1lIG9mIHRoaXMgYXR0cmlidXRlLgorCXZvaWQgU2V0VmFsdWUoIGNvbnN0IGNoYXIqIF92YWx1ZSApCXsgdmFsdWUgPSBfdmFsdWU7IH0JCQkJLy8vPCBTZXQgdGhlIHZhbHVlLgorCisJdm9pZCBTZXRJbnRWYWx1ZSggaW50IF92YWx1ZSApOwkJCQkJCQkJCQkvLy88IFNldCB0aGUgdmFsdWUgZnJvbSBhbiBpbnRlZ2VyLgorCXZvaWQgU2V0RG91YmxlVmFsdWUoIGRvdWJsZSBfdmFsdWUgKTsJCQkJCQkJCS8vLzwgU2V0IHRoZSB2YWx1ZSBmcm9tIGEgZG91YmxlLgorCisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkvLy8gU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCisJdm9pZCBTZXROYW1lKCBjb25zdCBzdGQ6OnN0cmluZyYgX25hbWUgKQkKKwl7CQorCQlTdHJpbmdUb0J1ZmZlciBidWYoIF9uYW1lICk7CisJCVNldE5hbWUgKCBidWYuYnVmZmVyID8gYnVmLmJ1ZmZlciA6ICJlcnJvciIgKTsJCisJfQorCS8vLyBTVEwgc3RkOjpzdHJpbmcgZm9ybS4JCisJdm9pZCBTZXRWYWx1ZSggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApCQorCXsJCisJCVN0cmluZ1RvQnVmZmVyIGJ1ZiggX3ZhbHVlICk7CisJCVNldFZhbHVlKCBidWYuYnVmZmVyID8gYnVmLmJ1ZmZlciA6ICJlcnJvciIgKTsJCisJfQorCSNlbmRpZgorCisJLy8vIEdldCB0aGUgbmV4dCBzaWJsaW5nIGF0dHJpYnV0ZSBpbiB0aGUgRE9NLiBSZXR1cm5zIG51bGwgYXQgZW5kLgorCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBOZXh0KCkgY29uc3Q7CisJVGlYbWxBdHRyaWJ1dGUqIE5leHQoKTsKKwkvLy8gR2V0IHRoZSBwcmV2aW91cyBzaWJsaW5nIGF0dHJpYnV0ZSBpbiB0aGUgRE9NLiBSZXR1cm5zIG51bGwgYXQgYmVnaW5uaW5nLgorCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBQcmV2aW91cygpIGNvbnN0OworCVRpWG1sQXR0cmlidXRlKiBQcmV2aW91cygpOworCisJYm9vbCBvcGVyYXRvcj09KCBjb25zdCBUaVhtbEF0dHJpYnV0ZSYgcmhzICkgY29uc3QgeyByZXR1cm4gcmhzLm5hbWUgPT0gbmFtZTsgfQorCWJvb2wgb3BlcmF0b3I8KCBjb25zdCBUaVhtbEF0dHJpYnV0ZSYgcmhzICkJIGNvbnN0IHsgcmV0dXJuIG5hbWUgPCByaHMubmFtZTsgfQorCWJvb2wgb3BlcmF0b3I+KCBjb25zdCBUaVhtbEF0dHJpYnV0ZSYgcmhzICkgIGNvbnN0IHsgcmV0dXJuIG5hbWUgPiByaHMubmFtZTsgfQorCisJLyoJQXR0cmlidXRlIHBhcnNpbmcgc3RhcnRzOiBmaXJzdCBsZXR0ZXIgb2YgdGhlIG5hbWUKKwkJCQkJCSByZXR1cm5zOiB0aGUgbmV4dCBjaGFyIGFmdGVyIHRoZSB2YWx1ZSBlbmQgcXVvdGUKKwkqLworCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKworCS8vIFByaW50cyB0aGlzIEF0dHJpYnV0ZSB0byBhIEZJTEUgc3RyZWFtLgorCXZpcnR1YWwgdm9pZCBQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0OworCisJdmlydHVhbCB2b2lkIFN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIG91dCApIGNvbnN0OworCS8vIFtpbnRlcm5hbCB1c2VdCisJLy8gU2V0IHRoZSBkb2N1bWVudCBwb2ludGVyIHNvIHRoZSBhdHRyaWJ1dGUgY2FuIHJlcG9ydCBlcnJvcnMuCisJdm9pZCBTZXREb2N1bWVudCggVGlYbWxEb2N1bWVudCogZG9jICkJeyBkb2N1bWVudCA9IGRvYzsgfQorCitwcml2YXRlOgorCVRpWG1sQXR0cmlidXRlKCBjb25zdCBUaVhtbEF0dHJpYnV0ZSYgKTsJCQkJLy8gbm90IGltcGxlbWVudGVkLgorCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEF0dHJpYnV0ZSYgYmFzZSApOwkvLyBub3QgYWxsb3dlZC4KKworCVRpWG1sRG9jdW1lbnQqCWRvY3VtZW50OwkvLyBBIHBvaW50ZXIgYmFjayB0byBhIGRvY3VtZW50LCBmb3IgZXJyb3IgcmVwb3J0aW5nLgorCVRJWE1MX1NUUklORyBuYW1lOworCVRJWE1MX1NUUklORyB2YWx1ZTsKKwlUaVhtbEF0dHJpYnV0ZSoJcHJldjsKKwlUaVhtbEF0dHJpYnV0ZSoJbmV4dDsKK307CisKKworLyoJQSBjbGFzcyB1c2VkIHRvIG1hbmFnZSBhIGdyb3VwIG9mIGF0dHJpYnV0ZXMuCisJSXQgaXMgb25seSB1c2VkIGludGVybmFsbHksIGJvdGggYnkgdGhlIEVMRU1FTlQgYW5kIHRoZSBERUNMQVJBVElPTi4KKwkKKwlUaGUgc2V0IGNhbiBiZSBjaGFuZ2VkIHRyYW5zcGFyZW50IHRvIHRoZSBFbGVtZW50IGFuZCBEZWNsYXJhdGlvbgorCWNsYXNzZXMgdGhhdCB1c2UgaXQsIGJ1dCBOT1QgdHJhbnNwYXJlbnQgdG8gdGhlIEF0dHJpYnV0ZQorCXdoaWNoIGhhcyB0byBpbXBsZW1lbnQgYSBuZXh0KCkgYW5kIHByZXZpb3VzKCkgbWV0aG9kLiBXaGljaCBtYWtlcworCWl0IGEgYml0IHByb2JsZW1hdGljIGFuZCBwcmV2ZW50cyB0aGUgdXNlIG9mIFNUTC4KKworCVRoaXMgdmVyc2lvbiBpcyBpbXBsZW1lbnRlZCB3aXRoIGNpcmN1bGFyIGxpc3RzIGJlY2F1c2U6CisJCS0gSSBsaWtlIGNpcmN1bGFyIGxpc3RzCisJCS0gaXQgZGVtb25zdHJhdGVzIHNvbWUgaW5kZXBlbmRlbmNlIGZyb20gdGhlICh0eXBpY2FsKSBkb3VibHkgbGlua2VkIGxpc3QuCisqLworY2xhc3MgVGlYbWxBdHRyaWJ1dGVTZXQKK3sKK3B1YmxpYzoKKwlUaVhtbEF0dHJpYnV0ZVNldCgpOworCX5UaVhtbEF0dHJpYnV0ZVNldCgpOworCisJdm9pZCBBZGQoIFRpWG1sQXR0cmlidXRlKiBhdHRyaWJ1dGUgKTsKKwl2b2lkIFJlbW92ZSggVGlYbWxBdHRyaWJ1dGUqIGF0dHJpYnV0ZSApOworCisJY29uc3QgVGlYbWxBdHRyaWJ1dGUqIEZpcnN0KCkJY29uc3QJeyByZXR1cm4gKCBzZW50aW5lbC5uZXh0ID09ICZzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLm5leHQ7IH0KKwlUaVhtbEF0dHJpYnV0ZSogRmlyc3QoKQkJCQkJeyByZXR1cm4gKCBzZW50aW5lbC5uZXh0ID09ICZzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLm5leHQ7IH0KKwljb25zdCBUaVhtbEF0dHJpYnV0ZSogTGFzdCgpIGNvbnN0CQl7IHJldHVybiAoIHNlbnRpbmVsLnByZXYgPT0gJnNlbnRpbmVsICkgPyAwIDogc2VudGluZWwucHJldjsgfQorCVRpWG1sQXR0cmlidXRlKiBMYXN0KCkJCQkJCXsgcmV0dXJuICggc2VudGluZWwucHJldiA9PSAmc2VudGluZWwgKSA/IDAgOiBzZW50aW5lbC5wcmV2OyB9CisKKwljb25zdCBUaVhtbEF0dHJpYnV0ZSoJRmluZCggY29uc3QgY2hhciAqIG5hbWUgKSBjb25zdDsKKwlUaVhtbEF0dHJpYnV0ZSoJRmluZCggY29uc3QgY2hhciAqIG5hbWUgKTsKKworcHJpdmF0ZToKKwkvLypNRToJQmVjYXVzZSBvZiBoaWRkZW4vZGlzYWJsZWQgY29weS1jb25zdHJ1a3RvciBpbiBUaVhtbEF0dHJpYnV0ZSAoc2VudGluZWwtZWxlbWVudCksCisJLy8qTUU6CXRoaXMgY2xhc3MgbXVzdCBiZSBhbHNvIHVzZSBhIGhpZGRlbi9kaXNhYmxlZCBjb3B5LWNvbnN0cnVjdG9yICEhIQorCVRpWG1sQXR0cmlidXRlU2V0KCBjb25zdCBUaVhtbEF0dHJpYnV0ZVNldCYgKTsJLy8gbm90IGFsbG93ZWQKKwl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxBdHRyaWJ1dGVTZXQmICk7CS8vIG5vdCBhbGxvd2VkIChhcyBUaVhtbEF0dHJpYnV0ZSkKKworCVRpWG1sQXR0cmlidXRlIHNlbnRpbmVsOworfTsKKworCisvKiogVGhlIGVsZW1lbnQgaXMgYSBjb250YWluZXIgY2xhc3MuIEl0IGhhcyBhIHZhbHVlLCB0aGUgZWxlbWVudCBuYW1lLAorCWFuZCBjYW4gY29udGFpbiBvdGhlciBlbGVtZW50cywgdGV4dCwgY29tbWVudHMsIGFuZCB1bmtub3ducy4KKwlFbGVtZW50cyBhbHNvIGNvbnRhaW4gYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBhdHRyaWJ1dGVzLgorKi8KK2NsYXNzIFRpWG1sRWxlbWVudCA6IHB1YmxpYyBUaVhtbE5vZGUKK3sKK3B1YmxpYzoKKwkvLy8gQ29uc3RydWN0IGFuIGVsZW1lbnQuCisJVGlYbWxFbGVtZW50IChjb25zdCBjaGFyICogaW5fdmFsdWUpOworCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkvLy8gc3RkOjpzdHJpbmcgY29uc3RydWN0b3IuCisJVGlYbWxFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICk7CisJI2VuZGlmCisKKwlUaVhtbEVsZW1lbnQoIGNvbnN0IFRpWG1sRWxlbWVudCYgKTsKKworCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEVsZW1lbnQmIGJhc2UgKTsKKworCXZpcnR1YWwgflRpWG1sRWxlbWVudCgpOworCisJLyoqIEdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCBBdHRyaWJ1dGUoKSByZXR1cm5zIHRoZSB2YWx1ZQorCQlmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuCisJKi8KKwljb25zdCBjaGFyKiBBdHRyaWJ1dGUoIGNvbnN0IGNoYXIqIG5hbWUgKSBjb25zdDsKKworCS8qKiBHaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSwgQXR0cmlidXRlKCkgcmV0dXJucyB0aGUgdmFsdWUKKwkJZm9yIHRoZSBhdHRyaWJ1dGUgb2YgdGhhdCBuYW1lLCBvciBudWxsIGlmIG5vbmUgZXhpc3RzLgorCQlJZiB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbmQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyLAorCQl0aGUgaW50ZWdlciB2YWx1ZSB3aWxsIGJlIHB1dCBpbiB0aGUgcmV0dXJuICdpJywgaWYgJ2knCisJCWlzIG5vbi1udWxsLgorCSovCisJY29uc3QgY2hhciogQXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBpbnQqIGkgKSBjb25zdDsKKworCS8qKiBHaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSwgQXR0cmlidXRlKCkgcmV0dXJucyB0aGUgdmFsdWUKKwkJZm9yIHRoZSBhdHRyaWJ1dGUgb2YgdGhhdCBuYW1lLCBvciBudWxsIGlmIG5vbmUgZXhpc3RzLgorCQlJZiB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbmQgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBkb3VibGUsCisJCXRoZSBkb3VibGUgdmFsdWUgd2lsbCBiZSBwdXQgaW4gdGhlIHJldHVybiAnZCcsIGlmICdkJworCQlpcyBub24tbnVsbC4KKwkqLworCWNvbnN0IGNoYXIqIEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgZG91YmxlKiBkICkgY29uc3Q7CisKKwkvKiogUXVlcnlJbnRBdHRyaWJ1dGUgZXhhbWluZXMgdGhlIGF0dHJpYnV0ZSAtIGl0IGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZQorCQlBdHRyaWJ1dGUoKSBtZXRob2Qgd2l0aCByaWNoZXIgZXJyb3IgY2hlY2tpbmcuCisJCUlmIHRoZSBhdHRyaWJ1dGUgaXMgYW4gaW50ZWdlciwgaXQgaXMgc3RvcmVkIGluICd2YWx1ZScgYW5kIAorCQl0aGUgY2FsbCByZXR1cm5zIFRJWE1MX1NVQ0NFU1MuIElmIGl0IGlzIG5vdAorCQlhbiBpbnRlZ2VyLCBpdCByZXR1cm5zIFRJWE1MX1dST05HX1RZUEUuIElmIHRoZSBhdHRyaWJ1dGUKKwkJZG9lcyBub3QgZXhpc3QsIHRoZW4gVElYTUxfTk9fQVRUUklCVVRFIGlzIHJldHVybmVkLgorCSovCQorCWludCBRdWVyeUludEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgaW50KiBfdmFsdWUgKSBjb25zdDsKKwkvLy8gUXVlcnlEb3VibGVBdHRyaWJ1dGUgZXhhbWluZXMgdGhlIGF0dHJpYnV0ZSAtIHNlZSBRdWVyeUludEF0dHJpYnV0ZSgpLgorCWludCBRdWVyeURvdWJsZUF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgZG91YmxlKiBfdmFsdWUgKSBjb25zdDsKKwkvLy8gUXVlcnlGbG9hdEF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gc2VlIFF1ZXJ5SW50QXR0cmlidXRlKCkuCisJaW50IFF1ZXJ5RmxvYXRBdHRyaWJ1dGUoIGNvbnN0IGNoYXIqIG5hbWUsIGZsb2F0KiBfdmFsdWUgKSBjb25zdCB7CisJCWRvdWJsZSBkOworCQlpbnQgcmVzdWx0ID0gUXVlcnlEb3VibGVBdHRyaWJ1dGUoIG5hbWUsICZkICk7CisJCWlmICggcmVzdWx0ID09IFRJWE1MX1NVQ0NFU1MgKSB7CisJCQkqX3ZhbHVlID0gKGZsb2F0KWQ7CisJCX0KKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwkvKiogU2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiBUaGUgYXR0cmlidXRlCisJCXdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgY2hhbmdlZCBpZiBpdCBkb2VzLgorCSovCisJdm9pZCBTZXRBdHRyaWJ1dGUoIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIgKiBfdmFsdWUgKTsKKworICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCisJY29uc3QgY2hhciogQXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSApIGNvbnN0CQkJCXsgcmV0dXJuIEF0dHJpYnV0ZSggbmFtZS5jX3N0cigpICk7IH0KKwljb25zdCBjaGFyKiBBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBpbnQqIGkgKSBjb25zdAkJeyByZXR1cm4gQXR0cmlidXRlKCBuYW1lLmNfc3RyKCksIGkgKTsgfQorCWNvbnN0IGNoYXIqIEF0dHJpYnV0ZSggY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGRvdWJsZSogZCApIGNvbnN0CXsgcmV0dXJuIEF0dHJpYnV0ZSggbmFtZS5jX3N0cigpLCBkICk7IH0KKwlpbnQgUXVlcnlJbnRBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBpbnQqIF92YWx1ZSApIGNvbnN0CXsgcmV0dXJuIFF1ZXJ5SW50QXR0cmlidXRlKCBuYW1lLmNfc3RyKCksIF92YWx1ZSApOyB9CisJaW50IFF1ZXJ5RG91YmxlQXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgZG91YmxlKiBfdmFsdWUgKSBjb25zdCB7IHJldHVybiBRdWVyeURvdWJsZUF0dHJpYnV0ZSggbmFtZS5jX3N0cigpLCBfdmFsdWUgKTsgfQorCisJLy8vIFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCXZvaWQgU2V0QXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApCQorCXsJCisJCVN0cmluZ1RvQnVmZmVyIG4oIG5hbWUgKTsKKwkJU3RyaW5nVG9CdWZmZXIgdiggX3ZhbHVlICk7CisJCWlmICggbi5idWZmZXIgJiYgdi5idWZmZXIgKQorCQkJU2V0QXR0cmlidXRlIChuLmJ1ZmZlciwgdi5idWZmZXIgKTsJCisJfQkKKwkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgorCXZvaWQgU2V0QXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgaW50IF92YWx1ZSApCQorCXsJCisJCVN0cmluZ1RvQnVmZmVyIG4oIG5hbWUgKTsKKwkJaWYgKCBuLmJ1ZmZlciApCisJCQlTZXRBdHRyaWJ1dGUgKG4uYnVmZmVyLCBfdmFsdWUpOwkKKwl9CQorCSNlbmRpZgorCisJLyoqIFNldHMgYW4gYXR0cmlidXRlIG9mIG5hbWUgdG8gYSBnaXZlbiB2YWx1ZS4gVGhlIGF0dHJpYnV0ZQorCQl3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGNoYW5nZWQgaWYgaXQgZG9lcy4KKwkqLworCXZvaWQgU2V0QXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSwgaW50IHZhbHVlICk7CisKKwkvKiogU2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiBUaGUgYXR0cmlidXRlCisJCXdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgY2hhbmdlZCBpZiBpdCBkb2VzLgorCSovCisJdm9pZCBTZXREb3VibGVBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBkb3VibGUgdmFsdWUgKTsKKworCS8qKiBEZWxldGVzIGFuIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZlbiBuYW1lLgorCSovCisJdm9pZCBSZW1vdmVBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lICk7CisgICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwl2b2lkIFJlbW92ZUF0dHJpYnV0ZSggY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUgKQl7CVJlbW92ZUF0dHJpYnV0ZSAobmFtZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KKwkjZW5kaWYKKworCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBGaXJzdEF0dHJpYnV0ZSgpIGNvbnN0CXsgcmV0dXJuIGF0dHJpYnV0ZVNldC5GaXJzdCgpOyB9CQkvLy88IEFjY2VzcyB0aGUgZmlyc3QgYXR0cmlidXRlIGluIHRoaXMgZWxlbWVudC4KKwlUaVhtbEF0dHJpYnV0ZSogRmlyc3RBdHRyaWJ1dGUoKSAJCQkJeyByZXR1cm4gYXR0cmlidXRlU2V0LkZpcnN0KCk7IH0KKwljb25zdCBUaVhtbEF0dHJpYnV0ZSogTGFzdEF0dHJpYnV0ZSgpCWNvbnN0IAl7IHJldHVybiBhdHRyaWJ1dGVTZXQuTGFzdCgpOyB9CQkvLy88IEFjY2VzcyB0aGUgbGFzdCBhdHRyaWJ1dGUgaW4gdGhpcyBlbGVtZW50LgorCVRpWG1sQXR0cmlidXRlKiBMYXN0QXR0cmlidXRlKCkJCQkJCXsgcmV0dXJuIGF0dHJpYnV0ZVNldC5MYXN0KCk7IH0KKworCS8qKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgZWFzeSBhY2Nlc3MgdG8gdGhlIHRleHQgaW5zaWRlIGFuIGVsZW1lbnQuIEFsdGhvdWdoIGVhc3kKKwkJYW5kIGNvbmNpc2UsIEdldFRleHQoKSBpcyBsaW1pdGVkIGNvbXBhcmVkIHRvIGdldHRpbmcgdGhlIFRpWG1sVGV4dCBjaGlsZAorCQlhbmQgYWNjZXNzaW5nIGl0IGRpcmVjdGx5LgorCQorCQlJZiB0aGUgZmlyc3QgY2hpbGQgb2YgJ3RoaXMnIGlzIGEgVGlYbWxUZXh0LCB0aGUgR2V0VGV4dCgpCisJCXJldHVycyB0aGUgY2hhcmFjdGVyIHN0cmluZyBvZiB0aGUgVGV4dCBub2RlLCBlbHNlIG51bGwgaXMgcmV0dXJuZWQuCisKKwkJVGhpcyBpcyBhIGNvbnZlbmllbnQgbWV0aG9kIGZvciBnZXR0aW5nIHRoZSB0ZXh0IG9mIHNpbXBsZSBjb250YWluZWQgdGV4dDoKKwkJQHZlcmJhdGltCisJCTxmb28+VGhpcyBpcyB0ZXh0PC9mb28+CisJCWNvbnN0IGNoYXIqIHN0ciA9IGZvb0VsZW1lbnQtPkdldFRleHQoKTsKKwkJQGVuZHZlcmJhdGltCisKKwkJJ3N0cicgd2lsbCBiZSBhIHBvaW50ZXIgdG8gIlRoaXMgaXMgdGV4dCIuIAorCQkKKwkJTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGJlIG1pc2xlYWRpbmcuIElmIHRoZSBlbGVtZW50IGZvbyB3YXMgY3JlYXRlZCBmcm9tCisJCXRoaXMgWE1MOgorCQlAdmVyYmF0aW0KKwkJPGZvbz48Yj5UaGlzIGlzIHRleHQ8L2I+PC9mb28+IAorCQlAZW5kdmVyYmF0aW0KKworCQl0aGVuIHRoZSB2YWx1ZSBvZiBzdHIgd291bGQgYmUgbnVsbC4gVGhlIGZpcnN0IGNoaWxkIG5vZGUgaXNuJ3QgYSB0ZXh0IG5vZGUsIGl0IGlzCisJCWFub3RoZXIgZWxlbWVudC4gRnJvbSB0aGlzIFhNTDoKKwkJQHZlcmJhdGltCisJCTxmb28+VGhpcyBpcyA8Yj50ZXh0PC9iPjwvZm9vPiAKKwkJQGVuZHZlcmJhdGltCisJCUdldFRleHQoKSB3aWxsIHJldHVybiAiVGhpcyBpcyAiLgorCisJCVdBUk5JTkc6IEdldFRleHQoKSBhY2Nlc3NlcyBhIGNoaWxkIG5vZGUgLSBkb24ndCBiZWNvbWUgY29uZnVzZWQgd2l0aCB0aGUgCisJCQkJIHNpbWlsYXJseSBuYW1lZCBUaVhtbEhhbmRsZTo6VGV4dCgpIGFuZCBUaVhtbE5vZGU6OlRvVGV4dCgpIHdoaWNoIGFyZSAKKwkJCQkgc2FmZSB0eXBlIGNhc3RzIG9uIHRoZSByZWZlcmVuY2VkIG5vZGUuCisJKi8KKwljb25zdCBjaGFyKiBHZXRUZXh0KCkgY29uc3Q7CisKKwkvLy8gQ3JlYXRlcyBhIG5ldyBFbGVtZW50IGFuZCByZXR1cm5zIGl0IC0gdGhlIHJldHVybmVkIGVsZW1lbnQgaXMgYSBjb3B5LgorCXZpcnR1YWwgVGlYbWxOb2RlKiBDbG9uZSgpIGNvbnN0OworCS8vIFByaW50IHRoZSBFbGVtZW50IHRvIGEgRklMRSBzdHJlYW0uCisJdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7CisKKwkvKglBdHRyaWJ0dWUgcGFyc2luZyBzdGFydHM6IG5leHQgY2hhciBwYXN0ICc8JworCQkJCQkJIHJldHVybnM6IG5leHQgY2hhciBwYXN0ICc+JworCSovCisJdmlydHVhbCBjb25zdCBjaGFyKiBQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCitwcm90ZWN0ZWQ6CisKKwl2b2lkIENvcHlUbyggVGlYbWxFbGVtZW50KiB0YXJnZXQgKSBjb25zdDsKKwl2b2lkIENsZWFyVGhpcygpOwkvLyBsaWtlIGNsZWFyLCBidXQgaW5pdGlhbGl6ZXMgJ3RoaXMnIG9iamVjdCBhcyB3ZWxsCisKKwkvLyBVc2VkIHRvIGJlIHB1YmxpYyBbaW50ZXJuYWwgdXNlXQorCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJICAgIHZpcnR1YWwgdm9pZCBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKwkjZW5kaWYKKwl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgY29uc3Q7CisKKwkvKglbaW50ZXJuYWwgdXNlXQorCQlSZWFkcyB0aGUgInZhbHVlIiBvZiB0aGUgZWxlbWVudCAtLSBhbm90aGVyIGVsZW1lbnQsIG9yIHRleHQuCisJCVRoaXMgc2hvdWxkIHRlcm1pbmF0ZSB3aXRoIHRoZSBjdXJyZW50IGVuZCB0YWcuCisJKi8KKwljb25zdCBjaGFyKiBSZWFkVmFsdWUoIGNvbnN0IGNoYXIqIGluLCBUaVhtbFBhcnNpbmdEYXRhKiBwcmV2RGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCitwcml2YXRlOgorCisJVGlYbWxBdHRyaWJ1dGVTZXQgYXR0cmlidXRlU2V0OworfTsKKworCisvKioJQW4gWE1MIGNvbW1lbnQuCisqLworY2xhc3MgVGlYbWxDb21tZW50IDogcHVibGljIFRpWG1sTm9kZQoreworcHVibGljOgorCS8vLyBDb25zdHJ1Y3RzIGFuIGVtcHR5IGNvbW1lbnQuCisJVGlYbWxDb21tZW50KCkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6Q09NTUVOVCApIHt9CisJVGlYbWxDb21tZW50KCBjb25zdCBUaVhtbENvbW1lbnQmICk7CisJdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sQ29tbWVudCYgYmFzZSApOworCisJdmlydHVhbCB+VGlYbWxDb21tZW50KCkJe30KKworCS8vLyBSZXR1cm5zIGEgY29weSBvZiB0aGlzIENvbW1lbnQuCisJdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7CisJLy8vIFdyaXRlIHRoaXMgQ29tbWVudCB0byBhIEZJTEUgc3RyZWFtLgorCXZpcnR1YWwgdm9pZCBQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0OworCisJLyoJQXR0cmlidHVlIHBhcnNpbmcgc3RhcnRzOiBhdCB0aGUgISBvZiB0aGUgIS0tCisJCQkJCQkgcmV0dXJuczogbmV4dCBjaGFyIHBhc3QgJz4nCisJKi8KKwl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKK3Byb3RlY3RlZDoKKwl2b2lkIENvcHlUbyggVGlYbWxDb21tZW50KiB0YXJnZXQgKSBjb25zdDsKKworCS8vIHVzZWQgdG8gYmUgcHVibGljCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworCSNlbmRpZgorCXZpcnR1YWwgdm9pZCBTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSBjb25zdDsKKworcHJpdmF0ZToKKworfTsKKworCisvKiogWE1MIHRleHQuIEEgdGV4dCBub2RlIGNhbiBoYXZlIDIgd2F5cyB0byBvdXRwdXQgdGhlIG5leHQuICJub3JtYWwiIG91dHB1dCAKKwlhbmQgQ0RBVEEuIEl0IHdpbGwgZGVmYXVsdCB0byB0aGUgbW9kZSBpdCB3YXMgcGFyc2VkIGZyb20gdGhlIFhNTCBmaWxlIGFuZAorCXlvdSBnZW5lcmFsbHkgd2FudCB0byBsZWF2ZSBpdCBhbG9uZSwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSBvdXRwdXQgbW9kZSB3aXRoIAorCVNldENEQVRBKCkgYW5kIHF1ZXJ5IGl0IHdpdGggQ0RBVEEoKS4KKyovCitjbGFzcyBUaVhtbFRleHQgOiBwdWJsaWMgVGlYbWxOb2RlCit7CisJZnJpZW5kIGNsYXNzIFRpWG1sRWxlbWVudDsKK3B1YmxpYzoKKwkvKiogQ29uc3RydWN0b3IgZm9yIHRleHQgZWxlbWVudC4gQnkgZGVmYXVsdCwgaXQgaXMgdHJlYXRlZCBhcyAKKwkJbm9ybWFsLCBlbmNvZGVkIHRleHQuIElmIHlvdSB3YW50IGl0IGJlIG91dHB1dCBhcyBhIENEQVRBIHRleHQKKwkJZWxlbWVudCwgc2V0IHRoZSBwYXJhbWV0ZXIgX2NkYXRhIHRvICd0cnVlJworCSovCisJVGlYbWxUZXh0IChjb25zdCBjaGFyICogaW5pdFZhbHVlICkgOiBUaVhtbE5vZGUgKFRpWG1sTm9kZTo6VEVYVCkKKwl7CisJCVNldFZhbHVlKCBpbml0VmFsdWUgKTsKKwkJY2RhdGEgPSBmYWxzZTsKKwl9CisJdmlydHVhbCB+VGlYbWxUZXh0KCkge30KKworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJLy8vIENvbnN0cnVjdG9yLgorCVRpWG1sVGV4dCggY29uc3Qgc3RkOjpzdHJpbmcmIGluaXRWYWx1ZSApIDogVGlYbWxOb2RlIChUaVhtbE5vZGU6OlRFWFQpCisJeworCQlTZXRWYWx1ZSggaW5pdFZhbHVlICk7CisJCWNkYXRhID0gZmFsc2U7CisJfQorCSNlbmRpZgorCisJVGlYbWxUZXh0KCBjb25zdCBUaVhtbFRleHQmIGNvcHkgKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpURVhUICkJeyBjb3B5LkNvcHlUbyggdGhpcyApOyB9CisJdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sVGV4dCYgYmFzZSApCQkJCQkJCSAJeyBiYXNlLkNvcHlUbyggdGhpcyApOyB9CisKKwkvLy8gV3JpdGUgdGhpcyB0ZXh0IG9iamVjdCB0byBhIEZJTEUgc3RyZWFtLgorCXZpcnR1YWwgdm9pZCBQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0OworCisJLy8vIFF1ZXJpZXMgd2hldGhlciB0aGlzIHJlcHJlc2VudHMgdGV4dCB1c2luZyBhIENEQVRBIHNlY3Rpb24uCisJYm9vbCBDREFUQSgpCQkJCQl7IHJldHVybiBjZGF0YTsgfQorCS8vLyBUdXJucyBvbiBvciBvZmYgYSBDREFUQSByZXByZXNlbnRhdGlvbiBvZiB0ZXh0LgorCXZvaWQgU2V0Q0RBVEEoIGJvb2wgX2NkYXRhICkJeyBjZGF0YSA9IF9jZGF0YTsgfQorCisJdmlydHVhbCBjb25zdCBjaGFyKiBQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCitwcm90ZWN0ZWQgOgorCS8vLyAgW2ludGVybmFsIHVzZV0gQ3JlYXRlcyBhIG5ldyBFbGVtZW50IGFuZCByZXR1cm5zIGl0LgorCXZpcnR1YWwgVGlYbWxOb2RlKiBDbG9uZSgpIGNvbnN0OworCXZvaWQgQ29weVRvKCBUaVhtbFRleHQqIHRhcmdldCApIGNvbnN0OworCisJdmlydHVhbCB2b2lkIFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSBjb25zdDsKKwlib29sIEJsYW5rKCkgY29uc3Q7CS8vIHJldHVybnMgdHJ1ZSBpZiBhbGwgd2hpdGUgc3BhY2UgYW5kIG5ldyBsaW5lcworCS8vIFtpbnRlcm5hbCB1c2VdCisJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOworCSNlbmRpZgorCitwcml2YXRlOgorCWJvb2wgY2RhdGE7CQkJLy8gdHJ1ZSBpZiB0aGlzIHNob3VsZCBiZSBpbnB1dCBhbmQgb3V0cHV0IGFzIGEgQ0RBVEEgc3R5bGUgdGV4dCBlbGVtZW50Cit9OworCisKKy8qKiBJbiBjb3JyZWN0IFhNTCB0aGUgZGVjbGFyYXRpb24gaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBmaWxlLgorCUB2ZXJiYXRpbQorCQk8P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9InllcyI/PgorCUBlbmR2ZXJiYXRpbQorCisJVGlueVhtbCB3aWxsIGhhcHBpbHkgcmVhZCBvciB3cml0ZSBmaWxlcyB3aXRob3V0IGEgZGVjbGFyYXRpb24sCisJaG93ZXZlci4gVGhlcmUgYXJlIDMgcG9zc2libGUgYXR0cmlidXRlcyB0byB0aGUgZGVjbGFyYXRpb246CisJdmVyc2lvbiwgZW5jb2RpbmcsIGFuZCBzdGFuZGFsb25lLgorCisJTm90ZTogSW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBjb2RlLCB0aGUgYXR0cmlidXRlcyBhcmUKKwloYW5kbGVkIGFzIHNwZWNpYWwgY2FzZXMsIG5vdCBnZW5lcmljIGF0dHJpYnV0ZXMsIHNpbXBseQorCWJlY2F1c2UgdGhlcmUgY2FuIG9ubHkgYmUgYXQgbW9zdCAzIGFuZCB0aGV5IGFyZSBhbHdheXMgdGhlIHNhbWUuCisqLworY2xhc3MgVGlYbWxEZWNsYXJhdGlvbiA6IHB1YmxpYyBUaVhtbE5vZGUKK3sKK3B1YmxpYzoKKwkvLy8gQ29uc3RydWN0IGFuIGVtcHR5IGRlY2xhcmF0aW9uLgorCVRpWG1sRGVjbGFyYXRpb24oKSAgIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkRFQ0xBUkFUSU9OICkge30KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkvLy8gQ29uc3RydWN0b3IuCisJVGlYbWxEZWNsYXJhdGlvbigJY29uc3Qgc3RkOjpzdHJpbmcmIF92ZXJzaW9uLAorCQkJCQkJY29uc3Qgc3RkOjpzdHJpbmcmIF9lbmNvZGluZywKKwkJCQkJCWNvbnN0IHN0ZDo6c3RyaW5nJiBfc3RhbmRhbG9uZSApOworI2VuZGlmCisKKwkvLy8gQ29uc3RydWN0LgorCVRpWG1sRGVjbGFyYXRpb24oCWNvbnN0IGNoYXIqIF92ZXJzaW9uLAorCQkJCQkJY29uc3QgY2hhciogX2VuY29kaW5nLAorCQkJCQkJY29uc3QgY2hhciogX3N0YW5kYWxvbmUgKTsKKworCVRpWG1sRGVjbGFyYXRpb24oIGNvbnN0IFRpWG1sRGVjbGFyYXRpb24mIGNvcHkgKTsKKwl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxEZWNsYXJhdGlvbiYgY29weSApOworCisJdmlydHVhbCB+VGlYbWxEZWNsYXJhdGlvbigpCXt9CisKKwkvLy8gVmVyc2lvbi4gV2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgd2FzIGZvdW5kLgorCWNvbnN0IGNoYXIgKlZlcnNpb24oKSBjb25zdAkJCXsgcmV0dXJuIHZlcnNpb24uY19zdHIgKCk7IH0KKwkvLy8gRW5jb2RpbmcuIFdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiBub25lIHdhcyBmb3VuZC4KKwljb25zdCBjaGFyICpFbmNvZGluZygpIGNvbnN0CQl7IHJldHVybiBlbmNvZGluZy5jX3N0ciAoKTsgfQorCS8vLyBJcyB0aGlzIGEgc3RhbmRhbG9uZSBkb2N1bWVudD8KKwljb25zdCBjaGFyICpTdGFuZGFsb25lKCkgY29uc3QJCXsgcmV0dXJuIHN0YW5kYWxvbmUuY19zdHIgKCk7IH0KKworCS8vLyBDcmVhdGVzIGEgY29weSBvZiB0aGlzIERlY2xhcmF0aW9uIGFuZCByZXR1cm5zIGl0LgorCXZpcnR1YWwgVGlYbWxOb2RlKiBDbG9uZSgpIGNvbnN0OworCS8vLyBQcmludCB0aGlzIGRlY2xhcmF0aW9uIHRvIGEgRklMRSBzdHJlYW0uCisJdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7CisKKwl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7CisKK3Byb3RlY3RlZDoKKwl2b2lkIENvcHlUbyggVGlYbWxEZWNsYXJhdGlvbiogdGFyZ2V0ICkgY29uc3Q7CisJLy8gdXNlZCB0byBiZSBwdWJsaWMKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCSAgICB2aXJ0dWFsIHZvaWQgU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7CisJI2VuZGlmCisJdmlydHVhbCB2b2lkIFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQpIGNvbnN0OworCitwcml2YXRlOgorCisJVElYTUxfU1RSSU5HIHZlcnNpb247CisJVElYTUxfU1RSSU5HIGVuY29kaW5nOworCVRJWE1MX1NUUklORyBzdGFuZGFsb25lOworfTsKKworCisvKiogQW55IHRhZyB0aGF0IHRpbnlYbWwgZG9lc24ndCByZWNvZ25pemUgaXMgc2F2ZWQgYXMgYW4KKwl1bmtub3duLiBJdCBpcyBhIHRhZyBvZiB0ZXh0LCBidXQgc2hvdWxkIG5vdCBiZSBtb2RpZmllZC4KKwlJdCB3aWxsIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgWE1MLCB1bmNoYW5nZWQsIHdoZW4gdGhlIGZpbGUKKwlpcyBzYXZlZC4KKworCURURCB0YWdzIGdldCB0aHJvd24gaW50byBUaVhtbFVua25vd25zLgorKi8KK2NsYXNzIFRpWG1sVW5rbm93biA6IHB1YmxpYyBUaVhtbE5vZGUKK3sKK3B1YmxpYzoKKwlUaVhtbFVua25vd24oKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpVTktOT1dOICkJe30KKwl2aXJ0dWFsIH5UaVhtbFVua25vd24oKSB7fQorCisJVGlYbWxVbmtub3duKCBjb25zdCBUaVhtbFVua25vd24mIGNvcHkgKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpVTktOT1dOICkJCXsgY29weS5Db3B5VG8oIHRoaXMgKTsgfQorCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbFVua25vd24mIGNvcHkgKQkJCQkJCQkJCQl7IGNvcHkuQ29weVRvKCB0aGlzICk7IH0KKworCS8vLyBDcmVhdGVzIGEgY29weSBvZiB0aGlzIFVua25vd24gYW5kIHJldHVybnMgaXQuCisJdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7CisJLy8vIFByaW50IHRoaXMgVW5rbm93biB0byBhIEZJTEUgc3RyZWFtLgorCXZpcnR1YWwgdm9pZCBQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCApIGNvbnN0OworCisJdmlydHVhbCBjb25zdCBjaGFyKiBQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCitwcm90ZWN0ZWQ6CisJdm9pZCBDb3B5VG8oIFRpWG1sVW5rbm93biogdGFyZ2V0ICkgY29uc3Q7CisKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCSAgICB2aXJ0dWFsIHZvaWQgU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7CisJI2VuZGlmCisJdmlydHVhbCB2b2lkIFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSBjb25zdDsKKworcHJpdmF0ZToKKworfTsKKworCisvKiogQWx3YXlzIHRoZSB0b3AgbGV2ZWwgbm9kZS4gQSBkb2N1bWVudCBiaW5kcyB0b2dldGhlciBhbGwgdGhlCisJWE1MIHBpZWNlcy4gSXQgY2FuIGJlIHNhdmVkLCBsb2FkZWQsIGFuZCBwcmludGVkIHRvIHRoZSBzY3JlZW4uCisJVGhlICd2YWx1ZScgb2YgYSBkb2N1bWVudCBub2RlIGlzIHRoZSB4bWwgZmlsZSBuYW1lLgorKi8KK2NsYXNzIFRpWG1sRG9jdW1lbnQgOiBwdWJsaWMgVGlYbWxOb2RlCit7CitwdWJsaWM6CisJLy8vIENyZWF0ZSBhbiBlbXB0eSBkb2N1bWVudCwgdGhhdCBoYXMgbm8gbmFtZS4KKwlUaVhtbERvY3VtZW50KCk7CisJLy8vIENyZWF0ZSBhIGRvY3VtZW50IHdpdGggYSBuYW1lLiBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnQgaXMgYWxzbyB0aGUgZmlsZW5hbWUgb2YgdGhlIHhtbC4KKwlUaVhtbERvY3VtZW50KCBjb25zdCBjaGFyICogZG9jdW1lbnROYW1lICk7CisKKwkjaWZkZWYgVElYTUxfVVNFX1NUTAorCS8vLyBDb25zdHJ1Y3Rvci4KKwlUaVhtbERvY3VtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgZG9jdW1lbnROYW1lICk7CisJI2VuZGlmCisKKwlUaVhtbERvY3VtZW50KCBjb25zdCBUaVhtbERvY3VtZW50JiBjb3B5ICk7CisJdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sRG9jdW1lbnQmIGNvcHkgKTsKKworCXZpcnR1YWwgflRpWG1sRG9jdW1lbnQoKSB7fQorCisJLyoqIExvYWQgYSBmaWxlIHVzaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IHZhbHVlLgorCQlSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4gV2lsbCBkZWxldGUgYW55IGV4aXN0aW5nCisJCWRvY3VtZW50IGRhdGEgYmVmb3JlIGxvYWRpbmcuCisJKi8KKwlib29sIExvYWRGaWxlKCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApOworCS8vLyBTYXZlIGEgZmlsZSB1c2luZyB0aGUgY3VycmVudCBkb2N1bWVudCB2YWx1ZS4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCisJYm9vbCBTYXZlRmlsZSgpIGNvbnN0OworCS8vLyBMb2FkIGEgZmlsZSB1c2luZyB0aGUgZ2l2ZW4gZmlsZW5hbWUuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgorCWJvb2wgTG9hZEZpbGUoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyA9IFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKKwkvLy8gU2F2ZSBhIGZpbGUgdXNpbmcgdGhlIGdpdmVuIGZpbGVuYW1lLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KKwlib29sIFNhdmVGaWxlKCBjb25zdCBjaGFyICogZmlsZW5hbWUgKSBjb25zdDsKKworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJYm9vbCBMb2FkRmlsZSggY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApCQkJLy8vPCBTVEwgc3RkOjpzdHJpbmcgdmVyc2lvbi4KKwl7CisJCVN0cmluZ1RvQnVmZmVyIGYoIGZpbGVuYW1lICk7CisJCXJldHVybiAoIGYuYnVmZmVyICYmIExvYWRGaWxlKCBmLmJ1ZmZlciwgZW5jb2RpbmcgKSk7CisJfQorCWJvb2wgU2F2ZUZpbGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlbmFtZSApIGNvbnN0CQkvLy88IFNUTCBzdGQ6OnN0cmluZyB2ZXJzaW9uLgorCXsKKwkJU3RyaW5nVG9CdWZmZXIgZiggZmlsZW5hbWUgKTsKKwkJcmV0dXJuICggZi5idWZmZXIgJiYgU2F2ZUZpbGUoIGYuYnVmZmVyICkpOworCX0KKwkjZW5kaWYKKworCS8qKiBQYXJzZSB0aGUgZ2l2ZW4gbnVsbCB0ZXJtaW5hdGVkIGJsb2NrIG9mIHhtbCBkYXRhLiBQYXNzaW5nIGluIGFuIGVuY29kaW5nIHRvIHRoaXMKKwkJbWV0aG9kIChlaXRoZXIgVElYTUxfRU5DT0RJTkdfTEVHQUNZIG9yIFRJWE1MX0VOQ09ESU5HX1VURjggd2lsbCBmb3JjZSBUaW55WG1sCisJCXRvIHVzZSB0aGF0IGVuY29kaW5nLCByZWdhcmRsZXNzIG9mIHdoYXQgVGlueVhtbCBtaWdodCBvdGhlcndpc2UgdHJ5IHRvIGRldGVjdC4KKwkqLworCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEgPSAwLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApOworCisJLyoqIEdldCB0aGUgcm9vdCBlbGVtZW50IC0tIHRoZSBvbmx5IHRvcCBsZXZlbCBlbGVtZW50IC0tIG9mIHRoZSBkb2N1bWVudC4KKwkJSW4gd2VsbCBmb3JtZWQgWE1MLCB0aGVyZSBzaG91bGQgb25seSBiZSBvbmUuIFRpbnlYbWwgaXMgdG9sZXJhbnQgb2YKKwkJbXVsdGlwbGUgZWxlbWVudHMgYXQgdGhlIGRvY3VtZW50IGxldmVsLgorCSovCisJY29uc3QgVGlYbWxFbGVtZW50KiBSb290RWxlbWVudCgpIGNvbnN0CQl7IHJldHVybiBGaXJzdENoaWxkRWxlbWVudCgpOyB9CisJVGlYbWxFbGVtZW50KiBSb290RWxlbWVudCgpCQkJCQl7IHJldHVybiBGaXJzdENoaWxkRWxlbWVudCgpOyB9CisKKwkvKiogSWYgYW4gZXJyb3Igb2NjdXJzLCBFcnJvciB3aWxsIGJlIHNldCB0byB0cnVlLiBBbHNvLAorCQktIFRoZSBFcnJvcklkKCkgd2lsbCBjb250YWluIHRoZSBpbnRlZ2VyIGlkZW50aWZpZXIgb2YgdGhlIGVycm9yIChub3QgZ2VuZXJhbGx5IHVzZWZ1bCkKKwkJLSBUaGUgRXJyb3JEZXNjKCkgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlcnJvci4gKHZlcnkgdXNlZnVsKQorCQktIFRoZSBFcnJvclJvdygpIGFuZCBFcnJvckNvbCgpIHdpbGwgcmV0dXJuIHRoZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IgKGlmIGtub3duKQorCSovCQorCWJvb2wgRXJyb3IoKSBjb25zdAkJCQkJCXsgcmV0dXJuIGVycm9yOyB9CisKKwkvLy8gQ29udGFpbnMgYSB0ZXh0dWFsIChlbmdsaXNoKSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IgaWYgb25lIG9jY3Vycy4KKwljb25zdCBjaGFyICogRXJyb3JEZXNjKCkgY29uc3QJeyByZXR1cm4gZXJyb3JEZXNjLmNfc3RyICgpOyB9CisKKwkvKiogR2VuZXJhbGx5LCB5b3UgcHJvYmFibHkgd2FudCB0aGUgZXJyb3Igc3RyaW5nICggRXJyb3JEZXNjKCkgKS4gQnV0IGlmIHlvdQorCQlwcmVmZXIgdGhlIEVycm9ySWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBpdC4KKwkqLworCWludCBFcnJvcklkKCkJY29uc3QJCQkJeyByZXR1cm4gZXJyb3JJZDsgfQorCisJLyoqIFJldHVybnMgdGhlIGxvY2F0aW9uIChpZiBrbm93bikgb2YgdGhlIGVycm9yLiBUaGUgZmlyc3QgY29sdW1uIGlzIGNvbHVtbiAxLCAKKwkJYW5kIHRoZSBmaXJzdCByb3cgaXMgcm93IDEuIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcm93IGFuZCBjb2x1bW4gd2Fzbid0IGFwcGxpY2FibGUKKwkJKG1lbW9yeSBlcnJvcnMsIGZvciBleGFtcGxlLCBoYXZlIG5vIHJvdy9jb2x1bW4pIG9yIHRoZSBwYXJzZXIgbG9zdCB0aGUgZXJyb3IuIChBbgorCQllcnJvciBpbiB0aGUgZXJyb3IgcmVwb3J0aW5nLCBpbiB0aGF0IGNhc2UuKQorCisJCUBzYSBTZXRUYWJTaXplLCBSb3csIENvbHVtbgorCSovCisJaW50IEVycm9yUm93KCkJeyByZXR1cm4gZXJyb3JMb2NhdGlvbi5yb3crMTsgfQorCWludCBFcnJvckNvbCgpCXsgcmV0dXJuIGVycm9yTG9jYXRpb24uY29sKzE7IH0JLy8vPCBUaGUgY29sdW1uIHdoZXJlIHRoZSBlcnJvciBvY2N1cmVkLiBTZWUgRXJyb3JSb3coKQorCisJLyoqIFNldFRhYlNpemUoKSBhbGxvd3MgdGhlIGVycm9yIHJlcG9ydGluZyBmdW5jdGlvbnMgKEVycm9yUm93KCkgYW5kIEVycm9yQ29sKCkpCisJCXRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1ZXMgZm9yIHJvdyBhbmQgY29sdW1uLiBJdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIG91dHB1dAorCQlvciBpbnB1dCBpbiBhbnkgd2F5LgorCQkKKwkJQnkgY2FsbGluZyB0aGlzIG1ldGhvZCwgd2l0aCBhIHRhYiBzaXplCisJCWdyZWF0ZXIgdGhhbiAwLCB0aGUgcm93IGFuZCBjb2x1bW4gb2YgZWFjaCBub2RlIGFuZCBhdHRyaWJ1dGUgaXMgc3RvcmVkCisJCXdoZW4gdGhlIGZpbGUgaXMgbG9hZGVkLiBWZXJ5IHVzZWZ1bCBmb3IgdHJhY2tpbmcgdGhlIERPTSBiYWNrIGluIHRvCisJCXRoZSBzb3VyY2UgZmlsZS4KKworCQlUaGUgdGFiIHNpemUgaXMgcmVxdWlyZWQgZm9yIGNhbGN1bGF0aW5nIHRoZSBsb2NhdGlvbiBvZiBub2Rlcy4gSWYgbm90CisJCXNldCwgdGhlIGRlZmF1bHQgb2YgNCBpcyB1c2VkLiBUaGUgdGFic2l6ZSBpcyBzZXQgcGVyIGRvY3VtZW50LiBTZXR0aW5nCisJCXRoZSB0YWJzaXplIHRvIDAgZGlzYWJsZXMgcm93L2NvbHVtbiB0cmFja2luZy4KKworCQlOb3RlIHRoYXQgcm93IGFuZCBjb2x1bW4gdHJhY2tpbmcgaXMgbm90IHN1cHBvcnRlZCB3aGVuIHVzaW5nIG9wZXJhdG9yPj4uCisKKwkJVGhlIHRhYiBzaXplIG5lZWRzIHRvIGJlIGVuYWJsZWQgYmVmb3JlIHRoZSBwYXJzZSBvciBsb2FkLiBDb3JyZWN0IHVzYWdlOgorCQlAdmVyYmF0aW0KKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5TZXRUYWJTaXplKCA4ICk7CisJCWRvYy5Mb2FkKCAibXlmaWxlLnhtbCIgKTsKKwkJQGVuZHZlcmJhdGltCisKKwkJQHNhIFJvdywgQ29sdW1uCisJKi8KKwl2b2lkIFNldFRhYlNpemUoIGludCBfdGFic2l6ZSApCQl7IHRhYnNpemUgPSBfdGFic2l6ZTsgfQorCisJaW50IFRhYlNpemUoKSBjb25zdAl7IHJldHVybiB0YWJzaXplOyB9CisKKwkvKiogSWYgeW91IGhhdmUgaGFuZGxlZCB0aGUgZXJyb3IsIGl0IGNhbiBiZSByZXNldCB3aXRoIHRoaXMgY2FsbC4gVGhlIGVycm9yCisJCXN0YXRlIGlzIGF1dG9tYXRpY2FsbHkgY2xlYXJlZCBpZiB5b3UgUGFyc2UgYSBuZXcgWE1MIGJsb2NrLgorCSovCisJdm9pZCBDbGVhckVycm9yKCkJCQkJCQl7CWVycm9yID0gZmFsc2U7IAorCQkJCQkJCQkJCQkJZXJyb3JJZCA9IDA7IAorCQkJCQkJCQkJCQkJZXJyb3JEZXNjID0gIiI7IAorCQkJCQkJCQkJCQkJZXJyb3JMb2NhdGlvbi5yb3cgPSBlcnJvckxvY2F0aW9uLmNvbCA9IDA7IAorCQkJCQkJCQkJCQkJLy9lcnJvckxvY2F0aW9uLmxhc3QgPSAwOyAKKwkJCQkJCQkJCQkJfQorCisJLyoqIER1bXAgdGhlIGRvY3VtZW50IHRvIHN0YW5kYXJkIG91dC4gKi8KKwl2b2lkIFByaW50KCkgY29uc3QJCQkJCQl7IFByaW50KCBzdGRvdXQsIDAgKTsgfQorCisJLy8vIFByaW50IHRoaXMgRG9jdW1lbnQgdG8gYSBGSUxFIHN0cmVhbS4KKwl2aXJ0dWFsIHZvaWQgUHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggPSAwICkgY29uc3Q7CisJLy8gW2ludGVybmFsIHVzZV0KKwl2b2lkIFNldEVycm9yKCBpbnQgZXJyLCBjb25zdCBjaGFyKiBlcnJvckxvY2F0aW9uLCBUaVhtbFBhcnNpbmdEYXRhKiBwcmV2RGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOworCitwcm90ZWN0ZWQgOgorCXZpcnR1YWwgdm9pZCBTdHJlYW1PdXQgKCBUSVhNTF9PU1RSRUFNICogb3V0KSBjb25zdDsKKwkvLyBbaW50ZXJuYWwgdXNlXQorCXZpcnR1YWwgVGlYbWxOb2RlKiBDbG9uZSgpIGNvbnN0OworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJICAgIHZpcnR1YWwgdm9pZCBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKKwkjZW5kaWYKKworcHJpdmF0ZToKKwl2b2lkIENvcHlUbyggVGlYbWxEb2N1bWVudCogdGFyZ2V0ICkgY29uc3Q7CisKKwlib29sIGVycm9yOworCWludCAgZXJyb3JJZDsKKwlUSVhNTF9TVFJJTkcgZXJyb3JEZXNjOworCWludCB0YWJzaXplOworCVRpWG1sQ3Vyc29yIGVycm9yTG9jYXRpb247CisJYm9vbCB1c2VNaWNyb3NvZnRCT007CQkvLyB0aGUgVVRGLTggQk9NIHdlcmUgZm91bmQgd2hlbiByZWFkLiBOb3RlIHRoaXMsIGFuZCB0cnkgdG8gd3JpdGUuCit9OworCisKKy8qKgorCUEgVGlYbWxIYW5kbGUgaXMgYSBjbGFzcyB0aGF0IHdyYXBzIGEgbm9kZSBwb2ludGVyIHdpdGggbnVsbCBjaGVja3M7IHRoaXMgaXMKKwlhbiBpbmNyZWRpYmx5IHVzZWZ1bCB0aGluZy4gTm90ZSB0aGF0IFRpWG1sSGFuZGxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBUaW55WG1sCisJRE9NIHN0cnVjdHVyZS4gSXQgaXMgYSBzZXBhcmF0ZSB1dGlsaXR5IGNsYXNzLgorCisJVGFrZSBhbiBleGFtcGxlOgorCUB2ZXJiYXRpbQorCTxEb2N1bWVudD4KKwkJPEVsZW1lbnQgYXR0cmlidXRlQSA9ICJ2YWx1ZUEiPgorCQkJPENoaWxkIGF0dHJpYnV0ZUIgPSAidmFsdWUxIiAvPgorCQkJPENoaWxkIGF0dHJpYnV0ZUIgPSAidmFsdWUyIiAvPgorCQk8L0VsZW1lbnQ+CisJPERvY3VtZW50PgorCUBlbmR2ZXJiYXRpbQorCisJQXNzdW1pbmcgeW91IHdhbnQgdGhlIHZhbHVlIG9mICJhdHRyaWJ1dGVCIiBpbiB0aGUgMm5kICJDaGlsZCIgZWxlbWVudCwgaXQncyB2ZXJ5IAorCWVhc3kgdG8gd3JpdGUgYSAqbG90KiBvZiBjb2RlIHRoYXQgbG9va3MgbGlrZToKKworCUB2ZXJiYXRpbQorCVRpWG1sRWxlbWVudCogcm9vdCA9IGRvY3VtZW50LkZpcnN0Q2hpbGRFbGVtZW50KCAiRG9jdW1lbnQiICk7CisJaWYgKCByb290ICkKKwl7CisJCVRpWG1sRWxlbWVudCogZWxlbWVudCA9IHJvb3QtPkZpcnN0Q2hpbGRFbGVtZW50KCAiRWxlbWVudCIgKTsKKwkJaWYgKCBlbGVtZW50ICkKKwkJeworCQkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IGVsZW1lbnQtPkZpcnN0Q2hpbGRFbGVtZW50KCAiQ2hpbGQiICk7CisJCQlpZiAoIGNoaWxkICkKKwkJCXsKKwkJCQlUaVhtbEVsZW1lbnQqIGNoaWxkMiA9IGNoaWxkLT5OZXh0U2libGluZ0VsZW1lbnQoICJDaGlsZCIgKTsKKwkJCQlpZiAoIGNoaWxkMiApCisJCQkJeworCQkJCQkvLyBGaW5hbGx5IGRvIHNvbWV0aGluZyB1c2VmdWwuCisJQGVuZHZlcmJhdGltCisKKwlBbmQgdGhhdCBkb2Vzbid0IGV2ZW4gY292ZXIgImVsc2UiIGNhc2VzLiBUaVhtbEhhbmRsZSBhZGRyZXNzZXMgdGhlIHZlcmJvc2l0eQorCW9mIHN1Y2ggY29kZS4gQSBUaVhtbEhhbmRsZSBjaGVja3MgZm9yIG51bGwJcG9pbnRlcnMgc28gaXQgaXMgcGVyZmVjdGx5IHNhZmUgCisJYW5kIGNvcnJlY3QgdG8gdXNlOgorCisJQHZlcmJhdGltCisJVGlYbWxIYW5kbGUgZG9jSGFuZGxlKCAmZG9jdW1lbnQgKTsKKwlUaVhtbEVsZW1lbnQqIGNoaWxkMiA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuQ2hpbGQoICJDaGlsZCIsIDEgKS5FbGVtZW50KCk7CisJaWYgKCBjaGlsZDIgKQorCXsKKwkJLy8gZG8gc29tZXRoaW5nIHVzZWZ1bAorCUBlbmR2ZXJiYXRpbQorCisJV2hpY2ggaXMgTVVDSCBtb3JlIGNvbmNpc2UgYW5kIHVzZWZ1bC4KKworCUl0IGlzIGFsc28gc2FmZSB0byBjb3B5IGhhbmRsZXMgLSBpbnRlcm5hbGx5IHRoZXkgYXJlIG5vdGhpbmcgbW9yZSB0aGFuIG5vZGUgcG9pbnRlcnMuCisJQHZlcmJhdGltCisJVGlYbWxIYW5kbGUgaGFuZGxlQ29weSA9IGhhbmRsZTsKKwlAZW5kdmVyYmF0aW0KKworCVdoYXQgdGhleSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGlzIGl0ZXJhdGlvbjoKKworCUB2ZXJiYXRpbQorCWludCBpPTA7IAorCXdoaWxlICggdHJ1ZSApCisJeworCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgaSApLkVsZW1lbnQoKTsKKwkJaWYgKCAhY2hpbGQgKQorCQkJYnJlYWs7CisJCS8vIGRvIHNvbWV0aGluZworCQkrK2k7CisJfQorCUBlbmR2ZXJiYXRpbQorCisJSXQgc2VlbXMgcmVhc29uYWJsZSwgYnV0IGl0IGlzIGluIGZhY3QgdHdvIGVtYmVkZGVkIHdoaWxlIGxvb3BzLiBUaGUgQ2hpbGQgbWV0aG9kIGlzIAorCWEgbGluZWFyIHdhbGsgdG8gZmluZCB0aGUgZWxlbWVudCwgc28gdGhpcyBjb2RlIHdvdWxkIGl0ZXJhdGUgbXVjaCBtb3JlIHRoYW4gaXQgbmVlZHMgCisJdG8uIEluc3RlYWQsIHByZWZlcjoKKworCUB2ZXJiYXRpbQorCVRpWG1sRWxlbWVudCogY2hpbGQgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZCggIkRvY3VtZW50IiApLkZpcnN0Q2hpbGQoICJFbGVtZW50IiApLkZpcnN0Q2hpbGQoICJDaGlsZCIgKS5FbGVtZW50KCk7CisKKwlmb3IoIGNoaWxkOyBjaGlsZDsgY2hpbGQ9Y2hpbGQtPk5leHRTaWJsaW5nRWxlbWVudCgpICkKKwl7CisJCS8vIGRvIHNvbWV0aGluZworCX0KKwlAZW5kdmVyYmF0aW0KKyovCitjbGFzcyBUaVhtbEhhbmRsZQoreworcHVibGljOgorCS8vLyBDcmVhdGUgYSBoYW5kbGUgZnJvbSBhbnkgbm9kZSAoYXQgYW55IGRlcHRoIG9mIHRoZSB0cmVlLikgVGhpcyBjYW4gYmUgYSBudWxsIHBvaW50ZXIuCisJVGlYbWxIYW5kbGUoIFRpWG1sTm9kZSogX25vZGUgKQkJCQkJeyB0aGlzLT5ub2RlID0gX25vZGU7IH0KKwkvLy8gQ29weSBjb25zdHJ1Y3RvcgorCVRpWG1sSGFuZGxlKCBjb25zdCBUaVhtbEhhbmRsZSYgcmVmICkJCQl7IHRoaXMtPm5vZGUgPSByZWYubm9kZTsgfQorCVRpWG1sSGFuZGxlIG9wZXJhdG9yPSggY29uc3QgVGlYbWxIYW5kbGUmIHJlZiApIHsgdGhpcy0+bm9kZSA9IHJlZi5ub2RlOyByZXR1cm4gKnRoaXM7IH0KKworCS8vLyBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIG5vZGUuCisJVGlYbWxIYW5kbGUgRmlyc3RDaGlsZCgpIGNvbnN0OworCS8vLyBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKwlUaVhtbEhhbmRsZSBGaXJzdENoaWxkKCBjb25zdCBjaGFyICogdmFsdWUgKSBjb25zdDsKKwkvLy8gUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50LgorCVRpWG1sSGFuZGxlIEZpcnN0Q2hpbGRFbGVtZW50KCkgY29uc3Q7CisJLy8vIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBuYW1lLgorCVRpWG1sSGFuZGxlIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBjaGFyICogdmFsdWUgKSBjb25zdDsKKworCS8qKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gCisJCVRoZSBmaXJzdCBjaGlsZCBpcyAwLCB0aGUgc2Vjb25kIDEsIGV0Yy4KKwkqLworCVRpWG1sSGFuZGxlIENoaWxkKCBjb25zdCBjaGFyKiB2YWx1ZSwgaW50IGluZGV4ICkgY29uc3Q7CisJLyoqIFJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZC4gCisJCVRoZSBmaXJzdCBjaGlsZCBpcyAwLCB0aGUgc2Vjb25kIDEsIGV0Yy4KKwkqLworCVRpWG1sSGFuZGxlIENoaWxkKCBpbnQgaW5kZXggKSBjb25zdDsKKwkvKiogUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gCisJCVRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLiBOb3RlIHRoYXQgb25seSBUaVhtbEVsZW1lbnRzCisJCWFyZSBpbmRleGVkOiBvdGhlciB0eXBlcyBhcmUgbm90IGNvdW50ZWQuCisJKi8KKwlUaVhtbEhhbmRsZSBDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQgaW5kZXggKSBjb25zdDsKKwkvKiogUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIGVsZW1lbnQuIAorCQlUaGUgZmlyc3QgY2hpbGQgZWxlbWVudCBpcyAwLCB0aGUgc2Vjb25kIDEsIGV0Yy4gTm90ZSB0aGF0IG9ubHkgVGlYbWxFbGVtZW50cworCQlhcmUgaW5kZXhlZDogb3RoZXIgdHlwZXMgYXJlIG5vdCBjb3VudGVkLgorCSovCisJVGlYbWxIYW5kbGUgQ2hpbGRFbGVtZW50KCBpbnQgaW5kZXggKSBjb25zdDsKKworCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJVGlYbWxIYW5kbGUgRmlyc3RDaGlsZCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIGNvbnN0CQkJCXsgcmV0dXJuIEZpcnN0Q2hpbGQoIF92YWx1ZS5jX3N0cigpICk7IH0KKwlUaVhtbEhhbmRsZSBGaXJzdENoaWxkRWxlbWVudCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIGNvbnN0CQl7IHJldHVybiBGaXJzdENoaWxkRWxlbWVudCggX3ZhbHVlLmNfc3RyKCkgKTsgfQorCisJVGlYbWxIYW5kbGUgQ2hpbGQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUsIGludCBpbmRleCApIGNvbnN0CQkJeyByZXR1cm4gQ2hpbGQoIF92YWx1ZS5jX3N0cigpLCBpbmRleCApOyB9CisJVGlYbWxIYW5kbGUgQ2hpbGRFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlLCBpbnQgaW5kZXggKSBjb25zdAl7IHJldHVybiBDaGlsZEVsZW1lbnQoIF92YWx1ZS5jX3N0cigpLCBpbmRleCApOyB9CisJI2VuZGlmCisKKwkvLy8gUmV0dXJuIHRoZSBoYW5kbGUgYXMgYSBUaVhtbE5vZGUuIFRoaXMgbWF5IHJldHVybiBudWxsLgorCVRpWG1sTm9kZSogTm9kZSgpIGNvbnN0CQkJeyByZXR1cm4gbm9kZTsgfSAKKwkvLy8gUmV0dXJuIHRoZSBoYW5kbGUgYXMgYSBUaVhtbEVsZW1lbnQuIFRoaXMgbWF5IHJldHVybiBudWxsLgorCVRpWG1sRWxlbWVudCogRWxlbWVudCgpIGNvbnN0CXsgcmV0dXJuICggKCBub2RlICYmIG5vZGUtPlRvRWxlbWVudCgpICkgPyBub2RlLT5Ub0VsZW1lbnQoKSA6IDAgKTsgfQorCS8vLyBSZXR1cm4gdGhlIGhhbmRsZSBhcyBhIFRpWG1sVGV4dC4gVGhpcyBtYXkgcmV0dXJuIG51bGwuCisJVGlYbWxUZXh0KiBUZXh0KCkgY29uc3QJCQl7IHJldHVybiAoICggbm9kZSAmJiBub2RlLT5Ub1RleHQoKSApID8gbm9kZS0+VG9UZXh0KCkgOiAwICk7IH0KKwkvLy8gUmV0dXJuIHRoZSBoYW5kbGUgYXMgYSBUaVhtbFVua25vd24uIFRoaXMgbWF5IHJldHVybiBudWxsOworCVRpWG1sVW5rbm93biogVW5rbm93bigpIGNvbnN0CQkJeyByZXR1cm4gKCAoIG5vZGUgJiYgbm9kZS0+VG9Vbmtub3duKCkgKSA/IG5vZGUtPlRvVW5rbm93bigpIDogMCApOyB9CisKK3ByaXZhdGU6CisJVGlYbWxOb2RlKiBub2RlOworfTsKKworI2lmZGVmIF9NU0NfVkVSCisjcHJhZ21hIHdhcm5pbmcoIHBvcCApCisjZW5kaWYKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL3Rpbnl4bWxTVEwuZHNwIGIvdGlueXhtbFNUTC5kc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM5YzE0OQotLS0gL2Rldi9udWxsCisrKyBiL3Rpbnl4bWxTVEwuZHNwCkBAIC0wLDAgKzEsMTI2IEBACisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InRpbnl4bWxTVEwiIC0gUGFja2FnZSBPd25lcj08ND4NCisjIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQorIyAqKiBETyBOT1QgRURJVCAqKg0KKw0KKyMgVEFSR1RZUEUgIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IiAweDAxMDQNCisNCitDRkc9dGlueXhtbFNUTCAtIFdpbjMyIERlYnVnDQorIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KKyFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJ0aW55eG1sU1RMLm1hayIuDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCishTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KKyFNRVNTQUdFIA0KKyFNRVNTQUdFIE5NQUtFIC9mICJ0aW55eG1sU1RMLm1hayIgQ0ZHPSJ0aW55eG1sU1RMIC0gV2luMzIgRGVidWciDQorIU1FU1NBR0UgDQorIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQorIU1FU1NBR0UgDQorIU1FU1NBR0UgInRpbnl4bWxTVEwgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCishTUVTU0FHRSAidGlueXhtbFNUTCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCishTUVTU0FHRSANCisNCisjIEJlZ2luIFByb2plY3QNCisjIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KKyMgUFJPUCBTY2NfUHJvak5hbWUgIiINCisjIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KK0NQUD1jbC5leGUNCitSU0M9cmMuZXhlDQorDQorIUlGICAiJChDRkcpIiA9PSAidGlueXhtbFNUTCAtIFdpbjMyIFJlbGVhc2UiDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueXhtbFNUTF9fX1dpbjMyX1JlbGVhc2UiDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAidGlueXhtbFNUTF9fX1dpbjMyX1JlbGVhc2UiDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2VfU1RMIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlX1NUTCINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvWVggL0ZEIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvRCAiVElYTUxfVVNFX1NUTCIgL0ZSIC9GRCAvYw0KKyMgU1VCVFJBQ1QgQ1BQIC9ZWA0KKyMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQorQlNDMzI9YnNjbWFrZS5leGUNCisjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCisjIEFERCBCU0MzMiAvbm9sb2dvDQorTElCMzI9bGluay5leGUgLWxpYg0KKyMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KKyMgQUREIExJQjMyIC9ub2xvZ28gL291dDoiUmVsZWFzZV9TVExcdGlueXhtbF9TVEwubGliIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJ0aW55eG1sU1RMIC0gV2luMzIgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueXhtbFNUTF9fX1dpbjMyX0RlYnVnMCINCisjIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0aW55eG1sU1RMX19fV2luMzJfRGVidWcwIg0KKyMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCisjIFBST1AgVXNlX01GQyAwDQorIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KKyMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1Z19TVEwiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnX1NUTCINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9ZWCAvRkQgL0daIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9EICJUSVhNTF9VU0VfU1RMIiAvRkQgL0daIC9jDQorIyBTVUJUUkFDVCBDUFAgL1lYDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSUIzMj1saW5rLmV4ZSAtbGliDQorIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQorIyBBREQgTElCMzIgL25vbG9nbyAvb3V0OiJEZWJ1Z19TVExcdGlueXhtbGRfU1RMLmxpYiINCisNCishRU5ESUYgDQorDQorIyBCZWdpbiBUYXJnZXQNCisNCisjIE5hbWUgInRpbnl4bWxTVEwgLSBXaW4zMiBSZWxlYXNlIg0KKyMgTmFtZSAidGlueXhtbFNUTCAtIFdpbjMyIERlYnVnIg0KKyMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCisNCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXN0ci5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55eG1sLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWxlcnJvci5jcHANCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55eG1scGFyc2VyLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgR3JvdXANCisjIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQorDQorIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnlzdHIuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWwuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgR3JvdXANCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cY2hhbmdlcy50eHQNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9LlxyZWFkbWUudHh0DQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBUYXJnZXQNCisjIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvdGlueXhtbF9saWIuZHNwIGIvdGlueXhtbF9saWIuZHNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZDI5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi90aW55eG1sX2xpYi5kc3AKQEAgLTAsMCArMSwxMzAgQEAKKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0idGlueXhtbCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKyMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCisjICoqIERPIE5PVCBFRElUICoqDQorDQorIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiIDB4MDEwNA0KKw0KK0NGRz10aW55eG1sIC0gV2luMzIgUmVsZWFzZQ0KKyFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCishTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCishTUVTU0FHRSANCishTUVTU0FHRSBOTUFLRSAvZiAidGlueXhtbF9saWIubWFrIi4NCishTUVTU0FHRSANCishTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KKyFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQorIU1FU1NBR0UgDQorIU1FU1NBR0UgTk1BS0UgL2YgInRpbnl4bWxfbGliLm1hayIgQ0ZHPSJ0aW55eG1sIC0gV2luMzIgUmVsZWFzZSINCishTUVTU0FHRSANCishTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCishTUVTU0FHRSANCishTUVTU0FHRSAidGlueXhtbCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFICJ0aW55eG1sIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KKyFNRVNTQUdFIA0KKw0KKyMgQmVnaW4gUHJvamVjdA0KKyMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQorIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KKyMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQorQ1BQPWNsLmV4ZQ0KK1JTQz1yYy5leGUNCisNCishSUYgICIkKENGRykiID09ICJ0aW55eG1sIC0gV2luMzIgUmVsZWFzZSINCisNCisjIFBST1AgQkFTRSBVc2VfTUZDIDANCisjIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCisjIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KKyMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQorIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiDQorIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQorIyBQUk9QIFRhcmdldF9EaXIgIiINCisjIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL1lYIC9GRCAvYw0KKyMgQUREIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9NQkNTIiAvRCAiX0xJQiIgL0ZEIC9jDQorIyBTVUJUUkFDVCBDUFAgL1lYDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDcgL2QgIk5ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDcgL2QgIk5ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSUIzMj1saW5rLmV4ZSAtbGliDQorIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQorIyBBREQgTElCMzIgL25vbG9nbyAvb3V0OiJSZWxlYXNlXHRpbnl4bWwubGliIg0KKw0KKyFFTFNFSUYgICIkKENGRykiID09ICJ0aW55eG1sIC0gV2luMzIgRGVidWciDQorDQorIyBQUk9QIEJBU0UgVXNlX01GQyAwDQorIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQorIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQorIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KKyMgUFJPUCBVc2VfTUZDIDANCisjIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQorIyBQUk9QIE91dHB1dF9EaXIgIkRlYnVnIg0KKyMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCisjIFBST1AgVGFyZ2V0X0RpciAiIg0KKyMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9ZWCAvRkQgL0daIC9jDQorIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9GUiAvRkQgL0daIC9jDQorIyBTVUJUUkFDVCBDUFAgL1lYDQorIyBBREQgQkFTRSBSU0MgL2wgMHg0MDcgL2QgIl9ERUJVRyINCisjIEFERCBSU0MgL2wgMHg0MDcgL2QgIl9ERUJVRyINCitCU0MzMj1ic2NtYWtlLmV4ZQ0KKyMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KKyMgQUREIEJTQzMyIC9ub2xvZ28NCitMSUIzMj1saW5rLmV4ZSAtbGliDQorIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQorIyBBREQgTElCMzIgL25vbG9nbyAvb3V0OiJEZWJ1Z1x0aW55eG1sZC5saWIiDQorDQorIUVORElGIA0KKw0KKyMgQmVnaW4gVGFyZ2V0DQorDQorIyBOYW1lICJ0aW55eG1sIC0gV2luMzIgUmVsZWFzZSINCisjIE5hbWUgInRpbnl4bWwgLSBXaW4zMiBEZWJ1ZyINCisjIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiDQorDQorIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Llx0aW55c3RyLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWwuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdGlueXhtbGVycm9yLmNwcA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWxwYXJzZXIuY3BwDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBHcm91cA0KKyMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyINCisNCisjIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnlzdHIuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uXHRpbnl4bWwuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgR3JvdXANCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cY2hhbmdlcy50eHQNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9LlxyZWFkbWUudHh0DQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS5cdHV0b3JpYWxfZ2V0dGluZ1N0YXJ0ZWQudHh0DQorIyBFbmQgU291cmNlIEZpbGUNCisjIEVuZCBUYXJnZXQNCisjIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvdGlueXhtbGVycm9yLmNwcCBiL3Rpbnl4bWxlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4ODQzOAotLS0gL2Rldi9udWxsCisrKyBiL3Rpbnl4bWxlcnJvci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKK3d3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAorT3JpZ2luYWwgY29kZSAoMi4wIGFuZCBlYXJsaWVyICljb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBMZWUgVGhvbWFzb24gKHd3dy5ncmlubmluZ2xpemFyZC5jb20pCisKK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkIAord2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSAKK2RhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KKworUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IAorcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIAorcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKworMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdAorbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCitzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24KK3dvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCisKKzIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kCittdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCisKKzMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQorZGlzdHJpYnV0aW9uLgorKi8KKworI2luY2x1ZGUgInRpbnl4bWwuaCIKKworLy8gVGhlIGdvYWwgb2YgdGhlIHNlcGVyYXRlIGVycm9yIGZpbGUgaXMgdG8gbWFrZSB0aGUgZmlyc3QKKy8vIHN0ZXAgdG93YXJkcyBsb2NhbGl6YXRpb24uIHRpbnl4bWwgKGN1cnJlbnRseSkgb25seSBzdXBwb3J0cworLy8gZW5nbGlzaCBlcnJvciBtZXNzYWdlcywgYnV0IHRoZSBjb3VsZCBub3cgYmUgdHJhbnNsYXRlZC4KKy8vCisvLyBJdCBhbHNvIGNsZWFucyB1cCB0aGUgY29kZSBhIGJpdC4KKy8vCisKK2NvbnN0IGNoYXIqIFRpWG1sQmFzZTo6ZXJyb3JTdHJpbmdbIFRJWE1MX0VSUk9SX1NUUklOR19DT1VOVCBdID0KK3sKKwkiTm8gZXJyb3IiLAorCSJFcnJvciIsCisJIkZhaWxlZCB0byBvcGVuIGZpbGUiLAorCSJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuIiwKKwkiRXJyb3IgcGFyc2luZyBFbGVtZW50LiIsCisJIkZhaWxlZCB0byByZWFkIEVsZW1lbnQgbmFtZSIsCisJIkVycm9yIHJlYWRpbmcgRWxlbWVudCB2YWx1ZS4iLAorCSJFcnJvciByZWFkaW5nIEF0dHJpYnV0ZXMuIiwKKwkiRXJyb3I6IGVtcHR5IHRhZy4iLAorCSJFcnJvciByZWFkaW5nIGVuZCB0YWcuIiwKKwkiRXJyb3IgcGFyc2luZyBVbmtub3duLiIsCisJIkVycm9yIHBhcnNpbmcgQ29tbWVudC4iLAorCSJFcnJvciBwYXJzaW5nIERlY2xhcmF0aW9uLiIsCisJIkVycm9yIGRvY3VtZW50IGVtcHR5LiIsCisJIkVycm9yIG51bGwgKDApIG9yIHVuZXhwZWN0ZWQgRU9GIGZvdW5kIGluIGlucHV0IHN0cmVhbS4iLAorCSJFcnJvciBwYXJzaW5nIENEQVRBLiIsCit9OwpkaWZmIC0tZ2l0IGEvdGlueXhtbHBhcnNlci5jcHAgYi90aW55eG1scGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2QwYTllCi0tLSAvZGV2L251bGwKKysrIGIvdGlueXhtbHBhcnNlci5jcHAKQEAgLTAsMCArMSwxNTcyIEBACisvKgord3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCitPcmlnaW5hbCBjb2RlICgyLjAgYW5kIGVhcmxpZXIgKWNvcHlyaWdodCAoYykgMjAwMC0yMDAyIExlZSBUaG9tYXNvbiAod3d3LmdyaW5uaW5nbGl6YXJkLmNvbSkKKworVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgCit3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IAorZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgorCitQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgCitwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgCityZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorCisxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IAorbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCitzb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24KK3dvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCisKKzIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIAorbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgorCiszLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgCitkaXN0cmlidXRpb24uCisqLworCisjaW5jbHVkZSAidGlueXhtbC5oIgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKy8vI2RlZmluZSBERUJVR19QQVJTRVIKKworLy8gTm90ZSB0aGEgIlB1dFN0cmluZyIgaGFyZGNvZGVzIHRoZSBzYW1lIGxpc3QuIFRoaXMKKy8vIGlzIGxlc3MgZmxleGlibGUgdGhhbiBpdCBhcHBlYXJzLiBDaGFuZ2luZyB0aGUgZW50cmllcworLy8gb3Igb3JkZXIgd2lsbCBicmVhayBwdXRzdHJpbmcuCQorVGlYbWxCYXNlOjpFbnRpdHkgVGlYbWxCYXNlOjplbnRpdHlbIE5VTV9FTlRJVFkgXSA9IAoreworCXsgIiZhbXA7IiwgIDUsICcmJyB9LAorCXsgIiZsdDsiLCAgIDQsICc8JyB9LAorCXsgIiZndDsiLCAgIDQsICc+JyB9LAorCXsgIiZxdW90OyIsIDYsICdcIicgfSwKKwl7ICImYXBvczsiLCA2LCAnXCcnIH0KK307CisKKy8vIEJ1bmNoIG9mIHVuaWNvZGUgaW5mbyBhdDoKKy8vCQlodHRwOi8vd3d3LnVuaWNvZGUub3JnL2ZhcS91dGZfYm9tLmh0bWwKKy8vIEluY2x1ZGluZyB0aGUgYmFzaWMgb2YgdGhpcyB0YWJsZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgI2J5dGVzIGluIHRoZQorLy8gc2VxdWVuY2UgZnJvbSB0aGUgbGVhZCBieXRlLiAxIHBsYWNlZCBmb3IgaW52YWxpZCBzZXF1ZW5jZXMgLS0KKy8vIGFsdGhvdWdoIHRoZSByZXN1bHQgd2lsbCBiZSBqdW5rLCBwYXNzIGl0IHRocm91Z2ggYXMgbXVjaCBhcyBwb3NzaWJsZS4KKy8vIEJld2FyZSBvZiB0aGUgbm9uLWNoYXJhY3RlcnMgaW4gVVRGLTg6CQorLy8JCQkJZWYgYmIgYmYgKE1pY3Jvc29mdCAibGVhZCBieXRlcyIpCisvLwkJCQllZiBiZiBiZQorLy8JCQkJZWYgYmYgYmYgCisKK2NvbnN0IHVuc2lnbmVkIGNoYXIgVElYTUxfVVRGX0xFQURfMCA9IDB4ZWZVOworY29uc3QgdW5zaWduZWQgY2hhciBUSVhNTF9VVEZfTEVBRF8xID0gMHhiYlU7Citjb25zdCB1bnNpZ25lZCBjaGFyIFRJWE1MX1VURl9MRUFEXzIgPSAweGJmVTsKKworY29uc3QgaW50IFRpWG1sQmFzZTo6dXRmOEJ5dGVUYWJsZVsyNTZdID0gCit7CisJLy8JMAkxCTIJMwk0CTUJNgk3CTgJOQlhCWIJYwlkCWUJZgorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDAwCisJCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4MTAKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHgyMAorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDMwCisJCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4NDAKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHg1MAorCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDYwCisJCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4NzAJRW5kIG9mIEFTQ0lJIHJhbmdlCisJCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4ODAgMHg4MCB0byAweGMxIGludmFsaWQKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHg5MCAKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHhhMCAKKwkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHhiMCAKKwkJMSwJMSwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJLy8gMHhjMCAweGMyIHRvIDB4ZGYgMiBieXRlCisJCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCS8vIDB4ZDAKKwkJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJLy8gMHhlMCAweGUwIHRvIDB4ZWYgMyBieXRlCisJCTQsCTQsCTQsCTQsCTQsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEJLy8gMHhmMCAweGYwIHRvIDB4ZjQgNCBieXRlLCAweGY1IGFuZCBoaWdoZXIgaW52YWxpZAorfTsKKworCit2b2lkIFRpWG1sQmFzZTo6Q29udmVydFVURjMyVG9VVEY4KCB1bnNpZ25lZCBsb25nIGlucHV0LCBjaGFyKiBvdXRwdXQsIGludCogbGVuZ3RoICkKK3sKKwljb25zdCB1bnNpZ25lZCBsb25nIEJZVEVfTUFTSyA9IDB4QkY7CisJY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFX01BUksgPSAweDgwOworCWNvbnN0IHVuc2lnbmVkIGxvbmcgRklSU1RfQllURV9NQVJLWzddID0geyAweDAwLCAweDAwLCAweEMwLCAweEUwLCAweEYwLCAweEY4LCAweEZDIH07CisKKwlpZiAoaW5wdXQgPCAweDgwKSAKKwkJKmxlbmd0aCA9IDE7CisJZWxzZSBpZiAoIGlucHV0IDwgMHg4MDAgKQorCQkqbGVuZ3RoID0gMjsKKwllbHNlIGlmICggaW5wdXQgPCAweDEwMDAwICkKKwkJKmxlbmd0aCA9IDM7CisJZWxzZSBpZiAoIGlucHV0IDwgMHgyMDAwMDAgKQorCQkqbGVuZ3RoID0gNDsKKwllbHNlCisJCXsgKmxlbmd0aCA9IDA7IHJldHVybjsgfQkvLyBUaGlzIGNvZGUgd29uJ3QgY292ZXJ0IHRoaXMgY29ycmVjdGx5IGFueXdheS4KKworCW91dHB1dCArPSAqbGVuZ3RoOworCisJLy8gU2Nhcnkgc2NhcnkgZmFsbCB0aHJvdWdocy4KKwlzd2l0Y2ggKCpsZW5ndGgpIAorCXsKKwkJY2FzZSA0OgorCQkJLS1vdXRwdXQ7IAorCQkJKm91dHB1dCA9IChjaGFyKSgoaW5wdXQgfCBCWVRFX01BUkspICYgQllURV9NQVNLKTsgCisJCQlpbnB1dCA+Pj0gNjsKKwkJY2FzZSAzOgorCQkJLS1vdXRwdXQ7IAorCQkJKm91dHB1dCA9IChjaGFyKSgoaW5wdXQgfCBCWVRFX01BUkspICYgQllURV9NQVNLKTsgCisJCQlpbnB1dCA+Pj0gNjsKKwkJY2FzZSAyOgorCQkJLS1vdXRwdXQ7IAorCQkJKm91dHB1dCA9IChjaGFyKSgoaW5wdXQgfCBCWVRFX01BUkspICYgQllURV9NQVNLKTsgCisJCQlpbnB1dCA+Pj0gNjsKKwkJY2FzZSAxOgorCQkJLS1vdXRwdXQ7IAorCQkJKm91dHB1dCA9IChjaGFyKShpbnB1dCB8IEZJUlNUX0JZVEVfTUFSS1sqbGVuZ3RoXSk7CisJfQorfQorCisKKy8qc3RhdGljKi8gaW50IFRpWG1sQmFzZTo6SXNBbHBoYSggdW5zaWduZWQgY2hhciBhbnlCeXRlLCBUaVhtbEVuY29kaW5nIC8qZW5jb2RpbmcqLyApCit7CisJLy8gVGhpcyB3aWxsIG9ubHkgd29yayBmb3IgbG93LWFzY2lpLCBldmVyeXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhIHZhbGlkCisJLy8gbGV0dGVyLiBJJ20gbm90IHN1cmUgdGhpcyBpcyB0aGUgYmVzdCBhcHByb2FjaCwgYnV0IGl0IGlzIHF1aXRlIHRyaWNreSB0cnlpbmcKKwkvLyB0byBmaWd1cmUgb3V0IGFsaGFiZXRpY2FsIHZzLiBub3QgYWNyb3NzIGVuY29kaW5nLiBTbyB0YWtlIGEgdmVyeSAKKwkvLyBjb25zZXJ2YXRpdmUgYXBwcm9hY2guCisKKy8vCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCisvLwl7CisJCWlmICggYW55Qnl0ZSA8IDEyNyApCisJCQlyZXR1cm4gaXNhbHBoYSggYW55Qnl0ZSApOworCQllbHNlCisJCQlyZXR1cm4gMTsJLy8gV2hhdCBlbHNlIHRvIGRvPyBUaGUgdW5pY29kZSBzZXQgaXMgaHVnZS4uLmdldCB0aGUgZW5nbGlzaCBvbmVzIHJpZ2h0LgorLy8JfQorLy8JZWxzZQorLy8JeworLy8JCXJldHVybiBpc2FscGhhKCBhbnlCeXRlICk7CisvLwl9Cit9CisKKworLypzdGF0aWMqLyBpbnQgVGlYbWxCYXNlOjpJc0FscGhhTnVtKCB1bnNpZ25lZCBjaGFyIGFueUJ5dGUsIFRpWG1sRW5jb2RpbmcgLyplbmNvZGluZyovICkKK3sKKwkvLyBUaGlzIHdpbGwgb25seSB3b3JrIGZvciBsb3ctYXNjaWksIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvIGJlIGEgdmFsaWQKKwkvLyBsZXR0ZXIuIEknbSBub3Qgc3VyZSB0aGlzIGlzIHRoZSBiZXN0IGFwcHJvYWNoLCBidXQgaXQgaXMgcXVpdGUgdHJpY2t5IHRyeWluZworCS8vIHRvIGZpZ3VyZSBvdXQgYWxoYWJldGljYWwgdnMuIG5vdCBhY3Jvc3MgZW5jb2RpbmcuIFNvIHRha2UgYSB2ZXJ5IAorCS8vIGNvbnNlcnZhdGl2ZSBhcHByb2FjaC4KKworLy8JaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKKy8vCXsKKwkJaWYgKCBhbnlCeXRlIDwgMTI3ICkKKwkJCXJldHVybiBpc2FsbnVtKCBhbnlCeXRlICk7CisJCWVsc2UKKwkJCXJldHVybiAxOwkvLyBXaGF0IGVsc2UgdG8gZG8/IFRoZSB1bmljb2RlIHNldCBpcyBodWdlLi4uZ2V0IHRoZSBlbmdsaXNoIG9uZXMgcmlnaHQuCisvLwl9CisvLwllbHNlCisvLwl7CisvLwkJcmV0dXJuIGlzYWxudW0oIGFueUJ5dGUgKTsKKy8vCX0KK30KKworCitjbGFzcyBUaVhtbFBhcnNpbmdEYXRhCit7CisJZnJpZW5kIGNsYXNzIFRpWG1sRG9jdW1lbnQ7CisgIHB1YmxpYzoKKwl2b2lkIFN0YW1wKCBjb25zdCBjaGFyKiBub3csIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKKworCWNvbnN0IFRpWG1sQ3Vyc29yJiBDdXJzb3IoKQl7IHJldHVybiBjdXJzb3I7IH0KKworICBwcml2YXRlOgorCS8vIE9ubHkgdXNlZCBieSB0aGUgZG9jdW1lbnQhCisJVGlYbWxQYXJzaW5nRGF0YSggY29uc3QgY2hhciogc3RhcnQsIGludCBfdGFic2l6ZSwgaW50IHJvdywgaW50IGNvbCApCisJeworCQlhc3NlcnQoIHN0YXJ0ICk7CisJCXN0YW1wID0gc3RhcnQ7CisJCXRhYnNpemUgPSBfdGFic2l6ZTsKKwkJY3Vyc29yLnJvdyA9IHJvdzsKKwkJY3Vyc29yLmNvbCA9IGNvbDsKKwl9CisKKwlUaVhtbEN1cnNvcgkJY3Vyc29yOworCWNvbnN0IGNoYXIqCQlzdGFtcDsKKwlpbnQJCQkJdGFic2l6ZTsKK307CisKKwordm9pZCBUaVhtbFBhcnNpbmdEYXRhOjpTdGFtcCggY29uc3QgY2hhciogbm93LCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlhc3NlcnQoIG5vdyApOworCisJLy8gRG8gbm90aGluZyBpZiB0aGUgdGFic2l6ZSBpcyAwLgorCWlmICggdGFic2l6ZSA8IDEgKQorCXsKKwkJcmV0dXJuOworCX0KKworCS8vIEdldCB0aGUgY3VycmVudCByb3csIGNvbHVtbi4KKwlpbnQgcm93ID0gY3Vyc29yLnJvdzsKKwlpbnQgY29sID0gY3Vyc29yLmNvbDsKKwljb25zdCBjaGFyKiBwID0gc3RhbXA7CisJYXNzZXJ0KCBwICk7CisKKwl3aGlsZSAoIHAgPCBub3cgKQorCXsKKwkJLy8gVHJlYXQgcCBhcyB1bnNpZ25lZCwgc28gd2UgaGF2ZSBhIGhhcHB5IGNvbXBpbGVyLgorCQljb25zdCB1bnNpZ25lZCBjaGFyKiBwVSA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilwOworCisJCS8vIENvZGUgY29udHJpYnV0ZWQgYnkgRmxldGNoZXIgRHVubjogKG1vZGlmaWVkIGJ5IGxlZSkKKwkJc3dpdGNoICgqcFUpIHsKKwkJCWNhc2UgMDoKKwkJCQkvLyBXZSAqc2hvdWxkKiBuZXZlciBnZXQgaGVyZSwgYnV0IGluIGNhc2Ugd2UgZG8sIGRvbid0CisJCQkJLy8gYWR2YW5jZSBwYXN0IHRoZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3RlciwgZXZlcgorCQkJCXJldHVybjsKKworCQkJY2FzZSAnXHInOgorCQkJCS8vIGJ1bXAgZG93biB0byB0aGUgbmV4dCBsaW5lCisJCQkJKytyb3c7CisJCQkJY29sID0gMDsJCQkJCisJCQkJLy8gRWF0IHRoZSBjaGFyYWN0ZXIKKwkJCQkrK3A7CisKKwkJCQkvLyBDaGVjayBmb3IgXHJcbiBzZXF1ZW5jZSwgYW5kIHRyZWF0IHRoaXMgYXMgYSBzaW5nbGUgY2hhcmFjdGVyCisJCQkJaWYgKCpwID09ICdcbicpIHsKKwkJCQkJKytwOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSAnXG4nOgorCQkJCS8vIGJ1bXAgZG93biB0byB0aGUgbmV4dCBsaW5lCisJCQkJKytyb3c7CisJCQkJY29sID0gMDsKKworCQkJCS8vIEVhdCB0aGUgY2hhcmFjdGVyCisJCQkJKytwOworCisJCQkJLy8gQ2hlY2sgZm9yIFxuXHIgc2VxdWVuY2UsIGFuZCB0cmVhdCB0aGlzIGFzIGEgc2luZ2xlCisJCQkJLy8gY2hhcmFjdGVyLiAgKFllcywgdGhpcyBiaXphcnJlIHRoaW5nIGRvZXMgb2NjdXIgc3RpbGwKKwkJCQkvLyBvbiBzb21lIGFyY2FuZSBwbGF0Zm9ybXMuLi4pCisJCQkJaWYgKCpwID09ICdccicpIHsKKwkJCQkJKytwOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSAnXHQnOgorCQkJCS8vIEVhdCB0aGUgY2hhcmFjdGVyCisJCQkJKytwOworCisJCQkJLy8gU2tpcCB0byBuZXh0IHRhYiBzdG9wCisJCQkJY29sID0gKGNvbCAvIHRhYnNpemUgKyAxKSAqIHRhYnNpemU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgVElYTUxfVVRGX0xFQURfMDoKKwkJCQlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQorCQkJCXsKKwkJCQkJaWYgKCAqKHArMSkgJiYgKihwKzIpICkKKwkJCQkJeworCQkJCQkJLy8gSW4gdGhlc2UgY2FzZXMsIGRvbid0IGFkdmFuY2UgdGhlIGNvbHVtbi4gVGhlc2UgYXJlCisJCQkJCQkvLyAwLXdpZHRoIHNwYWNlcy4KKwkJCQkJCWlmICggKihwVSsxKT09VElYTUxfVVRGX0xFQURfMSAmJiAqKHBVKzIpPT1USVhNTF9VVEZfTEVBRF8yICkKKwkJCQkJCQlwICs9IDM7CQorCQkJCQkJZWxzZSBpZiAoICoocFUrMSk9PTB4YmZVICYmICoocFUrMik9PTB4YmVVICkKKwkJCQkJCQlwICs9IDM7CQorCQkJCQkJZWxzZSBpZiAoICoocFUrMSk9PTB4YmZVICYmICoocFUrMik9PTB4YmZVICkKKwkJCQkJCQlwICs9IDM7CQorCQkJCQkJZWxzZQorCQkJCQkJCXsgcCArPTM7ICsrY29sOyB9CS8vIEEgbm9ybWFsIGNoYXJhY3Rlci4KKwkJCQkJfQorCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkrK3A7CisJCQkJCSsrY29sOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQorCQkJCXsKKwkJCQkJLy8gRWF0IHRoZSAxIHRvIDQgYnl0ZSB1dGY4IGNoYXJhY3Rlci4KKwkJCQkJaW50IHN0ZXAgPSBUaVhtbEJhc2U6OnV0ZjhCeXRlVGFibGVbKigodW5zaWduZWQgY2hhciopcCldOworCQkJCQlpZiAoIHN0ZXAgPT0gMCApCisJCQkJCQlzdGVwID0gMTsJCS8vIEVycm9yIGNhc2UgZnJvbSBiYWQgZW5jb2RpbmcsIGJ1dCBoYW5kbGUgZ3JhY2VmdWxseS4KKwkJCQkJcCArPSBzdGVwOworCisJCQkJCS8vIEp1c3QgYWR2YW5jZSBvbmUgY29sdW1uLCBvZiBjb3Vyc2UuCisJCQkJCSsrY29sOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkrK3A7CisJCQkJCSsrY29sOworCQkJCX0KKwkJCQlicmVhazsKKwkJfQorCX0KKwljdXJzb3Iucm93ID0gcm93OworCWN1cnNvci5jb2wgPSBjb2w7CisJYXNzZXJ0KCBjdXJzb3Iucm93ID49IC0xICk7CisJYXNzZXJ0KCBjdXJzb3IuY29sID49IC0xICk7CisJc3RhbXAgPSBwOworCWFzc2VydCggc3RhbXAgKTsKK30KKworCitjb25zdCBjaGFyKiBUaVhtbEJhc2U6OlNraXBXaGl0ZVNwYWNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlpZiAoICFwIHx8ICEqcCApCisJeworCQlyZXR1cm4gMDsKKwl9CisJaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKKwl7CisJCXdoaWxlICggKnAgKQorCQl7CisJCQljb25zdCB1bnNpZ25lZCBjaGFyKiBwVSA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilwOworCQkJCisJCQkvLyBTa2lwIHRoZSBzdHVwaWQgTWljcm9zb2Z0IFVURi04IEJ5dGUgb3JkZXIgbWFya3MKKwkJCWlmICgJKihwVSswKT09VElYTUxfVVRGX0xFQURfMAorCQkJCSAmJiAqKHBVKzEpPT1USVhNTF9VVEZfTEVBRF8xIAorCQkJCSAmJiAqKHBVKzIpPT1USVhNTF9VVEZfTEVBRF8yICkKKwkJCXsKKwkJCQlwICs9IDM7CisJCQkJY29udGludWU7CisJCQl9CisJCQllbHNlIGlmKCoocFUrMCk9PVRJWE1MX1VURl9MRUFEXzAKKwkJCQkgJiYgKihwVSsxKT09MHhiZlUKKwkJCQkgJiYgKihwVSsyKT09MHhiZVUgKQorCQkJeworCQkJCXAgKz0gMzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWVsc2UgaWYoKihwVSswKT09VElYTUxfVVRGX0xFQURfMAorCQkJCSAmJiAqKHBVKzEpPT0weGJmVQorCQkJCSAmJiAqKHBVKzIpPT0weGJmVSApCisJCQl7CisJCQkJcCArPSAzOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlpZiAoIElzV2hpdGVTcGFjZSggKnAgKSB8fCAqcCA9PSAnXG4nIHx8ICpwID09J1xyJyApCQkvLyBTdGlsbCB1c2luZyBvbGQgcnVsZXMgZm9yIHdoaXRlIHNwYWNlLgorCQkJCSsrcDsKKwkJCWVsc2UKKwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCisJeworCQl3aGlsZSAoICpwICYmIElzV2hpdGVTcGFjZSggKnAgKSB8fCAqcCA9PSAnXG4nIHx8ICpwID09J1xyJyApCisJCQkrK3A7CisJfQorCisJcmV0dXJuIHA7Cit9CisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisvKnN0YXRpYyovIGJvb2wgVGlYbWxCYXNlOjpTdHJlYW1XaGl0ZVNwYWNlKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApCit7CisJZm9yKCA7OyApCisJeworCQlpZiAoICFpbi0+Z29vZCgpICkgcmV0dXJuIGZhbHNlOworCisJCWludCBjID0gaW4tPnBlZWsoKTsKKwkJLy8gQXQgdGhpcyBzY29wZSwgd2UgY2FuJ3QgZ2V0IHRvIGEgZG9jdW1lbnQuIFNvIGZhaWwgc2lsZW50bHkuCisJCWlmICggIUlzV2hpdGVTcGFjZSggYyApIHx8IGMgPD0gMCApCisJCQlyZXR1cm4gdHJ1ZTsKKworCQkqdGFnICs9IChjaGFyKSBpbi0+Z2V0KCk7CisJfQorfQorCisvKnN0YXRpYyovIGJvb2wgVGlYbWxCYXNlOjpTdHJlYW1UbyggVElYTUxfSVNUUkVBTSAqIGluLCBpbnQgY2hhcmFjdGVyLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQoreworCS8vYXNzZXJ0KCBjaGFyYWN0ZXIgPiAwICYmIGNoYXJhY3RlciA8IDEyOCApOwkvLyBlbHNlIGl0IHdvbid0IHdvcmsgaW4gdXRmLTgKKwl3aGlsZSAoIGluLT5nb29kKCkgKQorCXsKKwkJaW50IGMgPSBpbi0+cGVlaygpOworCQlpZiAoIGMgPT0gY2hhcmFjdGVyICkKKwkJCXJldHVybiB0cnVlOworCQlpZiAoIGMgPD0gMCApCQkvLyBTaWxlbnQgZmFpbHVyZTogY2FuJ3QgZ2V0IGRvY3VtZW50IGF0IHRoaXMgc2NvcGUKKwkJCXJldHVybiBmYWxzZTsKKworCQlpbi0+Z2V0KCk7CisJCSp0YWcgKz0gKGNoYXIpIGM7CisJfQorCXJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCitjb25zdCBjaGFyKiBUaVhtbEJhc2U6OlJlYWROYW1lKCBjb25zdCBjaGFyKiBwLCBUSVhNTF9TVFJJTkcgKiBuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwkqbmFtZSA9ICIiOworCWFzc2VydCggcCApOworCisJLy8gTmFtZXMgc3RhcnQgd2l0aCBsZXR0ZXJzIG9yIHVuZGVyc2NvcmVzLgorCS8vIE9mIGNvdXJzZSwgaW4gdW5pY29kZSwgdGlueXhtbCBoYXMgbm8gaWRlYSB3aGF0IGEgbGV0dGVyICppcyouIFRoZQorCS8vIGFsZ29yaXRobSBpcyBnZW5lcm91cy4KKwkvLworCS8vIEFmdGVyIHRoYXQsIHRoZXkgY2FuIGJlIGxldHRlcnMsIHVuZGVyc2NvcmVzLCBudW1iZXJzLAorCS8vIGh5cGhlbnMsIG9yIGNvbG9ucy4gKENvbG9ucyBhcmUgdmFsaWQgb255IGZvciBuYW1lc3BhY2VzLAorCS8vIGJ1dCB0aW55eG1sIGNhbid0IHRlbGwgbmFtZXNwYWNlcyBmcm9tIG5hbWVzLikKKwlpZiAoICAgIHAgJiYgKnAgCisJCSAmJiAoIElzQWxwaGEoICh1bnNpZ25lZCBjaGFyKSAqcCwgZW5jb2RpbmcgKSB8fCAqcCA9PSAnXycgKSApCisJeworCQl3aGlsZSgJCXAgJiYgKnAKKwkJCQkmJgkoCQlJc0FscGhhTnVtKCAodW5zaWduZWQgY2hhciApICpwLCBlbmNvZGluZyApIAorCQkJCQkJIHx8ICpwID09ICdfJworCQkJCQkJIHx8ICpwID09ICctJworCQkJCQkJIHx8ICpwID09ICcuJworCQkJCQkJIHx8ICpwID09ICc6JyApICkKKwkJeworCQkJKCpuYW1lKSArPSAqcDsKKwkJCSsrcDsKKwkJfQorCQlyZXR1cm4gcDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IGNoYXIqIFRpWG1sQmFzZTo6R2V0RW50aXR5KCBjb25zdCBjaGFyKiBwLCBjaGFyKiB2YWx1ZSwgaW50KiBsZW5ndGgsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCS8vIFByZXN1bWUgYW4gZW50aXR5LCBhbmQgcHVsbCBpdCBvdXQuCisgICAgVElYTUxfU1RSSU5HIGVudDsKKwlpbnQgaTsKKwkqbGVuZ3RoID0gMDsKKworCWlmICggKihwKzEpICYmICoocCsxKSA9PSAnIycgJiYgKihwKzIpICkKKwl7CisJCXVuc2lnbmVkIGxvbmcgdWNzID0gMDsKKwkJcHRyZGlmZl90IGRlbHRhID0gMDsKKwkJdW5zaWduZWQgbXVsdCA9IDE7CisKKwkJaWYgKCAqKHArMikgPT0gJ3gnICkKKwkJeworCQkJLy8gSGV4YWRlY2ltYWwuCisJCQlpZiAoICEqKHArMykgKSByZXR1cm4gMDsKKworCQkJY29uc3QgY2hhciogcSA9IHArMzsKKwkJCXEgPSBzdHJjaHIoIHEsICc7JyApOworCisJCQlpZiAoICFxIHx8ICEqcSApIHJldHVybiAwOworCisJCQlkZWx0YSA9IHEtcDsKKwkJCS0tcTsKKworCQkJd2hpbGUgKCAqcSAhPSAneCcgKQorCQkJeworCQkJCWlmICggKnEgPj0gJzAnICYmICpxIDw9ICc5JyApCisJCQkJCXVjcyArPSBtdWx0ICogKCpxIC0gJzAnKTsKKwkJCQllbHNlIGlmICggKnEgPj0gJ2EnICYmICpxIDw9ICdmJyApCisJCQkJCXVjcyArPSBtdWx0ICogKCpxIC0gJ2EnICsgMTApOworCQkJCWVsc2UgaWYgKCAqcSA+PSAnQScgJiYgKnEgPD0gJ0YnICkKKwkJCQkJdWNzICs9IG11bHQgKiAoKnEgLSAnQScgKyAxMCApOworCQkJCWVsc2UgCisJCQkJCXJldHVybiAwOworCQkJCW11bHQgKj0gMTY7CisJCQkJLS1xOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJLy8gRGVjaW1hbC4KKwkJCWlmICggISoocCsyKSApIHJldHVybiAwOworCisJCQljb25zdCBjaGFyKiBxID0gcCsyOworCQkJcSA9IHN0cmNociggcSwgJzsnICk7CisKKwkJCWlmICggIXEgfHwgISpxICkgcmV0dXJuIDA7CisKKwkJCWRlbHRhID0gcS1wOworCQkJLS1xOworCisJCQl3aGlsZSAoICpxICE9ICcjJyApCisJCQl7CisJCQkJaWYgKCAqcSA+PSAnMCcgJiYgKnEgPD0gJzknICkKKwkJCQkJdWNzICs9IG11bHQgKiAoKnEgLSAnMCcpOworCQkJCWVsc2UgCisJCQkJCXJldHVybiAwOworCQkJCW11bHQgKj0gMTA7CisJCQkJLS1xOworCQkJfQorCQl9CisJCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCisJCXsKKwkJCS8vIGNvbnZlcnQgdGhlIFVDUyB0byBVVEYtOAorCQkJQ29udmVydFVURjMyVG9VVEY4KCB1Y3MsIHZhbHVlLCBsZW5ndGggKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCSp2YWx1ZSA9IChjaGFyKXVjczsKKwkJCSpsZW5ndGggPSAxOworCQl9CisJCXJldHVybiBwICsgZGVsdGEgKyAxOworCX0KKworCS8vIE5vdyB0cnkgdG8gbWF0Y2ggaXQuCisJZm9yKCBpPTA7IGk8TlVNX0VOVElUWTsgKytpICkKKwl7CisJCWlmICggc3RybmNtcCggZW50aXR5W2ldLnN0ciwgcCwgZW50aXR5W2ldLnN0ckxlbmd0aCApID09IDAgKQorCQl7CisJCQlhc3NlcnQoIHN0cmxlbiggZW50aXR5W2ldLnN0ciApID09IGVudGl0eVtpXS5zdHJMZW5ndGggKTsKKwkJCSp2YWx1ZSA9IGVudGl0eVtpXS5jaHI7CisJCQkqbGVuZ3RoID0gMTsKKwkJCXJldHVybiAoIHAgKyBlbnRpdHlbaV0uc3RyTGVuZ3RoICk7CisJCX0KKwl9CisKKwkvLyBTbyBpdCB3YXNuJ3QgYW4gZW50aXR5LCBpdHMgdW5yZWNvZ25pemVkLCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LgorCSp2YWx1ZSA9ICpwOwkvLyBEb24ndCBwdXQgYmFjayB0aGUgbGFzdCBvbmUsIHNpbmNlIHdlIHJldHVybiBpdCEKKwlyZXR1cm4gcCsxOworfQorCisKK2Jvb2wgVGlYbWxCYXNlOjpTdHJpbmdFcXVhbCggY29uc3QgY2hhciogcCwKKwkJCQkJCQkgY29uc3QgY2hhciogdGFnLAorCQkJCQkJCSBib29sIGlnbm9yZUNhc2UsCisJCQkJCQkJIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCWFzc2VydCggcCApOworCWFzc2VydCggdGFnICk7CisJaWYgKCAhcCB8fCAhKnAgKQorCXsKKwkJYXNzZXJ0KCAwICk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwljb25zdCBjaGFyKiBxID0gcDsKKworCWlmICggaWdub3JlQ2FzZSApCisJeworCQl3aGlsZSAoICpxICYmICp0YWcgJiYgVG9Mb3dlciggKnEsIGVuY29kaW5nICkgPT0gVG9Mb3dlciggKnRhZywgZW5jb2RpbmcgKSApCisJCXsKKwkJCSsrcTsKKwkJCSsrdGFnOworCQl9CisKKwkJaWYgKCAqdGFnID09IDAgKQorCQkJcmV0dXJuIHRydWU7CisJfQorCWVsc2UKKwl7CisJCXdoaWxlICggKnEgJiYgKnRhZyAmJiAqcSA9PSAqdGFnICkKKwkJeworCQkJKytxOworCQkJKyt0YWc7CisJCX0KKworCQlpZiAoICp0YWcgPT0gMCApCQkvLyBIYXZlIHdlIGZvdW5kIHRoZSBlbmQgb2YgdGhlIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZXF1YWw/CisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGZhbHNlOworfQorCitjb25zdCBjaGFyKiBUaVhtbEJhc2U6OlJlYWRUZXh0KAljb25zdCBjaGFyKiBwLCAKKwkJCQkJCQkJCVRJWE1MX1NUUklORyAqIHRleHQsIAorCQkJCQkJCQkJYm9vbCB0cmltV2hpdGVTcGFjZSwgCisJCQkJCQkJCQljb25zdCBjaGFyKiBlbmRUYWcsIAorCQkJCQkJCQkJYm9vbCBjYXNlSW5zZW5zaXRpdmUsCisJCQkJCQkJCQlUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKyAgICAqdGV4dCA9ICIiOworCWlmICggICAgIXRyaW1XaGl0ZVNwYWNlCQkJLy8gY2VydGFpbiB0YWdzIGFsd2F5cyBrZWVwIHdoaXRlc3BhY2UKKwkJIHx8ICFjb25kZW5zZVdoaXRlU3BhY2UgKQkvLyBpZiB0cnVlLCB3aGl0ZXNwYWNlIGlzIGFsd2F5cyBrZXB0CisJeworCQkvLyBLZWVwIGFsbCB0aGUgd2hpdGUgc3BhY2UuCisJCXdoaWxlICgJICAgcCAmJiAqcAorCQkJCSYmICFTdHJpbmdFcXVhbCggcCwgZW5kVGFnLCBjYXNlSW5zZW5zaXRpdmUsIGVuY29kaW5nICkKKwkJCSAgKQorCQl7CisJCQlpbnQgbGVuOworCQkJY2hhciBjQXJyWzRdID0geyAwLCAwLCAwLCAwIH07CisJCQlwID0gR2V0Q2hhciggcCwgY0FyciwgJmxlbiwgZW5jb2RpbmcgKTsKKwkJCXRleHQtPmFwcGVuZCggY0FyciwgbGVuICk7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJYm9vbCB3aGl0ZXNwYWNlID0gZmFsc2U7CisKKwkJLy8gUmVtb3ZlIGxlYWRpbmcgd2hpdGUgc3BhY2U6CisJCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKwkJd2hpbGUgKAkgICBwICYmICpwCisJCQkJJiYgIVN0cmluZ0VxdWFsKCBwLCBlbmRUYWcsIGNhc2VJbnNlbnNpdGl2ZSwgZW5jb2RpbmcgKSApCisJCXsKKwkJCWlmICggKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXG4nICkKKwkJCXsKKwkJCQl3aGl0ZXNwYWNlID0gdHJ1ZTsKKwkJCQkrK3A7CisJCQl9CisJCQllbHNlIGlmICggSXNXaGl0ZVNwYWNlKCAqcCApICkKKwkJCXsKKwkJCQl3aGl0ZXNwYWNlID0gdHJ1ZTsKKwkJCQkrK3A7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLy8gSWYgd2UndmUgZm91bmQgd2hpdGVzcGFjZSwgYWRkIGl0IGJlZm9yZSB0aGUKKwkJCQkvLyBuZXcgY2hhcmFjdGVyLiBBbnkgd2hpdGVzcGFjZSBqdXN0IGJlY29tZXMgYSBzcGFjZS4KKwkJCQlpZiAoIHdoaXRlc3BhY2UgKQorCQkJCXsKKwkJCQkJKCp0ZXh0KSArPSAnICc7CisJCQkJCXdoaXRlc3BhY2UgPSBmYWxzZTsKKwkJCQl9CisJCQkJaW50IGxlbjsKKwkJCQljaGFyIGNBcnJbNF0gPSB7IDAsIDAsIDAsIDAgfTsKKwkJCQlwID0gR2V0Q2hhciggcCwgY0FyciwgJmxlbiwgZW5jb2RpbmcgKTsKKwkJCQlpZiAoIGxlbiA9PSAxICkKKwkJCQkJKCp0ZXh0KSArPSBjQXJyWzBdOwkvLyBtb3JlIGVmZmljaWVudAorCQkJCWVsc2UKKwkJCQkJdGV4dC0+YXBwZW5kKCBjQXJyLCBsZW4gKTsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gcCArIHN0cmxlbiggZW5kVGFnICk7Cit9CisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisKK3ZvaWQgVGlYbWxEb2N1bWVudDo6U3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICkKK3sKKwkvLyBUaGUgYmFzaWMgaXNzdWUgd2l0aCBhIGRvY3VtZW50IGlzIHRoYXQgd2UgZG9uJ3Qga25vdyB3aGF0IHdlJ3JlCisJLy8gc3RyZWFtaW5nLiBSZWFkIHNvbWV0aGluZyBwcmVzdW1lZCB0byBiZSBhIHRhZyAoYW5kIGhvcGUpLCB0aGVuCisJLy8gaWRlbnRpZnkgaXQsIGFuZCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBzdHJlYW0gbWV0aG9kIG9uIHRoZSB0YWcuCisJLy8KKwkvLyBUaGlzICJwcmUtc3RyZWFtaW5nIiB3aWxsIG5ldmVyIHJlYWQgdGhlIGNsb3NpbmcgIj4iIHNvIHRoZQorCS8vIHN1Yi10YWcgY2FuIG9yaWVudCBpdHNlbGYuCisKKwlpZiAoICFTdHJlYW1UbyggaW4sICc8JywgdGFnICkgKSAKKwl7CisJCVNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCXJldHVybjsKKwl9CisKKwl3aGlsZSAoIGluLT5nb29kKCkgKQorCXsKKwkJaW50IHRhZ0luZGV4ID0gKGludCkgdGFnLT5sZW5ndGgoKTsKKwkJd2hpbGUgKCBpbi0+Z29vZCgpICYmIGluLT5wZWVrKCkgIT0gJz4nICkKKwkJeworCQkJaW50IGMgPSBpbi0+Z2V0KCk7CisJCQlpZiAoIGMgPD0gMCApCisJCQl7CisJCQkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCSgqdGFnKSArPSAoY2hhcikgYzsKKwkJfQorCisJCWlmICggaW4tPmdvb2QoKSApCisJCXsKKwkJCS8vIFdlIG5vdyBoYXZlIHNvbWV0aGluZyB3ZSBwcmVzdW1lIHRvIGJlIGEgbm9kZSBvZiAKKwkJCS8vIHNvbWUgc29ydC4gSWRlbnRpZnkgaXQsIGFuZCBjYWxsIHRoZSBub2RlIHRvCisJCQkvLyBjb250aW51ZSBzdHJlYW1pbmcuCisJCQlUaVhtbE5vZGUqIG5vZGUgPSBJZGVudGlmeSggdGFnLT5jX3N0cigpICsgdGFnSW5kZXgsIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKKworCQkJaWYgKCBub2RlICkKKwkJCXsKKwkJCQlub2RlLT5TdHJlYW1JbiggaW4sIHRhZyApOworCQkJCWJvb2wgaXNFbGVtZW50ID0gbm9kZS0+VG9FbGVtZW50KCkgIT0gMDsKKwkJCQlkZWxldGUgbm9kZTsKKwkJCQlub2RlID0gMDsKKworCQkJCS8vIElmIHRoaXMgaXMgdGhlIHJvb3QgZWxlbWVudCwgd2UncmUgZG9uZS4gUGFyc2luZyB3aWxsIGJlCisJCQkJLy8gZG9uZSBieSB0aGUgPj4gb3BlcmF0b3IuCisJCQkJaWYgKCBpc0VsZW1lbnQgKQorCQkJCXsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlTZXRFcnJvciggVElYTUxfRVJST1IsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisJLy8gV2Ugc2hvdWxkIGhhdmUgcmV0dXJuZWQgc29vbmVyLgorCVNldEVycm9yKCBUSVhNTF9FUlJPUiwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworfQorCisjZW5kaWYKKworY29uc3QgY2hhciogVGlYbWxEb2N1bWVudDo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlDbGVhckVycm9yKCk7CisKKwkvLyBQYXJzZSBhd2F5LCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwuIFNpbmNlIGEgZG9jdW1lbnQKKwkvLyBjb250YWlucyBub3RoaW5nIGJ1dCBvdGhlciB0YWdzLCBtb3N0IG9mIHdoYXQgaGFwcGVucworCS8vIGhlcmUgaXMgc2tpcHBpbmcgd2hpdGUgc3BhY2UuCisJaWYgKCAhcCB8fCAhKnAgKQorCXsKKwkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX0RPQ1VNRU5UX0VNUFRZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCXJldHVybiAwOworCX0KKworCS8vIE5vdGUgdGhhdCwgZm9yIGEgZG9jdW1lbnQsIHRoaXMgbmVlZHMgdG8gY29tZQorCS8vIGJlZm9yZSB0aGUgd2hpbGUgc3BhY2Ugc2tpcCwgc28gdGhhdCBwYXJzaW5nCisJLy8gc3RhcnRzIGZyb20gdGhlIHBvaW50ZXIgd2UgYXJlIGdpdmVuLgorCWxvY2F0aW9uLkNsZWFyKCk7CisJaWYgKCBwcmV2RGF0YSApCisJeworCQlsb2NhdGlvbi5yb3cgPSBwcmV2RGF0YS0+Y3Vyc29yLnJvdzsKKwkJbG9jYXRpb24uY29sID0gcHJldkRhdGEtPmN1cnNvci5jb2w7CisJfQorCWVsc2UKKwl7CisJCWxvY2F0aW9uLnJvdyA9IDA7CisJCWxvY2F0aW9uLmNvbCA9IDA7CisJfQorCVRpWG1sUGFyc2luZ0RhdGEgZGF0YSggcCwgVGFiU2l6ZSgpLCBsb2NhdGlvbi5yb3csIGxvY2F0aW9uLmNvbCApOworCWxvY2F0aW9uID0gZGF0YS5DdXJzb3IoKTsKKworCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApCisJeworCQkvLyBDaGVjayBmb3IgdGhlIE1pY3Jvc29mdCBVVEYtOCBsZWFkIGJ5dGVzLgorCQljb25zdCB1bnNpZ25lZCBjaGFyKiBwVSA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilwOworCQlpZiAoCSoocFUrMCkgJiYgKihwVSswKSA9PSBUSVhNTF9VVEZfTEVBRF8wCisJCQkgJiYgKihwVSsxKSAmJiAqKHBVKzEpID09IFRJWE1MX1VURl9MRUFEXzEKKwkJCSAmJiAqKHBVKzIpICYmICoocFUrMikgPT0gVElYTUxfVVRGX0xFQURfMiApCisJCXsKKwkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfVVRGODsKKwkJCXVzZU1pY3Jvc29mdEJPTSA9IHRydWU7CisJCX0KKwl9CisKKyAgICBwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7CisJaWYgKCAhcCApCisJeworCQlTZXRFcnJvciggVElYTUxfRVJST1JfRE9DVU1FTlRfRU1QVFksIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJcmV0dXJuIDA7CisJfQorCisJd2hpbGUgKCBwICYmICpwICkKKwl7CisJCVRpWG1sTm9kZSogbm9kZSA9IElkZW50aWZ5KCBwLCBlbmNvZGluZyApOworCQlpZiAoIG5vZGUgKQorCQl7CisJCQlwID0gbm9kZS0+UGFyc2UoIHAsICZkYXRhLCBlbmNvZGluZyApOworCQkJTGlua0VuZENoaWxkKCBub2RlICk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlicmVhazsKKwkJfQorCisJCS8vIERpZCB3ZSBnZXQgZW5jb2RpbmcgaW5mbz8KKwkJaWYgKCAgICBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VTktOT1dOCisJCQkgJiYgbm9kZS0+VG9EZWNsYXJhdGlvbigpICkKKwkJeworCQkJVGlYbWxEZWNsYXJhdGlvbiogZGVjID0gbm9kZS0+VG9EZWNsYXJhdGlvbigpOworCQkJY29uc3QgY2hhciogZW5jID0gZGVjLT5FbmNvZGluZygpOworCQkJYXNzZXJ0KCBlbmMgKTsKKworCQkJaWYgKCAqZW5jID09IDAgKQorCQkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfVVRGODsKKwkJCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggZW5jLCAiVVRGLTgiLCB0cnVlLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICkgKQorCQkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfVVRGODsKKwkJCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggZW5jLCAiVVRGOCIsIHRydWUsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKSApCisJCQkJZW5jb2RpbmcgPSBUSVhNTF9FTkNPRElOR19VVEY4OwkvLyBpbmNvcnJlY3QsIGJ1dCBiZSBuaWNlCisJCQllbHNlIAorCQkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfTEVHQUNZOworCQl9CisKKwkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCX0KKworCS8vIFdhcyB0aGlzIGVtcHR5PworCWlmICggIWZpcnN0Q2hpbGQgKSB7CisJCVNldEVycm9yKCBUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSwgMCwgMCwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLy8gQWxsIGlzIHdlbGwuCisJcmV0dXJuIHA7Cit9CisKK3ZvaWQgVGlYbWxEb2N1bWVudDo6U2V0RXJyb3IoIGludCBlcnIsIGNvbnN0IGNoYXIqIHBFcnJvciwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCit7CQorCS8vIFRoZSBmaXJzdCBlcnJvciBpbiBhIGNoYWluIGlzIG1vcmUgYWNjdXJhdGUgLSBkb24ndCBzZXQgYWdhaW4hCisJaWYgKCBlcnJvciApCisJCXJldHVybjsKKworCWFzc2VydCggZXJyID4gMCAmJiBlcnIgPCBUSVhNTF9FUlJPUl9TVFJJTkdfQ09VTlQgKTsKKwllcnJvciAgID0gdHJ1ZTsKKwllcnJvcklkID0gZXJyOworCWVycm9yRGVzYyA9IGVycm9yU3RyaW5nWyBlcnJvcklkIF07CisKKwllcnJvckxvY2F0aW9uLkNsZWFyKCk7CisJaWYgKCBwRXJyb3IgJiYgZGF0YSApCisJeworCQlkYXRhLT5TdGFtcCggcEVycm9yLCBlbmNvZGluZyApOworCQllcnJvckxvY2F0aW9uID0gZGF0YS0+Q3Vyc29yKCk7CisJfQorfQorCisKK1RpWG1sTm9kZSogVGlYbWxOb2RlOjpJZGVudGlmeSggY29uc3QgY2hhciogcCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCit7CisJVGlYbWxOb2RlKiByZXR1cm5Ob2RlID0gMDsKKworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKwlpZiggIXAgfHwgISpwIHx8ICpwICE9ICc8JyApCisJeworCQlyZXR1cm4gMDsKKwl9CisKKwlUaVhtbERvY3VtZW50KiBkb2MgPSBHZXREb2N1bWVudCgpOworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKworCWlmICggIXAgfHwgISpwICkKKwl7CisJCXJldHVybiAwOworCX0KKworCS8vIFdoYXQgaXMgdGhpcyB0aGluZz8gCisJLy8gLSBFbGVtZW50cyBzdGFydCB3aXRoIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmUsIGJ1dCB4bWwgaXMgcmVzZXJ2ZWQuCisJLy8gLSBDb21tZW50czogPCEtLQorCS8vIC0gRGVjbGVyYXRpb246IDw/eG1sCisJLy8gLSBFdmVydGhpbmcgZWxzZSBpcyB1bmtub3duIHRvIHRpbnl4bWwuCisJLy8KKworCWNvbnN0IGNoYXIqIHhtbEhlYWRlciA9IHsgIjw/eG1sIiB9OworCWNvbnN0IGNoYXIqIGNvbW1lbnRIZWFkZXIgPSB7ICI8IS0tIiB9OworCWNvbnN0IGNoYXIqIGR0ZEhlYWRlciA9IHsgIjwhIiB9OworCWNvbnN0IGNoYXIqIGNkYXRhSGVhZGVyID0geyAiPCFbQ0RBVEFbIiB9OworCisJaWYgKCBTdHJpbmdFcXVhbCggcCwgeG1sSGVhZGVyLCB0cnVlLCBlbmNvZGluZyApICkKKwl7CisJCSNpZmRlZiBERUJVR19QQVJTRVIKKwkJCVRJWE1MX0xPRyggIlhNTCBwYXJzaW5nIERlY2xhcmF0aW9uXG4iICk7CisJCSNlbmRpZgorCQlyZXR1cm5Ob2RlID0gbmV3IFRpWG1sRGVjbGFyYXRpb24oKTsKKwl9CisJZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBwLCBjb21tZW50SGVhZGVyLCBmYWxzZSwgZW5jb2RpbmcgKSApCisJeworCQkjaWZkZWYgREVCVUdfUEFSU0VSCisJCQlUSVhNTF9MT0coICJYTUwgcGFyc2luZyBDb21tZW50XG4iICk7CisJCSNlbmRpZgorCQlyZXR1cm5Ob2RlID0gbmV3IFRpWG1sQ29tbWVudCgpOworCX0KKwllbHNlIGlmICggU3RyaW5nRXF1YWwoIHAsIGNkYXRhSGVhZGVyLCBmYWxzZSwgZW5jb2RpbmcgKSApCisJeworCQkjaWZkZWYgREVCVUdfUEFSU0VSCisJCQlUSVhNTF9MT0coICJYTUwgcGFyc2luZyBDREFUQVxuIiApOworCQkjZW5kaWYKKwkJVGlYbWxUZXh0KiB0ZXh0ID0gbmV3IFRpWG1sVGV4dCggIiIgKTsKKwkJdGV4dC0+U2V0Q0RBVEEoIHRydWUgKTsKKwkJcmV0dXJuTm9kZSA9IHRleHQ7CisJfQorCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggcCwgZHRkSGVhZGVyLCBmYWxzZSwgZW5jb2RpbmcgKSApCisJeworCQkjaWZkZWYgREVCVUdfUEFSU0VSCisJCQlUSVhNTF9MT0coICJYTUwgcGFyc2luZyBVbmtub3duKDEpXG4iICk7CisJCSNlbmRpZgorCQlyZXR1cm5Ob2RlID0gbmV3IFRpWG1sVW5rbm93bigpOworCX0KKwllbHNlIGlmICggICAgSXNBbHBoYSggKihwKzEpLCBlbmNvZGluZyApCisJCQkgIHx8ICoocCsxKSA9PSAnXycgKQorCXsKKwkJI2lmZGVmIERFQlVHX1BBUlNFUgorCQkJVElYTUxfTE9HKCAiWE1MIHBhcnNpbmcgRWxlbWVudFxuIiApOworCQkjZW5kaWYKKwkJcmV0dXJuTm9kZSA9IG5ldyBUaVhtbEVsZW1lbnQoICIiICk7CisJfQorCWVsc2UKKwl7CisJCSNpZmRlZiBERUJVR19QQVJTRVIKKwkJCVRJWE1MX0xPRyggIlhNTCBwYXJzaW5nIFVua25vd24oMilcbiIgKTsKKwkJI2VuZGlmCisJCXJldHVybk5vZGUgPSBuZXcgVGlYbWxVbmtub3duKCk7CisJfQorCisJaWYgKCByZXR1cm5Ob2RlICkKKwl7CisJCS8vIFNldCB0aGUgcGFyZW50LCBzbyBpdCBjYW4gcmVwb3J0IGVycm9ycworCQlyZXR1cm5Ob2RlLT5wYXJlbnQgPSB0aGlzOworCX0KKwllbHNlCisJeworCQlpZiAoIGRvYyApCisJCQlkb2MtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9PVVRfT0ZfTUVNT1JZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJfQorCXJldHVybiByZXR1cm5Ob2RlOworfQorCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCit2b2lkIFRpWG1sRWxlbWVudDo6U3RyZWFtSW4gKFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnKQoreworCS8vIFdlJ3JlIGNhbGxlZCB3aXRoIHNvbWUgYW1vdW50IG9mIHByZS1wYXJzaW5nLiBUaGF0IGlzLCBzb21lIG9mICJ0aGlzIgorCS8vIGVsZW1lbnQgaXMgaW4gInRhZyIuIEdvIGFoZWFkIGFuZCBzdHJlYW0gdG8gdGhlIGNsb3NpbmcgIj4iCisJd2hpbGUoIGluLT5nb29kKCkgKQorCXsKKwkJaW50IGMgPSBpbi0+Z2V0KCk7CisJCWlmICggYyA8PSAwICkKKwkJeworCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQkJaWYgKCBkb2N1bWVudCApCisJCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQlyZXR1cm47CisJCX0KKwkJKCp0YWcpICs9IChjaGFyKSBjIDsKKwkJCisJCWlmICggYyA9PSAnPicgKQorCQkJYnJlYWs7CisJfQorCisJaWYgKCB0YWctPmxlbmd0aCgpIDwgMyApIHJldHVybjsKKworCS8vIE9rYXkuLi5pZiB3ZSBhcmUgYSAiLz4iIHRhZywgdGhlbiB3ZSdyZSBkb25lLiBXZSd2ZSByZWFkIGEgY29tcGxldGUgdGFnLgorCS8vIElmIG5vdCwgaWRlbnRpZnkgYW5kIHN0cmVhbS4KKworCWlmICggICAgdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDEgKSA9PSAnPicgCisJCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMiApID09ICcvJyApCisJeworCQkvLyBBbGwgZ29vZCEKKwkJcmV0dXJuOworCX0KKwllbHNlIGlmICggdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDEgKSA9PSAnPicgKQorCXsKKwkJLy8gVGhlcmUgaXMgbW9yZS4gQ291bGQgYmU6CisJCS8vCQl0ZXh0CisJCS8vCQljbG9zaW5nIHRhZworCQkvLwkJYW5vdGhlciBub2RlLgorCQlmb3IgKCA7OyApCisJCXsKKwkJCVN0cmVhbVdoaXRlU3BhY2UoIGluLCB0YWcgKTsKKworCQkJLy8gRG8gd2UgaGF2ZSB0ZXh0PworCQkJaWYgKCBpbi0+Z29vZCgpICYmIGluLT5wZWVrKCkgIT0gJzwnICkgCisJCQl7CisJCQkJLy8gWWVwLCB0ZXh0LgorCQkJCVRpWG1sVGV4dCB0ZXh0KCAiIiApOworCQkJCXRleHQuU3RyZWFtSW4oIGluLCB0YWcgKTsKKworCQkJCS8vIFdoYXQgZm9sbG93cyB0ZXh0IGlzIGEgY2xvc2luZyB0YWcgb3IgYW5vdGhlciBub2RlLgorCQkJCS8vIEdvIGFyb3VuZCBhZ2FpbiBhbmQgZmlndXJlIGl0IG91dC4KKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJLy8gV2Ugbm93IGhhdmUgZWl0aGVyIGEgY2xvc2luZyB0YWcuLi5vciBhbm90aGVyIG5vZGUuCisJCQkvLyBXZSBzaG91bGQgYmUgYXQgYSAiPCIsIHJlZ2FyZGxlc3MuCisJCQlpZiAoICFpbi0+Z29vZCgpICkgcmV0dXJuOworCQkJYXNzZXJ0KCBpbi0+cGVlaygpID09ICc8JyApOworCQkJaW50IHRhZ0luZGV4ID0gKGludCkgdGFnLT5sZW5ndGgoKTsKKworCQkJYm9vbCBjbG9zaW5nVGFnID0gZmFsc2U7CisJCQlib29sIGZpcnN0Q2hhckZvdW5kID0gZmFsc2U7CisKKwkJCWZvciggOzsgKQorCQkJeworCQkJCWlmICggIWluLT5nb29kKCkgKQorCQkJCQlyZXR1cm47CisKKwkJCQlpbnQgYyA9IGluLT5wZWVrKCk7CisJCQkJaWYgKCBjIDw9IDAgKQorCQkJCXsKKwkJCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQkJCQlpZiAoIGRvY3VtZW50ICkKKwkJCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJCQorCQkJCWlmICggYyA9PSAnPicgKQorCQkJCQlicmVhazsKKworCQkJCSp0YWcgKz0gKGNoYXIpIGM7CisJCQkJaW4tPmdldCgpOworCisJCQkJaWYgKCAhZmlyc3RDaGFyRm91bmQgJiYgYyAhPSAnPCcgJiYgIUlzV2hpdGVTcGFjZSggYyApICkKKwkJCQl7CisJCQkJCWZpcnN0Q2hhckZvdW5kID0gdHJ1ZTsKKwkJCQkJaWYgKCBjID09ICcvJyApCisJCQkJCQljbG9zaW5nVGFnID0gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCQkvLyBJZiBpdCB3YXMgYSBjbG9zaW5nIHRhZywgdGhlbiByZWFkIGluIHRoZSBjbG9zaW5nICc+JyB0byBjbGVhbiB1cCB0aGUgaW5wdXQgc3RyZWFtLgorCQkJLy8gSWYgaXQgd2FzIG5vdCwgdGhlIHN0cmVhbWluZyB3aWxsIGJlIGRvbmUgYnkgdGhlIHRhZy4KKwkJCWlmICggY2xvc2luZ1RhZyApCisJCQl7CisJCQkJaWYgKCAhaW4tPmdvb2QoKSApCisJCQkJCXJldHVybjsKKworCQkJCWludCBjID0gaW4tPmdldCgpOworCQkJCWlmICggYyA8PSAwICkKKwkJCQl7CisJCQkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKwkJCQkJaWYgKCBkb2N1bWVudCApCisJCQkJCQlkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCQlhc3NlcnQoIGMgPT0gJz4nICk7CisJCQkJKnRhZyArPSAoY2hhcikgYzsKKworCQkJCS8vIFdlIGFyZSBkb25lLCBvbmNlIHdlJ3ZlIGZvdW5kIG91ciBjbG9zaW5nIHRhZy4KKwkJCQlyZXR1cm47CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLy8gSWYgbm90IGEgY2xvc2luZyB0YWcsIGlkIGl0LCBhbmQgc3RyZWFtLgorCQkJCWNvbnN0IGNoYXIqIHRhZ2xvYyA9IHRhZy0+Y19zdHIoKSArIHRhZ0luZGV4OworCQkJCVRpWG1sTm9kZSogbm9kZSA9IElkZW50aWZ5KCB0YWdsb2MsIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKKwkJCQlpZiAoICFub2RlICkKKwkJCQkJcmV0dXJuOworCQkJCW5vZGUtPlN0cmVhbUluKCBpbiwgdGFnICk7CisJCQkJZGVsZXRlIG5vZGU7CisJCQkJbm9kZSA9IDA7CisKKwkJCQkvLyBObyByZXR1cm46IGdvIGFyb3VuZCBmcm9tIHRoZSBiZWdpbm5pbmc6IHRleHQsIGNsb3NpbmcgdGFnLCBvciBub2RlLgorCQkJfQorCQl9CisJfQorfQorI2VuZGlmCisKK2NvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKwlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisKKwlpZiAoICFwIHx8ICEqcCApCisJeworCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VMRU1FTlQsIDAsIDAsIGVuY29kaW5nICk7CisJCXJldHVybiAwOworCX0KKworCWlmICggZGF0YSApCisJeworCQlkYXRhLT5TdGFtcCggcCwgZW5jb2RpbmcgKTsKKwkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKKwl9CisKKwlpZiAoICpwICE9ICc8JyApCisJeworCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VMRU1FTlQsIHAsIGRhdGEsIGVuY29kaW5nICk7CisJCXJldHVybiAwOworCX0KKworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCsxLCBlbmNvZGluZyApOworCisJLy8gUmVhZCB0aGUgbmFtZS4KKwljb25zdCBjaGFyKiBwRXJyID0gcDsKKworICAgIHAgPSBSZWFkTmFtZSggcCwgJnZhbHVlLCBlbmNvZGluZyApOworCWlmICggIXAgfHwgISpwICkKKwl7CisJCWlmICggZG9jdW1lbnQgKQlkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX0ZBSUxFRF9UT19SRUFEX0VMRU1FTlRfTkFNRSwgcEVyciwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCisgICAgVElYTUxfU1RSSU5HIGVuZFRhZyAoIjwvIik7CisJZW5kVGFnICs9IHZhbHVlOworCWVuZFRhZyArPSAiPiI7CisKKwkvLyBDaGVjayBmb3IgYW5kIHJlYWQgYXR0cmlidXRlcy4gQWxzbyBsb29rIGZvciBhbiBlbXB0eQorCS8vIHRhZyBvciBhbiBlbmQgdGFnLgorCXdoaWxlICggcCAmJiAqcCApCisJeworCQlwRXJyID0gcDsKKwkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCQlpZiAoICFwIHx8ICEqcCApCisJCXsKKwkJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywgcEVyciwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJCXJldHVybiAwOworCQl9CisJCWlmICggKnAgPT0gJy8nICkKKwkJeworCQkJKytwOworCQkJLy8gRW1wdHkgdGFnLgorCQkJaWYgKCAqcCAgIT0gJz4nICkKKwkJCXsKKwkJCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLCBwLCBkYXRhLCBlbmNvZGluZyApOwkJCisJCQkJcmV0dXJuIDA7CisJCQl9CisJCQlyZXR1cm4gKHArMSk7CisJCX0KKwkJZWxzZSBpZiAoICpwID09ICc+JyApCisJCXsKKwkJCS8vIERvbmUgd2l0aCBhdHRyaWJ1dGVzIChpZiB0aGVyZSB3ZXJlIGFueS4pCisJCQkvLyBSZWFkIHRoZSB2YWx1ZSAtLSB3aGljaCBjYW4gaW5jbHVkZSBvdGhlcgorCQkJLy8gZWxlbWVudHMgLS0gcmVhZCB0aGUgZW5kIHRhZywgYW5kIHJldHVybi4KKwkJCSsrcDsKKwkJCXAgPSBSZWFkVmFsdWUoIHAsIGRhdGEsIGVuY29kaW5nICk7CQkvLyBOb3RlIHRoaXMgaXMgYW4gRWxlbWVudCBtZXRob2QsIGFuZCB3aWxsIHNldCB0aGUgZXJyb3IgaWYgb25lIGhhcHBlbnMuCisJCQlpZiAoICFwIHx8ICEqcCApCisJCQkJcmV0dXJuIDA7CisKKwkJCS8vIFdlIHNob3VsZCBmaW5kIHRoZSBlbmQgdGFnIG5vdworCQkJaWYgKCBTdHJpbmdFcXVhbCggcCwgZW5kVGFnLmNfc3RyKCksIGZhbHNlLCBlbmNvZGluZyApICkKKwkJCXsKKwkJCQlwICs9IGVuZFRhZy5sZW5ndGgoKTsKKwkJCQlyZXR1cm4gcDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9SRUFESU5HX0VORF9UQUcsIHAsIGRhdGEsIGVuY29kaW5nICk7CisJCQkJcmV0dXJuIDA7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQkvLyBUcnkgdG8gcmVhZCBhbiBhdHRyaWJ1dGU6CisJCQlUaVhtbEF0dHJpYnV0ZSogYXR0cmliID0gbmV3IFRpWG1sQXR0cmlidXRlKCk7CisJCQlpZiAoICFhdHRyaWIgKQorCQkJeworCQkJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX09VVF9PRl9NRU1PUlksIHBFcnIsIGRhdGEsIGVuY29kaW5nICk7CisJCQkJcmV0dXJuIDA7CisJCQl9CisKKwkJCWF0dHJpYi0+U2V0RG9jdW1lbnQoIGRvY3VtZW50ICk7CisJCQljb25zdCBjaGFyKiBwRXJyID0gcDsKKwkJCXAgPSBhdHRyaWItPlBhcnNlKCBwLCBkYXRhLCBlbmNvZGluZyApOworCisJCQlpZiAoICFwIHx8ICEqcCApCisJCQl7CisJCQkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUEFSU0lOR19FTEVNRU5ULCBwRXJyLCBkYXRhLCBlbmNvZGluZyApOworCQkJCWRlbGV0ZSBhdHRyaWI7CisJCQkJcmV0dXJuIDA7CisJCQl9CisKKwkJCS8vIEhhbmRsZSB0aGUgc3RyYW5nZSBjYXNlIG9mIGRvdWJsZSBhdHRyaWJ1dGVzOgorCQkJVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggYXR0cmliLT5OYW1lKCkgKTsKKwkJCWlmICggbm9kZSApCisJCQl7CisJCQkJbm9kZS0+U2V0VmFsdWUoIGF0dHJpYi0+VmFsdWUoKSApOworCQkJCWRlbGV0ZSBhdHRyaWI7CisJCQkJcmV0dXJuIDA7CisJCQl9CisKKwkJCWF0dHJpYnV0ZVNldC5BZGQoIGF0dHJpYiApOworCQl9CisJfQorCXJldHVybiBwOworfQorCisKK2NvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6UmVhZFZhbHVlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisKKwkvLyBSZWFkIGluIHRleHQgYW5kIGVsZW1lbnRzIGluIGFueSBvcmRlci4KKwljb25zdCBjaGFyKiBwV2l0aFdoaXRlU3BhY2UgPSBwOworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKworCXdoaWxlICggcCAmJiAqcCApCisJeworCQlpZiAoICpwICE9ICc8JyApCisJCXsKKwkJCS8vIFRha2Ugd2hhdCB3ZSBoYXZlLCBtYWtlIGEgdGV4dCBlbGVtZW50LgorCQkJVGlYbWxUZXh0KiB0ZXh0Tm9kZSA9IG5ldyBUaVhtbFRleHQoICIiICk7CisKKwkJCWlmICggIXRleHROb2RlICkKKwkJCXsKKwkJCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9PVVRfT0ZfTUVNT1JZLCAwLCAwLCBlbmNvZGluZyApOworCQkJCSAgICByZXR1cm4gMDsKKwkJCX0KKworCQkJaWYgKCBUaVhtbEJhc2U6OklzV2hpdGVTcGFjZUNvbmRlbnNlZCgpICkKKwkJCXsKKwkJCQlwID0gdGV4dE5vZGUtPlBhcnNlKCBwLCBkYXRhLCBlbmNvZGluZyApOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8vIFNwZWNpYWwgY2FzZTogd2Ugd2FudCB0byBrZWVwIHRoZSB3aGl0ZSBzcGFjZQorCQkJCS8vIHNvIHRoYXQgbGVhZGluZyBzcGFjZXMgYXJlbid0IHJlbW92ZWQuCisJCQkJcCA9IHRleHROb2RlLT5QYXJzZSggcFdpdGhXaGl0ZVNwYWNlLCBkYXRhLCBlbmNvZGluZyApOworCQkJfQorCisJCQlpZiAoICF0ZXh0Tm9kZS0+QmxhbmsoKSApCisJCQkJTGlua0VuZENoaWxkKCB0ZXh0Tm9kZSApOworCQkJZWxzZQorCQkJCWRlbGV0ZSB0ZXh0Tm9kZTsKKwkJfSAKKwkJZWxzZSAKKwkJeworCQkJLy8gV2UgaGl0IGEgJzwnCisJCQkvLyBIYXZlIHdlIGhpdCBhIG5ldyBlbGVtZW50IG9yIGFuIGVuZCB0YWc/IFRoaXMgY291bGQgYWxzbyBiZQorCQkJLy8gYSBUaVhtbFRleHQgaW4gdGhlICJDREFUQSIgc3R5bGUuCisJCQlpZiAoIFN0cmluZ0VxdWFsKCBwLCAiPC8iLCBmYWxzZSwgZW5jb2RpbmcgKSApCisJCQl7CisJCQkJcmV0dXJuIHA7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJVGlYbWxOb2RlKiBub2RlID0gSWRlbnRpZnkoIHAsIGVuY29kaW5nICk7CisJCQkJaWYgKCBub2RlICkKKwkJCQl7CisJCQkJCXAgPSBub2RlLT5QYXJzZSggcCwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJCQkJTGlua0VuZENoaWxkKCBub2RlICk7CisJCQkJfQkJCQkKKwkJCQllbHNlCisJCQkJeworCQkJCQlyZXR1cm4gMDsKKwkJCQl9CisJCQl9CisJCX0KKwkJcFdpdGhXaGl0ZVNwYWNlID0gcDsKKwkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCX0KKworCWlmICggIXAgKQorCXsKKwkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUkVBRElOR19FTEVNRU5UX1ZBTFVFLCAwLCAwLCBlbmNvZGluZyApOworCX0JCisJcmV0dXJuIHA7Cit9CisKKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKK3ZvaWQgVGlYbWxVbmtub3duOjpTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQoreworCXdoaWxlICggaW4tPmdvb2QoKSApCisJeworCQlpbnQgYyA9IGluLT5nZXQoKTsJCisJCWlmICggYyA8PSAwICkKKwkJeworCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCQkJaWYgKCBkb2N1bWVudCApCisJCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCQlyZXR1cm47CisJCX0KKwkJKCp0YWcpICs9IChjaGFyKSBjOworCisJCWlmICggYyA9PSAnPicgKQorCQl7CisJCQkvLyBBbGwgaXMgd2VsbC4KKwkJCXJldHVybjsJCQorCQl9CisJfQorfQorI2VuZGlmCisKKworY29uc3QgY2hhciogVGlYbWxVbmtub3duOjpQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCit7CisJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKworCWlmICggZGF0YSApCisJeworCQlkYXRhLT5TdGFtcCggcCwgZW5jb2RpbmcgKTsKKwkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKKwl9CisJaWYgKCAhcCB8fCAhKnAgfHwgKnAgIT0gJzwnICkKKwl7CisJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfVU5LTk9XTiwgcCwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCSsrcDsKKyAgICB2YWx1ZSA9ICIiOworCisJd2hpbGUgKCBwICYmICpwICYmICpwICE9ICc+JyApCisJeworCQl2YWx1ZSArPSAqcDsKKwkJKytwOworCX0KKworCWlmICggIXAgKQorCXsKKwkJaWYgKCBkb2N1bWVudCApCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUEFSU0lOR19VTktOT1dOLCAwLCAwLCBlbmNvZGluZyApOworCX0KKwlpZiAoICpwID09ICc+JyApCisJCXJldHVybiBwKzE7CisJcmV0dXJuIHA7Cit9CisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCit2b2lkIFRpWG1sQ29tbWVudDo6U3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICkKK3sKKwl3aGlsZSAoIGluLT5nb29kKCkgKQorCXsKKwkJaW50IGMgPSBpbi0+Z2V0KCk7CQorCQlpZiAoIGMgPD0gMCApCisJCXsKKwkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKwkJCWlmICggZG9jdW1lbnQgKQorCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJcmV0dXJuOworCQl9CisKKwkJKCp0YWcpICs9IChjaGFyKSBjOworCisJCWlmICggYyA9PSAnPicgCisJCQkgJiYgdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDIgKSA9PSAnLScKKwkJCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMyApID09ICctJyApCisJCXsKKwkJCS8vIEFsbCBpcyB3ZWxsLgorCQkJcmV0dXJuOwkJCisJCX0KKwl9Cit9CisjZW5kaWYKKworCitjb25zdCBjaGFyKiBUaVhtbENvbW1lbnQ6OlBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJdmFsdWUgPSAiIjsKKworCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKworCWlmICggZGF0YSApCisJeworCQlkYXRhLT5TdGFtcCggcCwgZW5jb2RpbmcgKTsKKwkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKKwl9CisJY29uc3QgY2hhciogc3RhcnRUYWcgPSAiPCEtLSI7CisJY29uc3QgY2hhciogZW5kVGFnICAgPSAiLS0+IjsKKworCWlmICggIVN0cmluZ0VxdWFsKCBwLCBzdGFydFRhZywgZmFsc2UsIGVuY29kaW5nICkgKQorCXsKKwkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0NPTU1FTlQsIHAsIGRhdGEsIGVuY29kaW5nICk7CisJCXJldHVybiAwOworCX0KKwlwICs9IHN0cmxlbiggc3RhcnRUYWcgKTsKKwlwID0gUmVhZFRleHQoIHAsICZ2YWx1ZSwgZmFsc2UsIGVuZFRhZywgZmFsc2UsIGVuY29kaW5nICk7CisJcmV0dXJuIHA7Cit9CisKKworY29uc3QgY2hhciogVGlYbWxBdHRyaWJ1dGU6OlBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKK3sKKwlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7CisJaWYgKCAhcCB8fCAhKnAgKSByZXR1cm4gMDsKKworCWludCB0YWJzaXplID0gNDsKKwlpZiAoIGRvY3VtZW50ICkKKwkJdGFic2l6ZSA9IGRvY3VtZW50LT5UYWJTaXplKCk7CisKKwlpZiAoIGRhdGEgKQorCXsKKwkJZGF0YS0+U3RhbXAoIHAsIGVuY29kaW5nICk7CisJCWxvY2F0aW9uID0gZGF0YS0+Q3Vyc29yKCk7CisJfQorCS8vIFJlYWQgdGhlIG5hbWUsIHRoZSAnPScgYW5kIHRoZSB2YWx1ZS4KKwljb25zdCBjaGFyKiBwRXJyID0gcDsKKwlwID0gUmVhZE5hbWUoIHAsICZuYW1lLCBlbmNvZGluZyApOworCWlmICggIXAgfHwgISpwICkKKwl7CisJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywgcEVyciwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKKwlpZiAoICFwIHx8ICEqcCB8fCAqcCAhPSAnPScgKQorCXsKKwkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLCBwLCBkYXRhLCBlbmNvZGluZyApOworCQlyZXR1cm4gMDsKKwl9CisKKwkrK3A7CS8vIHNraXAgJz0nCisJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOworCWlmICggIXAgfHwgISpwICkKKwl7CisJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywgcCwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCQorCWNvbnN0IGNoYXIqIGVuZDsKKworCWlmICggKnAgPT0gJ1wnJyApCisJeworCQkrK3A7CisJCWVuZCA9ICJcJyI7CisJCXAgPSBSZWFkVGV4dCggcCwgJnZhbHVlLCBmYWxzZSwgZW5kLCBmYWxzZSwgZW5jb2RpbmcgKTsKKwl9CisJZWxzZSBpZiAoICpwID09ICciJyApCisJeworCQkrK3A7CisJCWVuZCA9ICJcIiI7CisJCXAgPSBSZWFkVGV4dCggcCwgJnZhbHVlLCBmYWxzZSwgZW5kLCBmYWxzZSwgZW5jb2RpbmcgKTsKKwl9CisJZWxzZQorCXsKKwkJLy8gQWxsIGF0dHJpYnV0ZSB2YWx1ZXMgc2hvdWxkIGJlIGluIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzLgorCQkvLyBCdXQgdGhpcyBpcyBzdWNoIGEgY29tbW9uIGVycm9yIHRoYXQgdGhlIHBhcnNlciB3aWxsIHRyeQorCQkvLyBpdHMgYmVzdCwgZXZlbiB3aXRob3V0IHRoZW0uCisJCXZhbHVlID0gIiI7CisJCXdoaWxlICggICAgcCAmJiAqcAkJCQkJCQkJCQkvLyBleGlzdGVuY2UKKwkJCQkmJiAhSXNXaGl0ZVNwYWNlKCAqcCApICYmICpwICE9ICdcbicgJiYgKnAgIT0gJ1xyJwkvLyB3aGl0ZXNwYWNlCisJCQkJJiYgKnAgIT0gJy8nICYmICpwICE9ICc+JyApCQkJCQkJLy8gdGFnIGVuZAorCQl7CisJCQl2YWx1ZSArPSAqcDsKKwkJCSsrcDsKKwkJfQorCX0KKwlyZXR1cm4gcDsKK30KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKK3ZvaWQgVGlYbWxUZXh0OjpTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQoreworCWlmICggY2RhdGEgKQorCXsKKwkJaW50IGMgPSBpbi0+Z2V0KCk7CQorCQlpZiAoIGMgPD0gMCApCisJCXsKKwkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKwkJCWlmICggZG9jdW1lbnQgKQorCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJcmV0dXJuOworCQl9CisKKwkJKCp0YWcpICs9IChjaGFyKSBjOworCisJCWlmICggYyA9PSAnPicgCisJCQkgJiYgdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDIgKSA9PSAnXScKKwkJCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMyApID09ICddJyApCisJCXsKKwkJCS8vIEFsbCBpcyB3ZWxsLgorCQkJcmV0dXJuOwkJCisJCX0KKwl9CisJZWxzZQorCXsKKwkJd2hpbGUgKCBpbi0+Z29vZCgpICkKKwkJeworCQkJaW50IGMgPSBpbi0+cGVlaygpOwkKKwkJCWlmICggYyA9PSAnPCcgKQorCQkJCXJldHVybjsKKwkJCWlmICggYyA8PSAwICkKKwkJCXsKKwkJCQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJCQkJaWYgKCBkb2N1bWVudCApCisJCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJKCp0YWcpICs9IChjaGFyKSBjOworCQkJaW4tPmdldCgpOworCQl9CisJfQorfQorI2VuZGlmCisKK2NvbnN0IGNoYXIqIFRpWG1sVGV4dDo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQoreworCXZhbHVlID0gIiI7CisJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOworCisJaWYgKCBkYXRhICkKKwl7CisJCWRhdGEtPlN0YW1wKCBwLCBlbmNvZGluZyApOworCQlsb2NhdGlvbiA9IGRhdGEtPkN1cnNvcigpOworCX0KKworCWNvbnN0IGNoYXIqIGNvbnN0IHN0YXJ0VGFnID0gIjwhW0NEQVRBWyI7CisJY29uc3QgY2hhciogY29uc3QgZW5kVGFnICAgPSAiXV0+IjsKKworCWlmICggY2RhdGEgfHwgU3RyaW5nRXF1YWwoIHAsIHN0YXJ0VGFnLCBmYWxzZSwgZW5jb2RpbmcgKSApCisJeworCQljZGF0YSA9IHRydWU7CisKKwkJaWYgKCAhU3RyaW5nRXF1YWwoIHAsIHN0YXJ0VGFnLCBmYWxzZSwgZW5jb2RpbmcgKSApCisJCXsKKwkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUEFSU0lOR19DREFUQSwgcCwgZGF0YSwgZW5jb2RpbmcgKTsKKwkJCXJldHVybiAwOworCQl9CisJCXAgKz0gc3RybGVuKCBzdGFydFRhZyApOworCisJCS8vIEtlZXAgYWxsIHRoZSB3aGl0ZSBzcGFjZSwgaWdub3JlIHRoZSBlbmNvZGluZywgZXRjLgorCQl3aGlsZSAoCSAgIHAgJiYgKnAKKwkJCQkmJiAhU3RyaW5nRXF1YWwoIHAsIGVuZFRhZywgZmFsc2UsIGVuY29kaW5nICkKKwkJCSAgKQorCQl7CisJCQl2YWx1ZSArPSAqcDsKKwkJCSsrcDsKKwkJfQorCisJCVRJWE1MX1NUUklORyBkdW1teTsgCisJCXAgPSBSZWFkVGV4dCggcCwgJmR1bW15LCBmYWxzZSwgZW5kVGFnLCBmYWxzZSwgZW5jb2RpbmcgKTsKKwkJcmV0dXJuIHA7CisJfQorCWVsc2UKKwl7CisJCWJvb2wgaWdub3JlV2hpdGUgPSB0cnVlOworCisJCWNvbnN0IGNoYXIqIGVuZCA9ICI8IjsKKwkJcCA9IFJlYWRUZXh0KCBwLCAmdmFsdWUsIGlnbm9yZVdoaXRlLCBlbmQsIGZhbHNlLCBlbmNvZGluZyApOworCQlpZiAoIHAgKQorCQkJcmV0dXJuIHAtMTsJLy8gZG9uJ3QgdHJ1bmNhdGUgdGhlICc8JworCQlyZXR1cm4gMDsKKwl9Cit9CisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCit2b2lkIFRpWG1sRGVjbGFyYXRpb246OlN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApCit7CisJd2hpbGUgKCBpbi0+Z29vZCgpICkKKwl7CisJCWludCBjID0gaW4tPmdldCgpOworCQlpZiAoIGMgPD0gMCApCisJCXsKKwkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKKwkJCWlmICggZG9jdW1lbnQgKQorCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCQkJcmV0dXJuOworCQl9CisJCSgqdGFnKSArPSAoY2hhcikgYzsKKworCQlpZiAoIGMgPT0gJz4nICkKKwkJeworCQkJLy8gQWxsIGlzIHdlbGwuCisJCQlyZXR1cm47CisJCX0KKwl9Cit9CisjZW5kaWYKKworY29uc3QgY2hhciogVGlYbWxEZWNsYXJhdGlvbjo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgX2VuY29kaW5nICkKK3sKKwlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIF9lbmNvZGluZyApOworCS8vIEZpbmQgdGhlIGJlZ2lubmluZywgZmluZCB0aGUgZW5kLCBhbmQgbG9vayBmb3IKKwkvLyB0aGUgc3R1ZmYgaW4tYmV0d2Vlbi4KKwlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7CisJaWYgKCAhcCB8fCAhKnAgfHwgIVN0cmluZ0VxdWFsKCBwLCAiPD94bWwiLCB0cnVlLCBfZW5jb2RpbmcgKSApCisJeworCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0RFQ0xBUkFUSU9OLCAwLCAwLCBfZW5jb2RpbmcgKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICggZGF0YSApCisJeworCQlkYXRhLT5TdGFtcCggcCwgX2VuY29kaW5nICk7CisJCWxvY2F0aW9uID0gZGF0YS0+Q3Vyc29yKCk7CisJfQorCXAgKz0gNTsKKworCXZlcnNpb24gPSAiIjsKKwllbmNvZGluZyA9ICIiOworCXN0YW5kYWxvbmUgPSAiIjsKKworCXdoaWxlICggcCAmJiAqcCApCisJeworCQlpZiAoICpwID09ICc+JyApCisJCXsKKwkJCSsrcDsKKwkJCXJldHVybiBwOworCQl9CisKKwkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBfZW5jb2RpbmcgKTsKKwkJaWYgKCBTdHJpbmdFcXVhbCggcCwgInZlcnNpb24iLCB0cnVlLCBfZW5jb2RpbmcgKSApCisJCXsKKwkJCVRpWG1sQXR0cmlidXRlIGF0dHJpYjsKKwkJCXAgPSBhdHRyaWIuUGFyc2UoIHAsIGRhdGEsIF9lbmNvZGluZyApOwkJCisJCQl2ZXJzaW9uID0gYXR0cmliLlZhbHVlKCk7CisJCX0KKwkJZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBwLCAiZW5jb2RpbmciLCB0cnVlLCBfZW5jb2RpbmcgKSApCisJCXsKKwkJCVRpWG1sQXR0cmlidXRlIGF0dHJpYjsKKwkJCXAgPSBhdHRyaWIuUGFyc2UoIHAsIGRhdGEsIF9lbmNvZGluZyApOwkJCisJCQllbmNvZGluZyA9IGF0dHJpYi5WYWx1ZSgpOworCQl9CisJCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggcCwgInN0YW5kYWxvbmUiLCB0cnVlLCBfZW5jb2RpbmcgKSApCisJCXsKKwkJCVRpWG1sQXR0cmlidXRlIGF0dHJpYjsKKwkJCXAgPSBhdHRyaWIuUGFyc2UoIHAsIGRhdGEsIF9lbmNvZGluZyApOwkJCisJCQlzdGFuZGFsb25lID0gYXR0cmliLlZhbHVlKCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvLyBSZWFkIG92ZXIgd2hhdGV2ZXIgaXQgaXMuCisJCQl3aGlsZSggcCAmJiAqcCAmJiAqcCAhPSAnPicgJiYgIUlzV2hpdGVTcGFjZSggKnAgKSApCisJCQkJKytwOworCQl9CisJfQorCXJldHVybiAwOworfQorCitib29sIFRpWG1sVGV4dDo6QmxhbmsoKSBjb25zdAoreworCWZvciAoIHVuc2lnbmVkIGk9MDsgaTx2YWx1ZS5sZW5ndGgoKTsgaSsrICkKKwkJaWYgKCAhSXNXaGl0ZVNwYWNlKCB2YWx1ZVtpXSApICkKKwkJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsKK30KKwpkaWZmIC0tZ2l0IGEvdXRmOHRlc3QuZ2lmIGIvdXRmOHRlc3QuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MTEwNzAKLS0tIC9kZXYvbnVsbAorKysgYi91dGY4dGVzdC5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdXRmOHRlc3QueG1sIGIvdXRmOHRlc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDcxY2UKLS0tIC9kZXYvbnVsbAorKysgYi91dGY4dGVzdC54bWwKQEAgLTAsMCArMSwxMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxkb2N1bWVudD4KKyAgICA8RW5nbGlzaCBuYW1lPSJuYW1lIiB2YWx1ZT0idmFsdWUiPlRoZSB3b3JsZCBoYXMgbWFueSBsYW5ndWFnZXM8L0VuZ2xpc2g+CisgICAgPFJ1c3NpYW4gbmFtZT0i0L3QsNC30LLQsNC90LjQtSjQuNC80Y8pIiB2YWx1ZT0i0YbQtdC90L3QvtGB0YLRjCI+0JzQuNGAINC40LzQtdC10YIg0LzQvdC+0LPQviDRj9C30YvQutC+0LI8L1J1c3NpYW4+CisgICAgPFNwYW5pc2ggbmFtZT0iZWwgbm9tYnJlIiB2YWx1ZT0iZWwgdmFsb3IiPmVsIG11bmRvIHRpZW5lIG11Y2hvcyBpZGlvbWFzPC9TcGFuaXNoPgorICAgIDxTaW1wbGlmaWVkQ2hpbmVzZSBuYW1lPSLlkI3lrZciIHZhbHVlPSLku7flgLwiPuS4lueVjOacieW+iOWkmuivreiogDwvU2ltcGxpZmllZENoaW5lc2U+CisgICAgPNCg0YPRgdGB0LrQuNC5INC90LDQt9Cy0LDQvdC40LU9Im5hbWUiINGG0LXQvdC90L7RgdGC0Yw9InZhbHVlIj4mbHQ70LjQvNC10LXRgiZndDs8L9Cg0YPRgdGB0LrQuNC5PgorICAgIDzmsYnor60g5ZCN5a2XPSJuYW1lIiDku7flgLw9InZhbHVlIj7kuJbnlYzmnInlvojlpJror63oqIA8L+axieivrT4KKyAgICA8SGVhdnk+Ik0mI3gwZUI7dCYjMjMwO2whIjwvSGVhdnk+CisgICAgPMOkPlVtbGF1dCBFbGVtZW50PC/DpD4KKzwvZG9jdW1lbnQ+CmRpZmYgLS1naXQgYS91dGY4dGVzdHZlcmlmeS54bWwgYi91dGY4dGVzdHZlcmlmeS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFhMzE5ZAotLS0gL2Rldi9udWxsCisrKyBiL3V0Zjh0ZXN0dmVyaWZ5LnhtbApAQCAtMCwwICsxLDExIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzxkb2N1bWVudD4KKyAgICA8RW5nbGlzaCBuYW1lPSJuYW1lIiB2YWx1ZT0idmFsdWUiPlRoZSB3b3JsZCBoYXMgbWFueSBsYW5ndWFnZXM8L0VuZ2xpc2g+CisgICAgPFJ1c3NpYW4gbmFtZT0i0L3QsNC30LLQsNC90LjQtSjQuNC80Y8pIiB2YWx1ZT0i0YbQtdC90L3QvtGB0YLRjCI+0JzQuNGAINC40LzQtdC10YIg0LzQvdC+0LPQviDRj9C30YvQutC+0LI8L1J1c3NpYW4+CisgICAgPFNwYW5pc2ggbmFtZT0iZWwgbm9tYnJlIiB2YWx1ZT0iZWwgdmFsb3IiPmVsIG11bmRvIHRpZW5lIG11Y2hvcyBpZGlvbWFzPC9TcGFuaXNoPgorICAgIDxTaW1wbGlmaWVkQ2hpbmVzZSBuYW1lPSLlkI3lrZciIHZhbHVlPSLku7flgLwiPuS4lueVjOacieW+iOWkmuivreiogDwvU2ltcGxpZmllZENoaW5lc2U+CisgICAgPNCg0YPRgdGB0LrQuNC5INC90LDQt9Cy0LDQvdC40LU9Im5hbWUiINGG0LXQvdC90L7RgdGC0Yw9InZhbHVlIj4mbHQ70LjQvNC10LXRgiZndDs8L9Cg0YPRgdGB0LrQuNC5PgorICAgIDzmsYnor60g5ZCN5a2XPSJuYW1lIiDku7flgLw9InZhbHVlIj7kuJbnlYzmnInlvojlpJror63oqIA8L+axieivrT4KKyAgICA8SGVhdnk+JnF1b3Q7TcOrdMOmbCEmcXVvdDs8L0hlYXZ5PgorICAgIDzDpD5VbWxhdXQgRWxlbWVudDwvw6Q+Cis8L2RvY3VtZW50PgpkaWZmIC0tZ2l0IGEveG1sdGVzdC5jcHAgYi94bWx0ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWEzNTBlCi0tLSAvZGV2L251bGwKKysrIGIveG1sdGVzdC5jcHAKQEAgLTAsMCArMSwxMDUyIEBACisvKgorICAgVGVzdCBwcm9ncmFtIGZvciBUaW55WE1MLgorKi8KKworCisjaW5jbHVkZSAidGlueXhtbC5oIgorCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCSNpbmNsdWRlIDxpb3N0cmVhbT4KKwkjaW5jbHVkZSA8c3N0cmVhbT4KKwl1c2luZyBuYW1lc3BhY2Ugc3RkOworI2Vsc2UKKwkjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZCggV0lOMzIgKSAmJiBkZWZpbmVkKCBUVU5FICkKKwkjaW5jbHVkZSA8d2luZG93cy5oPgorCS8vIEFwb2xvZ2llcyB0byBub24td2luZG93cyB1c2VycyEgQnV0IEkgbmVlZCBzb21lIGdvb2QgdGltZXJzIGZvcgorCS8vIHByb2ZpbGluZywgYW5kIHRoZXNlIGFyZSB2ZXJ5IHBsYXRmb3JtIHNwZWNpZmljLgorCV9faW50NjQgc3RhcnQ7CisJX19pbnQ2NCBlbmQ7CisJX19pbnQ2NCBmcmVxOworI2VuZGlmCisKK3N0YXRpYyBpbnQgZ1Bhc3MgPSAwOworc3RhdGljIGludCBnRmFpbCA9IDA7CisKKworYm9vbCBYbWxUZXN0IChjb25zdCBjaGFyKiB0ZXN0U3RyaW5nLCBjb25zdCBjaGFyKiBleHBlY3RlZCwgY29uc3QgY2hhciogZm91bmQsIGJvb2wgbm9FY2hvID0gZmFsc2UpCit7CisJYm9vbCBwYXNzID0gIXN0cmNtcCggZXhwZWN0ZWQsIGZvdW5kICk7CisJaWYgKCBwYXNzICkKKwkJcHJpbnRmICgiW3Bhc3NdIik7CisJZWxzZQorCQlwcmludGYgKCJbZmFpbF0iKTsKKworCWlmICggbm9FY2hvICkKKwkJcHJpbnRmICgiICVzXG4iLCB0ZXN0U3RyaW5nKTsKKwllbHNlCisJCXByaW50ZiAoIiAlcyBbJXNdWyVzXVxuIiwgdGVzdFN0cmluZywgZXhwZWN0ZWQsIGZvdW5kKTsKKworCWlmICggcGFzcyApCisJCSsrZ1Bhc3M7CisJZWxzZQorCQkrK2dGYWlsOworCXJldHVybiBwYXNzOworfQorCisKK2Jvb2wgWG1sVGVzdCggY29uc3QgY2hhciogdGVzdFN0cmluZywgaW50IGV4cGVjdGVkLCBpbnQgZm91bmQsIGJvb2wgbm9FY2hvID0gZmFsc2UgKQoreworCWJvb2wgcGFzcyA9ICggZXhwZWN0ZWQgPT0gZm91bmQgKTsKKwlpZiAoIHBhc3MgKQorCQlwcmludGYgKCJbcGFzc10iKTsKKwllbHNlCisJCXByaW50ZiAoIltmYWlsXSIpOworCisJaWYgKCBub0VjaG8gKQorCQlwcmludGYgKCIgJXNcbiIsIHRlc3RTdHJpbmcpOworCWVsc2UKKwkJcHJpbnRmICgiICVzIFslZF1bJWRdXG4iLCB0ZXN0U3RyaW5nLCBleHBlY3RlZCwgZm91bmQpOworCisJaWYgKCBwYXNzICkKKwkJKytnUGFzczsKKwllbHNlCisJCSsrZ0ZhaWw7CisJcmV0dXJuIHBhc3M7Cit9CisKKworLy8KKy8vIFRoaXMgZmlsZSBkZW1vbnN0cmF0ZXMgc29tZSBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIFRpbnlYbWwuCisvLyBOb3RlIHRoYXQgdGhlIGV4YW1wbGUgaXMgdmVyeSBjb250cml2ZWQuIEl0IHByZXN1bWVzIHlvdSBrbm93CisvLyB3aGF0IGlzIGluIHRoZSBYTUwgZmlsZS4gQnV0IGl0IGRvZXMgdGVzdCB0aGUgYmFzaWMgb3BlcmF0aW9ucywKKy8vIGFuZCBzaG93IGhvdyB0byBhZGQgYW5kIHJlbW92ZSBub2Rlcy4KKy8vCisKK2ludCBtYWluKCkKK3sKKwkvLworCS8vIFdlIHN0YXJ0IHdpdGggdGhlICdkZW1vU3RhcnQnIHRvZG8gbGlzdC4gUHJvY2VzcyBpdC4gQW5kCisJLy8gc2hvdWxkIGhvcGVmdWxseSBlbmQgdXAgd2l0aCB0aGUgdG9kbyBsaXN0IGFzIGlsbHVzdHJhdGVkLgorCS8vCisJY29uc3QgY2hhciogZGVtb1N0YXJ0ID0KKwkJIjw/eG1sIHZlcnNpb249XCIxLjBcIiAgc3RhbmRhbG9uZT0nbm8nID5cbiIKKwkJIjwhLS0gT3VyIHRvIGRvIGxpc3QgZGF0YSAtLT4iCisJCSI8VG9Ebz5cbiIKKwkJIjwhLS0gRG8gSSBuZWVkIGEgc2VjdXJlIFBEQT8gLS0+XG4iCisJCSI8SXRlbSBwcmlvcml0eT1cIjFcIiBkaXN0YW5jZT0nY2xvc2UnPiBHbyB0byB0aGUgPGJvbGQ+VG95IHN0b3JlITwvYm9sZD48L0l0ZW0+IgorCQkiPEl0ZW0gcHJpb3JpdHk9XCIyXCIgZGlzdGFuY2U9J25vbmUnPiBEbyBiaWxscyAgIDwvSXRlbT4iCisJCSI8SXRlbSBwcmlvcml0eT1cIjJcIiBkaXN0YW5jZT0nZmFyICZhbXA7IGJhY2snPiBMb29rIGZvciBFdmlsIERpbm9zYXVycyEgPC9JdGVtPiIKKwkJIjwvVG9Ebz4iOworCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCS8qCVdoYXQgdGhlIHRvZG8gbGlzdCBzaG91bGQgbG9vayBsaWtlIGFmdGVyIHByb2Nlc3NpbmcuCisJCUluIHN0cmVhbSAobm8gZm9ybWF0dGluZykgcmVwcmVzZW50YXRpb24uICovCisJY29uc3QgY2hhciogZGVtb0VuZCA9CisJCSI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgc3RhbmRhbG9uZT1cIm5vXCIgPz4iCisJCSI8IS0tIE91ciB0byBkbyBsaXN0IGRhdGEgLS0+IgorCQkiPFRvRG8+IgorCQkiPCEtLSBEbyBJIG5lZWQgYSBzZWN1cmUgUERBPyAtLT4iCisJCSI8SXRlbSBwcmlvcml0eT1cIjJcIiBkaXN0YW5jZT1cImNsb3NlXCI+R28gdG8gdGhlIgorCQkiPGJvbGQ+VG95IHN0b3JlISIKKwkJIjwvYm9sZD4iCisJCSI8L0l0ZW0+IgorCQkiPEl0ZW0gcHJpb3JpdHk9XCIxXCIgZGlzdGFuY2U9XCJmYXJcIj5UYWxrIHRvOiIKKwkJIjxNZWV0aW5nIHdoZXJlPVwiU2Nob29sXCI+IgorCQkiPEF0dGVuZGVlIG5hbWU9XCJNYXJwbGVcIiBwb3NpdGlvbj1cInRlYWNoZXJcIiAvPiIKKwkJIjxBdHRlbmRlZSBuYW1lPVwiVm9lbFwiIHBvc2l0aW9uPVwiY291bnNlbG9yXCIgLz4iCisJCSI8L01lZXRpbmc+IgorCQkiPE1lZXRpbmcgd2hlcmU9XCJMdW5jaFwiIC8+IgorCQkiPC9JdGVtPiIKKwkJIjxJdGVtIHByaW9yaXR5PVwiMlwiIGRpc3RhbmNlPVwiaGVyZVwiPkRvIGJpbGxzIgorCQkiPC9JdGVtPiIKKwkJIjwvVG9Ebz4iOworI2VuZGlmCisKKwkvLyBUaGUgZXhhbXBsZSBwYXJzZXMgZnJvbSB0aGUgY2hhcmFjdGVyIHN0cmluZyAoYWJvdmUpOgorCSNpZiBkZWZpbmVkKCBXSU4zMiApICYmIGRlZmluZWQoIFRVTkUgKQorCVF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCAoTEFSR0VfSU5URUdFUiopICgmc3RhcnQpICk7CisJI2VuZGlmCQorCisJeworCQkvLyBXcml0ZSB0byBhIGZpbGUgYW5kIHJlYWQgaXQgYmFjaywgdG8gY2hlY2sgZmlsZSBJL08uCisKKwkJVGlYbWxEb2N1bWVudCBkb2MoICJkZW1vdGVzdC54bWwiICk7CisJCWRvYy5QYXJzZSggZGVtb1N0YXJ0ICk7CisKKwkJaWYgKCBkb2MuRXJyb3IoKSApCisJCXsKKwkJCXByaW50ZiggIkVycm9yIGluICVzOiAlc1xuIiwgZG9jLlZhbHVlKCksIGRvYy5FcnJvckRlc2MoKSApOworCQkJZXhpdCggMSApOworCQl9CisJCWRvYy5TYXZlRmlsZSgpOworCX0KKworCVRpWG1sRG9jdW1lbnQgZG9jKCAiZGVtb3Rlc3QueG1sIiApOworCWJvb2wgbG9hZE9rYXkgPSBkb2MuTG9hZEZpbGUoKTsKKworCWlmICggIWxvYWRPa2F5ICkKKwl7CisJCXByaW50ZiggIkNvdWxkIG5vdCBsb2FkIHRlc3QgZmlsZSAnZGVtb3Rlc3QueG1sJy4gRXJyb3I9JyVzJy4gRXhpdGluZy5cbiIsIGRvYy5FcnJvckRlc2MoKSApOworCQlleGl0KCAxICk7CisJfQorCisJcHJpbnRmKCAiKiogRGVtbyBkb2MgcmVhZCBmcm9tIGRpc2s6ICoqIFxuXG4iICk7CisJZG9jLlByaW50KCBzdGRvdXQgKTsKKworCVRpWG1sTm9kZSogbm9kZSA9IDA7CisJVGlYbWxFbGVtZW50KiB0b2RvRWxlbWVudCA9IDA7CisJVGlYbWxFbGVtZW50KiBpdGVtRWxlbWVudCA9IDA7CisKKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJLy8gQW4gZXhhbXBsZSBvZiBjaGFuZ2luZyBleGlzdGluZyBhdHRyaWJ1dGVzLCBhbmQgcmVtb3ZpbmcKKwkvLyBhbiBlbGVtZW50IGZyb20gdGhlIGRvY3VtZW50LgorCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvLyBHZXQgdGhlICJUb0RvIiBlbGVtZW50LgorCS8vIEl0IGlzIGEgY2hpbGQgb2YgdGhlIGRvY3VtZW50LCBhbmQgY2FuIGJlIHNlbGVjdGVkIGJ5IG5hbWUuCisJbm9kZSA9IGRvYy5GaXJzdENoaWxkKCAiVG9EbyIgKTsKKwlhc3NlcnQoIG5vZGUgKTsKKwl0b2RvRWxlbWVudCA9IG5vZGUtPlRvRWxlbWVudCgpOworCWFzc2VydCggdG9kb0VsZW1lbnQgICk7CisKKwkvLyBHb2luZyB0byB0aGUgdG95IHN0b3JlIGlzIG5vdyBvdXIgc2Vjb25kIHByaW9yaXR5Li4uCisJLy8gU28gc2V0IHRoZSAicHJpb3JpdHkiIGF0dHJpYnV0ZSBvZiB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdC4KKwlub2RlID0gdG9kb0VsZW1lbnQtPkZpcnN0Q2hpbGRFbGVtZW50KCk7CS8vIFRoaXMgc2tpcHMgdGhlICJQREEiIGNvbW1lbnQuCisJYXNzZXJ0KCBub2RlICk7CisJaXRlbUVsZW1lbnQgPSBub2RlLT5Ub0VsZW1lbnQoKTsKKwlhc3NlcnQoIGl0ZW1FbGVtZW50ICApOworCWl0ZW1FbGVtZW50LT5TZXRBdHRyaWJ1dGUoICJwcmlvcml0eSIsIDIgKTsKKworCS8vIENoYW5nZSB0aGUgZGlzdGFuY2UgdG8gImRvaW5nIGJpbGxzIiBmcm9tCisJLy8gIm5vbmUiIHRvICJoZXJlIi4gSXQncyB0aGUgbmV4dCBzaWJsaW5nIGVsZW1lbnQuCisJaXRlbUVsZW1lbnQgPSBpdGVtRWxlbWVudC0+TmV4dFNpYmxpbmdFbGVtZW50KCk7CisJYXNzZXJ0KCBpdGVtRWxlbWVudCApOworCWl0ZW1FbGVtZW50LT5TZXRBdHRyaWJ1dGUoICJkaXN0YW5jZSIsICJoZXJlIiApOworCisJLy8gUmVtb3ZlIHRoZSAiTG9vayBmb3IgRXZpbCBEaW5vc2F1cnMhIiBpdGVtLgorCS8vIEl0IGlzIDEgbW9yZSBzaWJsaW5nIGF3YXkuIFdlIGFzayB0aGUgcGFyZW50IHRvIHJlbW92ZQorCS8vIGEgcGFydGljdWxhciBjaGlsZC4KKwlpdGVtRWxlbWVudCA9IGl0ZW1FbGVtZW50LT5OZXh0U2libGluZ0VsZW1lbnQoKTsKKwl0b2RvRWxlbWVudC0+UmVtb3ZlQ2hpbGQoIGl0ZW1FbGVtZW50ICk7CisKKwlpdGVtRWxlbWVudCA9IDA7CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vIFdoYXQgZm9sbG93cyBpcyBhbiBleGFtcGxlIG9mIGNyZWF0ZWQgZWxlbWVudHMgYW5kIHRleHQKKwkvLyBub2RlcyBhbmQgYWRkaW5nIHRoZW0gdG8gdGhlIGRvY3VtZW50LgorCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvLyBBZGQgc29tZSBtZWV0aW5ncy4KKwlUaVhtbEVsZW1lbnQgaXRlbSggIkl0ZW0iICk7CisJaXRlbS5TZXRBdHRyaWJ1dGUoICJwcmlvcml0eSIsICIxIiApOworCWl0ZW0uU2V0QXR0cmlidXRlKCAiZGlzdGFuY2UiLCAiZmFyIiApOworCisJVGlYbWxUZXh0IHRleHQoICJUYWxrIHRvOiIgKTsKKworCVRpWG1sRWxlbWVudCBtZWV0aW5nMSggIk1lZXRpbmciICk7CisJbWVldGluZzEuU2V0QXR0cmlidXRlKCAid2hlcmUiLCAiU2Nob29sIiApOworCisJVGlYbWxFbGVtZW50IG1lZXRpbmcyKCAiTWVldGluZyIgKTsKKwltZWV0aW5nMi5TZXRBdHRyaWJ1dGUoICJ3aGVyZSIsICJMdW5jaCIgKTsKKworCVRpWG1sRWxlbWVudCBhdHRlbmRlZTEoICJBdHRlbmRlZSIgKTsKKwlhdHRlbmRlZTEuU2V0QXR0cmlidXRlKCAibmFtZSIsICJNYXJwbGUiICk7CisJYXR0ZW5kZWUxLlNldEF0dHJpYnV0ZSggInBvc2l0aW9uIiwgInRlYWNoZXIiICk7CisKKwlUaVhtbEVsZW1lbnQgYXR0ZW5kZWUyKCAiQXR0ZW5kZWUiICk7CisJYXR0ZW5kZWUyLlNldEF0dHJpYnV0ZSggIm5hbWUiLCAiVm9lbCIgKTsKKwlhdHRlbmRlZTIuU2V0QXR0cmlidXRlKCAicG9zaXRpb24iLCAiY291bnNlbG9yIiApOworCisJLy8gQXNzZW1ibGUgdGhlIG5vZGVzIHdlJ3ZlIGNyZWF0ZWQ6CisJbWVldGluZzEuSW5zZXJ0RW5kQ2hpbGQoIGF0dGVuZGVlMSApOworCW1lZXRpbmcxLkluc2VydEVuZENoaWxkKCBhdHRlbmRlZTIgKTsKKworCWl0ZW0uSW5zZXJ0RW5kQ2hpbGQoIHRleHQgKTsKKwlpdGVtLkluc2VydEVuZENoaWxkKCBtZWV0aW5nMSApOworCWl0ZW0uSW5zZXJ0RW5kQ2hpbGQoIG1lZXRpbmcyICk7CisKKwkvLyBBbmQgYWRkIHRoZSBub2RlIHRvIHRoZSBleGlzdGluZyBsaXN0IGFmdGVyIHRoZSBmaXJzdCBjaGlsZC4KKwlub2RlID0gdG9kb0VsZW1lbnQtPkZpcnN0Q2hpbGQoICJJdGVtIiApOworCWFzc2VydCggbm9kZSApOworCWl0ZW1FbGVtZW50ID0gbm9kZS0+VG9FbGVtZW50KCk7CisJYXNzZXJ0KCBpdGVtRWxlbWVudCApOworCisJdG9kb0VsZW1lbnQtPkluc2VydEFmdGVyQ2hpbGQoIGl0ZW1FbGVtZW50LCBpdGVtICk7CisKKwlwcmludGYoICJcbioqIERlbW8gZG9jIHByb2Nlc3NlZDogKiogXG5cbiIgKTsKKwlkb2MuUHJpbnQoIHN0ZG91dCApOworCisKKyNpZmRlZiBUSVhNTF9VU0VfU1RMCisJcHJpbnRmKCAiKiogRGVtbyBkb2MgcHJvY2Vzc2VkIHRvIHN0cmVhbTogKiogXG5cbiIgKTsKKwljb3V0IDw8IGRvYyA8PCBlbmRsIDw8IGVuZGw7CisjZW5kaWYKKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJLy8gRGlmZmVyZW50IHRlc3RzLi4uZG8gd2UgaGF2ZSB3aGF0IHdlIGV4cGVjdD8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJaW50IGNvdW50ID0gMDsKKwlUaVhtbEVsZW1lbnQqCWVsZW1lbnQ7CisKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwljb3V0IDw8ICIqKiBCYXNpYyBzdHJ1Y3R1cmUuICoqXG4iOworCW9zdHJpbmdzdHJlYW0gb3V0cHV0U3RyZWFtKCBvc3RyaW5nc3RyZWFtOjpvdXQgKTsKKwlvdXRwdXRTdHJlYW0gPDwgZG9jOworCVhtbFRlc3QoICJPdXRwdXQgc3RyZWFtIGNvcnJlY3QuIiwJc3RyaW5nKCBkZW1vRW5kICkuY19zdHIoKSwKKwkJCQkJCQkJCQlvdXRwdXRTdHJlYW0uc3RyKCkuY19zdHIoKSwgdHJ1ZSApOworI2VuZGlmCisKKwlub2RlID0gZG9jLlJvb3RFbGVtZW50KCk7CisJWG1sVGVzdCggIlJvb3QgZWxlbWVudCBleGlzdHMuIiwgdHJ1ZSwgKCBub2RlICE9IDAgJiYgbm9kZS0+VG9FbGVtZW50KCkgKSApOworCVhtbFRlc3QgKCAiUm9vdCBlbGVtZW50IHZhbHVlIGlzICdUb0RvJy4iLCAiVG9EbyIsICBub2RlLT5WYWx1ZSgpKTsKKworCW5vZGUgPSBub2RlLT5GaXJzdENoaWxkKCk7CisJWG1sVGVzdCggIkZpcnN0IGNoaWxkIGV4aXN0cyAmIGlzIGEgY29tbWVudC4iLCB0cnVlLCAoIG5vZGUgIT0gMCAmJiBub2RlLT5Ub0NvbW1lbnQoKSApICk7CisJbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCk7CisJWG1sVGVzdCggIlNpYmxpbmcgZWxlbWVudCBleGlzdHMgJiBpcyBhbiBlbGVtZW50LiIsIHRydWUsICggbm9kZSAhPSAwICYmIG5vZGUtPlRvRWxlbWVudCgpICkgKTsKKwlYbWxUZXN0ICggIlZhbHVlIGlzICdJdGVtJy4iLCAiSXRlbSIsIG5vZGUtPlZhbHVlKCkgKTsKKworCW5vZGUgPSBub2RlLT5GaXJzdENoaWxkKCk7CisJWG1sVGVzdCAoICJGaXJzdCBjaGlsZCBleGlzdHMuIiwgdHJ1ZSwgKCBub2RlICE9IDAgJiYgbm9kZS0+VG9UZXh0KCkgKSApOworCVhtbFRlc3QgKCAiVmFsdWUgaXMgJ0dvIHRvIHRoZScuIiwgIkdvIHRvIHRoZSIsIG5vZGUtPlZhbHVlKCkgKTsKKworCisJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisJcHJpbnRmICgiXG4qKiBJdGVyYXRvcnMuICoqXG4iKTsKKworCS8vIFdhbGsgYWxsIHRoZSB0b3AgbGV2ZWwgbm9kZXMgb2YgdGhlIGRvY3VtZW50LgorCWNvdW50ID0gMDsKKwlmb3IoIG5vZGUgPSBkb2MuRmlyc3RDaGlsZCgpOworCQkgbm9kZTsKKwkJIG5vZGUgPSBub2RlLT5OZXh0U2libGluZygpICkKKwl7CisJCWNvdW50Kys7CisJfQorCVhtbFRlc3QoICJUb3AgbGV2ZWwgbm9kZXMsIHVzaW5nIEZpcnN0IC8gTmV4dC4iLCAzLCBjb3VudCApOworCisJY291bnQgPSAwOworCWZvciggbm9kZSA9IGRvYy5MYXN0Q2hpbGQoKTsKKwkJIG5vZGU7CisJCSBub2RlID0gbm9kZS0+UHJldmlvdXNTaWJsaW5nKCkgKQorCXsKKwkJY291bnQrKzsKKwl9CisJWG1sVGVzdCggIlRvcCBsZXZlbCBub2RlcywgdXNpbmcgTGFzdCAvIFByZXZpb3VzLiIsIDMsIGNvdW50ICk7CisKKwkvLyBXYWxrIGFsbCB0aGUgdG9wIGxldmVsIG5vZGVzIG9mIHRoZSBkb2N1bWVudCwKKwkvLyB1c2luZyBhIGRpZmZlcmVudCBzeW50YXguCisJY291bnQgPSAwOworCWZvciggbm9kZSA9IGRvYy5JdGVyYXRlQ2hpbGRyZW4oIDAgKTsKKwkJIG5vZGU7CisJCSBub2RlID0gZG9jLkl0ZXJhdGVDaGlsZHJlbiggbm9kZSApICkKKwl7CisJCWNvdW50Kys7CisJfQorCVhtbFRlc3QoICJUb3AgbGV2ZWwgbm9kZXMsIHVzaW5nIEl0ZXJhdGVDaGlsZHJlbi4iLCAzLCBjb3VudCApOworCisJLy8gV2FsayBhbGwgdGhlIGVsZW1lbnRzIGluIGEgbm9kZS4KKwljb3VudCA9IDA7CisJZm9yKCBlbGVtZW50ID0gdG9kb0VsZW1lbnQtPkZpcnN0Q2hpbGRFbGVtZW50KCk7CisJCSBlbGVtZW50OworCQkgZWxlbWVudCA9IGVsZW1lbnQtPk5leHRTaWJsaW5nRWxlbWVudCgpICkKKwl7CisJCWNvdW50Kys7CisJfQorCVhtbFRlc3QoICJDaGlsZHJlbiBvZiB0aGUgJ1RvRG8nIGVsZW1lbnQsIHVzaW5nIEZpcnN0IC8gTmV4dC4iLAorCQkzLCBjb3VudCApOworCisJLy8gV2FsayBhbGwgdGhlIGVsZW1lbnRzIGluIGEgbm9kZSBieSB2YWx1ZS4KKwljb3VudCA9IDA7CisJZm9yKCBub2RlID0gdG9kb0VsZW1lbnQtPkZpcnN0Q2hpbGQoICJJdGVtIiApOworCQkgbm9kZTsKKwkJIG5vZGUgPSBub2RlLT5OZXh0U2libGluZyggIkl0ZW0iICkgKQorCXsKKwkJY291bnQrKzsKKwl9CisJWG1sVGVzdCggIidJdGVtJyBjaGlsZHJlbiBvZiB0aGUgJ1RvRG8nIGVsZW1lbnQsIHVzaW5nIEZpcnN0L05leHQuIiwgMywgY291bnQgKTsKKworCWNvdW50ID0gMDsKKwlmb3IoIG5vZGUgPSB0b2RvRWxlbWVudC0+TGFzdENoaWxkKCAiSXRlbSIgKTsKKwkJIG5vZGU7CisJCSBub2RlID0gbm9kZS0+UHJldmlvdXNTaWJsaW5nKCAiSXRlbSIgKSApCisJeworCQljb3VudCsrOworCX0KKwlYbWxUZXN0KCAiJ0l0ZW0nIGNoaWxkcmVuIG9mIHRoZSAnVG9EbycgZWxlbWVudCwgdXNpbmcgTGFzdC9QcmV2aW91cy4iLCAzLCBjb3VudCApOworCisjaWZkZWYgVElYTUxfVVNFX1NUTAorCXsKKwkJY291dCA8PCAiXG4qKiBQYXJzaW5nLiAqKlxuIjsKKwkJaXN0cmluZ3N0cmVhbSBwYXJzZTAoICI8RWxlbWVudDAgYXR0cmlidXRlMD0nZm9vMCcgYXR0cmlidXRlMT0gbm9xdW90ZXMgYXR0cmlidXRlMiA9ICcmZ3Q7JyAvPiIgKTsKKwkJVGlYbWxFbGVtZW50IGVsZW1lbnQwKCAiZGVmYXVsdCIgKTsKKwkJcGFyc2UwID4+IGVsZW1lbnQwOworCisJCVhtbFRlc3QgKCAiRWxlbWVudCBwYXJzZWQsIHZhbHVlIGlzICdFbGVtZW50MCcuIiwgIkVsZW1lbnQwIiwgZWxlbWVudDAuVmFsdWUoKSApOworCQlYbWxUZXN0ICggIlJlYWRzIGF0dHJpYnV0ZSAnYXR0cmlidXRlMD1cImZvbzBcIicuIiwgImZvbzAiLCBlbGVtZW50MC5BdHRyaWJ1dGUoICJhdHRyaWJ1dGUwIiApKTsKKwkJWG1sVGVzdCAoICJSZWFkcyBpbmNvcnJlY3RseSBmb3JtYXR0ZWQgJ2F0dHJpYnV0ZTE9bm9xdW90ZXMnLiIsICJub3F1b3RlcyIsIGVsZW1lbnQwLkF0dHJpYnV0ZSggImF0dHJpYnV0ZTEiICkgKTsKKwkJWG1sVGVzdCAoICJSZWFkIGF0dHJpYnV0ZSB3aXRoIGVudGl0eSB2YWx1ZSAnPicuIiwgIj4iLCBlbGVtZW50MC5BdHRyaWJ1dGUoICJhdHRyaWJ1dGUyIiApICk7CisJfQorI2VuZGlmCisKKwl7CisJCWNvbnN0IGNoYXIqIGVycm9yID0JIjw/eG1sIHZlcnNpb249XCIxLjBcIiBzdGFuZGFsb25lPVwibm9cIiA/PlxuIgorCQkJCQkJCSI8cGFzc2FnZXMgY291bnQ9XCIwMDZcIiBmb3JtYXR2ZXJzaW9uPVwiMjAwMjA2MjBcIj5cbiIKKwkJCQkJCQkiICAgIDx3cm9uZyBlcnJvcj5cbiIKKwkJCQkJCQkiPC9wYXNzYWdlcz4iOworCisgICAgICAgIFRpWG1sRG9jdW1lbnQgZG9jOworCQlkb2MuUGFyc2UoIGVycm9yICk7CisJCVhtbFRlc3QoICJFcnJvciByb3ciLCBkb2MuRXJyb3JSb3coKSwgMyApOworCQlYbWxUZXN0KCAiRXJyb3IgY29sdW1uIiwgZG9jLkVycm9yQ29sKCksIDE3ICk7CisJCS8vcHJpbnRmKCAiZXJyb3I9JWQgaWQ9JyVzJyByb3cgJWQgY29sJWRcbiIsIChpbnQpIGRvYy5FcnJvcigpLCBkb2MuRXJyb3JEZXNjKCksIGRvYy5FcnJvclJvdygpKzEsIGRvYy5FcnJvckNvbCgpICsgMSApOworCisJfQorCXsKKwkJY29uc3QgY2hhciogc3RyID0JIlx0PD94bWwgdmVyc2lvbj1cIjEuMFwiIHN0YW5kYWxvbmU9XCJub1wiID8+XHQ8cm9vbSBkb29ycz0nMic+XG4iCisJCQkJCQkJIiAgPCEtLSBTaWxseSBleGFtcGxlIC0tPlxuIgorCQkJCQkJCSIgICAgPGRvb3Igd2FsbD0nbm9ydGgnPkEgZ3JlYXQgZG9vciE8L2Rvb3I+XG4iCisJCQkJCQkJIlx0PGRvb3Igd2FsbD0nZWFzdCcvPiIKKwkJCQkJCQkiPC9yb29tPiI7CisKKyAgICAgICAgVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggc3RyICk7CisKKwkJVGlYbWxIYW5kbGUgZG9jSGFuZGxlKCAmZG9jICk7CisJCVRpWG1sSGFuZGxlIHJvb21IYW5kbGUgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZEVsZW1lbnQoICJyb29tIiApOworCQlUaVhtbEhhbmRsZSBjb21tZW50SGFuZGxlID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGRFbGVtZW50KCAicm9vbSIgKS5GaXJzdENoaWxkKCk7CisJCVRpWG1sSGFuZGxlIHRleHRIYW5kbGUgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZEVsZW1lbnQoICJyb29tIiApLkNoaWxkRWxlbWVudCggImRvb3IiLCAwICkuRmlyc3RDaGlsZCgpOworCQlUaVhtbEhhbmRsZSBkb29yMEhhbmRsZSA9IGRvY0hhbmRsZS5GaXJzdENoaWxkRWxlbWVudCggInJvb20iICkuQ2hpbGRFbGVtZW50KCAwICk7CisJCVRpWG1sSGFuZGxlIGRvb3IxSGFuZGxlID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGRFbGVtZW50KCAicm9vbSIgKS5DaGlsZEVsZW1lbnQoIDEgKTsKKworCQlhc3NlcnQoIGRvY0hhbmRsZS5Ob2RlKCkgKTsKKwkJYXNzZXJ0KCByb29tSGFuZGxlLkVsZW1lbnQoKSApOworCQlhc3NlcnQoIGNvbW1lbnRIYW5kbGUuTm9kZSgpICk7CisJCWFzc2VydCggdGV4dEhhbmRsZS5UZXh0KCkgKTsKKwkJYXNzZXJ0KCBkb29yMEhhbmRsZS5FbGVtZW50KCkgKTsKKwkJYXNzZXJ0KCBkb29yMUhhbmRsZS5FbGVtZW50KCkgKTsKKworCQlUaVhtbERlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiA9IGRvYy5GaXJzdENoaWxkKCktPlRvRGVjbGFyYXRpb24oKTsKKwkJYXNzZXJ0KCBkZWNsYXJhdGlvbiApOworCQlUaVhtbEVsZW1lbnQqIHJvb20gPSByb29tSGFuZGxlLkVsZW1lbnQoKTsKKwkJYXNzZXJ0KCByb29tICk7CisJCVRpWG1sQXR0cmlidXRlKiBkb29ycyA9IHJvb20tPkZpcnN0QXR0cmlidXRlKCk7CisJCWFzc2VydCggZG9vcnMgKTsKKwkJVGlYbWxUZXh0KiB0ZXh0ID0gdGV4dEhhbmRsZS5UZXh0KCk7CisJCVRpWG1sQ29tbWVudCogY29tbWVudCA9IGNvbW1lbnRIYW5kbGUuTm9kZSgpLT5Ub0NvbW1lbnQoKTsKKwkJYXNzZXJ0KCBjb21tZW50ICk7CisJCVRpWG1sRWxlbWVudCogZG9vcjAgPSBkb29yMEhhbmRsZS5FbGVtZW50KCk7CisJCVRpWG1sRWxlbWVudCogZG9vcjEgPSBkb29yMUhhbmRsZS5FbGVtZW50KCk7CisKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBEZWNsYXJhdGlvbiByb3ciLCBkZWNsYXJhdGlvbi0+Um93KCksIDEgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBEZWNsYXJhdGlvbiBjb2wiLCBkZWNsYXJhdGlvbi0+Q29sdW1uKCksIDUgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiByb29tIHJvdyIsIHJvb20tPlJvdygpLCAxICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogcm9vbSBjb2wiLCByb29tLT5Db2x1bW4oKSwgNDUgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBkb29ycyByb3ciLCBkb29ycy0+Um93KCksIDEgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBkb29ycyBjb2wiLCBkb29ycy0+Q29sdW1uKCksIDUxICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogQ29tbWVudCByb3ciLCBjb21tZW50LT5Sb3coKSwgMiApOworCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IENvbW1lbnQgY29sIiwgY29tbWVudC0+Q29sdW1uKCksIDMgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiB0ZXh0IHJvdyIsIHRleHQtPlJvdygpLCAzICk7IAorCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IHRleHQgY29sIiwgdGV4dC0+Q29sdW1uKCksIDI0ICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogZG9vcjAgcm93IiwgZG9vcjAtPlJvdygpLCAzICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogZG9vcjAgY29sIiwgZG9vcjAtPkNvbHVtbigpLCA1ICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogZG9vcjEgcm93IiwgZG9vcjEtPlJvdygpLCA0ICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogZG9vcjEgY29sIiwgZG9vcjEtPkNvbHVtbigpLCA1ICk7CisJfQorCXsKKwkJY29uc3QgY2hhciogc3RyID0JIlx0PD94bWwgdmVyc2lvbj1cIjEuMFwiIHN0YW5kYWxvbmU9XCJub1wiID8+XHQ8cm9vbSBkb29ycz0nMic+XG4iCisJCQkJCQkJIjwvcm9vbT4iOworCisgICAgICAgIFRpWG1sRG9jdW1lbnQgZG9jOworCQlkb2MuU2V0VGFiU2l6ZSggOCApOworCQlkb2MuUGFyc2UoIHN0ciApOworCisJCVRpWG1sSGFuZGxlIGRvY0hhbmRsZSggJmRvYyApOworCQlUaVhtbEhhbmRsZSByb29tSGFuZGxlID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGRFbGVtZW50KCAicm9vbSIgKTsKKworCQlhc3NlcnQoIGRvY0hhbmRsZS5Ob2RlKCkgKTsKKwkJYXNzZXJ0KCByb29tSGFuZGxlLkVsZW1lbnQoKSApOworCisJCVRpWG1sRWxlbWVudCogcm9vbSA9IHJvb21IYW5kbGUuRWxlbWVudCgpOworCQlhc3NlcnQoIHJvb20gKTsKKwkJVGlYbWxBdHRyaWJ1dGUqIGRvb3JzID0gcm9vbS0+Rmlyc3RBdHRyaWJ1dGUoKTsKKwkJYXNzZXJ0KCBkb29ycyApOworCisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogVGFiIDg6IHJvb20gcm93Iiwgcm9vbS0+Um93KCksIDEgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBUYWIgODogcm9vbSBjb2wiLCByb29tLT5Db2x1bW4oKSwgNDkgKTsKKwkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBUYWIgODogZG9vcnMgcm93IiwgZG9vcnMtPlJvdygpLCAxICk7CisJCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogVGFiIDg6IGRvb3JzIGNvbCIsIGRvb3JzLT5Db2x1bW4oKSwgNTUgKTsKKwl9CisKKwl7CisJCWNvbnN0IGNoYXIqIHN0ciA9ICI8ZG9jIGF0dHIwPScxJyBhdHRyMT0nMi4wJyBhdHRyMj0nZm9vJyAvPiI7CisKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggc3RyICk7CisKKwkJVGlYbWxFbGVtZW50KiBlbGUgPSBkb2MuRmlyc3RDaGlsZEVsZW1lbnQoKTsKKworCQlpbnQgaVZhbCwgcmVzdWx0OworCQlkb3VibGUgZFZhbDsKKworCQlyZXN1bHQgPSBlbGUtPlF1ZXJ5RG91YmxlQXR0cmlidXRlKCAiYXR0cjAiLCAmZFZhbCApOworCQlYbWxUZXN0KCAiUXVlcnkgYXR0cmlidXRlOiBpbnQgYXMgZG91YmxlIiwgcmVzdWx0LCBUSVhNTF9TVUNDRVNTICk7CisJCVhtbFRlc3QoICJRdWVyeSBhdHRyaWJ1dGU6IGludCBhcyBkb3VibGUiLCAoaW50KWRWYWwsIDEgKTsKKwkJcmVzdWx0ID0gZWxlLT5RdWVyeURvdWJsZUF0dHJpYnV0ZSggImF0dHIxIiwgJmRWYWwgKTsKKwkJWG1sVGVzdCggIlF1ZXJ5IGF0dHJpYnV0ZTogZG91YmxlIGFzIGRvdWJsZSIsIChpbnQpZFZhbCwgMiApOworCQlyZXN1bHQgPSBlbGUtPlF1ZXJ5SW50QXR0cmlidXRlKCAiYXR0cjEiLCAmaVZhbCApOworCQlYbWxUZXN0KCAiUXVlcnkgYXR0cmlidXRlOiBkb3VibGUgYXMgaW50IiwgcmVzdWx0LCBUSVhNTF9TVUNDRVNTICk7CisJCVhtbFRlc3QoICJRdWVyeSBhdHRyaWJ1dGU6IGRvdWJsZSBhcyBpbnQiLCBpVmFsLCAyICk7CisJCXJlc3VsdCA9IGVsZS0+UXVlcnlJbnRBdHRyaWJ1dGUoICJhdHRyMiIsICZpVmFsICk7CisJCVhtbFRlc3QoICJRdWVyeSBhdHRyaWJ1dGU6IG5vdCBhIG51bWJlciIsIHJlc3VsdCwgVElYTUxfV1JPTkdfVFlQRSApOworCQlyZXN1bHQgPSBlbGUtPlF1ZXJ5SW50QXR0cmlidXRlKCAiYmFyIiwgJmlWYWwgKTsKKwkJWG1sVGVzdCggIlF1ZXJ5IGF0dHJpYnV0ZTogZG9lcyBub3QgZXhpc3QiLCByZXN1bHQsIFRJWE1MX05PX0FUVFJJQlVURSApOworCX0KKworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwl7CisJCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCQljb3V0IDw8ICJcbioqIFN0cmVhbWluZy4gKipcbiI7CisKKwkJLy8gUm91bmQgdHJpcCBjaGVjazogc3RyZWFtIGluLCB0aGVuIHN0cmVhbSBiYWNrIG91dCB0byB2ZXJpZnkuIFRoZSBzdHJlYW0KKwkJLy8gb3V0IGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZCwgYWJvdmUuIFdlIHVzZSB0aGUgb3V0cHV0CisKKwkJaXN0cmluZ3N0cmVhbSBpbnB1dFN0cmluZ1N0cmVhbSggb3V0cHV0U3RyZWFtLnN0cigpICk7CisJCVRpWG1sRG9jdW1lbnQgZG9jdW1lbnQwOworCisJCWlucHV0U3RyaW5nU3RyZWFtID4+IGRvY3VtZW50MDsKKworCQlvc3RyaW5nc3RyZWFtIG91dHB1dFN0cmVhbTAoIG9zdHJpbmdzdHJlYW06Om91dCApOworCQlvdXRwdXRTdHJlYW0wIDw8IGRvY3VtZW50MDsKKworCQlYbWxUZXN0KCAiU3RyZWFtIHJvdW5kIHRyaXAgY29ycmVjdC4iLAlzdHJpbmcoIGRlbW9FbmQgKS5jX3N0cigpLCAKKwkJCQkJCQkJCQkJCW91dHB1dFN0cmVhbTAuc3RyKCkuY19zdHIoKSwgdHJ1ZSApOworCisJCXN0ZDo6c3RyaW5nIHN0cjsKKwkJc3RyIDw8IGRvY3VtZW50MDsKKworCQlYbWxUZXN0KCAiU3RyaW5nIHByaW50aW5nIGNvcnJlY3QuIiwgc3RyaW5nKCBkZW1vRW5kICkuY19zdHIoKSwgCisJCQkJCQkJCQkJCSBzdHIuY19zdHIoKSwgdHJ1ZSApOworCX0KKyNlbmRpZgorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkvLyBVVEYtOCB0ZXN0aW5nLiBJdCBpcyBpbXBvcnRhbnQgdG8gdGVzdDoKKwkvLwkxLiBNYWtpbmcgc3VyZSBuYW1lLCB2YWx1ZSwgYW5kIHRleHQgcmVhZCBjb3JyZWN0bHkKKwkvLwkyLiBSb3csIENvbCBmdW5jdGlvbmFsaXR5CisJLy8JMy4gQ29ycmVjdCBvdXRwdXQKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXByaW50ZiAoIlxuKiogVVRGLTggKipcbiIpOworCXsKKwkJVGlYbWxEb2N1bWVudCBkb2MoICJ1dGY4dGVzdC54bWwiICk7CisJCWRvYy5Mb2FkRmlsZSgpOworCQlpZiAoIGRvYy5FcnJvcigpICYmIGRvYy5FcnJvcklkKCkgPT0gVGlYbWxCYXNlOjpUSVhNTF9FUlJPUl9PUEVOSU5HX0ZJTEUgKSB7CisJCQlwcmludGYoICJXQVJOSU5HOiBGaWxlICd1dGY4dGVzdC54bWwnIG5vdCBmb3VuZC5cbiIKKwkJCQkJIihBcmUgeW91IHJ1bm5pbmcgdGhlIHRlc3QgZnJvbSB0aGUgd3JvbmcgZGlyZWN0b3J5PylcbiIKKwkJCQkgICAgIkNvdWxkIG5vdCB0ZXN0IFVURi04IGZ1bmN0aW9uYWxpdHkuXG4iICk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlUaVhtbEhhbmRsZSBkb2NIKCAmZG9jICk7CisJCQkvLyBHZXQgdGhlIGF0dHJpYnV0ZSAidmFsdWUiIGZyb20gdGhlICJSdXNzaWFuIiBlbGVtZW50IGFuZCBjaGVjayBpdC4KKwkJCVRpWG1sRWxlbWVudCogZWxlbWVudCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJkb2N1bWVudCIgKS5GaXJzdENoaWxkRWxlbWVudCggIlJ1c3NpYW4iICkuRWxlbWVudCgpOworCQkJY29uc3QgdW5zaWduZWQgY2hhciBjb3JyZWN0VmFsdWVbXSA9IHsJMHhkMVUsIDB4ODZVLCAweGQwVSwgMHhiNVUsIDB4ZDBVLCAweGJkVSwgMHhkMFUsIDB4YmRVLCAKKwkJCQkJCQkJCQkJCQkweGQwVSwgMHhiZVUsIDB4ZDFVLCAweDgxVSwgMHhkMVUsIDB4ODJVLCAweGQxVSwgMHg4Y1UsIDAgfTsKKworCQkJWG1sVGVzdCggIlVURi04OiBSdXNzaWFuIHZhbHVlLiIsIChjb25zdCBjaGFyKiljb3JyZWN0VmFsdWUsIGVsZW1lbnQtPkF0dHJpYnV0ZSggInZhbHVlIiApLCB0cnVlICk7CisJCQlYbWxUZXN0KCAiVVRGLTg6IFJ1c3NpYW4gdmFsdWUgcm93LiIsIDQsIGVsZW1lbnQtPlJvdygpICk7CisJCQlYbWxUZXN0KCAiVVRGLTg6IFJ1c3NpYW4gdmFsdWUgY29sdW1uLiIsIDUsIGVsZW1lbnQtPkNvbHVtbigpICk7CisKKwkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgcnVzc2lhbkVsZW1lbnROYW1lW10gPSB7CTB4ZDBVLCAweGEwVSwgMHhkMVUsIDB4ODNVLAorCQkJCQkJCQkJCQkJCQkJMHhkMVUsIDB4ODFVLCAweGQxVSwgMHg4MVUsCisJCQkJCQkJCQkJCQkJCQkweGQwVSwgMHhiYVUsIDB4ZDBVLCAweGI4VSwKKwkJCQkJCQkJCQkJCQkJCTB4ZDBVLCAweGI5VSwgMCB9OworCQkJY29uc3QgY2hhciBydXNzaWFuVGV4dFtdID0gIjxceEQwXHhCOFx4RDBceEJDXHhEMFx4QjVceEQwXHhCNVx4RDFceDgyPiI7CisKKwkJCVRpWG1sVGV4dCogdGV4dCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJkb2N1bWVudCIgKS5GaXJzdENoaWxkRWxlbWVudCggKGNvbnN0IGNoYXIqKSBydXNzaWFuRWxlbWVudE5hbWUgKS5DaGlsZCggMCApLlRleHQoKTsKKwkJCVhtbFRlc3QoICJVVEYtODogQnJvd3NpbmcgcnVzc2lhbiBlbGVtZW50IG5hbWUuIiwKKwkJCQkJIHJ1c3NpYW5UZXh0LAorCQkJCQkgdGV4dC0+VmFsdWUoKSwKKwkJCQkJIHRydWUgKTsKKwkJCVhtbFRlc3QoICJVVEYtODogUnVzc2lhbiBlbGVtZW50IG5hbWUgcm93LiIsIDcsIHRleHQtPlJvdygpICk7CisJCQlYbWxUZXN0KCAiVVRGLTg6IFJ1c3NpYW4gZWxlbWVudCBuYW1lIGNvbHVtbi4iLCA0NywgdGV4dC0+Q29sdW1uKCkgKTsKKworCQkJVGlYbWxEZWNsYXJhdGlvbiogZGVjID0gZG9jSC5DaGlsZCggMCApLk5vZGUoKS0+VG9EZWNsYXJhdGlvbigpOworCQkJWG1sVGVzdCggIlVURi04OiBEZWNsYXJhdGlvbiBjb2x1bW4uIiwgMSwgZGVjLT5Db2x1bW4oKSApOworCQkJWG1sVGVzdCggIlVURi04OiBEb2N1bWVudCBjb2x1bW4uIiwgMSwgZG9jLkNvbHVtbigpICk7CisKKwkJCS8vIE5vdyB0cnkgZm9yIGEgcm91bmQgdHJpcC4KKwkJCWRvYy5TYXZlRmlsZSggInV0Zjh0ZXN0b3V0LnhtbCIgKTsKKworCQkJLy8gQ2hlY2sgdGhlIHJvdW5kIHRyaXAuCisJCQljaGFyIHNhdmVkQnVmWzI1Nl07CisJCQljaGFyIHZlcmlmeUJ1ZlsyNTZdOworCQkJaW50IG9rYXkgPSAxOworCisJCQlGSUxFKiBzYXZlZCAgPSBmb3BlbiggInV0Zjh0ZXN0b3V0LnhtbCIsICJyIiApOworCQkJRklMRSogdmVyaWZ5ID0gZm9wZW4oICJ1dGY4dGVzdHZlcmlmeS54bWwiLCAiciIgKTsKKwkJCWlmICggc2F2ZWQgJiYgdmVyaWZ5ICkKKwkJCXsKKwkJCQl3aGlsZSAoIGZnZXRzKCB2ZXJpZnlCdWYsIDI1NiwgdmVyaWZ5ICkgKQorCQkJCXsKKwkJCQkJZmdldHMoIHNhdmVkQnVmLCAyNTYsIHNhdmVkICk7CisJCQkJCWlmICggc3RyY21wKCB2ZXJpZnlCdWYsIHNhdmVkQnVmICkgKQorCQkJCQl7CisJCQkJCQlva2F5ID0gMDsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJCWZjbG9zZSggc2F2ZWQgKTsKKwkJCQlmY2xvc2UoIHZlcmlmeSApOworCQkJfQorCQkJWG1sVGVzdCggIlVURi04OiBWZXJpZmllZCBtdWx0aS1sYW5ndWFnZSByb3VuZCB0cmlwLiIsIDEsIG9rYXkgKTsKKworCQkJLy8gT24gbW9zdCBXZXN0ZXJuIG1hY2hpbmVzLCB0aGlzIGlzIGFuIGVsZW1lbnQgdGhhdCBjb250YWlucworCQkJLy8gdGhlIHdvcmQgInJlc3VtZSIgd2l0aCB0aGUgY29ycmVjdCBhY2NlbnRzLCBpbiBhIGxhdGluIGVuY29kaW5nLgorCQkJLy8gSXQgd2lsbCBiZSBzb21ldGhpbmcgZWxzZSBjb21wbGV0ZWx5IG9uIG5vbi13ZXN0ZXIgbWFjaGluZXMsCisJCQkvLyB3aGljaCBpcyB3aHkgVGlueVhtbCBpcyBzd2l0Y2hpbmcgdG8gVVRGLTguCisJCQljb25zdCBjaGFyIGxhdGluW10gPSAiPGVsZW1lbnQ+clx4ODJzdW1ceDgyPC9lbGVtZW50PiI7CisKKwkJCVRpWG1sRG9jdW1lbnQgbGF0aW5Eb2M7CisJCQlsYXRpbkRvYy5QYXJzZSggbGF0aW4sIDAsIFRJWE1MX0VOQ09ESU5HX0xFR0FDWSApOworCisJCQl0ZXh0ID0gbGF0aW5Eb2MuRmlyc3RDaGlsZEVsZW1lbnQoKS0+Rmlyc3RDaGlsZCgpLT5Ub1RleHQoKTsKKwkJCVhtbFRlc3QoICJMZWdhY3kgZW5jb2Rpbmc6IFZlcmlmeSB0ZXh0IGVsZW1lbnQuIiwgInJceDgyc3VtXHg4MiIsIHRleHQtPlZhbHVlKCkgKTsKKwkJfQorCX0JCQorCisJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCS8vIENvcHkgYW5kIGFzc2lnbm1lbnQKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisJcHJpbnRmICgiXG4qKiBDb3B5IGFuZCBBc3NpZ25tZW50ICoqXG4iKTsKKwl7CisJCVRpWG1sRWxlbWVudCBlbGVtZW50KCAiZm9vIiApOworCQllbGVtZW50LlBhcnNlKCAiPGVsZW1lbnQgbmFtZT0ndmFsdWUnIC8+IiwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOworCisJCVRpWG1sRWxlbWVudCBlbGVtZW50Q29weSggZWxlbWVudCApOworCQlUaVhtbEVsZW1lbnQgZWxlbWVudEFzc2lnbiggImZvbyIgKTsKKwkJZWxlbWVudEFzc2lnbi5QYXJzZSggIjxpbmNvcnJlY3QgZm9vPSdiYXInLz4iLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCWVsZW1lbnRBc3NpZ24gPSBlbGVtZW50OworCisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZWxlbWVudCBjb3B5ICMxLiIsICJlbGVtZW50IiwgZWxlbWVudENvcHkuVmFsdWUoKSApOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGVsZW1lbnQgY29weSAjMi4iLCAidmFsdWUiLCBlbGVtZW50Q29weS5BdHRyaWJ1dGUoICJuYW1lIiApICk7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZWxlbWVudCBhc3NpZ24gIzEuIiwgImVsZW1lbnQiLCBlbGVtZW50QXNzaWduLlZhbHVlKCkgKTsKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBlbGVtZW50IGFzc2lnbiAjMi4iLCAidmFsdWUiLCBlbGVtZW50QXNzaWduLkF0dHJpYnV0ZSggIm5hbWUiICkgKTsKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBlbGVtZW50IGFzc2lnbiAjMy4iLCAwLCAoaW50KSBlbGVtZW50QXNzaWduLkF0dHJpYnV0ZSggImZvbyIgKSApOworCisJCVRpWG1sQ29tbWVudCBjb21tZW50OworCQljb21tZW50LlBhcnNlKCAiPCEtLWNvbW1lbnQtLT4iLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCVRpWG1sQ29tbWVudCBjb21tZW50Q29weSggY29tbWVudCApOworCQlUaVhtbENvbW1lbnQgY29tbWVudEFzc2lnbjsKKwkJY29tbWVudEFzc2lnbiA9IGNvbW1lbnRDb3B5OworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGNvbW1lbnQgY29weS4iLCAiY29tbWVudCIsIGNvbW1lbnRDb3B5LlZhbHVlKCkgKTsKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBjb21tZW50IGFzc2lnbi4iLCAiY29tbWVudCIsIGNvbW1lbnRBc3NpZ24uVmFsdWUoKSApOworCisJCVRpWG1sVW5rbm93biB1bmtub3duOworCQl1bmtub3duLlBhcnNlKCAiPFt1bmtub3duXT4iLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCVRpWG1sVW5rbm93biB1bmtub3duQ29weSggdW5rbm93biApOworCQlUaVhtbFVua25vd24gdW5rbm93bkFzc2lnbjsKKwkJdW5rbm93bkFzc2lnbi5QYXJzZSggImluY29ycmVjdCIsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKKwkJdW5rbm93bkFzc2lnbiA9IHVua25vd25Db3B5OworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IHVua25vd24gY29weS4iLCAiW3Vua25vd25dIiwgdW5rbm93bkNvcHkuVmFsdWUoKSApOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IHVua25vd24gYXNzaWduLiIsICJbdW5rbm93bl0iLCB1bmtub3duQXNzaWduLlZhbHVlKCkgKTsKKwkJCisJCVRpWG1sVGV4dCB0ZXh0KCAiVGV4dE5vZGUiICk7CisJCVRpWG1sVGV4dCB0ZXh0Q29weSggdGV4dCApOworCQlUaVhtbFRleHQgdGV4dEFzc2lnbiggImluY29ycmVjdCIgKTsKKwkJdGV4dEFzc2lnbiA9IHRleHQ7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogdGV4dCBjb3B5LiIsICJUZXh0Tm9kZSIsIHRleHRDb3B5LlZhbHVlKCkgKTsKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiB0ZXh0IGFzc2lnbi4iLCAiVGV4dE5vZGUiLCB0ZXh0QXNzaWduLlZhbHVlKCkgKTsKKworCQlUaVhtbERlY2xhcmF0aW9uIGRlYzsKKwkJZGVjLlBhcnNlKCAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4iLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7CisJCVRpWG1sRGVjbGFyYXRpb24gZGVjQ29weSggZGVjICk7CisJCVRpWG1sRGVjbGFyYXRpb24gZGVjQXNzaWduOworCQlkZWNBc3NpZ24gPSBkZWM7CisKKwkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBkZWNsYXJhdGlvbiBjb3B5LiIsICJVVEYtOCIsIGRlY0NvcHkuRW5jb2RpbmcoKSApOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IHRleHQgYXNzaWduLiIsICJVVEYtOCIsIGRlY0Fzc2lnbi5FbmNvZGluZygpICk7CisKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWVsZW1lbnRDb3B5Lkluc2VydEVuZENoaWxkKCB0ZXh0Q29weSApOworCQlkb2MuSW5zZXJ0RW5kQ2hpbGQoIGRlY0Fzc2lnbiApOworCQlkb2MuSW5zZXJ0RW5kQ2hpbGQoIGVsZW1lbnRDb3B5ICk7CisJCWRvYy5JbnNlcnRFbmRDaGlsZCggdW5rbm93bkFzc2lnbiApOworCisJCVRpWG1sRG9jdW1lbnQgZG9jQ29weSggZG9jICk7CisJCVRpWG1sRG9jdW1lbnQgZG9jQXNzaWduOworCQlkb2NBc3NpZ24gPSBkb2NDb3B5OworCisJCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJCXN0ZDo6c3RyaW5nIG9yaWdpbmFsLCBjb3B5LCBhc3NpZ247CisJCW9yaWdpbmFsIDw8IGRvYzsKKwkJY29weSA8PCBkb2NDb3B5OworCQlhc3NpZ24gPDwgZG9jQXNzaWduOworCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGRvY3VtZW50IGNvcHkuIiwgb3JpZ2luYWwuY19zdHIoKSwgY29weS5jX3N0cigpLCB0cnVlICk7CisJCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZG9jdW1lbnQgYXNzaWduLiIsIG9yaWdpbmFsLmNfc3RyKCksIGFzc2lnbi5jX3N0cigpLCB0cnVlICk7CisKKwkJI2VuZGlmCisJfQkKKworCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwlwcmludGYgKCJcbioqIFBhcnNpbmcsIG5vIENvbmRlbnNlIFdoaXRlc3BhY2UgKipcbiIpOworCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBmYWxzZSApOworCisJaXN0cmluZ3N0cmVhbSBwYXJzZTEoICI8c3RhcnQ+VGhpcyAgaXMgICAgXG50ZXh0PC9zdGFydD4iICk7CisJVGlYbWxFbGVtZW50IHRleHQxKCAidGV4dCIgKTsKKwlwYXJzZTEgPj4gdGV4dDE7CisKKwlYbWxUZXN0ICggIkNvbmRlbnNlIHdoaXRlIHNwYWNlIE9GRi4iLCAiVGhpcyAgaXMgICAgXG50ZXh0IiwKKwkJCQl0ZXh0MS5GaXJzdENoaWxkKCktPlZhbHVlKCksCisJCQkJdHJ1ZSApOworCisJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIHRydWUgKTsKKyNlbmRpZgorCisJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisJLy8gR2V0VGV4dCgpOworCXsKKwkJY29uc3QgY2hhciogc3RyID0gIjxmb28+VGhpcyBpcyB0ZXh0PC9mb28+IjsKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggc3RyICk7CisJCWNvbnN0IFRpWG1sRWxlbWVudCogZWxlbWVudCA9IGRvYy5Sb290RWxlbWVudCgpOworCisJCVhtbFRlc3QoICJHZXRUZXh0KCkgbm9ybWFsIHVzZS4iLCAiVGhpcyBpcyB0ZXh0IiwgZWxlbWVudC0+R2V0VGV4dCgpICk7CisKKwkJc3RyID0gIjxmb28+PGI+VGhpcyBpcyB0ZXh0PC9iPjwvZm9vPiI7CisJCWRvYy5DbGVhcigpOworCQlkb2MuUGFyc2UoIHN0ciApOworCQllbGVtZW50ID0gZG9jLlJvb3RFbGVtZW50KCk7CisKKwkJWG1sVGVzdCggIkdldFRleHQoKSBjb250YWluZWQgZWxlbWVudC4iLCBlbGVtZW50LT5HZXRUZXh0KCkgPT0gMCwgdHJ1ZSApOworCisJCXN0ciA9ICI8Zm9vPlRoaXMgaXMgPGI+dGV4dDwvYj48L2Zvbz4iOworCQlkb2MuQ2xlYXIoKTsKKwkJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGZhbHNlICk7CisJCWRvYy5QYXJzZSggc3RyICk7CisJCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCB0cnVlICk7CisJCWVsZW1lbnQgPSBkb2MuUm9vdEVsZW1lbnQoKTsKKworCQlYbWxUZXN0KCAiR2V0VGV4dCgpIHBhcnRpYWwuIiwgIlRoaXMgaXMgIiwgZWxlbWVudC0+R2V0VGV4dCgpICk7CisJfQorCisKKwkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwkvLyBDREFUQQorCXsKKwkJY29uc3QgY2hhciogc3RyID0JIjx4bWxFbGVtZW50PiIKKwkJCQkJCQkJIjwhW0NEQVRBWyIKKwkJCQkJCQkJCSJJIGFtID4gdGhlIHJ1bGVzIVxuIgorCQkJCQkJCQkJIi4uLnNpbmNlIEkgbWFrZSBzeW1ib2xpYyBwdW5zIgorCQkJCQkJCQkiXV0+IgorCQkJCQkJCSI8L3htbEVsZW1lbnQ+IjsKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggc3RyICk7CisJCS8vZG9jLlByaW50KCk7CisKKwkJWG1sVGVzdCggIkNEQVRBIHBhcnNlLiIsIGRvYy5GaXJzdENoaWxkRWxlbWVudCgpLT5GaXJzdENoaWxkKCktPlZhbHVlKCksIAorCQkJCQkJCQkgIkkgYW0gPiB0aGUgcnVsZXMhXG4uLi5zaW5jZSBJIG1ha2Ugc3ltYm9saWMgcHVucyIsCisJCQkJCQkJCSB0cnVlICk7CisKKwkJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkJLy9jb3V0IDw8IGRvYyA8PCAnXG4nOworCisJCWRvYy5DbGVhcigpOworCisJCWlzdHJpbmdzdHJlYW0gcGFyc2UwKCBzdHIgKTsKKwkJcGFyc2UwID4+IGRvYzsKKwkJLy9jb3V0IDw8IGRvYyA8PCAnXG4nOworCisJCVhtbFRlc3QoICJDREFUQSBzdHJlYW0uIiwgZG9jLkZpcnN0Q2hpbGRFbGVtZW50KCktPkZpcnN0Q2hpbGQoKS0+VmFsdWUoKSwgCisJCQkJCQkJCSAiSSBhbSA+IHRoZSBydWxlcyFcbi4uLnNpbmNlIEkgbWFrZSBzeW1ib2xpYyBwdW5zIiwKKwkJCQkJCQkJIHRydWUgKTsKKwkJI2VuZGlmCisKKwkJVGlYbWxEb2N1bWVudCBkb2MxID0gZG9jOworCQkvL2RvYy5QcmludCgpOworCisJCVhtbFRlc3QoICJDREFUQSBjb3B5LiIsIGRvYzEuRmlyc3RDaGlsZEVsZW1lbnQoKS0+Rmlyc3RDaGlsZCgpLT5WYWx1ZSgpLCAKKwkJCQkJCQkJICJJIGFtID4gdGhlIHJ1bGVzIVxuLi4uc2luY2UgSSBtYWtlIHN5bWJvbGljIHB1bnMiLAorCQkJCQkJCQkgdHJ1ZSApOworCX0KKworCisJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisJcHJpbnRmICgiXG4qKiBCdWcgcmVncmVzc2lvbiB0ZXN0cyAqKlxuIik7CisKKwkvLyBJbnNlcnRCZWZvcmVDaGlsZCBhbmQgSW5zZXJ0QWZ0ZXJDaGlsZCBjYXVzZXMgY3Jhc2guCisJeworCQlUaVhtbEVsZW1lbnQgcGFyZW50KCAiUGFyZW50IiApOworCQlUaVhtbEVsZW1lbnQgY2hpbGRUZXh0MCggImNoaWxkVGV4dDAiICk7CisJCVRpWG1sRWxlbWVudCBjaGlsZFRleHQxKCAiY2hpbGRUZXh0MSIgKTsKKwkJVGlYbWxOb2RlKiBjaGlsZE5vZGUwID0gcGFyZW50Lkluc2VydEVuZENoaWxkKCBjaGlsZFRleHQwICk7CisJCVRpWG1sTm9kZSogY2hpbGROb2RlMSA9IHBhcmVudC5JbnNlcnRCZWZvcmVDaGlsZCggY2hpbGROb2RlMCwgY2hpbGRUZXh0MSApOworCisJCVhtbFRlc3QoICJUZXN0IEluc2VydEJlZm9yZUNoaWxkIG9uIGVtcHR5IG5vZGUuIiwgKCBjaGlsZE5vZGUxID09IHBhcmVudC5GaXJzdENoaWxkKCkgKSwgdHJ1ZSApOworCX0KKworCXsKKwkJLy8gSW5zZXJ0QmVmb3JlQ2hpbGQgYW5kIEluc2VydEFmdGVyQ2hpbGQgY2F1c2VzIGNyYXNoLgorCQlUaVhtbEVsZW1lbnQgcGFyZW50KCAiUGFyZW50IiApOworCQlUaVhtbEVsZW1lbnQgY2hpbGRUZXh0MCggImNoaWxkVGV4dDAiICk7CisJCVRpWG1sRWxlbWVudCBjaGlsZFRleHQxKCAiY2hpbGRUZXh0MSIgKTsKKwkJVGlYbWxOb2RlKiBjaGlsZE5vZGUwID0gcGFyZW50Lkluc2VydEVuZENoaWxkKCBjaGlsZFRleHQwICk7CisJCVRpWG1sTm9kZSogY2hpbGROb2RlMSA9IHBhcmVudC5JbnNlcnRBZnRlckNoaWxkKCBjaGlsZE5vZGUwLCBjaGlsZFRleHQxICk7CisKKwkJWG1sVGVzdCggIlRlc3QgSW5zZXJ0QWZ0ZXJDaGlsZCBvbiBlbXB0eSBub2RlLiAiLCAoIGNoaWxkTm9kZTEgPT0gcGFyZW50Lkxhc3RDaGlsZCgpICksIHRydWUgKTsKKwl9CisKKwkvLyBSZXBvcnRzIG9mIG1pc3NpbmcgY29uc3RydWN0b3JzLCBpcnJlZ3VsYXIgc3RyaW5nIHByb2JsZW1zLgorCXsKKwkJLy8gTWlzc2luZyBjb25zdHJ1Y3RvciBpbXBsZW1lbnRhdGlvbi4gTm8gdGVzdCAtLSBqdXN0IGNvbXBpbGVzLgorCQlUaVhtbFRleHQgdGV4dCggIk1pc3NpbmciICk7CisKKwkJI2lmZGVmIFRJWE1MX1VTRV9TVEwKKwkJCS8vIE1pc3NpbmcgaW1wbGVtZW50YXRpb246CisJCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJCXN0cmluZyBuYW1lID0gIm1pc3NpbmciOworCQkJZG9jLkxvYWRGaWxlKCBuYW1lICk7CisKKwkJCVRpWG1sVGV4dCB0ZXh0U1RMKCBuYW1lICk7CisJCSNlbHNlCisJCQkvLyB2ZXJpZnlpbmcgc29tZSBiYXNpYyBzdHJpbmcgZnVuY3Rpb25zOgorCQkJVGlYbWxTdHJpbmcgYTsKKwkJCVRpWG1sU3RyaW5nIGIoICJIZWxsbyIgKTsKKwkJCVRpWG1sU3RyaW5nIGMoICJvb2dhIiApOworCisJCQljID0gIiBXb3JsZCEiOworCQkJYSA9IGI7CisJCQlhICs9IGM7CisJCQlhID0gYTsKKworCQkJWG1sVGVzdCggIkJhc2ljIFRpWG1sU3RyaW5nIHRlc3QuICIsICJIZWxsbyBXb3JsZCEiLCBhLmNfc3RyKCkgKTsKKwkJI2VuZGlmCisgCX0KKworCS8vIExvbmcgZmlsZW5hbWVzIGNyYXNoaW5nIFNUTCB2ZXJzaW9uCisJeworCQlUaVhtbERvY3VtZW50IGRvYyggIm1pZHN1bW1lck5pZ2h0c0RyZWFtV2l0aEFWZXJ5TG9uZ0ZpbGVuYW1lVG9Db25mdXNlVGhlU3RyaW5nSGFuZGxpbmdSb3V0aW5lcy54bWwiICk7CisJCWJvb2wgbG9hZE9rYXkgPSBkb2MuTG9hZEZpbGUoKTsKKwkJbG9hZE9rYXkgPSB0cnVlOwkvLyBnZXQgcmlkIG9mIGNvbXBpbGVyIHdhcm5pbmcuCisJCS8vIFdvbid0IHBhc3Mgb24gbm9uLWRldiBzeXN0ZW1zLiBKdXN0IGEgIm5vIGNyYXNoIiBjaGVjay4KKwkJLy9YbWxUZXN0KCAiTG9uZyBmaWxlbmFtZS4gIiwgdHJ1ZSwgbG9hZE9rYXkgKTsKKwl9CisKKwl7CisJCS8vIEVudGl0aWVzIG5vdCBiZWluZyB3cml0dGVuIGNvcnJlY3RseS4KKwkJLy8gRnJvbSBMeW5uIEFsbGVuCisKKwkJY29uc3QgY2hhciogcGFzc2FnZXMgPQorCQkJIjw/eG1sIHZlcnNpb249XCIxLjBcIiBzdGFuZGFsb25lPVwibm9cIiA/PiIKKwkJCSI8cGFzc2FnZXMgY291bnQ9XCIwMDZcIiBmb3JtYXR2ZXJzaW9uPVwiMjAwMjA2MjBcIj4iCisJCQkJIjxwc2cgY29udGV4dD1cIkxpbmUgNSBoYXMgJnF1b3Q7cXVvdGF0aW9uIG1hcmtzJnF1b3Q7IGFuZCAmYXBvczthcG9zdHJvcGhlIG1hcmtzJmFwb3M7LiIKKwkJCQkiIEl0IGFsc28gaGFzICZsdDssICZndDssIGFuZCAmYW1wOywgYXMgd2VsbCBhcyBhIGZha2UgY29weXJpZ2h0ICYjeEE5Oy5cIj4gPC9wc2c+IgorCQkJIjwvcGFzc2FnZXM+IjsKKworCQlUaVhtbERvY3VtZW50IGRvYyggInBhc3NhZ2VzLnhtbCIgKTsKKwkJZG9jLlBhcnNlKCBwYXNzYWdlcyApOworCQlUaVhtbEVsZW1lbnQqIHBzZyA9IGRvYy5Sb290RWxlbWVudCgpLT5GaXJzdENoaWxkRWxlbWVudCgpOworCQljb25zdCBjaGFyKiBjb250ZXh0ID0gcHNnLT5BdHRyaWJ1dGUoICJjb250ZXh0IiApOworCQljb25zdCBjaGFyKiBleHBlY3RlZCA9ICJMaW5lIDUgaGFzIFwicXVvdGF0aW9uIG1hcmtzXCIgYW5kICdhcG9zdHJvcGhlIG1hcmtzJy4gSXQgYWxzbyBoYXMgPCwgPiwgYW5kICYsIGFzIHdlbGwgYXMgYSBmYWtlIGNvcHlyaWdodCBceEMyXHhBOS4iOworCisJCVhtbFRlc3QoICJFbnRpdHkgdHJhbnNmb3JtYXRpb246IHJlYWQuICIsIGV4cGVjdGVkLCBjb250ZXh0LCB0cnVlICk7CisKKwkJRklMRSogdGV4dGZpbGUgPSBmb3BlbiggInRleHRmaWxlLnR4dCIsICJ3IiApOworCQlpZiAoIHRleHRmaWxlICkKKwkJeworCQkJcHNnLT5QcmludCggdGV4dGZpbGUsIDAgKTsKKwkJCWZjbG9zZSggdGV4dGZpbGUgKTsKKwkJfQorCQl0ZXh0ZmlsZSA9IGZvcGVuKCAidGV4dGZpbGUudHh0IiwgInIiICk7CisJCWFzc2VydCggdGV4dGZpbGUgKTsKKwkJaWYgKCB0ZXh0ZmlsZSApCisJCXsKKwkJCWNoYXIgYnVmWyAxMDI0IF07CisJCQlmZ2V0cyggYnVmLCAxMDI0LCB0ZXh0ZmlsZSApOworCQkJWG1sVGVzdCggIkVudGl0eSB0cmFuc2Zvcm1hdGlvbjogd3JpdGUuICIsCisJCQkJCSAiPHBzZyBjb250ZXh0PVwnTGluZSA1IGhhcyAmcXVvdDtxdW90YXRpb24gbWFya3MmcXVvdDsgYW5kICZhcG9zO2Fwb3N0cm9waGUgbWFya3MmYXBvczsuIgorCQkJCQkgIiBJdCBhbHNvIGhhcyAmbHQ7LCAmZ3Q7LCBhbmQgJmFtcDssIGFzIHdlbGwgYXMgYSBmYWtlIGNvcHlyaWdodCBceEMyXHhBOS4nIC8+IiwKKwkJCQkJIGJ1ZiwKKwkJCQkJIHRydWUgKTsKKwkJfQorCQlmY2xvc2UoIHRleHRmaWxlICk7CisJfQorCisgICAgeworCQlGSUxFKiB0ZXh0ZmlsZSA9IGZvcGVuKCAidGVzdDUueG1sIiwgInciICk7CisJCWlmICggdGV4dGZpbGUgKQorCQl7CisgICAgICAgICAgICBmcHV0cygiPD94bWwgdmVyc2lvbj0nMS4wJz8+PGEuZWxlbSB4bWkudmVyc2lvbj0nMi4wJy8+IiwgdGV4dGZpbGUpOworICAgICAgICAgICAgZmNsb3NlKHRleHRmaWxlKTsKKworCQkJVGlYbWxEb2N1bWVudCBkb2M7CisgICAgICAgICAgICBkb2MuTG9hZEZpbGUoICJ0ZXN0NS54bWwiICk7CisgICAgICAgICAgICBYbWxUZXN0KCAiZG90IGluIGVsZW1lbnQgYXR0cmlidXRlcyBhbmQgbmFtZXMiLCBkb2MuRXJyb3IoKSwgMCk7CisJCX0KKyAgICB9CisKKwl7CisJCUZJTEUqIHRleHRmaWxlID0gZm9wZW4oICJ0ZXN0Ni54bWwiLCAidyIgKTsKKwkJaWYgKCB0ZXh0ZmlsZSApCisJCXsKKyAgICAgICAgICAgIGZwdXRzKCI8ZWxlbWVudD48TmFtZT4xLjEgU3RhcnQgZWFzeSBpZ25vcmUgZmluIHRoaWNrbmVzcyYjeEE7PC9OYW1lPjwvZWxlbWVudD4iLCB0ZXh0ZmlsZSApOworICAgICAgICAgICAgZmNsb3NlKHRleHRmaWxlKTsKKworICAgICAgICAgICAgVGlYbWxEb2N1bWVudCBkb2M7CisgICAgICAgICAgICBib29sIHJlc3VsdCA9IGRvYy5Mb2FkRmlsZSggInRlc3Q2LnhtbCIgKTsKKyAgICAgICAgICAgIFhtbFRlc3QoICJFbnRpdHkgd2l0aCBvbmUgZGlnaXQuIiwgcmVzdWx0LCB0cnVlICk7CisKKwkJCVRpWG1sVGV4dCogdGV4dCA9IGRvYy5GaXJzdENoaWxkRWxlbWVudCgpLT5GaXJzdENoaWxkRWxlbWVudCgpLT5GaXJzdENoaWxkKCktPlRvVGV4dCgpOworCQkJWG1sVGVzdCggIkVudGl0eSB3aXRoIG9uZSBkaWdpdC4iLAorCQkJCQkJdGV4dC0+VmFsdWUoKSwgIjEuMSBTdGFydCBlYXN5IGlnbm9yZSBmaW4gdGhpY2tuZXNzXG4iICk7CisJCX0KKyAgICB9CisKKwl7CisJCS8vIERPQ1RZUEUgbm90IHByZXNlcnZlZCAoOTUwMTcxKQorCQkvLyAKKwkJY29uc3QgY2hhciogZG9jdHlwZSA9CisJCQkiPD94bWwgdmVyc2lvbj1cIjEuMFwiID8+IgorCQkJIjwhRE9DVFlQRSBQTEFZIFNZU1RFTSAncGxheS5kdGQnPiIKKwkJCSI8IUVMRU1FTlQgdGl0bGUgKCNQQ0RBVEEpPiIKKwkJCSI8IUVMRU1FTlQgYm9va3MgKHRpdGxlLGF1dGhvcnMpPiIKKwkJCSI8ZWxlbWVudCAvPiI7CisKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggZG9jdHlwZSApOworCQlkb2MuU2F2ZUZpbGUoICJ0ZXN0Ny54bWwiICk7CisJCWRvYy5DbGVhcigpOworCQlkb2MuTG9hZEZpbGUoICJ0ZXN0Ny54bWwiICk7CisJCQorCQlUaVhtbEhhbmRsZSBkb2NIKCAmZG9jICk7CisJCVRpWG1sVW5rbm93biogdW5rbm93biA9IGRvY0guQ2hpbGQoIDEgKS5Vbmtub3duKCk7CisJCVhtbFRlc3QoICJDb3JyZWN0IHZhbHVlIG9mIHVua25vd24uIiwgIiFET0NUWVBFIFBMQVkgU1lTVEVNICdwbGF5LmR0ZCciLCB1bmtub3duLT5WYWx1ZSgpICk7CisJCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJCVRpWG1sTm9kZSogbm9kZSA9IGRvY0guQ2hpbGQoIDIgKS5Ob2RlKCk7CisJCXN0ZDo6c3RyaW5nIHN0cjsKKwkJc3RyIDw8ICgqbm9kZSk7CisJCVhtbFRlc3QoICJDb3JyZWN0IHN0cmVhbWluZyBvZiB1bmtub3duLiIsICI8IUVMRU1FTlQgdGl0bGUgKCNQQ0RBVEEpPiIsIHN0ci5jX3N0cigpICk7CisJCSNlbmRpZgorCX0KKworCXsKKwkJLy8gWyA3OTE0MTEgXSBGb3JtYXR0aW5nIGJ1ZworCQkvLyBDb21tZW50cyBkbyBub3Qgc3RyZWFtIG91dCBjb3JyZWN0bHkuCisJCWNvbnN0IGNoYXIqIGRvY3R5cGUgPSAKKwkJCSI8IS0tIFNvbWV3aGF0PGV2aWw+IC0tPiI7CisJCVRpWG1sRG9jdW1lbnQgZG9jOworCQlkb2MuUGFyc2UoIGRvY3R5cGUgKTsKKworCQlUaVhtbEhhbmRsZSBkb2NIKCAmZG9jICk7CisJCVRpWG1sQ29tbWVudCogY29tbWVudCA9IGRvY0guQ2hpbGQoIDAgKS5Ob2RlKCktPlRvQ29tbWVudCgpOworCisJCVhtbFRlc3QoICJDb21tZW50IGZvcm1hdHRpbmcuIiwgIiBTb21ld2hhdDxldmlsPiAiLCBjb21tZW50LT5WYWx1ZSgpICk7CisJCSNpZmRlZiBUSVhNTF9VU0VfU1RMCisJCXN0ZDo6c3RyaW5nIHN0cjsKKwkJc3RyIDw8ICgqY29tbWVudCk7CisJCVhtbFRlc3QoICJDb21tZW50IHN0cmVhbWluZy4iLCAiPCEtLSBTb21ld2hhdDxldmlsPiAtLT4iLCBzdHIuY19zdHIoKSApOworCQkjZW5kaWYKKwl9CisKKwl7CisJCS8vIFsgODcwNTAyIF0gV2hpdGUgc3BhY2UgaXNzdWVzCisJCVRpWG1sRG9jdW1lbnQgZG9jOworCQlUaVhtbFRleHQqIHRleHQ7CisJCVRpWG1sSGFuZGxlIGRvY0goICZkb2MgKTsKKwkKKwkJY29uc3QgY2hhciogZG9jdHlwZTAgPSAiPGVsZW1lbnQ+IFRoaXMgaGFzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlIDwvZWxlbWVudD4iOworCQljb25zdCBjaGFyKiBkb2N0eXBlMSA9ICI8ZWxlbWVudD5UaGlzIGhhcyAgaW50ZXJuYWwgc3BhY2U8L2VsZW1lbnQ+IjsKKwkJY29uc3QgY2hhciogZG9jdHlwZTIgPSAiPGVsZW1lbnQ+IFRoaXMgaGFzIGxlYWRpbmcsIHRyYWlsaW5nLCBhbmQgIGludGVybmFsIHNwYWNlIDwvZWxlbWVudD4iOworCisJCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBmYWxzZSApOworCQlkb2MuQ2xlYXIoKTsKKwkJZG9jLlBhcnNlKCBkb2N0eXBlMCApOworCQl0ZXh0ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImVsZW1lbnQiICkuQ2hpbGQoIDAgKS5UZXh0KCk7CisJCVhtbFRlc3QoICJXaGl0ZSBzcGFjZSBrZXB0LiIsICIgVGhpcyBoYXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2UgIiwgdGV4dC0+VmFsdWUoKSApOworCisJCWRvYy5DbGVhcigpOworCQlkb2MuUGFyc2UoIGRvY3R5cGUxICk7CisJCXRleHQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZWxlbWVudCIgKS5DaGlsZCggMCApLlRleHQoKTsKKwkJWG1sVGVzdCggIldoaXRlIHNwYWNlIGtlcHQuIiwgIlRoaXMgaGFzICBpbnRlcm5hbCBzcGFjZSIsIHRleHQtPlZhbHVlKCkgKTsKKworCQlkb2MuQ2xlYXIoKTsKKwkJZG9jLlBhcnNlKCBkb2N0eXBlMiApOworCQl0ZXh0ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImVsZW1lbnQiICkuQ2hpbGQoIDAgKS5UZXh0KCk7CisJCVhtbFRlc3QoICJXaGl0ZSBzcGFjZSBrZXB0LiIsICIgVGhpcyBoYXMgbGVhZGluZywgdHJhaWxpbmcsIGFuZCAgaW50ZXJuYWwgc3BhY2UgIiwgdGV4dC0+VmFsdWUoKSApOworCisJCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCB0cnVlICk7CisJCWRvYy5DbGVhcigpOworCQlkb2MuUGFyc2UoIGRvY3R5cGUwICk7CisJCXRleHQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZWxlbWVudCIgKS5DaGlsZCggMCApLlRleHQoKTsKKwkJWG1sVGVzdCggIldoaXRlIHNwYWNlIGNvbmRlbnNlZC4iLCAiVGhpcyBoYXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2UiLCB0ZXh0LT5WYWx1ZSgpICk7CisKKwkJZG9jLkNsZWFyKCk7CisJCWRvYy5QYXJzZSggZG9jdHlwZTEgKTsKKwkJdGV4dCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJlbGVtZW50IiApLkNoaWxkKCAwICkuVGV4dCgpOworCQlYbWxUZXN0KCAiV2hpdGUgc3BhY2UgY29uZGVuc2VkLiIsICJUaGlzIGhhcyBpbnRlcm5hbCBzcGFjZSIsIHRleHQtPlZhbHVlKCkgKTsKKworCQlkb2MuQ2xlYXIoKTsKKwkJZG9jLlBhcnNlKCBkb2N0eXBlMiApOworCQl0ZXh0ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImVsZW1lbnQiICkuQ2hpbGQoIDAgKS5UZXh0KCk7CisJCVhtbFRlc3QoICJXaGl0ZSBzcGFjZSBjb25kZW5zZWQuIiwgIlRoaXMgaGFzIGxlYWRpbmcsIHRyYWlsaW5nLCBhbmQgaW50ZXJuYWwgc3BhY2UiLCB0ZXh0LT5WYWx1ZSgpICk7CisJfQorCisJeworCQkvLyBEb3VibGUgYXR0cmlidXRlcworCQljb25zdCBjaGFyKiBkb2N0eXBlID0gIjxlbGVtZW50IGF0dHI9J3JlZCcgYXR0cj0nYmx1ZScgLz4iOworCisJCVRpWG1sRG9jdW1lbnQgZG9jOworCQlkb2MuUGFyc2UoIGRvY3R5cGUgKTsKKwkJCisJCVhtbFRlc3QoICJQYXJzaW5nIHJlcGVhdGVkIGF0dHJpYnV0ZXMuIiwgMCwgKGludClkb2MuRXJyb3IoKSApOwkvLyBub3QgYW4gIGVycm9yIHRvIHRpbnl4bWwKKwkJWG1sVGVzdCggIlBhcnNpbmcgcmVwZWF0ZWQgYXR0cmlidXRlcy4iLCAiYmx1ZSIsIGRvYy5GaXJzdENoaWxkRWxlbWVudCggImVsZW1lbnQiICktPkF0dHJpYnV0ZSggImF0dHIiICkgKTsKKwl9CisKKwl7CisJCS8vIEVtYmVkZGVkIG51bGwgaW4gc3RyZWFtLgorCQljb25zdCBjaGFyKiBkb2N0eXBlID0gIjxlbGVtZW50IGF0dFwwcj0ncmVkJyBhdHRyPSdibHVlJyAvPiI7CisKKwkJVGlYbWxEb2N1bWVudCBkb2M7CisJCWRvYy5QYXJzZSggZG9jdHlwZSApOworCQlYbWxUZXN0KCAiRW1iZWRkZWQgbnVsbCB0aHJvd3MgZXJyb3IuIiwgdHJ1ZSwgZG9jLkVycm9yKCkgKTsKKworCQkjaWZkZWYgVElYTUxfVVNFX1NUTAorCQlpc3RyaW5nc3RyZWFtIHN0cm0oIGRvY3R5cGUgKTsKKwkJZG9jLkNsZWFyKCk7CisJCWRvYy5DbGVhckVycm9yKCk7CisJCXN0cm0gPj4gZG9jOworCQlYbWxUZXN0KCAiRW1iZWRkZWQgbnVsbCB0aHJvd3MgZXJyb3IuIiwgdHJ1ZSwgZG9jLkVycm9yKCkgKTsKKwkJI2VuZGlmCisJfQorCisgICAgeworICAgICAgICAgICAgLy8gTGVnYWN5IG1vZGUgdGVzdC4gKFRoaXMgdGVzdCBtYXkgb25seSBwYXNzIG9uIGEgd2VzdGVybiBzeXN0ZW0pCisgICAgICAgICAgICBjb25zdCBjaGFyKiBzdHIgPQorICAgICAgICAgICAgICAgICAgICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIklTTy04ODU5LTFcIj8+IgorICAgICAgICAgICAgICAgICAgICAgICAgIjzkPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJD9m505G503+T2/MTW3CIKKyAgICAgICAgICAgICAgICAgICAgICAgICI8L+Q+IjsKKworICAgICAgICAgICAgVGlYbWxEb2N1bWVudCBkb2M7CisgICAgICAgICAgICBkb2MuUGFyc2UoIHN0ciApOworCisJCQkvL2RvYy5QcmludCggc3Rkb3V0LCAwICk7CisKKyAgICAgICAgICAgIFRpWG1sSGFuZGxlIGRvY0hhbmRsZSggJmRvYyApOworICAgICAgICAgICAgVGlYbWxIYW5kbGUgYUhhbmRsZSA9IGRvY0hhbmRsZS5GaXJzdENoaWxkRWxlbWVudCggIuQiICk7CisgICAgICAgICAgICBUaVhtbEhhbmRsZSB0SGFuZGxlID0gYUhhbmRsZS5DaGlsZCggMCApOworICAgICAgICAgICAgYXNzZXJ0KCBhSGFuZGxlLkVsZW1lbnQoKSApOworICAgICAgICAgICAgYXNzZXJ0KCB0SGFuZGxlLlRleHQoKSApOworICAgICAgICAgICAgWG1sVGVzdCggIklTTy04ODU5LTEgUGFyc2luZy4iLCAiQ/ZudORudN/k9vzE1twiLCB0SGFuZGxlLlRleHQoKS0+VmFsdWUoKSApOworICAgIH0KKworCXsKKwkJLy8gRW1wdHkgZG9jdW1lbnRzIHNob3VsZCByZXR1cm4gVElYTUxfRVJST1JfUEFSU0lOR19FTVBUWSwgYnVnIDEwNzA3MTcKKwkJY29uc3QgY2hhciogc3RyID0gIiAgICAiOworCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlBhcnNlKCBzdHIgKTsKKwkJWG1sVGVzdCggIkVtcHR5IGRvY3VtZW50IGVycm9yIFRJWE1MX0VSUk9SX0RPQ1VNRU5UX0VNUFRZIiwgVGlYbWxCYXNlOjpUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSwgZG9jLkVycm9ySWQoKSApOworCX0KKwkjaWZuZGVmIFRJWE1MX1VTRV9TVEwKKwl7CisJCS8vIFN0cmluZyBlcXVhbGl0eS4gWyAxMDA2NDA5IF0gc3RyaW5nIG9wZXJhdG9yPT0vIT0gbm8gd29ya3kgaW4gYWxsIGNhc2VzCisJCVRpWG1sU3RyaW5nIHRlbXA7CisJCVhtbFRlc3QoICJFbXB0eSB0aW55eG1sIHN0cmluZyBjb21wYXJlIGVxdWFsIiwgKCB0ZW1wID09ICIiICksIHRydWUgKTsKKworCQlUaVhtbFN0cmluZyAgICBmb287CisJCVRpWG1sU3RyaW5nICAgIGJhciggIiIgKTsKKwkJWG1sVGVzdCggIkVtcHR5IHRpbnl4bWwgc3RyaW5nIGNvbXBhcmUgZXF1YWwiLCAoIGZvbyA9PSBiYXIgKSwgdHJ1ZSApOworCX0KKworCSNlbmRpZgorCXsKKwkJLy8gQnVnIFsgMTE5NTY5NiBdIGZyb20gbWFybG9uaXNtCisJCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKGZhbHNlKTsgCisJCVRpWG1sRG9jdW1lbnQgeG1sOyAKKwkJeG1sLlBhcnNlKCI8dGV4dD48YnJlYWsvPlRoaXMgaGFuZ3M8L3RleHQ+Iik7IAorCQlYbWxUZXN0KCAiVGVzdCBzYWZlIGVycm9yIHJldHVybi4iLCB4bWwuRXJyb3IoKSwgZmFsc2UgKTsKKwl9CisKKwl7CisJCS8vIEJ1ZyBbIDEyNDM5OTIgXSAtIGFub3RoZXIgaW5maW5pdGUgbG9vcAorCQlUaVhtbERvY3VtZW50IGRvYzsKKwkJZG9jLlNldENvbmRlbnNlV2hpdGVTcGFjZShmYWxzZSk7CisJCWRvYy5QYXJzZSgiPHA+PHBiPjwvcGI+dGVzdDwvcD4iKTsKKwl9IAorCXsKKwkJLy8gTG93IGVudGl0aWVzCisJCVRpWG1sRG9jdW1lbnQgeG1sOworCQl4bWwuUGFyc2UoICI8dGVzdD4mI3gwZTs8L3Rlc3Q+IiApOworCQljb25zdCBjaGFyIHJlc3VsdFtdID0geyAweDBlLCAwIH07CisJCVhtbFRlc3QoICJMb3cgZW50aXRpZXMuIiwgeG1sLkZpcnN0Q2hpbGRFbGVtZW50KCktPkdldFRleHQoKSwgcmVzdWx0ICk7CisJCXhtbC5QcmludCgpOworCX0KKworCSNpZiBkZWZpbmVkKCBXSU4zMiApICYmIGRlZmluZWQoIFRVTkUgKQorCVF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCAoTEFSR0VfSU5URUdFUiopICgmZW5kKSApOworCVF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koIChMQVJHRV9JTlRFR0VSKikgKCZmcmVxKSApOworCXByaW50ZiggIlRpbWUgZm9yIHJ1bjogJWZcbiIsICggZG91YmxlICkoIGVuZC1zdGFydCApIC8gKGRvdWJsZSkgZnJlcSApOworCSNlbmRpZgorCisJcHJpbnRmICgiXG5QYXNzICVkLCBGYWlsICVkXG4iLCBnUGFzcywgZ0ZhaWwpOworCXJldHVybiBnRmFpbDsKK30KKworCg==