ZGlmZiAtLWdpdCBhL0FuZHJvaWQubWsgYi9BbmRyb2lkLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWVjMTlkLi4wMDAwMDAwCi0tLSBhL0FuZHJvaWQubWsKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA1IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSMKLSMgQW5kcm9pZC5tayBmb3IgVGlueVhtbC4KLSMKLSMgQWRkIC1EVElYTUxfVVNFX1NUTCB0byBDRkxBR1MgdG8gdXNlIFNUTC4KLSMKLQotY29tbW9uU291cmNlczo9IFwKLQl0aW55eG1sLmNwcCBcCi0JdGlueXhtbHBhcnNlci5jcHAgXAotCXRpbnl4bWxlcnJvci5jcHAgXAotCXRpbnlzdHIuY3BwCi0KLSMgRm9yIHRoZSBob3N0Ci0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1MT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKLWluY2x1ZGUgJChDTEVBUl9WQVJTKQotCi1MT0NBTF9TUkNfRklMRVM6PSBcCi0JJChjb21tb25Tb3VyY2VzKQotCi1MT0NBTF9NT0RVTEU6PSBsaWJ0aW55eG1sCi0KLUxPQ0FMX0NGTEFHUys9ICQoVE9PTF9DRkxBR1MpCi1MT0NBTF9MREZMQUdTOj0gJChUT09MX0xERkxBR1MpIC1sc3RkYysrIC1sYwotCi1pbmNsdWRlICQoQlVJTERfSE9TVF9TVEFUSUNfTElCUkFSWSkKLQotCi0jIEZvciB0aGUgZGV2aWNlCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi0jCi0jTE9DQUxfU1JDX0ZJTEVTOj0gXAotIwkkKGNvbW1vblNvdXJjZXMpCi0jCi0jTE9DQUxfTU9EVUxFOj0gbGlidGlueXhtbAotIwotI2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKLQotCmRpZmYgLS1naXQgYS9NT0RVTEVfTElDRU5TRV9CU0RfTElLRSBiL01PRFVMRV9MSUNFTlNFX0JTRF9MSUtFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Li4wMDAwMDAwCi0tLSBhL01PRFVMRV9MSUNFTlNFX0JTRF9MSUtFCisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL05PVElDRSBiL05PVElDRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVhNmEzNi4uMDAwMDAwMAotLS0gYS9OT1RJQ0UKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAotd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQotZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgotCi1QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLXB1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZAotcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLQotMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdAotbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCi1zb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24KLXdvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi0KLTIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kCi1tdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi0KLTMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQotZGlzdHJpYnV0aW9uLgpkaWZmIC0tZ2l0IGEvY2hhbmdlcy50eHQgYi9jaGFuZ2VzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZjNDdkMi4uMDAwMDAwMAotLS0gYS9jaGFuZ2VzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi1DaGFuZ2VzIGluIHZlcnNpb24gMS4wLjE6Ci0tIEZpeGVkIGNvbW1lbnQgdGFncyB3aGljaCB3ZXJlIG91dHB1dGluZyBhcyAnPD8tLScgaW5zdGVhZCBvZiAKLSAgdGhlIGNvcnJlY3QgJzwhLS0nLgotLSBJbXBsZW1lbnRlZCB0aGUgTmV4dCBhbmQgUHJldiBtZXRob2RzIG9mIHRoZSBUaVhtbEF0dHJpYnV0ZSBjbGFzcy4KLS0gUmVuYW1lZCAnTGFzdEF0dHJpYnR1dGUnIHRvICdMYXN0QXR0cmlidXRlJwotLSBGaXhlZCBiYWQgcG9pbnRlciB0byAnaXNzcGFjZScgdGhhdCBjb3VsZCBvY2N1ciB3aGlsZSBwYXJzaW5nIHRleHQuCi0tIEVycm9ycyBmaW5kaW5nIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRhZ3Mgbm8gbG9uZ2VyIHRocm93IGl0IGludG8gYW4KLSAgaW5maW5pdGUgbG9vcC4gKEhvcGVmdWxseS4pCi0KLUNoYW5nZXMgaW4gdmVyc2lvbiAxLjAuMgotLSBNaW5vciBkb2N1bWVudGF0aW9uIGZpeGVzLgotCi1DaGFuZ2VzIGluIHZlcnNpb24gMS4wLjMKLS0gQWZ0ZXIgbm9kZXMgYXJlIGFkZGVkIHRvIGEgZG9jdW1lbnQsIHRoZXkgcmV0dXJuIGEgcG9pbnRlcgotICB0byB0aGUgbmV3IG5vZGUgaW5zdGVhZCBvZiBhIGJvb2wgZm9yIHN1Y2Nlc3MuCi0tIEVsZW1lbnRzIGNhbiBiZSBjb25zdHJ1Y3RlZCB3aXRoIGEgdmFsdWUsIHdoaWNoIGlzIHRoZQotICBlbGVtZW50IG5hbWUuIEV2ZXJ5IGVsZW1lbnQgbXVzdCBoYXZlIGEgdmFsdWUgb3IgaXQgd2lsbCBiZQotICBpbnZhbGlkLCBidXQgdGhlIGNvZGUgY2hhbmdlcyB0byBlbmZvcmNlIHRoaXMgYXJlIG5vdCBmdWxseQotICBpbiBwbGFjZS4KLQotQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMS4wCi0tIEFkZGVkIHRoZQlUaVhtbEF0dHJpYnV0ZVNldCBjbGFzcyB0byBwdWxsIHRoZSBhdHRyaWJ1dGVzIGludG8KLSAgYSBzZXBlcmF0ZSBjb250YWluZXIuCi0tIE1vdmVkIHRoZSBkb3VibHkgbGlrZWQgbGlzdCBvdXQgb2YgWG1sQmFzZS4gTm93IFhtbEJhc2Ugb25seQotICByZXF1aXJlcyB0aGUgUHJpbnQoKSBmdW5jdGlvbiBhbmQgZGVmaW5lcyBzb21lIHV0aWxpdHkgZnVuY3Rpb25zLgotLSBNb3ZlZCBlcnJvcnMgaW50byBhIHNlcGVyYXRlIGZpbGUuIChXaXRoIHRoZSBpZGVhIG9mIGludGVybmF0aW9uYWxpemF0aW9uCi0gIHRvIHRoZSBvdGhlciBsYXRpbi0xIGxhbmd1YWdlcy4pCi0tIEFkZGVkIHRoZSAiTm9kZVR5cGUiCi0tIEZpeGVkIHdoaXRlIHNwYWNlIHBhcnNpbmcgaW4gdGV4dCB0byBjb25mb3JtIHdpdGggdGhlIHN0YW5kYXJkLiAKLSAgQmFzaWNhbGx5LCBhbGwgd2hpdGUgc3BhY2UgYmVjb21lcyBqdXN0IG9uZSBzcGFjZS4KLS0gQWRkZWQgdGhlIFRpWG1sRGVjbGFyYXRpb24gY2xhc3MgdG8gcmVhZCB4bWwgZGVjbGFyYXRpb25zLgotCi1DaGFuZ2VzIGluIHZlcnNpb24gMS4yLjAKLS0gUmVtb3ZlZCB0aGUgZmFjdG9yeS4gVGhlIGZhY3Rvcnkgd2FzIG5vdCByZWFsbHkgaW4gdGhlIHNwaXJpdCAKLSAgb2Ygc21hbGwgYW5kIHNpbXBsZSwgY29uZnVzZWQgdGhlIGNvZGUsIGFuZCB3YXMgb2YgbGltaXRlZCB2YWx1ZS4KLS0gQWRkZWQgRmlyc3RDaGlsZEVsZW1lbnQgYW5kIE5leHRTaWJsaW5nRWxlbWVudCwgYmVjYXVzZSB0aGV5Ci0gIGFyZSBzdWNoIGNvbW1vbiBmdW5jdGlvbnMuCi0tIFJlLXdyb3RlIHRoZSBleGFtcGxlIHRvIHRlc3QgYW5kIGRlbW9uc3RyYXRlIG1vcmUgZnVuY3Rpb25hbGl0eS4KLQotQ2hhbmdlcyBpbiB2ZXJzaW9uIDEuMi4xCi0tIEZpeGVkIGEgYnVnIHdoZXJlIGNvbW1lbnRzIGNvdWxkbid0IGJlIGluc2lkZSBlbGVtZW50cy4KLS0gTG9hZGluZyBub3cgY2xlYXJzIG91dCBleGlzdGluZyBYTUwgcmF0aGVyIHRoYW4gYXBwZW5kaW5nLgotLSBBZGRlZCB0aGUgIkNsZWFyIiBtZXRob2Qgb24gYSBub2RlIHRvIGRlbGV0ZSBhbGwgaXRzIGNoaWxkcmVuLgotCi1DaGFuZ2VzIGluIHZlcnNpb24gMS4yLjIKLS0gRml4ZWQgVGlYbWxBdHRyaWJ1dGU6OlByZXZpb3VzIGFjdHVhbGx5IHJldHVybmluZyAibmV4dC4iIFRoYW5rcwotICB0byBSaWNrYXJkIFRyb2Vkc3NvbiBmb3IgdGhlIGJ1ZyBmaXguCi0KLUNoYW5nZXMgaW4gdmVyc2lvbiAxLjIuMwotLSBBZGRlZCB0aGUgVElYTUwgcHJlZml4IHRvIHRoZSBlcnJvciBzdHJpbmdzIHRvIHJlc29sdmUgY29uZmxpY3RzCi0gIHdpdGggI2RlZmluZXMgaW4gT1MgaGVhZGVycy4gVGhhbmtzIHRvIFN0ZXZlIExob21tZS4KLS0gRml4ZWQgYSBkZWxldGUgYnVmIHRoYXQgc2hvdWxkIGJlIGEgZGVsZXRlIFtdIGJ1Zi4gCi0gIFRoYW5rcyB0byBFcGhpIFNpbm93aXR6LgotCi1DaGFuZ2VzIGluIHZlcnNpb24gMS4yLjQKLS0gUmVwbGFjZUNoaWxkKCkgd2FzIGFsbW9zdCBndWFyZW50ZWVkIHRvIGZhaWwuIFNob3VsZCBiZSBmaXhlZCwKLSAgdGhhbmtzIHRvIEpvZSBTbWl0aC4gSm9lIGFsc28gcG9pbnRlZCBvdXQgdGhhdCB0aGUgUHJpbnQoKSBmdW5jdGlvbnMKLSAgc2hvdWxkIHRha2Ugc3RyZWFtIHJlZmVyZW5jZXM6IEkgYWdyZWUsIGFuZCB3b3VsZCBsaWtlIHRvIG92ZXJsb2FkCi0gIHRoZSBQcmludCgpIG1ldGhvZCB0byB0YWtlIGVpdGhlciBmb3JtYXQsIGJ1dCBJIGRvbid0IHdhbnQgdG8gZG8gCi0gIHRoaXMgaW4gYSBkb3QgcmVsZWFzZS4KLS0gU29tZSBjb21waWxlcnMgc2VlbSB0byBuZWVkIGFuIGV4dHJhIDxjdHlwZS5oPiBpbmNsdWRlLiBUaGFua3MKLSAgdG8gU3RldmUgTGhvbW1lIGZvciB0aGF0LgotCi1DaGFuZ2VzIGluIHZlcnNpb24gMi4wLjAgQkVUQQotLSBNYWRlIHRoZSBUb1hYWCgpIGNhc3RzIHNhZmUgaWYgJ3RoaXMnIGlzIG51bGwuIAotICBXaGVuICJMb2FkRmlsZSIgaXMgY2FsbGVkIHdpdGggYSBmaWxlbmFtZSwgdGhlIHZhbHVlIHdpbGwgY29ycmVjdGx5IGdldCBzZXQuCi0gIFRoYW5rcyB0byBCcmlhbiBZb2Rlci4KLS0gRml4ZWQgYnVnIHdoZXJlIGlzYWxwaGEoKSBhbmQgaXNhbG51bSgpIHdvdWxkIGdldCBjYWxsZWQgd2l0aCBhIG5lZ2F0aXZlIHZhbHVlIGZvciAKLSAgaGlnaCBhc2NpaSBudW1iZXJzLiBUaGFua3MgdG8gQWxlc2t5IEFrc2Vub3YuCi0tIEZpeGVkIHNvbWUgZXJyb3JzIGNvZGVzIHRoYXQgd2VyZSBub3QgZ2V0dGluZyBzZXQuCi0tIE1hZGUgbWV0aG9kcyAiY29uc3QiIHRoYXQgd2VyZSBub3QuCi0tIEFkZGVkIGEgc3dpdGNoIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBpZ25vcmluZyBvZiB3aGl0ZSBzcGFjZS4gKCBUaVhtbERvY3VtZW50OjpTZXRJZ25vcmVXaGl0ZVNwYWNlKCkgKQotLSBHcmVhdGVyIHN0YW5kYXJkaXphdGlvbiBhbmQgY29kZSByZS11c2UgaW4gdGhlIHBhcnNlci4KLS0gQWRkZWQgYSBzdHJlYW0gb3V0IG9wZXJhdG9yLgotLSBBZGRlZCBhIHN0cmVhbSBpbiBvcGVyYXRvci4KLS0gRW50aXR5IHN1cHBvcnQsIG9mIHByZWRlZmluZWQgZW50aXRlcy4gJiN4IGVudGl0aWVzIGFyZSB1bnRvdWNoZWQgYnkgaW5wdXQgb3Igb3V0cHV0LgotLSBJbXByb3ZlZCB0ZXh0IG91dCBmb3JtYXR0aW5nLgotLSBGaXhlZCBSZXBsYWNlQ2hpbGQgYnVnLCB0aGFua3MgdG8gVGFvIENoZW4uCi0KLUNoYW5nZXMgaW4gdmVyc2lvbiAyLjAuMQotLSBGaXhlZCBoYW5naW5nIG9uIGxvYWRpbmcgYSAwIGxlbmd0aCBmaWxlLiBUaGFua3MgdG8gSmVmZiBTY296emFmYXZhLgotLSBGaXhlZCBjcmFzaGluZyBvbiBJbnNlcnRCZWZvcmVDaGlsZCBhbmQgSW5zZXJ0QWZ0ZXJDaGlsZC4gQWxzbyBwb3NzaWJpbGl0eSBvZiBiYWQgbGlua3MgYmVpbmcKLSAgY3JlYXRlZCBieSBzYW1lIGZ1bmN0aW9uLiBUaGFua3MgdG8gRnJhbmsgRGUgcHJpbnMuCi0tIEFkZGVkIG1pc3NpbmcgbGljZW5jZSB0ZXh0LiBUaGFua3MgdG8gTGFycyBXaWxsZW1zZW5zLgotLSBBZGRlZCA8Y3R5cGUuaD4gaW5jbHVkZSwgYXQgdGhlIHN1Z2dlc3Rpb24gb2YgU3RldmUgV2FsdGVycy4KLQotQ2hhbmdlcyBpbiB2ZXJzaW9uIDIuMS4wCi0tIFl2ZXMgQmVycXVpbiBicmluZ3MgdXMgdGhlIFNUTCBzd2l0Y2guIFRoZSBmb3J1bSBvbiBTb3VyY2VGb3JnZSwgYW5kIHZhcmlvdXMgZW1haWxzIHRvCi0gIG1lLCBoYXZlIGxvbmcgZGViYXRlZCBhbGwgb3V0IFNUTCB2cy4gbm8gU1RMIGF0IGFsbC4gQW5kIG5vdyB5b3UgY2FuIGhhdmUgaXQgYm90aCB3YXlzLgotICBUaW55WG1sIHdpbGwgY29tcGlsZSBlaXRoZXIgd2F5LgotCi1DaGFuZ2VzIGluIHZlcnNpb24gMi4xLjEKLS0gQ29tcGlsYXRpb24gd2FybmluZ3MuCi0KLUNoYW5nZXMgaW4gdmVyc2lvbiAyLjEuMgotLSBVbmVlZGVkIGNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBTVEwgY2FzZS4KLS0gQ2hhbmdlZCBoZWFkZXJzIHNvIHRoYXQgU1RMIGNhbiBiZSB0dXJuZWQgb24gb3Igb2ZmIGluIHRpbnl4bWwuaAotCi1DaGFuZ2VzIGluIHZlcnNpb24gMi4xLjMKLS0gRml4ZWQgbm9uLWNvbnN0IHJlZmVyZW5jZSBpbiBBUEk7IG5vdyB1c2VzIGEgcG9pbnRlci4KLS0gQ29weSBjb25zdHJ1Y3RvciBvZiBUaVhtbFN0cmluZyBub3QgY2hlY2tpbmcgZm9yIGFzc2lnbm1lbnQgdG8gc2VsZi4KLS0gTmltcm9kIENvaGVuIGZvdW5kIGEgdHJ1bHkgZXZpbCBidWcgaW4gdGhlIFNUTCBpbXBsZW1lbnRhdGlvbiB0aGF0IG9jY3VycwotICB3aGVuIGEgc3RyaW5nIGlzIGNvbnZlcnRlZCB0byBhIGNfc3RyIGFuZCB0aGVuIGFzc2lnbmVkIHRvIHNlbGYuIFNlYXJjaCBmb3IKLSAgU1RMX1NUUklOR19CVUcgZm9yIGEgZnVsbCBkZXNjcmlwdGlvbi4gSSdtIGFzc2VydGluZyB0aGlzIGlzIGEgTWljcm9zb2Z0IFNUTAotICBidWcsIHNpbmNlICZzdHJpbmcgYW5kIHN0cmluZy5jX3N0cigpIHNob3VsZCBuZXZlciBiZSB0aGUgc2FtZS4gTmV2ZXJ0aGVsZXNzLAotICB0aGUgY29kZSB3b3JrcyBhcm91bmQgaXQuCi0tIFVyaXZhbiBTYWFpYiBwb2ludGVkIG91dCBhIGNvbXBpbGVyIGNvbmZsaWN0LCB3aGVyZSB0aGUgQyBoZWFkZXJzIGRlZmluZQotICB0aGUgaXNibGFuayBtYWNybywgd2hpY2ggd2FzIHdpcGluZyBvdXQgdGhlIFRpWG1sU3RyaW5nOjppc2JsYW5rKCkgbWV0aG9kLgotICBUaGUgbWV0aG9kIHdhcyB1bnVzZWQgYW5kIGhhcyBiZWVuIHJlbW92ZWQuCi0KLUNoYW5nZXMgaW4gdmVyc2lvbiAyLjEuNAotLSBSZXdvcmtlZCB0aGUgZW50aXR5IGNvZGUuIEVudGl0aWVzIHdlcmUgbm90IGNvcnJlY3RseSBzdXJ2aW5nIHJvdW5kIHRyaXAgaW5wdXQgYW5kIG91dHB1dC4KLSAgV2lsbCBub3cgYXV0b21hdGljYWxseSBjcmVhdGUgZW50aXRpZXMgZm9yIGhpZ2ggYXNjaWkgaW4gb3V0cHV0LgotCi1DaGFuZ2VzIGluIHZlcnNpb24gMi4xLjUKLS0gQnVnIGZpeCBieSBreWxvdGFuIDogaW5maW5pdGUgbG9vcCBvbiBzb21lIGlucHV0ICh0aW55eG1scGFyc2VyLmNwcCByZXYgMS4yNykKLS0gQ29udHJpYnV0ZWQgYnkgSXZpY2EgQXJhY2ljIChieXRlbG9yZCkgOiAxIG5ldyBWQysrIHByb2plY3QgdG8gY29tcGlsZSB2ZXJzaW9ucyBhcyBzdGF0aWMgbGlicmFyaWVzICh0aW55eG1sX2xpYi5kc3ApLCAKLSAgYW5kIGFuIGV4YW1wbGUgdXNhZ2UgaW4geG1sdGVzdC5kc3AKLSAgKFBhdGNoIHJlcXVlc3QgSUQgNjc4NjA1KQotLSBBIHN1Z2dlc3Rpb24gYnkgUm9uYWxkIEZlbm5lciBKciAoZG9ybWxvY2spIHRvIGFkZCAjaW5jbHVkZSA8aXN0cmVhbT4gYW5kIDxvc3RyZWFtPiBmb3IgQXBwbGUncyBQcm9qZWN0IEJ1aWxkZXIgCi0gIChQYXRjaCByZXF1ZXN0IElEIDY5NzY0MikKLS0gQSBwYXRjaCBmcm9tIG9ob21tZXMgdGhhdCBhbGxvd3MgdG8gcGFyc2UgY29ycmVjdGx5IGRvdHMgaW4gZWxlbWVudCBuYW1lcyBhbmQgYXR0cmlidXRlIG5hbWVzCi0gIChQYXRjaCByZXF1ZXN0IDYwMjYwMCBhbmQga3lsb3RhbiA3MDE3MjgpCi0tIEEgcGF0Y2ggZnJvbSAgaGVybWl0Z2VlayAoIEphbWVzICkgYW5kIHdhc3RlbGFuZCBmb3IgaW1wcm9wZXIgZXJyb3IgcmVwb3J0aW5nCi0tIFJldmlld2VkIGJ5IExlZSwgd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6Ci0JLSBHb3Qgc2ljayBvZiBmaWdodGluZyB0aGUgU1RML25vbi1TVEwgdGhpbmcgaW4gdGhlIHdpbmRvd3MgYnVpbGQuIEJyb2tlCi0JICB0aGVtIG91dCBhcyBzZXBlcmF0ZSBwcm9qZWN0cy4KLQktIEkgaGF2ZSB0b28gbG9uZyBub3QgaW5jbHVkZWQgdGhlIGRzdy4gQWRkZWQuCi0JLSBUaW55WG1sVGV4dCBoYWQgYSBwcm90ZWN0ZWQgUHJpbnQuIE9kZC4KLQktIE1hZGUgTGlua0VuZENoaWxkIHB1YmxpYywgd2l0aCBkb2NzIGFuZCBhcHByb3ByaWF0ZSB3YXJuaW5ncy4KLQktIFVwZGF0ZWQgdGhlIGRvY3MuCi0KLTIuMi4wCi0tIEZpeGVkIGFuIHVuaW5pdGlhbGl6ZWQgcG9pbnRlciBpbiB0aGUgVGlYbWxBdHRyaWJ1dGVzCi0tIEZpeGVkIFNUTCBjb21waWxhdGlvbiBwcm9ibGVtIGluIE1pbkdXIChhbmQgZ2NjIDM/KSAtIHRoYW5rcyBCcmlhbiBZb2RlciBmb3IgZmluZGluZyB0aGlzIG9uZQotLSBGaXhlZCBhIHN5bnRheCBlcnJvciBpbiBUaVhtbERlY2xhcmF0aW9uIC0gdGhhbmtzIEJyaWFuIFlvZGVyCi0tIEZsZXRjaGVyIER1bm4gcHJvcG9zZWQgYW5kIHN1Ym1pdHRlZCBuZXcgZXJyb3IgaGFuZGxpbmcgdGhhdCB0cmFja2VkIHRoZSByb3cgYW5kIGNvbHVtbi4gTGVlCi0gIG1vZGlmaWVkIGl0IHRvIG5vdCBoYXZlIHBlcmZvcm1hbmNlIGltcGFjdC4KLS0gR2VuZXJhbCBjbGVhbnVwIHN1Z2dlc3Rpb25zIGZyb20gRmxldGNoZXIgRHVubi4KLS0gSW4gZXJyb3IgaGFuZGxpbmcsIGdlbmVyYWwgZXJyb3JzIHdpbGwgbm8gbG9uZ2VyIGNsZWFyIHRoZSBlcnJvciBzdGF0ZSBvZiBzcGVjaWZpYyBvbmVzLgotLSBGaXggZXJyb3IgaW4gZG9jdW1lbnRhdGlvbiA6IGNvbW1lbnRzIHN0YXJ0aW5nIHdpdGggIjw/LS0iIGluc3RlYWQgb2YgIjwhLS0iICh0aGFua3MgaW9uX3B1bHNlKQotLSBBZGRlZCB0aGUgVGlYbWxIYW5kbGUuIEFuIGVhc3ksIHNhZmUgd2F5IHRvIGJyb3dzZSBYTUwgRE9NcyB3aXRoIGxlc3MgY29kZS4KLS0gQWRkZWQgUXVlcnlBdHRyaWJ1dGUgY2FsbHMgd2hpY2ggaGF2ZSBiZXR0ZXIgZXJyb3IgbWVzc2FnaW5nLiAoUHJvcG9zZWQgYnkgRmxldGNoZXIgRHVubikKLS0gTm9kZXMgYW5kIGF0dHJpYnV0ZXMgY2FuIG5vdyBwcmludCB0aGVtc2VsdmVzIHRvIHN0cmluZ3MuIChZdmVzIHN1Z2dlc3Rpb24pCi0tIEZpeGVkIGJ1ZyB3aGVyZSBlbnRpdGllcyB3aXRoIG9uZSBjaGFyYWN0ZXIgd291bGQgY29uZnVzZSBwYXJzZXIuIChUaGFua3MgUm9tYW4pCi0KLTIuMi4xCi0tIEFkZGl0aW9uYWwgdGVzdGluZyAobm8gbW9yZSBidWdzIGZvdW5kIHRvIGJlIGZpeGVkIGluIHRoaXMgcmVsZWFzZSkKLS0gU2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgdG8gdGhlIGN1cnNvciBjb2RlLgotCi0yLjMuMAotLSBVc2VyIERhdGEgYXJlIG5vdyBkZWZpbmVkIGluIFRpWG1sQmFzZSBpbnN0ZWFkIG9mIFRpWG1sTm9kZQotLSBDaGFyYWN0ZXIgRW50aXRpZXMgYXJlIG5vdyBVQ1MtMgotLSBDaGFyYWN0ZXIgRW50aXRpZXMgY2FuIGJlIGRlY2ltYWwgb3IgaGV4YWRlY2ltYWwKLS0gVVRGLTggY29udmVyc2lvbi4KLS0gRml4ZWQgbWFueSwgbWFueSBidWdzLgotCi0yLjMuMQotLSBGaXhlZCBidWcgaW4gaGFuZGxpbmcgbnVsbHMgZW1iZWRkZWQgaW4gdGhlIGlucHV0LgotLSBNYWtlIFVURi04IHBhcnNlciB0b2xlcmFudCBvZiBiYWQgdGV4dCBlbmNvZGluZy4KLS0gQWRkZWQgZW5jb2RpbmcgZGV0ZWN0aW9uLiAKLS0gTWFueSBmaXhlcyBhbmQgaW5wdXQgZnJvbSBKb2huLVBoaWxpcCBMZW9uYXJkIEpvaGFuc3NvbiAoSlApIGFuZCBFbGxlcnMsIAotICBpbmNsdWRpbmcgVVRGLTggZmVlZGJhY2ssIGJ1ZyByZXBvcnRzLCBhbmQgcGF0Y2hlcy4gVGhhbmtzIQotLSBBZGRlZCB2ZXJzaW9uICMgY29uc3RhbnRzIC0gYSBzdWdnZXN0aW9uIGZyb20gSlAgYW5kIEVsbGVycy4KLS0gWyA5NzkxODAgXSBNaXNzaW5nIDsgaW4gZW50aXR5IHJlZmVyZW5jZSwgZml4IGZyb20gUm9iIExhdmVhdXguCi0tIENvcHkgY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50IGhhdmUgYmVlbiBhIGxvbmcgdGltZSBjb21pbmcuIFRoYW5rcyB0bwotICBGb2trZSBhbmQgSlAuCi0KLTIuMy4yCi0tIE1hZGUgdGhlIElzQWxwaGEgYW5kIElzQWxwaGFOdW0gbXVjaCBtb3JlIHRvbGVyYW50IG9mIG5vbi1VVEYtOCBlbmNvZGluZ3MuIFRoYW5rcwotICBWb2xrZXIgQm9lcmNoZXJzIGZvciBmaW5kaW5nIHRoZSBpc3N1ZS4KLS0gUmFuIHRoZSBwcm9ncmFtIHRob3VnaCB0aGUgbWFnbmlmaWNlbnQgVmFsZ3JpbmQgLSBodHRwOi8vdmFsZ3JpbmQua2RlLm9yZyAtIHRvIGNoZWNrCi0gIGZvciBtZW1vcnkgZXJyb3JzLiBGaXhlZCBzb21lIG1pbm9yIGlzc3Vlcy4KLQotMi4zLjMKLS0gRml4ZWQgY3Jhc2ggd2hlbiB0ZXN0IHByb2dyYW0gd2FzIHJ1biBmcm9tIGluY29ycmVjdCBkaXJlY3RvcnkuCi0tIEZpeGVkIGJ1ZyAxMDcwNzE3IC0gZW1wdHkgZG9jdW1lbnQgbm90IHJldHVybmVkIGNvcnJlY3RseSAtIHRoYW5rcyBLYXRzdWhpc2EgWXVhc2EuCi0tIEJ1ZyAxMDc5MzAxIHJlc29sdmVkIC0gZGVwcmVjYXRlZCBzdGRsaWIgY2FsbHMuIFRoYW5rcyBBZHJpYW4gQm9laW5nLgotLSBCdWcgMTAzNTIxOCBmaXhlZCAtIGRvY3VtZW50YXRpb24gZXJyb3JzLiBYdW5qaSBMdW8KLS0gT3RoZXIgYnVnIGZpeGVzIGhhdmUgYWNjdW11bGF0ZWQgYW5kIGJlZW4gZml4ZWQgb24gdGhlIHdheSBhcyB3ZWxsOyBteSBhcG9sb2dpZXMgdG8KLSAgYXV0aG9ycyBub3QgY3JlZGl0ZWQhCi0tIEJpZyBmaXggLyBhZGRpdGlvbiBpcyB0byBjb3JyZWN0bHkgcmV0dXJuIGNvbnN0IHZhbHVlcy4gVGlueVhtbCBjb3VsZCBiYXNpY2FsbHkKLSAgcmVtb3ZlIGNvbnN0IGluIGEgbWV0aG9kIGxpa2UgdGhpczogVGlYbWxFbGVtZW50KiBGb28oKSBjb25zdCwgd2hlcmUgdGhlIHJldHVybmVkIGVsZW1lbnQKLSAgd2FzIGEgcG9pbnRlciB0byBpbnRlcm5hbCBkYXRhLiBUaGF0IGlzIG5vdzogY29uc3QgVGlYbWxFbGVtZW50KiBGb28oKSBjb25zdCBhbmQKLSAgVGlYbWxFbGVtZW50KiBGb28oKS4KLQotMi4zLjQKLS0gRml4ZWQgYWRkaXRpb25hbCBjb25zdCBlcnJvcnMsIHRoYW5rcyBLZW50IEdpYnNvbi4KLS0gQ29ycmVjdGx5IHJlLWVuYWJsZSB3YXJuaW5ncyBhZnRlciB0aW55eG1sIGhlYWRlci4gVGhhbmtzIENvcnkgTmVsc29uLgotLSBWYXJpZXR5IG9mIHR5cGUgY2xlYW51cCBhbmQgd2FybmluZyBmaXhlcy4gVGhhbmtzIFdhcnJlbiBTdGV2ZW5zLgotLSBDbGVhbmVkIHVwIHVubmVlZGVkIGNvbnN0cnVjdG9yIGNhbGxzIGluIFRpbnlTdHJpbmcgLSB0aGFua3MgdG8gR2VvZmYgQ2FybHRvbiBhbmQKLSAgdGhlIGRpc2N1c3Npb24gZ3JvdXAgb24gc291cmNlZm9yZ2UuCi0KLTIuNC4wCi0tIEltcHJvdmVkIHN0cmluZyBjbGFzcywgdGhhbmtzIFR5Z2UgTG92c2V0ICh3aG9zZSBuYW1lIGdldHMgbWFuZ2xlZCBpbiBFbmdsaXNoIC0gc29ycnkpCi0tIFR5cGUgY2FzdCBjb21waWxlciB3YXJuaW5nLCB0aGFua3MgUm9iIHZhbiBkZW4gQm9nYWFyZAotLSBBZGRlZCBHZXRUZXh0KCkgY29udmVuaWVuY2UgZnVuY3Rpb24uIFRoYW5rcyBJbHlhIFBhcm5pdWsgJiBBbmRyZXcgRWxsZXJzIGZvciBpbnB1dC4KLS0gTWFueSB0aGFua3MgdG8gbWFybG9uaXNtIGZvciBmaW5kaW5nIGFuIGluZmluaXRlIGxvb3AgaW4gYmFkIHhtbC4KLS0gQSBwYXRjaCB0byBjbGVhbnVwIHdhcm5pbmdzIGZyb20gUm9iZXJ0IEdlYmlzLgotLSBBZGRlZCBWYWx1ZVN0cigpIHRvIGdldCB0aGUgdmFsdWUgb2YgYSBub2RlIGFzIGEgc3RyaW5nLgotLSBUaVhtbFRleHQgY2FuIG5vdyBwYXJzZSBhbmQgb3V0cHV0IGFzIENEQVRBCi0tIEFkZGl0aW9uYWwgc3RyaW5nIGltcHJvdmVtZW50IGZyb20gSmFtZXMgKHoyODk1KQotLSBSZW1vdmVkIGV4dHJhbmVvdXMgJ2NvbnN0JywgdGhhbmtzIERhdmlkIEFsZHJpY2gKLS0gRmlyc3QgcGFzcyBhdCBzd2l0Y2hpbmcgdG8gdGhlICJzYWZlIiBzdGRsaWIgZnVuY3Rpb25zLiBNYW55IHBlb3BsZSBoYXZlIHN1Z2dlc3RlZCBhbmQKLSAgcHVzaGVkIG9uIHRoaXMsIGJ1dCBXYXJyZW4gU3RldmVucyBwdXQgdG9nZXRoZXIgdGhlIGZpcnN0IHByb3Bvc2FsLgotLSBUaW55WG1sIG5vdyB3aWxsIGRvIEVPTCBub3JtYWxpemF0aW9uIGJlZm9yZSBwYXJzaW5nLCBjb25zaXN0ZW50IHdpdGggdGhlIFczQyBYTUwgc3BlYy4KLS0gRG9jdW1lbnRzIGxvYWRlZCB3aXRoIHRoZSBVVEYtOCBCT00gd2lsbCBub3cgc2F2ZSB3aXRoIHRoZSBVVEYtOCBCT00uIEdvb2Qgc3VnZ2VzdGlvbiAKLSAgZnJvbSAnaW5zdHJ1Y3Rvcl8nCi0tIEVsbGVycyBzdWJtaXR0ZWQgaGlzIHZlcnkgcG9wdWxhciB0dXRvcmlhbHMsIHdoaWNoIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZGlzdHJpYnV0aW9uLgotCmRpZmYgLS1naXQgYS9kb2NzL2Fubm90YXRlZC5odG1sIGIvZG9jcy9hbm5vdGF0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQyYWYzZi4uMDAwMDAwMAotLS0gYS9kb2NzL2Fubm90YXRlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IENsYXNzIExpc3Q8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpbnlYbWwgQ2xhc3MgTGlzdDwvaDE+SGVyZSBhcmUgdGhlIGNsYXNzZXMsIHN0cnVjdHMsIHVuaW9ucyBhbmQgaW50ZXJmYWNlcyB3aXRoIGJyaWVmIGRlc2NyaXB0aW9uczo8dGFibGU+Ci0gIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkFuIGF0dHJpYnV0ZSBpcyBhIG5hbWUtdmFsdWUgcGFpciA8L3RkPjwvdHI+Ci0gIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+VGlYbWxCYXNlIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXZlcnkgY2xhc3MgaW4gVGlueVhtbCA8L3RkPjwvdHI+Ci0gIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+QW4gWE1MIGNvbW1lbnQgPC90ZD48L3RyPgotICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+SW4gY29ycmVjdCBYTUwgdGhlIGRlY2xhcmF0aW9uIGlzIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgZmlsZSA8L3RkPjwvdHI+Ci0gIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5BbHdheXMgdGhlIHRvcCBsZXZlbCBub2RlIDwvdGQ+PC90cj4KLSAgPHRyPjx0ZCBjbGFzcz0iaW5kZXhrZXkiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj5UaGUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciBjbGFzcyA8L3RkPjwvdHI+Ci0gIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkEgVGlYbWxIYW5kbGUgaXMgYSBjbGFzcyB0aGF0IHdyYXBzIGEgbm9kZSBwb2ludGVyIHdpdGggbnVsbCBjaGVja3M7IHRoaXMgaXMgYW4gaW5jcmVkaWJseSB1c2VmdWwgdGhpbmcgPC90ZD48L3RyPgotICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPlRoZSBwYXJlbnQgY2xhc3MgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbCA8L3RkPjwvdHI+Ci0gIDx0cj48dGQgY2xhc3M9ImluZGV4a2V5Ij48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZCBjbGFzcz0iaW5kZXh2YWx1ZSI+WE1MIHRleHQgPC90ZD48L3RyPgotICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPkFueSB0YWcgdGhhdCB0aW55WG1sIGRvZXNuJ3QgcmVjb2duaXplIGlzIHNhdmVkIGFzIGFuIHVua25vd24gPC90ZD48L3RyPgotPC90YWJsZT4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQXR0cmlidXRlLW1lbWJlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMxNGE3My4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUtbWVtYmVycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IE1lbWJlciBMaXN0PC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Ci08aDE+VGlYbWxBdHRyaWJ1dGUgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiwgaW5jbHVkaW5nIGFsbCBpbmhlcml0ZWQgbWVtYmVycy48cD48dGFibGU+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E2Ij5Eb3VibGVWYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+SW50VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EzIj5OYW1lPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPk5leHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5QcmV2aW91czwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E4Ij5RdWVyeURvdWJsZVZhbHVlPC9hPihkb3VibGUgKl92YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlF1ZXJ5SW50VmFsdWU8L2E+KGludCAqX3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMiI+U2V0RG91YmxlVmFsdWU8L2E+KGRvdWJsZSBfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTExIj5TZXRJbnRWYWx1ZTwvYT4oaW50IF92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOSI+U2V0TmFtZTwvYT4oY29uc3QgY2hhciAqX25hbWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMyI+U2V0TmFtZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEwIj5TZXRWYWx1ZTwvYT4oY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPlRpWG1sQXR0cmlidXRlPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExIj5UaVhtbEF0dHJpYnV0ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyIj5UaVhtbEF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci08L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjRkYjUxLi4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBUaVhtbEF0dHJpYnV0ZSBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaVhtbEF0dHJpYnV0ZSBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sQXR0cmlidXRlIiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbEJhc2UiIC0tPkFuIGF0dHJpYnV0ZSBpcyBhIG5hbWUtdmFsdWUgcGFpci4gIAotPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgotPHA+Ci08Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KLTxwPgotPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxBdHRyaWJ1dGU6Ci08cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sQXR0cmlidXRlLnBuZyIgdXNlbWFwPSIjVGlYbWxBdHRyaWJ1dGVfbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KLTxtYXAgbmFtZT0iVGlYbWxBdHRyaWJ1dGVfbWFwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiIGFsdD0iVGlYbWxCYXNlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsOTAsMjQiPgotPC9tYXA+Ci08YSBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KLTx0cj48dGQ+PC90ZD48L3RyPgotPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpUaVhtbEF0dHJpYnV0ZSIgcmVmPSJhMCIgYXJncz0iKCkiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EwIj5UaVhtbEF0dHJpYnV0ZTwvYT4gKCk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnN0cnVjdCBhbiBlbXB0eSBhdHRyaWJ1dGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpUaVhtbEF0dHJpYnV0ZSIgcmVmPSJhMSIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Ci0mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEiPlRpWG1sQXR0cmlidXRlPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5zdGQ6OnN0cmluZyBjb25zdHJ1Y3Rvci4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlRpWG1sQXR0cmlidXRlIiByZWY9ImEyIiBhcmdzPSIoY29uc3QgY2hhciAqX25hbWUsIGNvbnN0IGNoYXIgKl92YWx1ZSkiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyIj5UaVhtbEF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKl9uYW1lLCBjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3QgYW4gYXR0cmlidXRlIHdpdGggYSBuYW1lIGFuZCB2YWx1ZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6Ok5hbWUiIHJlZj0iYTMiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci1jb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTMiPk5hbWU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgYXR0cmlidXRlLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6VmFsdWUiIHJlZj0iYTQiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci1jb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTQiPlZhbHVlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpJbnRWYWx1ZSIgcmVmPSJhNSIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+SW50VmFsdWU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwgY29udmVydGVkIHRvIGFuIGludGVnZXIuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpEb3VibGVWYWx1ZSIgcmVmPSJhNiIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWRvdWJsZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNiI+RG91YmxlVmFsdWU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwgY29udmVydGVkIHRvIGEgZG91YmxlLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlF1ZXJ5SW50VmFsdWU8L2E+IChpbnQgKl92YWx1ZSkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5RdWVyeUludFZhbHVlIGV4YW1pbmVzIHRoZSB2YWx1ZSBzdHJpbmcuICA8YSBocmVmPSIjYTciPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6UXVlcnlEb3VibGVWYWx1ZSIgcmVmPSJhOCIgYXJncz0iKGRvdWJsZSAqX3ZhbHVlKSBjb25zdCAiIC0tPgotaW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E4Ij5RdWVyeURvdWJsZVZhbHVlPC9hPiAoZG91YmxlICpfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UXVlcnlEb3VibGVWYWx1ZSBleGFtaW5lcyB0aGUgdmFsdWUgc3RyaW5nLiBTZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlF1ZXJ5SW50VmFsdWUoKTwvYT4uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpTZXROYW1lIiByZWY9ImE5IiBhcmdzPSIoY29uc3QgY2hhciAqX25hbWUpIiAtLT4KLXZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTkiPlNldE5hbWU8L2E+IChjb25zdCBjaGFyICpfbmFtZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNldCB0aGUgbmFtZSBvZiB0aGlzIGF0dHJpYnV0ZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpTZXRWYWx1ZSIgcmVmPSJhMTAiIGFyZ3M9Iihjb25zdCBjaGFyICpfdmFsdWUpIiAtLT4KLXZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEwIj5TZXRWYWx1ZTwvYT4gKGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNldCB0aGUgdmFsdWUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6U2V0SW50VmFsdWUiIHJlZj0iYTExIiBhcmdzPSIoaW50IF92YWx1ZSkiIC0tPgotdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTEiPlNldEludFZhbHVlPC9hPiAoaW50IF92YWx1ZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNldCB0aGUgdmFsdWUgZnJvbSBhbiBpbnRlZ2VyLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxBdHRyaWJ1dGU6OlNldERvdWJsZVZhbHVlIiByZWY9ImExMiIgYXJncz0iKGRvdWJsZSBfdmFsdWUpIiAtLT4KLXZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEyIj5TZXREb3VibGVWYWx1ZTwvYT4gKGRvdWJsZSBfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TZXQgdGhlIHZhbHVlIGZyb20gYSBkb3VibGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6U2V0TmFtZSIgcmVmPSJhMTMiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19uYW1lKSIgLS0+Ci12b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMyI+U2V0TmFtZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X25hbWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpTZXRWYWx1ZSIgcmVmPSJhMTQiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgotdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTQiPlNldFZhbHVlPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpOZXh0IiByZWY9ImExNSIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPk5leHQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+R2V0IHRoZSBuZXh0IHNpYmxpbmcgYXR0cmlidXRlIGluIHRoZSBET00uIFJldHVybnMgbnVsbCBhdCBlbmQuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6UHJldmlvdXMiIHJlZj0iYTE3IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNyI+UHJldmlvdXM8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+R2V0IHRoZSBwcmV2aW91cyBzaWJsaW5nIGF0dHJpYnV0ZSBpbiB0aGUgRE9NLiBSZXR1cm5zIG51bGwgYXQgYmVnaW5uaW5nLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIzIj5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWxsIFRpbnlYbWwgY2xhc3NlcyBjYW4gcHJpbnQgdGhlbXNlbHZlcyB0byBhIGZpbGVzdHJlYW0uICA8YSBocmVmPSIjYTIzIj48L2E+PGJyPjwvdGQ+PC90cj4KLTwvdGFibGU+Ci08aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgotQW4gYXR0cmlidXRlIGlzIGEgbmFtZS12YWx1ZSBwYWlyLiAKLTxwPgotRWxlbWVudHMgaGF2ZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGF0dHJpYnV0ZXMsIGVhY2ggd2l0aCBhIHVuaXF1ZSBuYW1lLjxwPgotPGRsIGNvbXBhY3Q+PGR0PjxiPk5vdGU6PC9iPjwvZHQ+PGRkPlRoZSBhdHRyaWJ1dGVzIGFyZSBub3QgVGlYbWxOb2Rlcywgc2luY2UgdGhleSBhcmUgbm90IHBhcnQgb2YgdGhlIHRpbnlYTUwgZG9jdW1lbnQgb2JqZWN0IG1vZGVsLiBUaGVyZSBhcmUgb3RoZXIgc3VnZ2VzdGVkIHdheXMgdG8gbG9vayBhdCB0aGlzIHByb2JsZW0uPC9kZD48L2RsPgotCi08cD4KLTxocj48aDI+TWVtYmVyIEZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQXR0cmlidXRlOjpQcmludCIgcmVmPSJhMjMiIGFyZ3M9IihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52aXJ0dWFsIHZvaWQgVGlYbWxBdHRyaWJ1dGU6OlByaW50ICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPkZJTEUgKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmNmaWxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmRlcHRoPC9lbT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUFsbCBUaW55WG1sIGNsYXNzZXMgY2FuIHByaW50IHRoZW1zZWx2ZXMgdG8gYSBmaWxlc3RyZWFtLiAKLTxwPgotVGhpcyBpcyBhIGZvcm1hdHRlZCBwcmludCwgYW5kIHdpbGwgaW5zZXJ0IHRhYnMgYW5kIG5ld2xpbmVzLjxwPgotKEZvciBhbiB1bmZvcm1hdHRlZCBzdHJlYW0sIHVzZSB0aGUgJmx0OyZsdDsgb3BlcmF0b3IuKQotPHA+Ci1JbXBsZW1lbnRzIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+VGlYbWxCYXNlPC9hPi4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEF0dHJpYnV0ZTo6UXVlcnlJbnRWYWx1ZSIgcmVmPSJhNyIgYXJncz0iKGludCAqX3ZhbHVlKSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQgVGlYbWxBdHRyaWJ1dGU6OlF1ZXJ5SW50VmFsdWUgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50ICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPl92YWx1ZTwvZW0+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1RdWVyeUludFZhbHVlIGV4YW1pbmVzIHRoZSB2YWx1ZSBzdHJpbmcuIAotPHA+Ci1JdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTUiPkludFZhbHVlKCk8L2E+IG1ldGhvZCB3aXRoIHJpY2hlciBlcnJvciBjaGVja2luZy4gSWYgdGhlIHZhbHVlIGlzIGFuIGludGVnZXIsIGl0IGlzIHN0b3JlZCBpbiAndmFsdWUnIGFuZCB0aGUgY2FsbCByZXR1cm5zIFRJWE1MX1NVQ0NFU1MuIElmIGl0IGlzIG5vdCBhbiBpbnRlZ2VyLCBpdCByZXR1cm5zIFRJWE1MX1dST05HX1RZUEUuPHA+Ci1BIHNwZWNpYWxpemVkIGJ1dCB1c2VmdWwgY2FsbC4gTm90ZSB0aGF0IGZvciBzdWNjZXNzIGl0IHJldHVybnMgMCwgd2hpY2ggaXMgdGhlIG9wcG9zaXRlIG9mIGFsbW9zdCBhbGwgb3RoZXIgVGlueVhtbCBjYWxscy4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Ci08bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUucG5nIGIvZG9jcy9jbGFzc1RpWG1sQXR0cmlidXRlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJhYzVjYS4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxBdHRyaWJ1dGUucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQmFzZS1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxCYXNlLW1lbWJlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc4NmQ5MC4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxCYXNlLW1lbWJlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sQmFzZSBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPTA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3B1cmUgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+PC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwcm90ZWN0ZWRdPC9jb2RlPjwvdGQ+PC90cj4KLTwvdGFibGU+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEJhc2UuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEJhc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzljMGNkMC4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxCYXNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IFRpWG1sQmFzZSBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaVhtbEJhc2UgQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbEJhc2UiIC0tPlRpWG1sQmFzZSBpcyBhIGJhc2UgY2xhc3MgZm9yIGV2ZXJ5IGNsYXNzIGluIFRpbnlYbWwuICAKLTxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KLTxwPgotPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Ci08cD4KLTxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sQmFzZToKLTxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxCYXNlLnBuZyIgdXNlbWFwPSIjVGlYbWxCYXNlX21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Ci08bWFwIG5hbWU9IlRpWG1sQmFzZV9tYXAiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIiBhbHQ9IlRpWG1sQXR0cmlidXRlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDU2LDEwOCw4MCI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIiBhbHQ9IlRpWG1sTm9kZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjk1LDU2LDQwMyw4MCI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIiBhbHQ9IlRpWG1sQ29tbWVudCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwxMTIsMTA4LDEzNiI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCIgYWx0PSJUaVhtbERlY2xhcmF0aW9uIiBzaGFwZT0icmVjdCIgY29vcmRzPSIxMTgsMTEyLDIyNiwxMzYiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiIGFsdD0iVGlYbWxEb2N1bWVudCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjM2LDExMiwzNDQsMTM2Ij4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiIGFsdD0iVGlYbWxFbGVtZW50IiBzaGFwZT0icmVjdCIgY29vcmRzPSIzNTQsMTEyLDQ2MiwxMzYiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCIgYWx0PSJUaVhtbFRleHQiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjQ3MiwxMTIsNTgwLDEzNiI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIiBhbHQ9IlRpWG1sVW5rbm93biIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iNTkwLDExMiw2OTgsMTM2Ij4KLTwvbWFwPgotPGEgaHJlZj0iY2xhc3NUaVhtbEJhc2UtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgotPHRyPjx0ZD48L3RkPjwvdHI+Ci08dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dmlydHVhbCB2b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+UHJpbnQ8L2E+IChGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA9MDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWxsIFRpbnlYbWwgY2xhc3NlcyBjYW4gcHJpbnQgdGhlbXNlbHZlcyB0byBhIGZpbGVzdHJlYW0uICA8YSBocmVmPSIjYTIiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSBwb3NpdGlvbiwgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvZiB0aGlzIG5vZGUgb3IgYXR0cmlidXRlLiAgPGEgaHJlZj0iI2EzIj48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpDb2x1bW4iIHJlZj0iYTQiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci1pbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93KCk8L2E+LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlN0YXRpYyBQdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5zdGF0aWMgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4gKGJvb2wgY29uZGVuc2UpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgd29ybGQgZG9lcyBub3QgYWdyZWUgb24gd2hldGhlciB3aGl0ZSBzcGFjZSBzaG91bGQgYmUga2VwdCBvciBub3QuICA8YSBocmVmPSIjZTAiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJlMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OklzV2hpdGVTcGFjZUNvbmRlbnNlZCIgcmVmPSJlMSIgYXJncz0iKCkiIC0tPgotc3RhdGljIGJvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIGN1cnJlbnQgd2hpdGUgc3BhY2Ugc2V0dGluZy4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5Qcm90ZWN0ZWQgQXR0cmlidXRlczwvaDI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJwMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OnVzZXJEYXRhIiByZWY9InAxIiBhcmdzPSIiIC0tPgotdm9pZCAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+PC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5GaWVsZCBjb250YWluaW5nIGEgZ2VuZXJpYyB1c2VyIHBvaW50ZXIuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+RnJpZW5kczwvaDI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJuMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OlRpWG1sTm9kZSIgcmVmPSJuMCIgYXJncz0iIiAtLT4KLWNsYXNzJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNuMCI+VGlYbWxOb2RlPC9hPjwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJuMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OlRpWG1sRWxlbWVudCIgcmVmPSJuMSIgYXJncz0iIiAtLT4KLWNsYXNzJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNuMSI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJuMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OlRpWG1sRG9jdW1lbnQiIHJlZj0ibjIiIGFyZ3M9IiIgLS0+Ci1jbGFzcyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjbjIiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48L3RyPgotCi08L3RhYmxlPgotPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLVRpWG1sQmFzZSBpcyBhIGJhc2UgY2xhc3MgZm9yIGV2ZXJ5IGNsYXNzIGluIFRpbnlYbWwuIAotPHA+Ci1JdCBkb2VzIGxpdHRsZSBleGNlcHQgdG8gZXN0YWJsaXNoIHRoYXQgVGlueVhtbCBjbGFzc2VzIGNhbiBiZSBwcmludGVkIGFuZCBwcm92aWRlIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMuPHA+Ci1JbiBYTUwsIHRoZSBkb2N1bWVudCBhbmQgZWxlbWVudHMgY2FuIGNvbnRhaW4gb3RoZXIgZWxlbWVudHMgYW5kIG90aGVyIHR5cGVzIG9mIG5vZGVzLjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JQSBEb2N1bWVudCBjYW4gY29udGFpbjoJRWxlbWVudAkoY29udGFpbmVyIG9yIGxlYWYpCi0JCQkJCQkJQ29tbWVudCAobGVhZikKLQkJCQkJCQlVbmtub3duIChsZWFmKQotCQkJCQkJCURlY2xhcmF0aW9uKCBsZWFmICkKLQotCUFuIEVsZW1lbnQgY2FuIGNvbnRhaW46CUVsZW1lbnQgKGNvbnRhaW5lciBvciBsZWFmKQotCQkJCQkJCVRleHQJKGxlYWYpCi0JCQkJCQkJQXR0cmlidXRlcyAobm90IG9uIHRyZWUpCi0JCQkJCQkJQ29tbWVudCAobGVhZikKLQkJCQkJCQlVbmtub3duIChsZWFmKQotCi0JQSBEZWNsZXJhdGlvbiBjb250YWluczogQXR0cmlidXRlcyAobm90IG9uIHRyZWUpCi0JPC9wcmU+PC9kaXY+Ci08cD4KLTxocj48aDI+TWVtYmVyIEZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxCYXNlOjpQcmludCIgcmVmPSJhMiIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ID0wIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dmlydHVhbCB2b2lkIFRpWG1sQmFzZTo6UHJpbnQgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+RklMRSAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+Y2ZpbGU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZGVwdGg8L2VtPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDxjb2RlPiBbcHVyZSB2aXJ0dWFsXTwvY29kZT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1BbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4gCi08cD4KLVRoaXMgaXMgYSBmb3JtYXR0ZWQgcHJpbnQsIGFuZCB3aWxsIGluc2VydCB0YWJzIGFuZCBuZXdsaW5lcy48cD4KLShGb3IgYW4gdW5mb3JtYXR0ZWQgc3RyZWFtLCB1c2UgdGhlICZsdDsmbHQ7IG9wZXJhdG9yLikKLTxwPgotSW1wbGVtZW50ZWQgaW4gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIzIj5UaVhtbEF0dHJpYnV0ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjkiPlRpWG1sRWxlbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNSI+VGlYbWxDb21tZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E1Ij5UaVhtbFRleHQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNSI+VGlYbWxVbmtub3duPC9hPiwgYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTI0Ij5UaVhtbERvY3VtZW50PC9hPi4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEJhc2U6OlJvdyIgcmVmPSJhMyIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50IFRpWG1sQmFzZTo6Um93ICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotUmV0dXJuIHRoZSBwb3NpdGlvbiwgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvZiB0aGlzIG5vZGUgb3IgYXR0cmlidXRlLiAKLTxwPgotVGhlIHJvdyBhbmQgY29sdW1uIGFyZSAxLWJhc2VkLiAoVGhhdCBpcyB0aGUgZmlyc3Qgcm93IGFuZCBmaXJzdCBjb2x1bW4gaXMgMSwxKS4gSWYgdGhlIHJldHVybnMgdmFsdWVzIGFyZSAwIG9yIGxlc3MsIHRoZW4gdGhlIHBhcnNlciBkb2VzIG5vdCBoYXZlIGEgcm93IGFuZCBjb2x1bW4gdmFsdWUuPHA+Ci1HZW5lcmFsbHksIHRoZSByb3cgYW5kIGNvbHVtbiB2YWx1ZSB3aWxsIGJlIHNldCB3aGVuIHRoZSBUaVhtbERvY3VtZW50OjpMb2FkKCksIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTYiPlRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlKCk8L2E+LCBvciBhbnkgVGlYbWxOb2RlOjpQYXJzZSgpIGlzIGNhbGxlZC4gSXQgd2lsbCBOT1QgYmUgc2V0IHdoZW4gdGhlIERPTSB3YXMgY3JlYXRlZCBmcm9tIG9wZXJhdG9yJmd0OyZndDsuPHA+Ci1UaGUgdmFsdWVzIHJlZmxlY3QgdGhlIGluaXRpYWwgbG9hZC4gT25jZSB0aGUgRE9NIGlzIG1vZGlmaWVkIHByb2dyYW1tYXRpY2FsbHkgKGJ5IGFkZGluZyBvciBjaGFuZ2luZyBub2RlcyBhbmQgYXR0cmlidXRlcykgdGhlIG5ldyB2YWx1ZXMgd2lsbCBOT1QgdXBkYXRlIHRvIHJlZmxlY3QgY2hhbmdlcyBpbiB0aGUgZG9jdW1lbnQuPHA+Ci1UaGVyZSBpcyBhIG1pbm9yIHBlcmZvcm1hbmNlIGNvc3QgdG8gY29tcHV0aW5nIHRoZSByb3cgYW5kIGNvbHVtbi4gQ29tcHV0YXRpb24gY2FuIGJlIGRpc2FibGVkIGlmIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5UaVhtbERvY3VtZW50OjpTZXRUYWJTaXplKCk8L2E+IGlzIGNhbGxlZCB3aXRoIDAgYXMgdGhlIHZhbHVlLjxwPgotPGRsIGNvbXBhY3Q+PGR0PjxiPlNlZSBhbHNvOjwvYj48L2R0PjxkZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+VGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSgpPC9hPjwvZGQ+PC9kbD4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImUwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlIiByZWY9ImUwIiBhcmdzPSIoYm9vbCBjb25kZW5zZSkiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5zdGF0aWMgdm9pZCBUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5ib29sJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5jb25kZW5zZTwvZW0+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1UaGUgd29ybGQgZG9lcyBub3QgYWdyZWUgb24gd2hldGhlciB3aGl0ZSBzcGFjZSBzaG91bGQgYmUga2VwdCBvciBub3QuIAotPHA+Ci1JbiBvcmRlciB0byBtYWtlIGV2ZXJ5b25lIGhhcHB5LCB0aGVzZSBnbG9iYWwsIHN0YXRpYyBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRvIHNldCB3aGV0aGVyIG9yIG5vdCBUaW55WG1sIHdpbGwgY29uZGVuc2UgYWxsIHdoaXRlIHNwYWNlIGludG8gYSBzaW5nbGUgc3BhY2Ugb3Igbm90LiBUaGUgZGVmYXVsdCBpcyB0byBjb25kZW5zZS4gTm90ZSBjaGFuZ2luZyB0aGlzIHZhbHVlcyBpcyBub3QgdGhyZWFkIHNhZmUuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Ci08aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQmFzZS5wbmcgYi9kb2NzL2NsYXNzVGlYbWxCYXNlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1ZGI2ZS4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxCYXNlLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC1tZW1iZXJzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MDQ3YjIuLjAwMDAwMDAKLS0tIGEvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC1tZW1iZXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaVhtbENvbW1lbnQgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E0Ij5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzQiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5QcmludDwvYT4oRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTNhZjljLi4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbENvbW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBUaVhtbENvbW1lbnQgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Ci08aDE+VGlYbWxDb21tZW50IENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxDb21tZW50IiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPkFuIFhNTCBjb21tZW50LiAgCi08YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Ci08cD4KLTxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgotPHA+Ci08cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbENvbW1lbnQ6Ci08cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sQ29tbWVudC5wbmciIHVzZW1hcD0iI1RpWG1sQ29tbWVudF9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgotPG1hcCBuYW1lPSJUaVhtbENvbW1lbnRfbWFwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiIGFsdD0iVGlYbWxOb2RlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDU2LDk0LDgwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiIGFsdD0iVGlYbWxCYXNlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsOTQsMjQiPgotPC9tYXA+Ci08YSBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Ci08dHI+PHRkPjwvdGQ+PC90cj4KLTx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbENvbW1lbnQ6OlRpWG1sQ29tbWVudCIgcmVmPSJhMCIgYXJncz0iKCkiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhMCI+VGlYbWxDb21tZW50PC9hPiAoKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0cyBhbiBlbXB0eSBjb21tZW50LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbENvbW1lbnQ6OkNsb25lIiByZWY9ImE0IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotdmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPkNsb25lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybnMgYSBjb3B5IG9mIHRoaXMgQ29tbWVudC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxDb21tZW50OjpQcmludCIgcmVmPSJhNSIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ICIgLS0+Ci12aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+V3JpdGUgdGhpcyBDb21tZW50IHRvIGEgRklMRSBzdHJlYW0uIDxicj48L3RkPjwvdHI+Ci08L3RhYmxlPgotPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLUFuIFhNTCBjb21tZW50LiAKLTxwPgotPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Ci08aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sQ29tbWVudC5wbmcgYi9kb2NzL2NsYXNzVGlYbWxDb21tZW50LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMzZDc0Mi4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxDb21tZW50LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbERlY2xhcmF0aW9uLW1lbWJlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJjNjNjZC4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi1tZW1iZXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaVhtbERlY2xhcmF0aW9uIE1lbWJlciBMaXN0PC9oMT5UaGlzIGlzIHRoZSBjb21wbGV0ZSBsaXN0IG9mIG1lbWJlcnMgZm9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+Q2xvbmU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNyI+RW5jb2Rpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PGNvZGU+IFt2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlJlbW92ZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMwIj5SZXBsYWNlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVwbGFjZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO3dpdGhUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EzIj5Sb3c8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPihjb25zdCBjaGFyICpfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij5TZXRWYWx1ZTwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+U3RhbmRhbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTAiPlRpWG1sRGVjbGFyYXRpb248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTEiPlRpWG1sRGVjbGFyYXRpb248L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZlcnNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X2VuY29kaW5nLCBjb25zdCBzdGQ6OnN0cmluZyAmYW1wO19zdGFuZGFsb25lKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EyIj5UaVhtbERlY2xhcmF0aW9uPC9hPihjb25zdCBjaGFyICpfdmVyc2lvbiwgY29uc3QgY2hhciAqX2VuY29kaW5nLCBjb25zdCBjaGFyICpfc3RhbmRhbG9uZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MiI+VG9Db21tZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VG9EZWNsYXJhdGlvbjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VG9Eb2N1bWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5Ub0VsZW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjkiPlRvVW5rbm93bjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTYiPlR5cGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj51c2VyRGF0YTwvYT48L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNiI+VmVyc2lvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci08L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM5N2U2ZS4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IFRpWG1sRGVjbGFyYXRpb24gQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Ci08aDE+VGlYbWxEZWNsYXJhdGlvbiBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sRGVjbGFyYXRpb24iIC0tPjwhLS0gZG94eXRhZzogaW5oZXJpdHM9IlRpWG1sTm9kZSIgLS0+SW4gY29ycmVjdCBYTUwgdGhlIGRlY2xhcmF0aW9uIGlzIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgZmlsZS4gIAotPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgotPHA+Ci08Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KLTxwPgotPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxEZWNsYXJhdGlvbjoKLTxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5wbmciIHVzZW1hcD0iI1RpWG1sRGVjbGFyYXRpb25fbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KLTxtYXAgbmFtZT0iVGlYbWxEZWNsYXJhdGlvbl9tYXAiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsMTA4LDgwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiIGFsdD0iVGlYbWxCYXNlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsMTA4LDI0Ij4KLTwvbWFwPgotPGEgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KLTx0cj48dGQ+PC90ZD48L3RyPgotPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OlRpWG1sRGVjbGFyYXRpb24iIHJlZj0iYTAiIGFyZ3M9IigpIiAtLT4KLSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EwIj5UaVhtbERlY2xhcmF0aW9uPC9hPiAoKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0IGFuIGVtcHR5IGRlY2xhcmF0aW9uLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uIiByZWY9ImExIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmVyc2lvbiwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfZW5jb2RpbmcsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3N0YW5kYWxvbmUpIiAtLT4KLSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExIj5UaVhtbERlY2xhcmF0aW9uPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmVyc2lvbiwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfZW5jb2RpbmcsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3N0YW5kYWxvbmUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3Rvci4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6VGlYbWxEZWNsYXJhdGlvbiIgcmVmPSJhMiIgYXJncz0iKGNvbnN0IGNoYXIgKl92ZXJzaW9uLCBjb25zdCBjaGFyICpfZW5jb2RpbmcsIGNvbnN0IGNoYXIgKl9zdGFuZGFsb25lKSIgLS0+Ci0mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMiI+VGlYbWxEZWNsYXJhdGlvbjwvYT4gKGNvbnN0IGNoYXIgKl92ZXJzaW9uLCBjb25zdCBjaGFyICpfZW5jb2RpbmcsIGNvbnN0IGNoYXIgKl9zdGFuZGFsb25lKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29uc3RydWN0LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpWZXJzaW9uIiByZWY9ImE2IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTYiPlZlcnNpb248L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VmVyc2lvbi4gV2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgd2FzIGZvdW5kLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpFbmNvZGluZyIgcmVmPSJhNyIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E3Ij5FbmNvZGluZzwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5FbmNvZGluZy4gV2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgd2FzIGZvdW5kLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERlY2xhcmF0aW9uOjpTdGFuZGFsb25lIiByZWY9ImE4IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTgiPlN0YW5kYWxvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+SXMgdGhpcyBhIHN0YW5kYWxvbmUgZG9jdW1lbnQ/IDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRGVjbGFyYXRpb246OkNsb25lIiByZWY9ImE5IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotdmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E5Ij5DbG9uZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGVzIGEgY29weSBvZiB0aGlzIERlY2xhcmF0aW9uIGFuZCByZXR1cm5zIGl0LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEZWNsYXJhdGlvbjo6UHJpbnQiIHJlZj0iYTEwIiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgIiAtLT4KLXZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+UHJpbnQ8L2E+IChGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlByaW50IHRoaXMgZGVjbGFyYXRpb24gdG8gYSBGSUxFIHN0cmVhbS4gPGJyPjwvdGQ+PC90cj4KLTwvdGFibGU+Ci08aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgotSW4gY29ycmVjdCBYTUwgdGhlIGRlY2xhcmF0aW9uIGlzIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgZmlsZS4gCi08cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9InllcyI/Jmd0OwotCTwvcHJlPjwvZGl2PjxwPgotVGlueVhtbCB3aWxsIGhhcHBpbHkgcmVhZCBvciB3cml0ZSBmaWxlcyB3aXRob3V0IGEgZGVjbGFyYXRpb24sIGhvd2V2ZXIuIFRoZXJlIGFyZSAzIHBvc3NpYmxlIGF0dHJpYnV0ZXMgdG8gdGhlIGRlY2xhcmF0aW9uOiB2ZXJzaW9uLCBlbmNvZGluZywgYW5kIHN0YW5kYWxvbmUuPHA+Ci1Ob3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIGNvZGUsIHRoZSBhdHRyaWJ1dGVzIGFyZSBoYW5kbGVkIGFzIHNwZWNpYWwgY2FzZXMsIG5vdCBnZW5lcmljIGF0dHJpYnV0ZXMsIHNpbXBseSBiZWNhdXNlIHRoZXJlIGNhbiBvbmx5IGJlIGF0IG1vc3QgMyBhbmQgdGhleSBhcmUgYWx3YXlzIHRoZSBzYW1lLgotPHA+Ci08aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Ci08bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5wbmcgYi9kb2NzL2NsYXNzVGlYbWxEZWNsYXJhdGlvbi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMDkxMmIuLjAwMDAwMDAKLS0tIGEvZG9jcy9jbGFzc1RpWG1sRGVjbGFyYXRpb24ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQtbWVtYmVycy5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQtbWVtYmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGJmNjc1Li4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbERvY3VtZW50LW1lbWJlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sRG9jdW1lbnQgTWVtYmVyIExpc3Q8L2gxPlRoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgbWVtYmVycyBmb3IgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+Q2xlYXJFcnJvcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNiMSI+Q2xvbmU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZCwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNSI+RXJyb3I8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+RXJyb3JDb2w8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5FcnJvckRlc2M8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNyI+RXJyb3JJZDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdzwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4oVGlYbWxOb2RlICphZnRlclRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5JbnNlcnRCZWZvcmVDaGlsZDwvYT4oVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjIiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNCI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNSI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgVGlYbWxOb2RlICpwcmV2aW91cyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTYiPkxvYWRGaWxlPC9hPihUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTgiPkxvYWRGaWxlPC9hPihjb25zdCBjaGFyICpmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMCI+TG9hZEZpbGU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlBhcnNlPC9hPihjb25zdCBjaGFyICpwLCBUaVhtbFBhcnNpbmdEYXRhICpkYXRhPTAsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMyI+UHJpbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyNCI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGg9MCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+Um9vdEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E3Ij5TYXZlRmlsZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhOSI+U2F2ZUZpbGU8L2E+KGNvbnN0IGNoYXIgKmZpbGVuYW1lKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTEiPlNhdmVGaWxlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2ZpbGVuYW1lKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlPC9hPihib29sIGNvbmRlbnNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCBzdGF0aWNdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlNldFRhYlNpemU8L2E+KGludCBfdGFic2l6ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EwIj5UaVhtbERvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEiPlRpWG1sRG9jdW1lbnQ8L2E+KGNvbnN0IGNoYXIgKmRvY3VtZW50TmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMiI+VGlYbWxEb2N1bWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtkb2N1bWVudE5hbWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY4Ij5Ub0NvbW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY1Ij5Ub0RlY2xhcmF0aW9uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRvRGVjbGFyYXRpb248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj5Ub0RvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRvRG9jdW1lbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VG9FbGVtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRvVGV4dDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij5Ub1Vua25vd248L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UeXBlPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lLCB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+PC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwcm90ZWN0ZWRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlZhbHVlU3RyPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci08L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRG9jdW1lbnQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQyYWUyYi4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDQ3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBUaVhtbERvY3VtZW50IENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sRG9jdW1lbnQgQ2xhc3MgUmVmZXJlbmNlPC9oMT48IS0tIGRveHl0YWc6IGNsYXNzPSJUaVhtbERvY3VtZW50IiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPkFsd2F5cyB0aGUgdG9wIGxldmVsIG5vZGUuICAKLTxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KLTxwPgotPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Ci08cD4KLTxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sRG9jdW1lbnQ6Ci08cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sRG9jdW1lbnQucG5nIiB1c2VtYXA9IiNUaVhtbERvY3VtZW50X21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Ci08bWFwIG5hbWU9IlRpWG1sRG9jdW1lbnRfbWFwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiIGFsdD0iVGlYbWxOb2RlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDU2LDk5LDgwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiIGFsdD0iVGlYbWxCYXNlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsOTksMjQiPgotPC9tYXA+Ci08YSBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgotPHRyPjx0ZD48L3RkPjwvdHI+Ci08dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6VGlYbWxEb2N1bWVudCIgcmVmPSJhMCIgYXJncz0iKCkiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTAiPlRpWG1sRG9jdW1lbnQ8L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGUgYW4gZW1wdHkgZG9jdW1lbnQsIHRoYXQgaGFzIG5vIG5hbWUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlRpWG1sRG9jdW1lbnQiIHJlZj0iYTEiIGFyZ3M9Iihjb25zdCBjaGFyICpkb2N1bWVudE5hbWUpIiAtLT4KLSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExIj5UaVhtbERvY3VtZW50PC9hPiAoY29uc3QgY2hhciAqZG9jdW1lbnROYW1lKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlIGEgZG9jdW1lbnQgd2l0aCBhIG5hbWUuIFRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudCBpcyBhbHNvIHRoZSBmaWxlbmFtZSBvZiB0aGUgeG1sLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50IiByZWY9ImEyIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtkb2N1bWVudE5hbWUpIiAtLT4KLSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyIj5UaVhtbERvY3VtZW50PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtkb2N1bWVudE5hbWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3Rvci4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Ym9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E2Ij5Mb2FkRmlsZTwvYT4gKFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkxvYWQgYSBmaWxlIHVzaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IHZhbHVlLiAgPGEgaHJlZj0iI2E2Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6U2F2ZUZpbGUiIHJlZj0iYTciIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci1ib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTciPlNhdmVGaWxlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNhdmUgYSBmaWxlIHVzaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IHZhbHVlLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUiIHJlZj0iYTgiIGFyZ3M9Iihjb25zdCBjaGFyICpmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKSIgLS0+Ci1ib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTgiPkxvYWRGaWxlPC9hPiAoY29uc3QgY2hhciAqZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORyk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkxvYWQgYSBmaWxlIHVzaW5nIHRoZSBnaXZlbiBmaWxlbmFtZS4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlNhdmVGaWxlIiByZWY9ImE5IiBhcmdzPSIoY29uc3QgY2hhciAqZmlsZW5hbWUpIGNvbnN0ICIgLS0+Ci1ib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTkiPlNhdmVGaWxlPC9hPiAoY29uc3QgY2hhciAqZmlsZW5hbWUpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2F2ZSBhIGZpbGUgdXNpbmcgdGhlIGdpdmVuIGZpbGVuYW1lLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Ym9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMCI+TG9hZEZpbGU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2ZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpTYXZlRmlsZSIgcmVmPSJhMTEiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2ZpbGVuYW1lKSBjb25zdCAiIC0tPgotYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMSI+U2F2ZUZpbGU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2ZpbGVuYW1lKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPiZsdDsgU1RMIHN0ZDo6c3RyaW5nIHZlcnNpb24uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZpcnR1YWwgY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEyIj5QYXJzZTwvYT4gKGNvbnN0IGNoYXIgKnAsIFRpWG1sUGFyc2luZ0RhdGEgKmRhdGE9MCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZz1USVhNTF9ERUZBVUxUX0VOQ09ESU5HKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UGFyc2UgdGhlIGdpdmVuIG51bGwgdGVybWluYXRlZCBibG9jayBvZiB4bWwgZGF0YS4gIDxhIGhyZWY9IiNhMTIiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+Um9vdEVsZW1lbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+R2V0IHRoZSByb290IGVsZW1lbnQgLS0gdGhlIG9ubHkgdG9wIGxldmVsIGVsZW1lbnQgLS0gb2YgdGhlIGRvY3VtZW50LiAgPGEgaHJlZj0iI2ExMyI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmJvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTUiPkVycm9yPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPklmIGFuIGVycm9yIG9jY3VycywgRXJyb3Igd2lsbCBiZSBzZXQgdG8gdHJ1ZS4gIDxhIGhyZWY9IiNhMTUiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6RXJyb3JEZXNjIiByZWY9ImExNiIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+RXJyb3JEZXNjPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNvbnRhaW5zIGEgdGV4dHVhbCAoZW5nbGlzaCkgZGVzY3JpcHRpb24gb2YgdGhlIGVycm9yIGlmIG9uZSBvY2N1cnMuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNyI+RXJyb3JJZDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HZW5lcmFsbHksIHlvdSBwcm9iYWJseSB3YW50IHRoZSBlcnJvciBzdHJpbmcgKCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+RXJyb3JEZXNjKCk8L2E+ICkuICA8YSBocmVmPSIjYTE3Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE4Ij5FcnJvclJvdzwvYT4gKCk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybnMgdGhlIGxvY2F0aW9uIChpZiBrbm93bikgb2YgdGhlIGVycm9yLiAgPGEgaHJlZj0iI2ExOCI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpFcnJvckNvbCIgcmVmPSJhMTkiIGFyZ3M9IigpIiAtLT4KLWludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+RXJyb3JDb2w8L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgY29sdW1uIHdoZXJlIHRoZSBlcnJvciBvY2N1cmVkLiBTZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPkVycm9yUm93KCk8L2E+LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5TZXRUYWJTaXplPC9hPiAoaW50IF90YWJzaXplKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlNldFRhYlNpemUoKTwvYT4gYWxsb3dzIHRoZSBlcnJvciByZXBvcnRpbmcgZnVuY3Rpb25zICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+RXJyb3JSb3coKTwvYT4gYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5FcnJvckNvbCgpPC9hPikgdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlcyBmb3Igcm93IGFuZCBjb2x1bW4uICA8YSBocmVmPSIjYTIwIj48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+Q2xlYXJFcnJvcjwvYT4gKCk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPklmIHlvdSBoYXZlIGhhbmRsZWQgdGhlIGVycm9yLCBpdCBjYW4gYmUgcmVzZXQgd2l0aCB0aGlzIGNhbGwuICA8YSBocmVmPSIjYTIyIj48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlByaW50IiByZWY9ImEyMyIgYXJncz0iKCkgY29uc3QgIiAtLT4KLXZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjMiPlByaW50PC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkR1bXAgdGhlIGRvY3VtZW50IHRvIHN0YW5kYXJkIG91dC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlByaW50IiByZWY9ImEyNCIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGg9MCkgY29uc3QgIiAtLT4KLXZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyNCI+UHJpbnQ8L2E+IChGSUxFICpjZmlsZSwgaW50IGRlcHRoPTApIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UHJpbnQgdGhpcyBEb2N1bWVudCB0byBhIEZJTEUgc3RyZWFtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlByb3RlY3RlZCBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZpcnR1YWwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNiMSI+Q2xvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlIGFuIGV4YWN0IGR1cGxpY2F0ZSBvZiB0aGlzIG5vZGUgYW5kIHJldHVybiBpdC4gIDxhIGhyZWY9IiNiMSI+PC9hPjxicj48L3RkPjwvdHI+Ci08L3RhYmxlPgotPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLUFsd2F5cyB0aGUgdG9wIGxldmVsIG5vZGUuIAotPHA+Ci1BIGRvY3VtZW50IGJpbmRzIHRvZ2V0aGVyIGFsbCB0aGUgWE1MIHBpZWNlcy4gSXQgY2FuIGJlIHNhdmVkLCBsb2FkZWQsIGFuZCBwcmludGVkIHRvIHRoZSBzY3JlZW4uIFRoZSAndmFsdWUnIG9mIGEgZG9jdW1lbnQgbm9kZSBpcyB0aGUgeG1sIGZpbGUgbmFtZS4KLTxwPgotPGhyPjxoMj5NZW1iZXIgRnVuY3Rpb24gRG9jdW1lbnRhdGlvbjwvaDI+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6Q2xlYXJFcnJvciIgcmVmPSJhMjIiIGFyZ3M9IigpIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dm9pZCBUaVhtbERvY3VtZW50OjpDbGVhckVycm9yICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotSWYgeW91IGhhdmUgaGFuZGxlZCB0aGUgZXJyb3IsIGl0IGNhbiBiZSByZXNldCB3aXRoIHRoaXMgY2FsbC4gCi08cD4KLVRoZSBlcnJvciBzdGF0ZSBpcyBhdXRvbWF0aWNhbGx5IGNsZWFyZWQgaWYgeW91IFBhcnNlIGEgbmV3IFhNTCBibG9jay4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJiMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpDbG9uZSIgcmVmPSJiMSIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIFRpWG1sRG9jdW1lbnQ6OkNsb25lICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW3Byb3RlY3RlZCwgdmlydHVhbF08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotQ3JlYXRlIGFuIGV4YWN0IGR1cGxpY2F0ZSBvZiB0aGlzIG5vZGUgYW5kIHJldHVybiBpdC4gCi08cD4KLVRoZSBtZW1vcnkgbXVzdCBiZSBkZWxldGVkIGJ5IHRoZSBjYWxsZXIuCi08cD4KLUltcGxlbWVudHMgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MiI+VGlYbWxOb2RlPC9hPi4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6RXJyb3IiIHJlZj0iYTE1IiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5ib29sIFRpWG1sRG9jdW1lbnQ6OkVycm9yICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotSWYgYW4gZXJyb3Igb2NjdXJzLCBFcnJvciB3aWxsIGJlIHNldCB0byB0cnVlLiAKLTxwPgotQWxzbyw8dWw+Ci08bGk+VGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE3Ij5FcnJvcklkKCk8L2E+IHdpbGwgY29udGFpbiB0aGUgaW50ZWdlciBpZGVudGlmaWVyIG9mIHRoZSBlcnJvciAobm90IGdlbmVyYWxseSB1c2VmdWwpPC9saT48bGk+VGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5FcnJvckRlc2MoKTwvYT4gbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlcnJvci4gKHZlcnkgdXNlZnVsKTwvbGk+PGxpPlRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+RXJyb3JSb3coKTwvYT4gYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE5Ij5FcnJvckNvbCgpPC9hPiB3aWxsIHJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIGVycm9yIChpZiBrbm93bik8L2xpPjwvdWw+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6RXJyb3JJZCIgcmVmPSJhMTciIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCBUaVhtbERvY3VtZW50OjpFcnJvcklkICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotR2VuZXJhbGx5LCB5b3UgcHJvYmFibHkgd2FudCB0aGUgZXJyb3Igc3RyaW5nICggPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPkVycm9yRGVzYygpPC9hPiApLiAKLTxwPgotQnV0IGlmIHlvdSBwcmVmZXIgdGhlIEVycm9ySWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBpdC4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6RXJyb3JSb3ciIHJlZj0iYTE4IiBhcmdzPSIoKSIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCBUaVhtbERvY3VtZW50OjpFcnJvclJvdyAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVJldHVybnMgdGhlIGxvY2F0aW9uIChpZiBrbm93bikgb2YgdGhlIGVycm9yLiAKLTxwPgotVGhlIGZpcnN0IGNvbHVtbiBpcyBjb2x1bW4gMSwgYW5kIHRoZSBmaXJzdCByb3cgaXMgcm93IDEuIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgcm93IGFuZCBjb2x1bW4gd2Fzbid0IGFwcGxpY2FibGUgKG1lbW9yeSBlcnJvcnMsIGZvciBleGFtcGxlLCBoYXZlIG5vIHJvdy9jb2x1bW4pIG9yIHRoZSBwYXJzZXIgbG9zdCB0aGUgZXJyb3IuIChBbiBlcnJvciBpbiB0aGUgZXJyb3IgcmVwb3J0aW5nLCBpbiB0aGF0IGNhc2UuKTxwPgotPGRsIGNvbXBhY3Q+PGR0PjxiPlNlZSBhbHNvOjwvYj48L2R0PjxkZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+U2V0VGFiU2l6ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+PC9kZD48L2RsPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlIiByZWY9ImExMCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7ZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORykiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5ib29sIFRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZmlsZW5hbWU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+VGlYbWxFbmNvZGluZyZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmVuY29kaW5nPC9lbT4gPSA8Y29kZT5USVhNTF9ERUZBVUxUX0VOQ09ESU5HPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci08ZGwgY29tcGFjdD48ZHQ+PGI+UGFyYW1ldGVyczogPC9iPjwvZHQ+PGRkPgotPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjIiIGNlbGxwYWRkaW5nPSIwIj4KLTx0cj48dGQgdmFsaWduPSJ0b3AiPjxlbT5lbmNvZGluZzwvZW0+Jm5ic3A7PC90ZD48dGQ+Ci1TVEwgc3RkOjpzdHJpbmcgdmVyc2lvbi4gPC90ZD48L3RyPgotPC90YWJsZT4KLTwvZGw+ICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUiIHJlZj0iYTYiIGFyZ3M9IihUaVhtbEVuY29kaW5nIGVuY29kaW5nPVRJWE1MX0RFRkFVTFRfRU5DT0RJTkcpIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Ym9vbCBUaVhtbERvY3VtZW50OjpMb2FkRmlsZSAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5UaVhtbEVuY29kaW5nJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5lbmNvZGluZzwvZW0+ID0gPGNvZGU+VElYTUxfREVGQVVMVF9FTkNPRElORzwvY29kZT4gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUxvYWQgYSBmaWxlIHVzaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IHZhbHVlLiAKLTxwPgotUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuIFdpbGwgZGVsZXRlIGFueSBleGlzdGluZyBkb2N1bWVudCBkYXRhIGJlZm9yZSBsb2FkaW5nLiAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbERvY3VtZW50OjpQYXJzZSIgcmVmPSJhMTIiIGFyZ3M9Iihjb25zdCBjaGFyICpwLCBUaVhtbFBhcnNpbmdEYXRhICpkYXRhPTAsIFRpWG1sRW5jb2RpbmcgZW5jb2Rpbmc9VElYTUxfREVGQVVMVF9FTkNPRElORykiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52aXJ0dWFsIGNvbnN0IGNoYXIqIFRpWG1sRG9jdW1lbnQ6OlBhcnNlICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPnA8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+VGlYbWxQYXJzaW5nRGF0YSAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZGF0YTwvZW0+ID0gPGNvZGU+MDwvY29kZT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPlRpWG1sRW5jb2RpbmcmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5lbmNvZGluZzwvZW0+ID0gPGNvZGU+VElYTUxfREVGQVVMVF9FTkNPRElORzwvY29kZT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVBhcnNlIHRoZSBnaXZlbiBudWxsIHRlcm1pbmF0ZWQgYmxvY2sgb2YgeG1sIGRhdGEuIAotPHA+Ci1QYXNzaW5nIGluIGFuIGVuY29kaW5nIHRvIHRoaXMgbWV0aG9kIChlaXRoZXIgVElYTUxfRU5DT0RJTkdfTEVHQUNZIG9yIFRJWE1MX0VOQ09ESU5HX1VURjggd2lsbCBmb3JjZSBUaW55WG1sIHRvIHVzZSB0aGF0IGVuY29kaW5nLCByZWdhcmRsZXNzIG9mIHdoYXQgVGlueVhtbCBtaWdodCBvdGhlcndpc2UgdHJ5IHRvIGRldGVjdC4KLTxwPgotSW1wbGVtZW50cyA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4uICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRG9jdW1lbnQ6OlJvb3RFbGVtZW50IiByZWY9ImExMyIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiBUaVhtbERvY3VtZW50OjpSb290RWxlbWVudCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUdldCB0aGUgcm9vdCBlbGVtZW50IC0tIHRoZSBvbmx5IHRvcCBsZXZlbCBlbGVtZW50IC0tIG9mIHRoZSBkb2N1bWVudC4gCi08cD4KLUluIHdlbGwgZm9ybWVkIFhNTCwgdGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lLiBUaW55WG1sIGlzIHRvbGVyYW50IG9mIG11bHRpcGxlIGVsZW1lbnRzIGF0IHRoZSBkb2N1bWVudCBsZXZlbC4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSIgcmVmPSJhMjAiIGFyZ3M9IihpbnQgX3RhYnNpemUpIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dm9pZCBUaVhtbERvY3VtZW50OjpTZXRUYWJTaXplICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+X3RhYnNpemU8L2VtPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj5TZXRUYWJTaXplKCk8L2E+IGFsbG93cyB0aGUgZXJyb3IgcmVwb3J0aW5nIGZ1bmN0aW9ucyAoPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPkVycm9yUm93KCk8L2E+IGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+RXJyb3JDb2woKTwvYT4pIHRvIHJlcG9ydCB0aGUgY29ycmVjdCB2YWx1ZXMgZm9yIHJvdyBhbmQgY29sdW1uLiAKLTxwPgotSXQgZG9lcyBub3QgY2hhbmdlIHRoZSBvdXRwdXQgb3IgaW5wdXQgaW4gYW55IHdheS48cD4KLUJ5IGNhbGxpbmcgdGhpcyBtZXRob2QsIHdpdGggYSB0YWIgc2l6ZSBncmVhdGVyIHRoYW4gMCwgdGhlIHJvdyBhbmQgY29sdW1uIG9mIGVhY2ggbm9kZSBhbmQgYXR0cmlidXRlIGlzIHN0b3JlZCB3aGVuIHRoZSBmaWxlIGlzIGxvYWRlZC4gVmVyeSB1c2VmdWwgZm9yIHRyYWNraW5nIHRoZSBET00gYmFjayBpbiB0byB0aGUgc291cmNlIGZpbGUuPHA+Ci1UaGUgdGFiIHNpemUgaXMgcmVxdWlyZWQgZm9yIGNhbGN1bGF0aW5nIHRoZSBsb2NhdGlvbiBvZiBub2Rlcy4gSWYgbm90IHNldCwgdGhlIGRlZmF1bHQgb2YgNCBpcyB1c2VkLiBUaGUgdGFic2l6ZSBpcyBzZXQgcGVyIGRvY3VtZW50LiBTZXR0aW5nIHRoZSB0YWJzaXplIHRvIDAgZGlzYWJsZXMgcm93L2NvbHVtbiB0cmFja2luZy48cD4KLU5vdGUgdGhhdCByb3cgYW5kIGNvbHVtbiB0cmFja2luZyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gdXNpbmcgb3BlcmF0b3ImZ3Q7Jmd0Oy48cD4KLVRoZSB0YWIgc2l6ZSBuZWVkcyB0byBiZSBlbmFibGVkIGJlZm9yZSB0aGUgcGFyc2Ugb3IgbG9hZC4gQ29ycmVjdCB1c2FnZTogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQlkb2MuU2V0VGFiU2l6ZSggOCApOwotCQlkb2MuTG9hZCggIm15ZmlsZS54bWwiICk7Ci0JCTwvcHJlPjwvZGl2PjxwPgotPGRsIGNvbXBhY3Q+PGR0PjxiPlNlZSBhbHNvOjwvYj48L2R0PjxkZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPjwvZGQ+PC9kbD4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxocj5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGZvbGxvd2luZyBmaWxlOjx1bD4KLTxsaT48YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT48L3VsPgotPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbERvY3VtZW50LnBuZyBiL2RvY3MvY2xhc3NUaVhtbERvY3VtZW50LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJmZDI2Ny4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxEb2N1bWVudC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LW1lbWJlcnMuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQtbWVtYmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmJmMWQ5Li4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQtbWVtYmVycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IE1lbWJlciBMaXN0PC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Ci08aDE+VGlYbWxFbGVtZW50IE1lbWJlciBMaXN0PC9oMT5UaGlzIGlzIHRoZSBjb21wbGV0ZSBsaXN0IG9mIG1lbWJlcnMgZm9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiwgaW5jbHVkaW5nIGFsbCBpbmhlcml0ZWQgbWVtYmVycy48cD48dGFibGU+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNiI+QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBpbnQgKmkpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E3Ij5BdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqZCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMyI+Rmlyc3RBdHRyaWJ1dGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTAiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTQiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjkiPkluc2VydEFmdGVyQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYmVmb3JlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPihjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIyIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIFRpWG1sTm9kZSAqcHJldmlvdXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+TGFzdEF0dHJpYnV0ZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEzIj5MYXN0Q2hpbGQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NiI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IGVudW0gbmFtZTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6Om9zdHJlYW0gJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5vcGVyYXRvciZsdDsmbHQ7PC9hPihzdGQ6OnN0cmluZyAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yJmd0OyZndDs8L2E+KHN0ZDo6aXN0cmVhbSAmYW1wO2luLCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNiI+UGFyZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzQiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOSI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlF1ZXJ5RG91YmxlQXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgKl92YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEwIj5RdWVyeUZsb2F0QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBmbG9hdCAqX3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlPC9hPihjb25zdCBjaGFyICpuYW1lLCBpbnQgKl92YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIxIj5SZW1vdmVBdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIyIj5SZW1vdmVBdHRyaWJ1dGU8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7bmFtZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMxIj5SZW1vdmVDaGlsZDwvYT4oVGlYbWxOb2RlICpyZW1vdmVUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+UmVwbGFjZUNoaWxkPC9hPihUaVhtbE5vZGUgKnJlcGxhY2VUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDt3aXRoVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+Um93PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExNyI+U2V0QXR0cmlidXRlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTkiPlNldEF0dHJpYnV0ZTwvYT4oY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KGJvb2wgY29uZGVuc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIwIj5TZXREb3VibGVBdHRyaWJ1dGU8L2E+KGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSB2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTAiPlRpWG1sRWxlbWVudDwvYT4oY29uc3QgY2hhciAqaW5fdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTEiPlRpWG1sRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2I0YmQ5Li4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbEVsZW1lbnQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQxOCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+VGlueVhtbDogVGlYbWxFbGVtZW50IENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sRWxlbWVudCBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sRWxlbWVudCIgLS0+PCEtLSBkb3h5dGFnOiBpbmhlcml0cz0iVGlYbWxOb2RlIiAtLT5UaGUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciBjbGFzcy4gIAotPGEgaHJlZj0iI19kZXRhaWxzIj5Nb3JlLi4uPC9hPgotPHA+Ci08Y29kZT4jaW5jbHVkZSAmbHQ7PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+Jmd0OzwvY29kZT4KLTxwPgotPHA+SW5oZXJpdGFuY2UgZGlhZ3JhbSBmb3IgVGlYbWxFbGVtZW50OgotPHA+PGNlbnRlcj48aW1nIHNyYz0iY2xhc3NUaVhtbEVsZW1lbnQucG5nIiB1c2VtYXA9IiNUaVhtbEVsZW1lbnRfbWFwIiBib3JkZXI9IjAiIGFsdD0iIj48L2NlbnRlcj4KLTxtYXAgbmFtZT0iVGlYbWxFbGVtZW50X21hcCI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIiBhbHQ9IlRpWG1sTm9kZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCw1Niw4Nyw4MCI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIiBhbHQ9IlRpWG1sQmFzZSIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDg3LDI0Ij4KLTwvbWFwPgotPGEgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgotPHRyPjx0ZD48L3RkPjwvdHI+Ci08dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIE1lbWJlciBGdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpUaVhtbEVsZW1lbnQiIHJlZj0iYTAiIGFyZ3M9Iihjb25zdCBjaGFyICppbl92YWx1ZSkiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMCI+VGlYbWxFbGVtZW50PC9hPiAoY29uc3QgY2hhciAqaW5fdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3QgYW4gZWxlbWVudC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpUaVhtbEVsZW1lbnQiIHJlZj0iYTEiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMSI+VGlYbWxFbGVtZW50PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5zdGQ6OnN0cmluZyBjb25zdHJ1Y3Rvci4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUiIHJlZj0iYTUiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lKSBjb25zdCAiIC0tPgotY29uc3QgY2hhciAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGUoKTwvYT4gcmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBhdHRyaWJ1dGUgb2YgdGhhdCBuYW1lLCBvciBudWxsIGlmIG5vbmUgZXhpc3RzLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E2Ij5BdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBpbnQgKmkpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+R2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlKCk8L2E+IHJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgYXR0cmlidXRlIG9mIHRoYXQgbmFtZSwgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4gIDxhIGhyZWY9IiNhNiI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTciPkF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqZCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGUoKTwvYT4gcmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBhdHRyaWJ1dGUgb2YgdGhhdCBuYW1lLCBvciBudWxsIGlmIG5vbmUgZXhpc3RzLiAgPGEgaHJlZj0iI2E3Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+UXVlcnlJbnRBdHRyaWJ1dGU8L2E+IChjb25zdCBjaGFyICpuYW1lLCBpbnQgKl92YWx1ZSkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5RdWVyeUludEF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gaXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlKCk8L2E+IG1ldGhvZCB3aXRoIHJpY2hlciBlcnJvciBjaGVja2luZy4gIDxhIGhyZWY9IiNhOCI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6UXVlcnlEb3VibGVBdHRyaWJ1dGUiIHJlZj0iYTkiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lLCBkb3VibGUgKl92YWx1ZSkgY29uc3QgIiAtLT4KLWludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlF1ZXJ5RG91YmxlQXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlICpfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UXVlcnlEb3VibGVBdHRyaWJ1dGUgZXhhbWluZXMgdGhlIGF0dHJpYnV0ZSAtIHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlKCk8L2E+LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpRdWVyeUZsb2F0QXR0cmlidXRlIiByZWY9ImExMCIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGZsb2F0ICpfdmFsdWUpIGNvbnN0ICIgLS0+Ci1pbnQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMCI+UXVlcnlGbG9hdEF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUsIGZsb2F0ICpfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UXVlcnlGbG9hdEF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+UXVlcnlJbnRBdHRyaWJ1dGUoKTwvYT4uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqX3ZhbHVlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiAgPGEgaHJlZj0iI2ExMSI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlNldEF0dHJpYnV0ZSIgcmVmPSJhMTciIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO25hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Ci12b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTciPlNldEF0dHJpYnV0ZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7bmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gU1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExOSI+U2V0QXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiAgPGEgaHJlZj0iI2ExOSI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMCI+U2V0RG91YmxlQXR0cmlidXRlPC9hPiAoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlIHZhbHVlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiAgPGEgaHJlZj0iI2EyMCI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZSIgcmVmPSJhMjEiIGFyZ3M9Iihjb25zdCBjaGFyICpuYW1lKSIgLS0+Ci12b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjEiPlJlbW92ZUF0dHJpYnV0ZTwvYT4gKGNvbnN0IGNoYXIgKm5hbWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZWxldGVzIGFuIGF0dHJpYnV0ZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpSZW1vdmVBdHRyaWJ1dGUiIHJlZj0iYTIyIiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtuYW1lKSIgLS0+Ci12b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjIiPlJlbW92ZUF0dHJpYnV0ZTwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7bmFtZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjMiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpGaXJzdEF0dHJpYnV0ZSIgcmVmPSJhMjMiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci1jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMyI+Rmlyc3RBdHRyaWJ1dGU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWNjZXNzIHRoZSBmaXJzdCBhdHRyaWJ1dGUgaW4gdGhpcyBlbGVtZW50LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpMYXN0QXR0cmlidXRlIiByZWY9ImEyNSIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI1Ij5MYXN0QXR0cmlidXRlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFjY2VzcyB0aGUgbGFzdCBhdHRyaWJ1dGUgaW4gdGhpcyBlbGVtZW50LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgZWFzeSBhY2Nlc3MgdG8gdGhlIHRleHQgaW5zaWRlIGFuIGVsZW1lbnQuICA8YSBocmVmPSIjYTI3Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6Q2xvbmUiIHJlZj0iYTI4IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotdmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5DbG9uZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGVzIGEgbmV3IEVsZW1lbnQgYW5kIHJldHVybnMgaXQgLSB0aGUgcmV0dXJuZWQgZWxlbWVudCBpcyBhIGNvcHkuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI5Ij5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWxsIFRpbnlYbWwgY2xhc3NlcyBjYW4gcHJpbnQgdGhlbXNlbHZlcyB0byBhIGZpbGVzdHJlYW0uICA8YSBocmVmPSIjYTI5Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTwvdGFibGU+Ci08aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgotVGhlIGVsZW1lbnQgaXMgYSBjb250YWluZXIgY2xhc3MuIAotPHA+Ci1JdCBoYXMgYSB2YWx1ZSwgdGhlIGVsZW1lbnQgbmFtZSwgYW5kIGNhbiBjb250YWluIG90aGVyIGVsZW1lbnRzLCB0ZXh0LCBjb21tZW50cywgYW5kIHVua25vd25zLiBFbGVtZW50cyBhbHNvIGNvbnRhaW4gYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBhdHRyaWJ1dGVzLgotPHA+Ci08aHI+PGgyPk1lbWJlciBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6QXR0cmlidXRlIiByZWY9ImE3IiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgZG91YmxlICpkKSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyKiBUaVhtbEVsZW1lbnQ6OkF0dHJpYnV0ZSAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5uYW1lPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmRvdWJsZSAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+ZDwvZW0+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotR2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlKCk8L2E+IHJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgYXR0cmlidXRlIG9mIHRoYXQgbmFtZSwgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4gCi08cD4KLUlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGRvdWJsZSwgdGhlIGRvdWJsZSB2YWx1ZSB3aWxsIGJlIHB1dCBpbiB0aGUgcmV0dXJuICdkJywgaWYgJ2QnIGlzIG5vbi1udWxsLiAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6QXR0cmlidXRlIiByZWY9ImE2IiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgaW50ICppKSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyKiBUaVhtbEVsZW1lbnQ6OkF0dHJpYnV0ZSAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5uYW1lPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+aTwvZW0+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotR2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlKCk8L2E+IHJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgYXR0cmlidXRlIG9mIHRoYXQgbmFtZSwgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4gCi08cD4KLUlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGludGVnZXIsIHRoZSBpbnRlZ2VyIHZhbHVlIHdpbGwgYmUgcHV0IGluIHRoZSByZXR1cm4gJ2knLCBpZiAnaScgaXMgbm9uLW51bGwuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6R2V0VGV4dCIgcmVmPSJhMjciIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6R2V0VGV4dCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGVhc3kgYWNjZXNzIHRvIHRoZSB0ZXh0IGluc2lkZSBhbiBlbGVtZW50LiAKLTxwPgotQWx0aG91Z2ggZWFzeSBhbmQgY29uY2lzZSwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+R2V0VGV4dCgpPC9hPiBpcyBsaW1pdGVkIGNvbXBhcmVkIHRvIGdldHRpbmcgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiBjaGlsZCBhbmQgYWNjZXNzaW5nIGl0IGRpcmVjdGx5LjxwPgotSWYgdGhlIGZpcnN0IGNoaWxkIG9mICd0aGlzJyBpcyBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiwgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPkdldFRleHQoKTwvYT4gcmV0dXJzIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIG9mIHRoZSBUZXh0IG5vZGUsIGVsc2UgbnVsbCBpcyByZXR1cm5lZC48cD4KLVRoaXMgaXMgYSBjb252ZW5pZW50IG1ldGhvZCBmb3IgZ2V0dGluZyB0aGUgdGV4dCBvZiBzaW1wbGUgY29udGFpbmVkIHRleHQ6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQkmbHQ7Zm9vJmd0O1RoaXMgaXMgdGV4dCZsdDsvZm9vJmd0OwotCQljb25zdCBjaGFyKiBzdHIgPSBmb29FbGVtZW50LSZndDtHZXRUZXh0KCk7Ci0JCTwvcHJlPjwvZGl2PjxwPgotJ3N0cicgd2lsbCBiZSBhIHBvaW50ZXIgdG8gIlRoaXMgaXMgdGV4dCIuPHA+Ci1Ob3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gYmUgbWlzbGVhZGluZy4gSWYgdGhlIGVsZW1lbnQgZm9vIHdhcyBjcmVhdGVkIGZyb20gdGhpcyBYTUw6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQkmbHQ7Zm9vJmd0OyZsdDtiJmd0O1RoaXMgaXMgdGV4dCZsdDsvYiZndDsmbHQ7L2ZvbyZndDsgCi0JCTwvcHJlPjwvZGl2PjxwPgotdGhlbiB0aGUgdmFsdWUgb2Ygc3RyIHdvdWxkIGJlIG51bGwuIFRoZSBmaXJzdCBjaGlsZCBub2RlIGlzbid0IGEgdGV4dCBub2RlLCBpdCBpcyBhbm90aGVyIGVsZW1lbnQuIEZyb20gdGhpcyBYTUw6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQkmbHQ7Zm9vJmd0O1RoaXMgaXMgJmx0O2ImZ3Q7dGV4dCZsdDsvYiZndDsmbHQ7L2ZvbyZndDsgCi0JCTwvcHJlPjwvZGl2PiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5HZXRUZXh0KCk8L2E+IHdpbGwgcmV0dXJuICJUaGlzIGlzICIuPHA+Ci1XQVJOSU5HOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5HZXRUZXh0KCk8L2E+IGFjY2Vzc2VzIGEgY2hpbGQgbm9kZSAtIGRvbid0IGJlY29tZSBjb25mdXNlZCB3aXRoIHRoZSBzaW1pbGFybHkgbmFtZWQgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE3Ij5UaVhtbEhhbmRsZTo6VGV4dCgpPC9hPiBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VGlYbWxOb2RlOjpUb1RleHQoKTwvYT4gd2hpY2ggYXJlIHNhZmUgdHlwZSBjYXN0cyBvbiB0aGUgcmVmZXJlbmNlZCBub2RlLiAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlByaW50IiByZWY9ImEyOSIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ICIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgdm9pZCBUaVhtbEVsZW1lbnQ6OlByaW50ICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPkZJTEUgKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmNmaWxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmludCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmRlcHRoPC9lbT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj4gY29uc3Q8Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUFsbCBUaW55WG1sIGNsYXNzZXMgY2FuIHByaW50IHRoZW1zZWx2ZXMgdG8gYSBmaWxlc3RyZWFtLiAKLTxwPgotVGhpcyBpcyBhIGZvcm1hdHRlZCBwcmludCwgYW5kIHdpbGwgaW5zZXJ0IHRhYnMgYW5kIG5ld2xpbmVzLjxwPgotKEZvciBhbiB1bmZvcm1hdHRlZCBzdHJlYW0sIHVzZSB0aGUgJmx0OyZsdDsgb3BlcmF0b3IuKQotPHA+Ci1JbXBsZW1lbnRzIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+VGlYbWxCYXNlPC9hPi4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEVsZW1lbnQ6OlF1ZXJ5SW50QXR0cmlidXRlIiByZWY9ImE4IiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgaW50ICpfdmFsdWUpIGNvbnN0ICIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmludCBUaVhtbEVsZW1lbnQ6OlF1ZXJ5SW50QXR0cmlidXRlICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm5hbWU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+aW50ICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5fdmFsdWU8L2VtPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPiBjb25zdDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVF1ZXJ5SW50QXR0cmlidXRlIGV4YW1pbmVzIHRoZSBhdHRyaWJ1dGUgLSBpdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGUoKTwvYT4gbWV0aG9kIHdpdGggcmljaGVyIGVycm9yIGNoZWNraW5nLiAKLTxwPgotSWYgdGhlIGF0dHJpYnV0ZSBpcyBhbiBpbnRlZ2VyLCBpdCBpcyBzdG9yZWQgaW4gJ3ZhbHVlJyBhbmQgdGhlIGNhbGwgcmV0dXJucyBUSVhNTF9TVUNDRVNTLiBJZiBpdCBpcyBub3QgYW4gaW50ZWdlciwgaXQgcmV0dXJucyBUSVhNTF9XUk9OR19UWVBFLiBJZiB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LCB0aGVuIFRJWE1MX05PX0FUVFJJQlVURSBpcyByZXR1cm5lZC4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpTZXRBdHRyaWJ1dGUiIHJlZj0iYTE5IiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKSIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZvaWQgVGlYbWxFbGVtZW50OjpTZXRBdHRyaWJ1dGUgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+bmFtZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT52YWx1ZTwvZW0+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotU2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiAKLTxwPgotVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGNoYW5nZWQgaWYgaXQgZG9lcy4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxFbGVtZW50OjpTZXRBdHRyaWJ1dGUiIHJlZj0iYTExIiBhcmdzPSIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqX3ZhbHVlKSIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZvaWQgVGlYbWxFbGVtZW50OjpTZXRBdHRyaWJ1dGUgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+bmFtZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5jb25zdCBjaGFyICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5fdmFsdWU8L2VtPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVNldHMgYW4gYXR0cmlidXRlIG9mIG5hbWUgdG8gYSBnaXZlbiB2YWx1ZS4gCi08cD4KLVRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBjaGFuZ2VkIGlmIGl0IGRvZXMuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sRWxlbWVudDo6U2V0RG91YmxlQXR0cmlidXRlIiByZWY9ImEyMCIgYXJncz0iKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSB2YWx1ZSkiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52b2lkIFRpWG1sRWxlbWVudDo6U2V0RG91YmxlQXR0cmlidXRlICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm5hbWU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+ZG91YmxlJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+dmFsdWU8L2VtPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVNldHMgYW4gYXR0cmlidXRlIG9mIG5hbWUgdG8gYSBnaXZlbiB2YWx1ZS4gCi08cD4KLVRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBjaGFuZ2VkIGlmIGl0IGRvZXMuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Ci08aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sRWxlbWVudC5wbmcgYi9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFjYzIxYi4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxFbGVtZW50LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxIYW5kbGUtbWVtYmVycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGZhZWJjLi4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS1tZW1iZXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+VGlueVhtbDogTWVtYmVyIExpc3Q8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaVhtbEhhbmRsZSBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+LCBpbmNsdWRpbmcgYWxsIGluaGVyaXRlZCBtZW1iZXJzLjxwPjx0YWJsZT4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTciPkNoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgaW50IGluZGV4KSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOCI+Q2hpbGQ8L2E+KGludCBpbmRleCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTkiPkNoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUsIGludCBpbmRleCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEwIj5DaGlsZEVsZW1lbnQ8L2E+KGludCBpbmRleCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE2Ij5FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMyI+Rmlyc3RDaGlsZDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTUiPk5vZGU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNyI+VGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTAiPlRpWG1sSGFuZGxlPC9hPihUaVhtbE5vZGUgKl9ub2RlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMSI+VGlYbWxIYW5kbGU8L2E+KGNvbnN0IFRpWG1sSGFuZGxlICZhbXA7cmVmKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTgiPlVua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci08L3RhYmxlPjxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxIYW5kbGUuaHRtbCBiL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2FmNjAyLi4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbEhhbmRsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBUaVhtbEhhbmRsZSBDbGFzcyBSZWZlcmVuY2U8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaVhtbEhhbmRsZSBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sSGFuZGxlIiAtLT5BIFRpWG1sSGFuZGxlIGlzIGEgY2xhc3MgdGhhdCB3cmFwcyBhIG5vZGUgcG9pbnRlciB3aXRoIG51bGwgY2hlY2tzOyB0aGlzIGlzIGFuIGluY3JlZGlibHkgdXNlZnVsIHRoaW5nLiAgCi08YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Ci08cD4KLTxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgotPHA+Ci08YSBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KLTx0cj48dGQ+PC90ZD48L3RyPgotPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpUaVhtbEhhbmRsZSIgcmVmPSJhMCIgYXJncz0iKFRpWG1sTm9kZSAqX25vZGUpIiAtLT4KLSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMCI+VGlYbWxIYW5kbGU8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKl9ub2RlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlIGEgaGFuZGxlIGZyb20gYW55IG5vZGUgKGF0IGFueSBkZXB0aCBvZiB0aGUgdHJlZS4pIFRoaXMgY2FuIGJlIGEgbnVsbCBwb2ludGVyLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6VGlYbWxIYW5kbGUiIHJlZj0iYTEiIGFyZ3M9Iihjb25zdCBUaVhtbEhhbmRsZSAmYW1wO3JlZikiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExIj5UaVhtbEhhbmRsZTwvYT4gKGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gJmFtcDtyZWYpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db3B5IGNvbnN0cnVjdG9yLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZCIgcmVmPSJhMyIgYXJncz0iKCkgY29uc3QgIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTMiPkZpcnN0Q2hpbGQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBmaXJzdCBjaGlsZCBub2RlLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZCIgcmVmPSJhNCIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCAiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNCI+Rmlyc3RDaGlsZDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgbm9kZSB3aXRoIHRoZSBnaXZlbiBuYW1lLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZEVsZW1lbnQiIHJlZj0iYTUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpGaXJzdENoaWxkRWxlbWVudCIgcmVmPSJhNiIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCAiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNyI+Q2hpbGQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSwgaW50IGluZGV4KSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAgPGEgaHJlZj0iI2E3Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOCI+Q2hpbGQ8L2E+IChpbnQgaW5kZXgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkLiAgPGEgaHJlZj0iI2E4Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOSI+Q2hpbGRFbGVtZW50PC9hPiAoY29uc3QgY2hhciAqdmFsdWUsIGludCBpbmRleCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAgPGEgaHJlZj0iI2E5Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTAiPkNoaWxkRWxlbWVudDwvYT4gKGludCBpbmRleCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudC4gIDxhIGhyZWY9IiNhMTAiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6Ok5vZGUiIHJlZj0iYTE1IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE1Ij5Ob2RlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgaGFuZGxlIGFzIGEgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+LiBUaGlzIG1heSByZXR1cm4gbnVsbC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpFbGVtZW50IiByZWY9ImExNiIgYXJncz0iKCkgY29uc3QgIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNiI+RWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXR1cm4gdGhlIGhhbmRsZSBhcyBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPi4gVGhpcyBtYXkgcmV0dXJuIG51bGwuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6VGV4dCIgcmVmPSJhMTciIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTciPlRleHQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIHRoZSBoYW5kbGUgYXMgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4uIFRoaXMgbWF5IHJldHVybiBudWxsLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OlVua25vd24iIHJlZj0iYTE4IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE4Ij5Vbmtub3duPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybiB0aGUgaGFuZGxlIGFzIGEgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+LiBUaGlzIG1heSByZXR1cm4gbnVsbDsuIDxicj48L3RkPjwvdHI+Ci08L3RhYmxlPgotPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLUEgVGlYbWxIYW5kbGUgaXMgYSBjbGFzcyB0aGF0IHdyYXBzIGEgbm9kZSBwb2ludGVyIHdpdGggbnVsbCBjaGVja3M7IHRoaXMgaXMgYW4gaW5jcmVkaWJseSB1c2VmdWwgdGhpbmcuIAotPHA+Ci1Ob3RlIHRoYXQgVGlYbWxIYW5kbGUgaXMgbm90IHBhcnQgb2YgdGhlIFRpbnlYbWwgRE9NIHN0cnVjdHVyZS4gSXQgaXMgYSBzZXBhcmF0ZSB1dGlsaXR5IGNsYXNzLjxwPgotVGFrZSBhbiBleGFtcGxlOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7RG9jdW1lbnQmZ3Q7Ci0JCSZsdDtFbGVtZW50IGF0dHJpYnV0ZUEgPSAidmFsdWVBIiZndDsKLQkJCSZsdDtDaGlsZCBhdHRyaWJ1dGVCID0gInZhbHVlMSIgLyZndDsKLQkJCSZsdDtDaGlsZCBhdHRyaWJ1dGVCID0gInZhbHVlMiIgLyZndDsKLQkJJmx0Oy9FbGVtZW50Jmd0OwotCSZsdDtEb2N1bWVudCZndDsKLQk8L3ByZT48L2Rpdj48cD4KLUFzc3VtaW5nIHlvdSB3YW50IHRoZSB2YWx1ZSBvZiAiYXR0cmlidXRlQiIgaW4gdGhlIDJuZCAiQ2hpbGQiIGVsZW1lbnQsIGl0J3MgdmVyeSBlYXN5IHRvIHdyaXRlIGEgKmxvdCogb2YgY29kZSB0aGF0IGxvb2tzIGxpa2U6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglUaVhtbEVsZW1lbnQqIHJvb3QgPSBkb2N1bWVudC5GaXJzdENoaWxkRWxlbWVudCggIkRvY3VtZW50IiApOwotCWlmICggcm9vdCApCi0JewotCQlUaVhtbEVsZW1lbnQqIGVsZW1lbnQgPSByb290LSZndDtGaXJzdENoaWxkRWxlbWVudCggIkVsZW1lbnQiICk7Ci0JCWlmICggZWxlbWVudCApCi0JCXsKLQkJCVRpWG1sRWxlbWVudCogY2hpbGQgPSBlbGVtZW50LSZndDtGaXJzdENoaWxkRWxlbWVudCggIkNoaWxkIiApOwotCQkJaWYgKCBjaGlsZCApCi0JCQl7Ci0JCQkJVGlYbWxFbGVtZW50KiBjaGlsZDIgPSBjaGlsZC0mZ3Q7TmV4dFNpYmxpbmdFbGVtZW50KCAiQ2hpbGQiICk7Ci0JCQkJaWYgKCBjaGlsZDIgKQotCQkJCXsKLQkJCQkJLy8gRmluYWxseSBkbyBzb21ldGhpbmcgdXNlZnVsLgotCTwvcHJlPjwvZGl2PjxwPgotQW5kIHRoYXQgZG9lc24ndCBldmVuIGNvdmVyICJlbHNlIiBjYXNlcy4gVGlYbWxIYW5kbGUgYWRkcmVzc2VzIHRoZSB2ZXJib3NpdHkgb2Ygc3VjaCBjb2RlLiBBIFRpWG1sSGFuZGxlIGNoZWNrcyBmb3IgbnVsbCBwb2ludGVycyBzbyBpdCBpcyBwZXJmZWN0bHkgc2FmZSBhbmQgY29ycmVjdCB0byB1c2U6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglUaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZhbXA7ZG9jdW1lbnQgKTsKLQlUaVhtbEVsZW1lbnQqIGNoaWxkMiA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuQ2hpbGQoICJDaGlsZCIsIDEgKS5FbGVtZW50KCk7Ci0JaWYgKCBjaGlsZDIgKQotCXsKLQkJLy8gZG8gc29tZXRoaW5nIHVzZWZ1bAotCTwvcHJlPjwvZGl2PjxwPgotV2hpY2ggaXMgTVVDSCBtb3JlIGNvbmNpc2UgYW5kIHVzZWZ1bC48cD4KLUl0IGlzIGFsc28gc2FmZSB0byBjb3B5IGhhbmRsZXMgLSBpbnRlcm5hbGx5IHRoZXkgYXJlIG5vdGhpbmcgbW9yZSB0aGFuIG5vZGUgcG9pbnRlcnMuIDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CVRpWG1sSGFuZGxlIGhhbmRsZUNvcHkgPSBoYW5kbGU7Ci0JPC9wcmU+PC9kaXY+PHA+Ci1XaGF0IHRoZXkgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBpcyBpdGVyYXRpb246PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglpbnQgaT0wOyAKLQl3aGlsZSAoIHRydWUgKQotCXsKLQkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuQ2hpbGQoICJDaGlsZCIsIGkgKS5FbGVtZW50KCk7Ci0JCWlmICggIWNoaWxkICkKLQkJCWJyZWFrOwotCQkvLyBkbyBzb21ldGhpbmcKLQkJKytpOwotCX0KLQk8L3ByZT48L2Rpdj48cD4KLUl0IHNlZW1zIHJlYXNvbmFibGUsIGJ1dCBpdCBpcyBpbiBmYWN0IHR3byBlbWJlZGRlZCB3aGlsZSBsb29wcy4gVGhlIENoaWxkIG1ldGhvZCBpcyBhIGxpbmVhciB3YWxrIHRvIGZpbmQgdGhlIGVsZW1lbnQsIHNvIHRoaXMgY29kZSB3b3VsZCBpdGVyYXRlIG11Y2ggbW9yZSB0aGFuIGl0IG5lZWRzIHRvLiBJbnN0ZWFkLCBwcmVmZXI6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglUaVhtbEVsZW1lbnQqIGNoaWxkID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5GaXJzdENoaWxkKCAiQ2hpbGQiICkuRWxlbWVudCgpOwotCi0JZm9yKCBjaGlsZDsgY2hpbGQ7IGNoaWxkPWNoaWxkLSZndDtOZXh0U2libGluZ0VsZW1lbnQoKSApCi0JewotCQkvLyBkbyBzb21ldGhpbmcKLQl9Ci0JPC9wcmU+PC9kaXY+Ci08cD4KLTxocj48aDI+TWVtYmVyIEZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTgiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkNoaWxkIiByZWY9ImE4IiBhcmdzPSIoaW50IGluZGV4KSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IFRpWG1sSGFuZGxlOjpDaGlsZCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5pbnQmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gPGVtPmluZGV4PC9lbT4gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZC4gCi08cD4KLVRoZSBmaXJzdCBjaGlsZCBpcyAwLCB0aGUgc2Vjb25kIDEsIGV0Yy4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbEhhbmRsZTo6Q2hpbGQiIHJlZj0iYTciIGFyZ3M9Iihjb25zdCBjaGFyICp2YWx1ZSwgaW50IGluZGV4KSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IFRpWG1sSGFuZGxlOjpDaGlsZCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT52YWx1ZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5pbmRleDwvZW0+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIHdpdGggdGhlIGdpdmVuIG5hbWUuIAotPHA+Ci1UaGUgZmlyc3QgY2hpbGQgaXMgMCwgdGhlIHNlY29uZCAxLCBldGMuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTEwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sSGFuZGxlOjpDaGlsZEVsZW1lbnQiIHJlZj0iYTEwIiBhcmdzPSIoaW50IGluZGV4KSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IFRpWG1sSGFuZGxlOjpDaGlsZEVsZW1lbnQgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+aW50Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5pbmRleDwvZW0+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1SZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudC4gCi08cD4KLVRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLiBOb3RlIHRoYXQgb25seSBUaVhtbEVsZW1lbnRzIGFyZSBpbmRleGVkOiBvdGhlciB0eXBlcyBhcmUgbm90IGNvdW50ZWQuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxIYW5kbGU6OkNoaWxkRWxlbWVudCIgcmVmPSJhOSIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlLCBpbnQgaW5kZXgpIGNvbnN0ICIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gVGlYbWxIYW5kbGU6OkNoaWxkRWxlbWVudCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT52YWx1ZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5pbnQmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5pbmRleDwvZW0+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+IGNvbnN0PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkIGVsZW1lbnQgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gCi08cD4KLVRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLiBOb3RlIHRoYXQgb25seSBUaVhtbEVsZW1lbnRzIGFyZSBpbmRleGVkOiBvdGhlciB0eXBlcyBhcmUgbm90IGNvdW50ZWQuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Ci08aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sTm9kZS1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxOb2RlLW1lbWJlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVjYjgwMi4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxOb2RlLW1lbWJlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sTm9kZSBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5DbG9uZTwvYT4oKSBjb25zdCA9MDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHVyZSB2aXJ0dWFsXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+Q29sdW1uPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEwIj5GaXJzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTExIj5GaXJzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTYiPkZpcnN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTIiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU0Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5HZXREb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjkiPkluc2VydEFmdGVyQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqYmVmb3JlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPihjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5Jc1doaXRlU3BhY2VDb25kZW5zZWQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIyIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIFRpWG1sTm9kZSAqcHJldmlvdXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMyI+TGFzdENoaWxkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNSI+TGFzdENoaWxkPC9hPihjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTgiPkxhc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTkiPkxhc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNyI+TGlua0VuZENoaWxkPC9hPihUaVhtbE5vZGUgKmFkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM4Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzkiPk5leHRTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQyIj5OZXh0U2libGluZzwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDYiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDgiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDkiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+Tm9DaGlsZHJlbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk5vZGVUeXBlPC9hPiBlbnVtIG5hbWU8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMyI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4oc3RkOjpvc3RyZWFtICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4oc3RkOjpzdHJpbmcgJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24yIj5vcGVyYXRvciZndDsmZ3Q7PC9hPihzdGQ6OmlzdHJlYW0gJmFtcDtpbiwgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlBhcmVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM0Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM2Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM3Ij5QcmV2aW91c1NpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+UHJpbnQ8L2E+KEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ID0wPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtwdXJlIHZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sTm9kZS5odG1sIGIvZG9jcy9jbGFzc1RpWG1sTm9kZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWI5OTUwLi4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbE5vZGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg0NSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+VGlueVhtbDogVGlYbWxOb2RlIENsYXNzIFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sTm9kZSBDbGFzcyBSZWZlcmVuY2U8L2gxPjwhLS0gZG94eXRhZzogY2xhc3M9IlRpWG1sTm9kZSIgLS0+PCEtLSBkb3h5dGFnOiBpbmhlcml0cz0iVGlYbWxCYXNlIiAtLT5UaGUgcGFyZW50IGNsYXNzIGZvciBldmVyeXRoaW5nIGluIHRoZSBEb2N1bWVudCBPYmplY3QgTW9kZWwuICAKLTxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KLTxwPgotPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Ci08cD4KLTxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sTm9kZToKLTxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxOb2RlLnBuZyIgdXNlbWFwPSIjVGlYbWxOb2RlX21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Ci08bWFwIG5hbWU9IlRpWG1sTm9kZV9tYXAiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjI5NSwwLDQwMywyNCI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIiBhbHQ9IlRpWG1sQ29tbWVudCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwxMTIsMTA4LDEzNiI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCIgYWx0PSJUaVhtbERlY2xhcmF0aW9uIiBzaGFwZT0icmVjdCIgY29vcmRzPSIxMTgsMTEyLDIyNiwxMzYiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiIGFsdD0iVGlYbWxEb2N1bWVudCIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMjM2LDExMiwzNDQsMTM2Ij4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiIGFsdD0iVGlYbWxFbGVtZW50IiBzaGFwZT0icmVjdCIgY29vcmRzPSIzNTQsMTEyLDQ2MiwxMzYiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCIgYWx0PSJUaVhtbFRleHQiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjQ3MiwxMTIsNTgwLDEzNiI+Ci08YXJlYSBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIiBhbHQ9IlRpWG1sVW5rbm93biIgc2hhcGU9InJlY3QiIGNvb3Jkcz0iNTkwLDExMiw2OTgsMTM2Ij4KLTwvbWFwPgotPGEgaHJlZj0iY2xhc3NUaVhtbE5vZGUtbWVtYmVycy5odG1sIj5MaXN0IG9mIGFsbCBtZW1iZXJzLjwvYT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgotPHRyPjx0ZD48L3RkPjwvdHI+Ci08dHI+PHRkIGNvbHNwYW49IjIiPjxicj48aDI+UHVibGljIFR5cGVzPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmVudW0gJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIHR5cGVzIG9mIFhNTCBub2RlcyBzdXBwb3J0ZWQgYnkgVGlueVhtbC4gIDxhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk1vcmUuLi48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj5WYWx1ZTwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgbWVhbmluZyBvZiAndmFsdWUnIGNoYW5nZXMgZm9yIHRoZSBzcGVjaWZpYyB0eXBlIG9mIFRpWG1sTm9kZS4gIDxhIGhyZWY9IiNhMSI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VmFsdWVTdHI8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWUoKTwvYT4gYXMgYSBzdGQ6OnN0cmluZy4gIDxhIGhyZWY9IiNhMiI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzIj5TZXRWYWx1ZTwvYT4gKGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNoYW5nZXMgdGhlIHZhbHVlIG9mIHRoZSBub2RlLiAgPGEgaHJlZj0iI2EzIj48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpTZXRWYWx1ZSIgcmVmPSJhNCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Ci12b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+U2V0VmFsdWU8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkNsZWFyIiByZWY9ImE1IiBhcmdzPSIoKSIgLS0+Ci12b2lkJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNSI+Q2xlYXI8L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZWxldGUgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUuIERvZXMgbm90IGFmZmVjdCAndGhpcycuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6UGFyZW50IiByZWY9ImE2IiBhcmdzPSIoKSIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlBhcmVudDwvYT4gKCk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPk9uZSBzdGVwIHVwIHRoZSBET00uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZCIgcmVmPSJhOCIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBub2RlLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkIiByZWY9ImExMCIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4gKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBmaXJzdCBjaGlsZCBvZiB0aGlzIG5vZGUgd2l0aCB0aGUgbWF0Y2hpbmcgJ3ZhbHVlJy4gV2lsbCBiZSBudWxsIGlmIG5vbmUgZm91bmQuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGQiIHJlZj0iYTExIiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUpIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTEiPkZpcnN0Q2hpbGQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBmaXJzdCBjaGlsZCBvZiB0aGlzIG5vZGUgd2l0aCB0aGUgbWF0Y2hpbmcgJ3ZhbHVlJy4gV2lsbCBiZSBudWxsIGlmIG5vbmUgZm91bmQuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExMyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okxhc3RDaGlsZCIgcmVmPSJhMTMiIGFyZ3M9IigpIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4gKCk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBsYXN0IGNoaWxkIG9mIHRoaXMgbm9kZS4gV2lsbCBiZSBudWxsIGlmIHRoZXJlIGFyZSBubyBjaGlsZHJlbi4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGFzdENoaWxkIiByZWY9ImExNSIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE1Ij5MYXN0Q2hpbGQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBsYXN0IGNoaWxkIG9mIHRoaXMgbm9kZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTYiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkIiByZWY9ImExNiIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNiI+Rmlyc3RDaGlsZDwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMTciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkIiByZWY9ImExNyIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE3Ij5GaXJzdENoaWxkPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTE4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGFzdENoaWxkIiByZWY9ImExOCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOCI+TGFzdENoaWxkPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImExOSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okxhc3RDaGlsZCIgcmVmPSJhMTkiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExOSI+TGFzdENoaWxkPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiAoY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICpwcmV2aW91cykgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BbiBhbHRlcm5hdGUgd2F5IHRvIHdhbGsgdGhlIGNoaWxkcmVuIG9mIGEgbm9kZS4gIDxhIGhyZWY9IiNhMjAiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4iIHJlZj0iYTIyIiBhcmdzPSIoY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0ICIgLS0+Ci1jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIyIj5JdGVyYXRlQ2hpbGRyZW48L2E+IChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICpwcmV2aW91cykgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGlzIGZsYXZvciBvZiBJdGVyYXRlQ2hpbGRyZW4gc2VhcmNoZXMgZm9yIGNoaWxkcmVuIHdpdGggYSBwYXJ0aWN1bGFyICd2YWx1ZScuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEyNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiIgcmVmPSJhMjQiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjQiPkl0ZXJhdGVDaGlsZHJlbjwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnByZXZpb3VzKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4iIHJlZj0iYTI1IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUsIFRpWG1sTm9kZSAqcHJldmlvdXMpIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPkl0ZXJhdGVDaGlsZHJlbjwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnByZXZpb3VzKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPkluc2VydEVuZENoaWxkPC9hPiAoY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7YWRkVGhpcyk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gIDxhIGhyZWY9IiNhMjYiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKmFkZFRoaXMpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuICA8YSBocmVmPSIjYTI3Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKmJlZm9yZVRoaXMsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO2FkZFRoaXMpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5BZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuICA8YSBocmVmPSIjYTI4Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOSI+SW5zZXJ0QWZ0ZXJDaGlsZDwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqYWZ0ZXJUaGlzLCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDthZGRUaGlzKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAgPGEgaHJlZj0iI2EyOSI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqcmVwbGFjZVRoaXMsIGNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wO3dpdGhUaGlzKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmVwbGFjZSBhIGNoaWxkIG9mIHRoaXMgbm9kZS4gIDxhIGhyZWY9IiNhMzAiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMzEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpSZW1vdmVDaGlsZCIgcmVmPSJhMzEiIGFyZ3M9IihUaVhtbE5vZGUgKnJlbW92ZVRoaXMpIiAtLT4KLWJvb2wmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKnJlbW92ZVRoaXMpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZWxldGUgYSBjaGlsZCBvZiB0aGlzIG5vZGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyIgcmVmPSJhMzIiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci1jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzNCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyIgcmVmPSJhMzQiIGFyZ3M9Iihjb25zdCBjaGFyICopIGNvbnN0ICIgLS0+Ci1jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM0Ij5QcmV2aW91c1NpYmxpbmc8L2E+IChjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlByZXZpb3VzU2libGluZyIgcmVmPSJhMzYiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPlByZXZpb3VzU2libGluZzwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMzciPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpQcmV2aW91c1NpYmxpbmciIHJlZj0iYTM3IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzciPlByZXZpb3VzU2libGluZzwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzOCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5leHRTaWJsaW5nIiByZWY9ImEzOCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTM5Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmciIHJlZj0iYTM5IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzkiPk5leHRTaWJsaW5nPC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmciIHJlZj0iYTQwIiBhcmdzPSIoKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0MiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5leHRTaWJsaW5nIiByZWY9ImE0MiIgYXJncz0iKGNvbnN0IGNoYXIgKikgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPk5leHRTaWJsaW5nPC9hPiAoY29uc3QgY2hhciAqKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPk5hdmlnYXRlIHRvIGEgc2libGluZyBub2RlIHdpdGggdGhlIGdpdmVuICd2YWx1ZScuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4gIDxhIGhyZWY9IiNhNDQiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+IChjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuICA8YSBocmVmPSIjYTQ2Ij48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQ4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50IiByZWY9ImE0OCIgYXJncz0iKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+U1RMIHN0ZDo6c3RyaW5nIGZvcm0uIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0OSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCIgcmVmPSJhNDkiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TVEwgc3RkOjpzdHJpbmcgZm9ybS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZEVsZW1lbnQiIHJlZj0iYTUwIiBhcmdzPSIoKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1MiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkZpcnN0Q2hpbGRFbGVtZW50IiByZWY9ImE1MiIgYXJncz0iKGNvbnN0IGNoYXIgKnZhbHVlKSBjb25zdCAiIC0tPgotY29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MiI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+IChjb25zdCBjaGFyICp2YWx1ZSkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTU0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Rmlyc3RDaGlsZEVsZW1lbnQiIHJlZj0iYTU0IiBhcmdzPSIoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpIGNvbnN0ICIgLS0+Ci1jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU0Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4gKGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCIgcmVmPSJhNTUiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+IChjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlNUTCBzdGQ6OnN0cmluZyBmb3JtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52aXJ0dWFsIGludCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UeXBlPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlF1ZXJ5IHRoZSB0eXBlIChhcyBhbiBlbnVtZXJhdGVkIHZhbHVlLCBhYm92ZSkgb2YgdGhpcyBub2RlLiAgPGEgaHJlZj0iI2E1NiI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJuIGEgcG9pbnRlciB0byB0aGUgRG9jdW1lbnQgdGhpcyBub2RlIGxpdmVzIGluLiAgPGEgaHJlZj0iI2E1NyI+PC9hPjxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1OSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Ok5vQ2hpbGRyZW4iIHJlZj0iYTU5IiBhcmdzPSIoKSBjb25zdCAiIC0tPgotYm9vbCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaGFzIG5vIGNoaWxkcmVuLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb0RvY3VtZW50IiByZWY9ImE2MCIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYxIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9FbGVtZW50IiByZWY9ImE2MSIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYyIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9Db21tZW50IiByZWY9ImE2MiIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTYzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9Vbmtub3duIiByZWY9ImE2MyIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9UZXh0IiByZWY9ImE2NCIgYXJncz0iKCkgY29uc3QgIiAtLT4KLWNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4gKCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY1Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9EZWNsYXJhdGlvbiIgcmVmPSJhNjUiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci1jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjUiPlRvRGVjbGFyYXRpb248L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2NiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvRG9jdW1lbnQiIHJlZj0iYTY2IiBhcmdzPSIoKSIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPlRvRG9jdW1lbnQ8L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTY3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9FbGVtZW50IiByZWY9ImE2NyIgYXJncz0iKCkiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NyI+VG9FbGVtZW50PC9hPiAoKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE2OCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvQ29tbWVudCIgcmVmPSJhNjgiIGFyZ3M9IigpIiAtLT4KLTxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjgiPlRvQ29tbWVudDwvYT4gKCk8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNjkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUb1Vua25vd24iIHJlZj0iYTY5IiBhcmdzPSIoKSIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY5Ij5Ub1Vua25vd248L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTcwIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VG9UZXh0IiByZWY9ImE3MCIgYXJncz0iKCkiIC0tPgotPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+ICombmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MCI+VG9UZXh0PC9hPiAoKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuIDxicj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3MSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlRvRGVjbGFyYXRpb24iIHJlZj0iYTcxIiBhcmdzPSIoKSIgLS0+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzEiPlRvRGVjbGFyYXRpb248L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+dmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcyIj5DbG9uZTwvYT4gKCkgY29uc3QgPTA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuICA8YSBocmVmPSIjYTcyIj48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5GcmllbmRzPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4wIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VGlYbWxEb2N1bWVudCIgcmVmPSJuMCIgYXJncz0iIiAtLT4KLWNsYXNzJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMCI+VGlYbWxEb2N1bWVudDwvYT48L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjEiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpUaVhtbEVsZW1lbnQiIHJlZj0ibjEiIGFyZ3M9IiIgLS0+Ci1jbGFzcyZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjEiPlRpWG1sRWxlbWVudDwvYT48L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+c3RkOjppc3RyZWFtICZhbXA7Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4gKHN0ZDo6aXN0cmVhbSAmYW1wO2luLCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDtiYXNlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QW4gaW5wdXQgc3RyZWFtIG9wZXJhdG9yLCBmb3IgZXZlcnkgY2xhc3MuICA8YSBocmVmPSIjbjIiPjwvYT48YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5zdGQ6Om9zdHJlYW0gJmFtcDsmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7PC9hPiAoc3RkOjpvc3RyZWFtICZhbXA7b3V0LCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDtiYXNlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QW4gb3V0cHV0IHN0cmVhbSBvcGVyYXRvciwgZm9yIGV2ZXJ5IGNsYXNzLiAgPGEgaHJlZj0iI24zIj48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0ibjQiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpvcGVyYXRvciZsdDsmbHQ7IiByZWY9Im40IiBhcmdzPSIoc3RkOjpzdHJpbmcgJmFtcDtvdXQsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2Jhc2UpIiAtLT4KLXN0ZDo6c3RyaW5nICZhbXA7Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+b3BlcmF0b3ImbHQ7Jmx0OzwvYT4gKHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDtiYXNlKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QXBwZW5kcyB0aGUgWE1MIG5vZGUgb3IgYXR0cmlidXRlIHRvIGEgc3RkOjpzdHJpbmcuIDxicj48L3RkPjwvdHI+Ci08L3RhYmxlPgotPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLVRoZSBwYXJlbnQgY2xhc3MgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbC4gCi08cD4KLShFeGNlcHQgZm9yIGF0dHJpYnV0ZXMpLiBOb2RlcyBoYXZlIHNpYmxpbmdzLCBhIHBhcmVudCwgYW5kIGNoaWxkcmVuLiBBIG5vZGUgY2FuIGJlIGluIGEgZG9jdW1lbnQsIG9yIHN0YW5kIG9uIGl0cyBvd24uIFRoZSB0eXBlIG9mIGEgVGlYbWxOb2RlIGNhbiBiZSBxdWVyaWVkLCBhbmQgaXQgY2FuIGJlIGNhc3QgdG8gaXRzIG1vcmUgZGVmaW5lZCB0eXBlLgotPHA+Ci08aHI+PGgyPk1lbWJlciBFbnVtZXJhdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Inc3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6Tm9kZVR5cGUiIHJlZj0idzciIGFyZ3M9IiIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmVudW0gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5UaVhtbE5vZGU6Ok5vZGVUeXBlPC9hPiAgICAgICAgICA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1UaGUgdHlwZXMgb2YgWE1MIG5vZGVzIHN1cHBvcnRlZCBieSBUaW55WG1sLiAKLTxwPgotKEFsbCB0aGUgdW5zdXBwb3J0ZWQgdHlwZXMgYXJlIHBpY2tlZCB1cCBieSBVTktOT1dOLikgICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08aHI+PGgyPk1lbWJlciBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE3MiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkNsb25lIiByZWY9ImE3MiIgYXJncz0iKCkgY29uc3QgPTAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj52aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpDbG9uZSAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtwdXJlIHZpcnR1YWxdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUNyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuIAotPHA+Ci1UaGUgbWVtb3J5IG11c3QgYmUgZGVsZXRlZCBieSB0aGUgY2FsbGVyLgotPHA+Ci1JbXBsZW1lbnRlZCBpbiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI4Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPlRpWG1sQ29tbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMCI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOSI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNCI+VGlYbWxVbmtub3duPC9hPiwgYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYjEiPlRpWG1sRG9jdW1lbnQ8L2E+LiAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE1NyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OkdldERvY3VtZW50IiByZWY9ImE1NyIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIFRpWG1sTm9kZTo6R2V0RG9jdW1lbnQgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVJldHVybiBhIHBvaW50ZXIgdG8gdGhlIERvY3VtZW50IHRoaXMgbm9kZSBsaXZlcyBpbi4gCi08cD4KLVJldHVybnMgbnVsbCBpZiBub3QgaW4gYSBkb2N1bWVudC4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjkiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJbnNlcnRBZnRlckNoaWxkIiByZWY9ImEyOSIgYXJncz0iKFRpWG1sTm9kZSAqYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKSIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpJbnNlcnRBZnRlckNoaWxkICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+YWZ0ZXJUaGlzPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wOyZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmFkZFRoaXM8L2VtPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gCi08cD4KLUFkZHMgYSBjaGlsZCBhZnRlciB0aGUgc3BlY2lmaWVkIGNoaWxkLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI4Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6SW5zZXJ0QmVmb3JlQ2hpbGQiIHJlZj0iYTI4IiBhcmdzPSIoVGlYbWxOb2RlICpiZWZvcmVUaGlzLCBjb25zdCBUaVhtbE5vZGUgJmFtcDthZGRUaGlzKSIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogVGlYbWxOb2RlOjpJbnNlcnRCZWZvcmVDaGlsZCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmJlZm9yZVRoaXM8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCBhbGlnbj0icmlnaHQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZSIgbm93cmFwPiA8ZW0+YWRkVGhpczwvZW0+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgY29sc3Bhbj0iMiI+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiAKLTxwPgotQWRkcyBhIGNoaWxkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIGNoaWxkLiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6SW5zZXJ0RW5kQ2hpbGQiIHJlZj0iYTI2IiBhcmdzPSIoY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcykiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIFRpWG1sTm9kZTo6SW5zZXJ0RW5kQ2hpbGQgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+ICZhbXA7Jm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5hZGRUaGlzPC9lbT4gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gCi08cD4KLUFkZHMgYSBjaGlsZCBwYXN0IHRoZSBMYXN0Q2hpbGQuIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMjAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4iIHJlZj0iYTIwIiBhcmdzPSIoY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbE5vZGU6Okl0ZXJhdGVDaGlsZHJlbiAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+cHJldmlvdXM8L2VtPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotQW4gYWx0ZXJuYXRlIHdheSB0byB3YWxrIHRoZSBjaGlsZHJlbiBvZiBhIG5vZGUuIAotPHA+Ci1PbmUgd2F5IHRvIGl0ZXJhdGUgb3ZlciBub2RlcyBpczogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JCQlmb3IoIGNoaWxkID0gcGFyZW50LSZndDtGaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLSZndDtOZXh0U2libGluZygpICkKLQkJPC9wcmU+PC9kaXY+PHA+Ci1JdGVyYXRlQ2hpbGRyZW4gZG9lcyB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBzeW50YXg6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQkJY2hpbGQgPSAwOwotCQkJd2hpbGUoIGNoaWxkID0gcGFyZW50LSZndDtJdGVyYXRlQ2hpbGRyZW4oIGNoaWxkICkgKQotCQk8L3ByZT48L2Rpdj48cD4KLUl0ZXJhdGVDaGlsZHJlbiB0YWtlcyB0aGUgcHJldmlvdXMgY2hpbGQgYXMgaW5wdXQgYW5kIGZpbmRzIHRoZSBuZXh0IG9uZS4gSWYgdGhlIHByZXZpb3VzIGNoaWxkIGlzIG51bGwsIGl0IHJldHVybnMgdGhlIGZpcnN0LiBJdGVyYXRlQ2hpbGRyZW4gd2lsbCByZXR1cm4gbnVsbCB3aGVuIGRvbmUuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTI3Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TGlua0VuZENoaWxkIiByZWY9ImEyNyIgYXJncz0iKFRpWG1sTm9kZSAqYWRkVGhpcykiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIFRpWG1sTm9kZTo6TGlua0VuZENoaWxkICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5hZGRUaGlzPC9lbT4gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gCi08cD4KLUFkZHMgYSBjaGlsZCBwYXN0IHRoZSBMYXN0Q2hpbGQuPHA+Ci1OT1RFOiB0aGUgbm9kZSB0byBiZSBhZGRlZCBpcyBwYXNzZWQgYnkgcG9pbnRlciwgYW5kIHdpbGwgYmUgaGVuY2Vmb3J0aCBvd25lZCAoYW5kIGRlbGV0ZWQpIGJ5IHRpbnlYbWwuIFRoaXMgbWV0aG9kIGlzIGVmZmljaWVudCBhbmQgYXZvaWRzIGFuIGV4dHJhIGNvcHksIGJ1dCBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUgYXMgaXQgdXNlcyBhIGRpZmZlcmVudCBtZW1vcnkgbW9kZWwgdGhhbiB0aGUgb3RoZXIgaW5zZXJ0IGZ1bmN0aW9ucy48cD4KLTxkbCBjb21wYWN0PjxkdD48Yj5TZWUgYWxzbzo8L2I+PC9kdD48ZGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+PC9kZD48L2RsPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQ2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50IiByZWY9ImE0NiIgYXJncz0iKGNvbnN0IGNoYXIgKikgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyICombmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lMSIgdmFsaWduPSJ0b3AiIG5vd3JhcD4gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPiBjb25zdDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCB0aHJvdWdoIGVsZW1lbnRzLiAKLTxwPgotQ2FsbHMgTmV4dFNpYmxpbmcgYW5kIFRvRWxlbWVudC4gV2lsbCBza2lwIGFsbCBub24tRWxlbWVudCBub2Rlcy4gUmV0dXJucyAwIGlmIHRoZXJlIGlzIG5vdCBhbm90aGVyIGVsZW1lbnQuICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTQ0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50IiByZWY9ImE0NCIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuIAotPHA+Ci1DYWxscyBOZXh0U2libGluZyBhbmQgVG9FbGVtZW50LiBXaWxsIHNraXAgYWxsIG5vbi1FbGVtZW50IG5vZGVzLiBSZXR1cm5zIDAgaWYgdGhlcmUgaXMgbm90IGFub3RoZXIgZWxlbWVudC4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMzAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpSZXBsYWNlQ2hpbGQiIHJlZj0iYTMwIiBhcmdzPSIoVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBUaVhtbE5vZGU6OlJlcGxhY2VDaGlsZCAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPnJlcGxhY2VUaGlzPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPmNvbnN0IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wOyZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPndpdGhUaGlzPC9lbT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1SZXBsYWNlIGEgY2hpbGQgb2YgdGhpcyBub2RlLiAKLTxwPgotUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ldyBvYmplY3Qgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLiAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImEzIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6U2V0VmFsdWUiIHJlZj0iYTMiIGFyZ3M9Iihjb25zdCBjaGFyICpfdmFsdWUpIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+dm9pZCBUaVhtbE5vZGU6OlNldFZhbHVlICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPmNvbnN0IGNoYXIgKiZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiA8ZW0+X3ZhbHVlPC9lbT4gICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+Jm5ic3A7KSZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1DaGFuZ2VzIHRoZSB2YWx1ZSBvZiB0aGUgbm9kZS4gCi08cD4KLURlZmluZWQgYXM6IDxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CQlEb2N1bWVudDoJZmlsZW5hbWUgb2YgdGhlIHhtbCBmaWxlCi0JCUVsZW1lbnQ6CW5hbWUgb2YgdGhlIGVsZW1lbnQKLQkJQ29tbWVudDoJdGhlIGNvbW1lbnQgdGV4dAotCQlVbmtub3duOgl0aGUgdGFnIGNvbnRlbnRzCi0JCVRleHQ6CQl0aGUgdGV4dCBzdHJpbmcKLQkJPC9wcmU+PC9kaXY+ICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTU2Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6VHlwZSIgcmVmPSJhNTYiIGFyZ3M9IigpIGNvbnN0ICIgLS0+PHA+Ci08dGFibGUgY2xhc3M9Im1kVGFibGUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+Ci0gIDx0cj4KLSAgICA8dGQgY2xhc3M9Im1kUm93Ij4KLSAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnZpcnR1YWwgaW50IFRpWG1sTm9kZTo6VHlwZSAgICAgICAgICAgPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiB2YWxpZ249InRvcCI+KCZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUxIiB2YWxpZ249InRvcCIgbm93cmFwPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+IGNvbnN0PGNvZGU+IFtpbmxpbmUsIHZpcnR1YWxdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLVF1ZXJ5IHRoZSB0eXBlIChhcyBhbiBlbnVtZXJhdGVkIHZhbHVlLCBhYm92ZSkgb2YgdGhpcyBub2RlLiAKLTxwPgotVGhlIHBvc3NpYmxlIHR5cGVzIGFyZTogRE9DVU1FTlQsIEVMRU1FTlQsIENPTU1FTlQsIFVOS05PV04sIFRFWFQsIGFuZCBERUNMQVJBVElPTi4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhMSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6OlZhbHVlIiByZWY9ImExIiBhcmdzPSIoKSBjb25zdCAiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5jb25zdCBjaGFyKiBUaVhtbE5vZGU6OlZhbHVlICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotVGhlIG1lYW5pbmcgb2YgJ3ZhbHVlJyBjaGFuZ2VzIGZvciB0aGUgc3BlY2lmaWMgdHlwZSBvZiBUaVhtbE5vZGUuIAotPHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkJRG9jdW1lbnQ6CWZpbGVuYW1lIG9mIHRoZSB4bWwgZmlsZQotCQlFbGVtZW50OgluYW1lIG9mIHRoZSBlbGVtZW50Ci0JCUNvbW1lbnQ6CXRoZSBjb21tZW50IHRleHQKLQkJVW5rbm93bjoJdGhlIHRhZyBjb250ZW50cwotCQlUZXh0OgkJdGhlIHRleHQgc3RyaW5nCi0JCTwvcHJlPjwvZGl2PjxwPgotVGhlIHN1YmNsYXNzZXMgd2lsbCB3cmFwIHRoaXMgZnVuY3Rpb24uICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxOb2RlOjpWYWx1ZVN0ciIgcmVmPSJhMiIgYXJncz0iKCkgY29uc3QgIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3Qgc3RkOjpzdHJpbmcmYW1wOyBUaVhtbE5vZGU6OlZhbHVlU3RyICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+ICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPiZuYnNwOykmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD4gY29uc3Q8Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotUmV0dXJuIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWUoKTwvYT4gYXMgYSBzdGQ6OnN0cmluZy4gCi08cD4KLUlmIHlvdSBvbmx5IHVzZSBTVEwsIHRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjYWxsaW5nIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWUoKTwvYT4uIE9ubHkgYXZhaWxhYmxlIGluIFNUTCBtb2RlLiAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTxocj48aDI+RnJpZW5kcyBBbmQgUmVsYXRlZCBGdW5jdGlvbiBEb2N1bWVudGF0aW9uPC9oMj4KLTxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4zIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sTm9kZTo6b3BlcmF0b3ImbHQ7Jmx0OyIgcmVmPSJuMyIgYXJncz0iKHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSkiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5zdGQ6Om9zdHJlYW0mYW1wOyBvcGVyYXRvciZsdDsmbHQ7ICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnN0ZDo6b3N0cmVhbSAmYW1wOyZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPm91dDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIGFsaWduPSJyaWdodCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcD5jb25zdCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gJmFtcDsmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWRuYW1lIiBub3dyYXA+IDxlbT5iYXNlPC9lbT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCI+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj4pJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBjb2xzcGFuPSIyIj48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci0gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08dGFibGUgY2VsbHNwYWNpbmc9IjUiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiPgotICA8dHI+Ci0gICAgPHRkPgotICAgICAgJm5ic3A7Ci0gICAgPC90ZD4KLSAgICA8dGQ+Ci0KLTxwPgotQW4gb3V0cHV0IHN0cmVhbSBvcGVyYXRvciwgZm9yIGV2ZXJ5IGNsYXNzLiAKLTxwPgotTm90ZSB0aGF0IHRoaXMgb3V0cHV0cyB3aXRob3V0IGFueSBuZXdsaW5lcyBvciBmb3JtYXR0aW5nLCBhcyBvcHBvc2VkIHRvIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMiI+UHJpbnQoKTwvYT4sIHdoaWNoIGluY2x1ZGVzIHRhYnMgYW5kIG5ldyBsaW5lcy48cD4KLVRoZSBvcGVyYXRvciZsdDsmbHQ7IGFuZCBvcGVyYXRvciZndDsmZ3Q7IGFyZSBub3QgY29tcGxldGVseSBzeW1tZXRyaWMuIFdyaXRpbmcgYSBub2RlIHRvIGEgc3RyZWFtIGlzIHZlcnkgd2VsbCBkZWZpbmVkLiBZb3UnbGwgZ2V0IGEgbmljZSBzdHJlYW0gb2Ygb3V0cHV0LCB3aXRob3V0IGFueSBleHRyYSB3aGl0ZXNwYWNlIG9yIG5ld2xpbmVzLjxwPgotQnV0IHJlYWRpbmcgaXMgbm90IGFzIHdlbGwgZGVmaW5lZC4gKEFzIGl0IGFsd2F5cyBpcy4pIElmIHlvdSBjcmVhdGUgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gKGZvciBleGFtcGxlKSBhbmQgcmVhZCB0aGF0IGZyb20gYW4gaW5wdXQgc3RyZWFtLCB0aGUgdGV4dCBuZWVkcyB0byBkZWZpbmUgYW4gZWxlbWVudCBvciBqdW5rIHdpbGwgcmVzdWx0LiBUaGlzIGlzIHRydWUgb2YgYWxsIGlucHV0IHN0cmVhbXMsIGJ1dCBpdCdzIHdvcnRoIGtlZXBpbmcgaW4gbWluZC48cD4KLUEgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4gd2lsbCByZWFkIG5vZGVzIHVudGlsIGl0IHJlYWRzIGEgcm9vdCBlbGVtZW50LCBhbmQgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGF0IHJvb3QgZWxlbWVudC4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJuMiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbE5vZGU6Om9wZXJhdG9yJmd0OyZndDsiIHJlZj0ibjIiIGFyZ3M9IihzdGQ6OmlzdHJlYW0gJmFtcDtpbiwgVGlYbWxOb2RlICZhbXA7YmFzZSkiIC0tPjxwPgotPHRhYmxlIGNsYXNzPSJtZFRhYmxlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPgotICA8dHI+Ci0gICAgPHRkIGNsYXNzPSJtZFJvdyI+Ci0gICAgICA8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwIHZhbGlnbj0idG9wIj5zdGQ6OmlzdHJlYW0mYW1wOyBvcGVyYXRvciZndDsmZ3Q7ICAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4oJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgdmFsaWduPSJ0b3AiPnN0ZDo6aXN0cmVhbSAmYW1wOyZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmluPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXAgYWxpZ249InJpZ2h0Ij48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgbm93cmFwPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAmYW1wOyZuYnNwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZG5hbWUiIG5vd3JhcD4gPGVtPmJhc2U8L2VtPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIj48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiPikmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIGNvbHNwYW49IjIiPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTx0YWJsZSBjZWxsc3BhY2luZz0iNSIgY2VsbHBhZGRpbmc9IjAiIGJvcmRlcj0iMCI+Ci0gIDx0cj4KLSAgICA8dGQ+Ci0gICAgICAmbmJzcDsKLSAgICA8L3RkPgotICAgIDx0ZD4KLQotPHA+Ci1BbiBpbnB1dCBzdHJlYW0gb3BlcmF0b3IsIGZvciBldmVyeSBjbGFzcy4gCi08cD4KLVRvbGVyYW50IG9mIG5ld2xpbmVzIGFuZCBmb3JtYXR0aW5nLCBidXQgZG9lc24ndCBleHBlY3QgdGhlbS4gICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Ci08bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxOb2RlLnBuZyBiL2RvY3MvY2xhc3NUaVhtbE5vZGUucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTY2M2NmLi4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbE5vZGUucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVGV4dC1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxUZXh0LW1lbWJlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U5YmM0ZS4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxUZXh0LW1lbWJlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sVGV4dCBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPkNEQVRBPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IwIj5DbG9uZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW3Byb3RlY3RlZCwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTUiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPlNldENEQVRBPC9hPihib29sIF9jZGF0YSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTAiPlRpWG1sVGV4dDwvYT4oY29uc3QgY2hhciAqaW5pdFZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMiI+VGlYbWxUZXh0PC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2luaXRWYWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVGV4dC5odG1sIGIvZG9jcy9jbGFzc1RpWG1sVGV4dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmUzYWI1Li4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbFRleHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBUaVhtbFRleHQgQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Ci08aDE+VGlYbWxUZXh0IENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxUZXh0IiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPlhNTCB0ZXh0LiAgCi08YSBocmVmPSIjX2RldGFpbHMiPk1vcmUuLi48L2E+Ci08cD4KLTxjb2RlPiNpbmNsdWRlICZsdDs8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnl4bWxfOGgtc291cmNlLmh0bWwiPnRpbnl4bWwuaDwvYT4mZ3Q7PC9jb2RlPgotPHA+Ci08cD5Jbmhlcml0YW5jZSBkaWFncmFtIGZvciBUaVhtbFRleHQ6Ci08cD48Y2VudGVyPjxpbWcgc3JjPSJjbGFzc1RpWG1sVGV4dC5wbmciIHVzZW1hcD0iI1RpWG1sVGV4dF9tYXAiIGJvcmRlcj0iMCIgYWx0PSIiPjwvY2VudGVyPgotPG1hcCBuYW1lPSJUaVhtbFRleHRfbWFwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiIGFsdD0iVGlYbWxOb2RlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDU2LDczLDgwIj4KLTxhcmVhIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiIGFsdD0iVGlYbWxCYXNlIiBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsNzMsMjQiPgotPC9tYXA+Ci08YSBocmVmPSJjbGFzc1RpWG1sVGV4dC1tZW1iZXJzLmh0bWwiPkxpc3Qgb2YgYWxsIG1lbWJlcnMuPC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Ci08dHI+PHRkPjwvdGQ+PC90cj4KLTx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5QdWJsaWMgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EwIj5UaVhtbFRleHQ8L2E+IChjb25zdCBjaGFyICppbml0VmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3RvciBmb3IgdGV4dCBlbGVtZW50LiAgPGEgaHJlZj0iI2EwIj48L2E+PGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTIiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxUZXh0OjpUaVhtbFRleHQiIHJlZj0iYTIiIGFyZ3M9Iihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO2luaXRWYWx1ZSkiIC0tPgotJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhMiI+VGlYbWxUZXh0PC9hPiAoY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtpbml0VmFsdWUpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db25zdHJ1Y3Rvci4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBub3dyYXAgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTUiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxUZXh0OjpQcmludCIgcmVmPSJhNSIgYXJncz0iKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0ICIgLS0+Ci12aXJ0dWFsIHZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E1Ij5QcmludDwvYT4gKEZJTEUgKmNmaWxlLCBpbnQgZGVwdGgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+V3JpdGUgdGhpcyB0ZXh0IG9iamVjdCB0byBhIEZJTEUgc3RyZWFtLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNiI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OkNEQVRBIiByZWY9ImE2IiBhcmdzPSIoKSIgLS0+Ci1ib29sJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNiI+Q0RBVEE8L2E+ICgpPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5RdWVyaWVzIHdoZXRoZXIgdGhpcyByZXByZXNlbnRzIHRleHQgdXNpbmcgYSBDREFUQSBzZWN0aW9uLiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNyI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OlNldENEQVRBIiByZWY9ImE3IiBhcmdzPSIoYm9vbCBfY2RhdGEpIiAtLT4KLXZvaWQmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E3Ij5TZXRDREFUQTwvYT4gKGJvb2wgX2NkYXRhKTwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VHVybnMgb24gb3Igb2ZmIGEgQ0RBVEEgcmVwcmVzZW50YXRpb24gb2YgdGV4dC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5Qcm90ZWN0ZWQgTWVtYmVyIEZ1bmN0aW9uczwvaDI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJiMCI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFRleHQ6OkNsb25lIiByZWY9ImIwIiBhcmdzPSIoKSBjb25zdCAiIC0tPgotdmlydHVhbCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYjAiPkNsb25lPC9hPiAoKSBjb25zdCA8L3RkPjwvdHI+Ci0KLTx0cj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+Jm5ic3A7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPltpbnRlcm5hbCB1c2VdIENyZWF0ZXMgYSBuZXcgRWxlbWVudCBhbmQgcmV0dXJucyBpdC4gPGJyPjwvdGQ+PC90cj4KLTx0cj48dGQgY29sc3Bhbj0iMiI+PGJyPjxoMj5GcmllbmRzPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9Im4wIj48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVGV4dDo6VGlYbWxFbGVtZW50IiByZWY9Im4wIiBhcmdzPSIiIC0tPgotY2xhc3MmbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI24wIj5UaVhtbEVsZW1lbnQ8L2E+PC90ZD48L3RyPgotCi08L3RhYmxlPgotPGhyPjxhIG5hbWU9Il9kZXRhaWxzIj48L2E+PGgyPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLVhNTCB0ZXh0LiAKLTxwPgotQSB0ZXh0IG5vZGUgY2FuIGhhdmUgMiB3YXlzIHRvIG91dHB1dCB0aGUgbmV4dC4gIm5vcm1hbCIgb3V0cHV0IGFuZCBDREFUQS4gSXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBtb2RlIGl0IHdhcyBwYXJzZWQgZnJvbSB0aGUgWE1MIGZpbGUgYW5kIHlvdSBnZW5lcmFsbHkgd2FudCB0byBsZWF2ZSBpdCBhbG9uZSwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSBvdXRwdXQgbW9kZSB3aXRoIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNyI+U2V0Q0RBVEEoKTwvYT4gYW5kIHF1ZXJ5IGl0IHdpdGggPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij5DREFUQSgpPC9hPi4KLTxwPgotPGhyPjxoMj5Db25zdHJ1Y3RvciAmYW1wOyBEZXN0cnVjdG9yIERvY3VtZW50YXRpb248L2gyPgotPGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iYTAiPjwvYT48IS0tIGRveHl0YWc6IG1lbWJlcj0iVGlYbWxUZXh0OjpUaVhtbFRleHQiIHJlZj0iYTAiIGFyZ3M9Iihjb25zdCBjaGFyICppbml0VmFsdWUpIiAtLT48cD4KLTx0YWJsZSBjbGFzcz0ibWRUYWJsZSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj4KLSAgPHRyPgotICAgIDx0ZCBjbGFzcz0ibWRSb3ciPgotICAgICAgPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+VGlYbWxUZXh0OjpUaVhtbFRleHQgICAgICAgICAgIDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZCIgdmFsaWduPSJ0b3AiPigmbmJzcDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIG5vd3JhcCB2YWxpZ249InRvcCI+Y29uc3QgY2hhciAqJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kbmFtZTEiIHZhbGlnbj0idG9wIiBub3dyYXA+IDxlbT5pbml0VmFsdWU8L2VtPiAgICAgICAgICA8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWQiIHZhbGlnbj0idG9wIj4mbmJzcDspJm5ic3A7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1kIiBub3dyYXA+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICAgIDwvdGQ+Ci0gIDwvdHI+Ci08L3RhYmxlPgotPHRhYmxlIGNlbGxzcGFjaW5nPSI1IiBjZWxscGFkZGluZz0iMCIgYm9yZGVyPSIwIj4KLSAgPHRyPgotICAgIDx0ZD4KLSAgICAgICZuYnNwOwotICAgIDwvdGQ+Ci0gICAgPHRkPgotCi08cD4KLUNvbnN0cnVjdG9yIGZvciB0ZXh0IGVsZW1lbnQuIAotPHA+Ci1CeSBkZWZhdWx0LCBpdCBpcyB0cmVhdGVkIGFzIG5vcm1hbCwgZW5jb2RlZCB0ZXh0LiBJZiB5b3Ugd2FudCBpdCBiZSBvdXRwdXQgYXMgYSBDREFUQSB0ZXh0IGVsZW1lbnQsIHNldCB0aGUgcGFyYW1ldGVyIF9jZGF0YSB0byAndHJ1ZScgICAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08aHI+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3Mgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Ci08bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2NsYXNzVGlYbWxUZXh0LnBuZyBiL2RvY3MvY2xhc3NUaVhtbFRleHQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWU3MWQ0Li4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbFRleHQucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi1tZW1iZXJzLmh0bWwgYi9kb2NzL2NsYXNzVGlYbWxVbmtub3duLW1lbWJlcnMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ5NGEwNC4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxVbmtub3duLW1lbWJlcnMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBNZW1iZXIgTGlzdDwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPlRpWG1sVW5rbm93biBNZW1iZXIgTGlzdDwvaDE+VGhpcyBpcyB0aGUgY29tcGxldGUgbGlzdCBvZiBtZW1iZXJzIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4sIGluY2x1ZGluZyBhbGwgaW5oZXJpdGVkIG1lbWJlcnMuPHA+PHRhYmxlPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPkNsZWFyPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTQiPkNsb25lPC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPjwvdGQ+PHRkPjxjb2RlPiBbdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPkNvbHVtbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMCI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMSI+Rmlyc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE2Ij5GaXJzdENoaWxkPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+Rmlyc3RDaGlsZDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUyIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3QgY2hhciAqdmFsdWUpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5GaXJzdENoaWxkRWxlbWVudDwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+R2V0RG9jdW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5JbnNlcnRBZnRlckNoaWxkPC9hPihUaVhtbE5vZGUgKmFmdGVyVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjgiPkluc2VydEJlZm9yZUNoaWxkPC9hPihUaVhtbE5vZGUgKmJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSAmYW1wO2FkZFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI2Ij5JbnNlcnRFbmRDaGlsZDwvYT4oY29uc3QgVGlYbWxOb2RlICZhbXA7YWRkVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmUsIHN0YXRpY108L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IFRpWG1sTm9kZSAqcHJldmlvdXMpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMiI+SXRlcmF0ZUNoaWxkcmVuPC9hPihjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgVGlYbWxOb2RlICpwcmV2aW91cykgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBjb25zdCBUaVhtbE5vZGUgKnByZXZpb3VzKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5JdGVyYXRlQ2hpbGRyZW48L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlLCBUaVhtbE5vZGUgKnByZXZpb3VzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTMiPkxhc3RDaGlsZDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTUiPkxhc3RDaGlsZDwvYT4oY29uc3QgY2hhciAqdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5MYXN0Q2hpbGQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPkxpbmtFbmRDaGlsZDwvYT4oVGlYbWxOb2RlICphZGRUaGlzKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOCI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM5Ij5OZXh0U2libGluZzwvYT4oY29uc3Qgc3RkOjpzdHJpbmcgJmFtcDtfdmFsdWUpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+TmV4dFNpYmxpbmc8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ2Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IGNoYXIgKikgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ4Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7X3ZhbHVlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTkiPk5vQ2hpbGRyZW48L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5Ob2RlVHlwZTwvYT4gZW51bSBuYW1lPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6b3N0cmVhbSAmYW1wO291dCwgY29uc3QgVGlYbWxOb2RlICZhbXA7YmFzZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2ZyaWVuZF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjQiPm9wZXJhdG9yJmx0OyZsdDs8L2E+KHN0ZDo6c3RyaW5nICZhbXA7b3V0LCBjb25zdCBUaVhtbE5vZGUgJmFtcDtiYXNlKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbZnJpZW5kXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+b3BlcmF0b3ImZ3Q7Jmd0OzwvYT4oc3RkOjppc3RyZWFtICZhbXA7aW4sIFRpWG1sTm9kZSAmYW1wO2Jhc2UpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtmcmllbmRdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNCI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBjaGFyICopIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNiI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+UHJldmlvdXNTaWJsaW5nPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTUiPlByaW50PC9hPihGSUxFICpjZmlsZSwgaW50IGRlcHRoKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT48L3RkPjx0ZD48Y29kZT4gW3ZpcnR1YWxdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KFRpWG1sTm9kZSAqcmVtb3ZlVGhpcyk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oVGlYbWxOb2RlICpyZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlICZhbXA7d2l0aFRoaXMpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTAiPlNldENvbmRlbnNlV2hpdGVTcGFjZTwvYT4oYm9vbCBjb25kZW5zZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgc3RhdGljXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KGNvbnN0IGNoYXIgKl92YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQiPlNldFZhbHVlPC9hPihjb25zdCBzdGQ6OnN0cmluZyAmYW1wO192YWx1ZSk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VG9Db21tZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj5Ub0RlY2xhcmF0aW9uPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MCI+VG9Eb2N1bWVudDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY2Ij5Ub0RvY3VtZW50PC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIGNvbnN0IDwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPlRvRWxlbWVudDwvYT4oKTwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbaW5saW5lXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcwIj5Ub1RleHQ8L2E+KCk8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VG9Vbmtub3duPC9hPigpPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VHlwZTwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZSwgdmlydHVhbF08L2NvZGU+PC90ZD48L3RyPgotICA8dHIgY2xhc3M9Im1lbWxpc3QiPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPjwvdGQ+PHRkPjxjb2RlPiBbcHJvdGVjdGVkXTwvY29kZT48L3RkPjwvdHI+Ci0gIDx0ciBjbGFzcz0ibWVtbGlzdCI+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VmFsdWU8L2E+KCkgY29uc3QgPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+PC90ZD48dGQ+PGNvZGU+IFtpbmxpbmVdPC9jb2RlPjwvdGQ+PC90cj4KLSAgPHRyIGNsYXNzPSJtZW1saXN0Ij48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKSBjb25zdCA8L3RkPjx0ZD48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT48L3RkPjx0ZD48Y29kZT4gW2lubGluZV08L2NvZGU+PC90ZD48L3RyPgotPC90YWJsZT48aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5odG1sIGIvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjY2MWQzLi4wMDAwMDAwCi0tLSBhL2RvY3MvY2xhc3NUaVhtbFVua25vd24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBUaVhtbFVua25vd24gQ2xhc3MgUmVmZXJlbmNlPC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Ci08aDE+VGlYbWxVbmtub3duIENsYXNzIFJlZmVyZW5jZTwvaDE+PCEtLSBkb3h5dGFnOiBjbGFzcz0iVGlYbWxVbmtub3duIiAtLT48IS0tIGRveHl0YWc6IGluaGVyaXRzPSJUaVhtbE5vZGUiIC0tPkFueSB0YWcgdGhhdCB0aW55WG1sIGRvZXNuJ3QgcmVjb2duaXplIGlzIHNhdmVkIGFzIGFuIHVua25vd24uICAKLTxhIGhyZWY9IiNfZGV0YWlscyI+TW9yZS4uLjwvYT4KLTxwPgotPGNvZGU+I2luY2x1ZGUgJmx0OzxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPiZndDs8L2NvZGU+Ci08cD4KLTxwPkluaGVyaXRhbmNlIGRpYWdyYW0gZm9yIFRpWG1sVW5rbm93bjoKLTxwPjxjZW50ZXI+PGltZyBzcmM9ImNsYXNzVGlYbWxVbmtub3duLnBuZyIgdXNlbWFwPSIjVGlYbWxVbmtub3duX21hcCIgYm9yZGVyPSIwIiBhbHQ9IiI+PC9jZW50ZXI+Ci08bWFwIG5hbWU9IlRpWG1sVW5rbm93bl9tYXAiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCIgYWx0PSJUaVhtbE5vZGUiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsNTYsOTQsODAiPgotPGFyZWEgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCIgYWx0PSJUaVhtbEJhc2UiIHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCw5NCwyNCI+Ci08L21hcD4KLTxhIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLW1lbWJlcnMuaHRtbCI+TGlzdCBvZiBhbGwgbWVtYmVycy48L2E+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KLTx0cj48dGQ+PC90ZD48L3RyPgotPHRyPjx0ZCBjb2xzcGFuPSIyIj48YnI+PGgyPlB1YmxpYyBNZW1iZXIgRnVuY3Rpb25zPC9oMj48L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgbm93cmFwIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImE0Ij48L2E+PCEtLSBkb3h5dGFnOiBtZW1iZXI9IlRpWG1sVW5rbm93bjo6Q2xvbmUiIHJlZj0iYTQiIGFyZ3M9IigpIGNvbnN0ICIgLS0+Ci12aXJ0dWFsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAqJm5ic3A7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNCI+Q2xvbmU8L2E+ICgpIGNvbnN0IDwvdGQ+PC90cj4KLQotPHRyPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBVbmtub3duIGFuZCByZXR1cm5zIGl0LiA8YnI+PC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIG5vd3JhcCBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJhNSI+PC9hPjwhLS0gZG94eXRhZzogbWVtYmVyPSJUaVhtbFVua25vd246OlByaW50IiByZWY9ImE1IiBhcmdzPSIoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgIiAtLT4KLXZpcnR1YWwgdm9pZCZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTUiPlByaW50PC9hPiAoRklMRSAqY2ZpbGUsIGludCBkZXB0aCkgY29uc3QgPC90ZD48L3RyPgotCi08dHI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5QcmludCB0aGlzIFVua25vd24gdG8gYSBGSUxFIHN0cmVhbS4gPGJyPjwvdGQ+PC90cj4KLTwvdGFibGU+Ci08aHI+PGEgbmFtZT0iX2RldGFpbHMiPjwvYT48aDI+RGV0YWlsZWQgRGVzY3JpcHRpb248L2gyPgotQW55IHRhZyB0aGF0IHRpbnlYbWwgZG9lc24ndCByZWNvZ25pemUgaXMgc2F2ZWQgYXMgYW4gdW5rbm93bi4gCi08cD4KLUl0IGlzIGEgdGFnIG9mIHRleHQsIGJ1dCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiBJdCB3aWxsIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgWE1MLCB1bmNoYW5nZWQsIHdoZW4gdGhlIGZpbGUgaXMgc2F2ZWQuPHA+Ci1EVEQgdGFncyBnZXQgdGhyb3duIGludG8gVGlYbWxVbmtub3ducy4KLTxwPgotPGhyPlRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNsYXNzIHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPjwvdWw+Ci08aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9jbGFzc1RpWG1sVW5rbm93bi5wbmcgYi9kb2NzL2NsYXNzVGlYbWxVbmtub3duLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM4YmZhYi4uMDAwMDAwMAotLS0gYS9kb2NzL2NsYXNzVGlYbWxVbmtub3duLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvZG94eWdlbi5jc3MgYi9kb2NzL2RveHlnZW4uY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNhZTllLi4wMDAwMDAwCi0tLSBhL2RvY3MvZG94eWdlbi5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotQk9EWSxIMSxIMixIMyxINCxINSxINixQLENFTlRFUixURCxUSCxVTCxETCxESVYgewotCWZvbnQtZmFtaWx5OiBHZW5ldmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Ci19Ci1CT0RZLFREIHsKLSAgICAgICBmb250LXNpemU6IDkwJTsKLX0KLUgxIHsKLQl0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgICAgZm9udC1zaXplOiAxNjAlOwotfQotSDIgewotICAgICAgIGZvbnQtc2l6ZTogMTIwJTsKLX0KLUgzIHsKLSAgICAgICBmb250LXNpemU6IDEwMCU7Ci19Ci1DQVBUSU9OIHsgZm9udC13ZWlnaHQ6IGJvbGQgfQotRElWLnFpbmRleCB7Ci0Jd2lkdGg6IDEwMCU7Ci0JYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKLQlib3JkZXI6IDFweCBzb2xpZCAjYjBiMGIwOwotCXRleHQtYWxpZ246IGNlbnRlcjsKLQltYXJnaW46IDJweDsKLQlwYWRkaW5nOiAycHg7Ci0JbGluZS1oZWlnaHQ6IDE0MCU7Ci19Ci1ESVYubmF2IHsKLQl3aWR0aDogMTAwJTsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWZmOwotCWJvcmRlcjogMXB4IHNvbGlkICNiMGIwYjA7Ci0JdGV4dC1hbGlnbjogY2VudGVyOwotCW1hcmdpbjogMnB4OwotCXBhZGRpbmc6IDJweDsKLQlsaW5lLWhlaWdodDogMTQwJTsKLX0KLURJVi5uYXZ0YWIgewotICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7Ci0gICAgICAgYm9yZGVyOiAxcHggc29saWQgI2IwYjBiMDsKLSAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgICAgbWFyZ2luOiAycHg7Ci0gICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwotICAgICAgIHBhZGRpbmc6IDJweDsKLX0KLVRELm5hdnRhYiB7Ci0gICAgICAgZm9udC1zaXplOiA3MCU7Ci19Ci1BLnFpbmRleCB7Ci0gICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgICAgIGNvbG9yOiAjMUE0MTlEOwotfQotQS5xaW5kZXg6dmlzaXRlZCB7Ci0gICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgICAgIGNvbG9yOiAjMUE0MTlECi19Ci1BLnFpbmRleDpob3ZlciB7Ci0JdGV4dC1kZWNvcmF0aW9uOiBub25lOwotCWJhY2tncm91bmQtY29sb3I6ICNkZGRkZmY7Ci19Ci1BLnFpbmRleEhMIHsKLQl0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7Ci0JYmFja2dyb3VuZC1jb2xvcjogIzY2NjZjYzsKLQljb2xvcjogI2ZmZmZmZjsKLQlib3JkZXI6IDFweCBkb3VibGUgIzkyOTVDMjsKLX0KLUEucWluZGV4SEw6aG92ZXIgewotCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NmNjOwotCWNvbG9yOiAjZmZmZmZmOwotfQotQS5xaW5kZXhITDp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2NmNjOyBjb2xvcjogI2ZmZmZmZiB9Ci1BLmVsIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZCB9Ci1BLmVsUmVmIHsgZm9udC13ZWlnaHQ6IGJvbGQgfQotQS5jb2RlOmxpbmsgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMDAwMEZGfQotQS5jb2RlOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMDAwMEZGfQotQS5jb2RlUmVmOmxpbmsgeyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzAwMDBGRn0KLUEuY29kZVJlZjp2aXNpdGVkIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgY29sb3I6ICMwMDAwRkZ9Ci1BOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmZmIH0KLURMLmVsIHsgbWFyZ2luLWxlZnQ6IC0xY20gfQotLmZyYWdtZW50IHsKLSAgICAgICBmb250LWZhbWlseTogRml4ZWQsIG1vbm9zcGFjZTsKLSAgICAgICBmb250LXNpemU6IDk1JTsKLX0KLVBSRS5mcmFnbWVudCB7Ci0JYm9yZGVyOiAxcHggc29saWQgI0NDQ0NDQzsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwotCW1hcmdpbi10b3A6IDRweDsKLQltYXJnaW4tYm90dG9tOiA0cHg7Ci0JbWFyZ2luLWxlZnQ6IDJweDsKLQltYXJnaW4tcmlnaHQ6IDhweDsKLQlwYWRkaW5nLWxlZnQ6IDZweDsKLQlwYWRkaW5nLXJpZ2h0OiA2cHg7Ci0JcGFkZGluZy10b3A6IDRweDsKLQlwYWRkaW5nLWJvdHRvbTogNHB4OwotfQotRElWLmFoIHsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI2ZmZmZmZjsgbWFyZ2luLWJvdHRvbTogM3B4OyBtYXJnaW4tdG9wOiAzcHggfQotVEQubWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEZCOyBmb250LXdlaWdodDogYm9sZDsgfQotVEQubWRQcmVmaXggewotICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNEY0RkI7Ci0gICAgICAgY29sb3I6ICM2MDYwNjA7Ci0JZm9udC1zaXplOiA4MCU7Ci19Ci1URC5tZG5hbWUxIHsgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGQjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjNjAyMDIwOyB9Ci1URC5tZG5hbWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEZCOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICM2MDIwMjA7IHdpZHRoOiA2MDBweDsgfQotRElWLmdyb3VwSGVhZGVyIHsKLSAgICAgICBtYXJnaW4tbGVmdDogMTZweDsKLSAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwotICAgICAgIG1hcmdpbi1ib3R0b206IDZweDsKLSAgICAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLURJVi5ncm91cFRleHQgeyBtYXJnaW4tbGVmdDogMTZweDsgZm9udC1zdHlsZTogaXRhbGljOyBmb250LXNpemU6IDkwJSB9Ci1CT0RZIHsKLQliYWNrZ3JvdW5kOiB3aGl0ZTsKLQljb2xvcjogYmxhY2s7Ci0JbWFyZ2luLXJpZ2h0OiAyMHB4OwotCW1hcmdpbi1sZWZ0OiAyMHB4OwotfQotVEQuaW5kZXhrZXkgewotCWJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7Ci0JcGFkZGluZy1yaWdodCAgOiAxMHB4OwotCXBhZGRpbmctdG9wICAgIDogMnB4OwotCXBhZGRpbmctbGVmdCAgIDogMTBweDsKLQlwYWRkaW5nLWJvdHRvbSA6IDJweDsKLQltYXJnaW4tbGVmdCAgICA6IDBweDsKLQltYXJnaW4tcmlnaHQgICA6IDBweDsKLQltYXJnaW4tdG9wICAgICA6IDJweDsKLQltYXJnaW4tYm90dG9tICA6IDJweDsKLQlib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOwotfQotVEQuaW5kZXh2YWx1ZSB7Ci0JYmFja2dyb3VuZC1jb2xvcjogI2VlZWVmZjsKLQlmb250LXN0eWxlOiBpdGFsaWM7Ci0JcGFkZGluZy1yaWdodCAgOiAxMHB4OwotCXBhZGRpbmctdG9wICAgIDogMnB4OwotCXBhZGRpbmctbGVmdCAgIDogMTBweDsKLQlwYWRkaW5nLWJvdHRvbSA6IDJweDsKLQltYXJnaW4tbGVmdCAgICA6IDBweDsKLQltYXJnaW4tcmlnaHQgICA6IDBweDsKLQltYXJnaW4tdG9wICAgICA6IDJweDsKLQltYXJnaW4tYm90dG9tICA6IDJweDsKLQlib3JkZXI6IDFweCBzb2xpZCAjQ0NDQ0NDOwotfQotVFIubWVtbGlzdCB7Ci0gICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwOyAKLX0KLVAuZm9ybXVsYURzcCB7IHRleHQtYWxpZ246IGNlbnRlcjsgfQotSU1HLmZvcm11bGFEc3AgeyB9Ci1JTUcuZm9ybXVsYUlubCB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KLVNQQU4ua2V5d29yZCAgICAgICB7IGNvbG9yOiAjMDA4MDAwIH0KLVNQQU4ua2V5d29yZHR5cGUgICB7IGNvbG9yOiAjNjA0MDIwIH0KLVNQQU4ua2V5d29yZGZsb3cgICB7IGNvbG9yOiAjZTA4MDAwIH0KLVNQQU4uY29tbWVudCAgICAgICB7IGNvbG9yOiAjODAwMDAwIH0KLVNQQU4ucHJlcHJvY2Vzc29yICB7IGNvbG9yOiAjODA2MDIwIH0KLVNQQU4uc3RyaW5nbGl0ZXJhbCB7IGNvbG9yOiAjMDAyMDgwIH0KLVNQQU4uY2hhcmxpdGVyYWwgICB7IGNvbG9yOiAjMDA4MDgwIH0KLS5tZFRhYmxlIHsKLQlib3JkZXI6IDFweCBzb2xpZCAjODY4Njg2OwotCWJhY2tncm91bmQtY29sb3I6ICNGNEY0RkI7Ci19Ci0ubWRSb3cgewotCXBhZGRpbmc6IDhweCAxMHB4OwotfQotLm1kZXNjTGVmdCB7Ci0gICAgICAgcGFkZGluZzogMHB4IDhweCA0cHggOHB4OwotCWZvbnQtc2l6ZTogODAlOwotCWZvbnQtc3R5bGU6IGl0YWxpYzsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOwotCWJvcmRlci10b3A6IDFweCBub25lICNFMEUwRTA7Ci0JYm9yZGVyLXJpZ2h0OiAxcHggbm9uZSAjRTBFMEUwOwotCWJvcmRlci1ib3R0b206IDFweCBub25lICNFMEUwRTA7Ci0JYm9yZGVyLWxlZnQ6IDFweCBub25lICNFMEUwRTA7Ci0JbWFyZ2luOiAwcHg7Ci19Ci0ubWRlc2NSaWdodCB7Ci0gICAgICAgcGFkZGluZzogMHB4IDhweCA0cHggOHB4OwotCWZvbnQtc2l6ZTogODAlOwotCWZvbnQtc3R5bGU6IGl0YWxpYzsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOwotCWJvcmRlci10b3A6IDFweCBub25lICNFMEUwRTA7Ci0JYm9yZGVyLXJpZ2h0OiAxcHggbm9uZSAjRTBFMEUwOwotCWJvcmRlci1ib3R0b206IDFweCBub25lICNFMEUwRTA7Ci0JYm9yZGVyLWxlZnQ6IDFweCBub25lICNFMEUwRTA7Ci0JbWFyZ2luOiAwcHg7Ci19Ci0ubWVtSXRlbUxlZnQgewotCXBhZGRpbmc6IDFweCAwcHggMHB4IDhweDsKLQltYXJnaW46IDRweDsKLQlib3JkZXItdG9wLXdpZHRoOiAxcHg7Ci0JYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7Ci0JYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OwotCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7Ci0JYm9yZGVyLXRvcC1jb2xvcjogI0UwRTBFMDsKLQlib3JkZXItcmlnaHQtY29sb3I6ICNFMEUwRTA7Ci0JYm9yZGVyLWJvdHRvbS1jb2xvcjogI0UwRTBFMDsKLQlib3JkZXItbGVmdC1jb2xvcjogI0UwRTBFMDsKLQlib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsKLQlib3JkZXItcmlnaHQtc3R5bGU6IG5vbmU7Ci0JYm9yZGVyLWJvdHRvbS1zdHlsZTogbm9uZTsKLQlib3JkZXItbGVmdC1zdHlsZTogbm9uZTsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOwotCWZvbnQtc2l6ZTogODAlOwotfQotLm1lbUl0ZW1SaWdodCB7Ci0JcGFkZGluZzogMXB4IDhweCAwcHggOHB4OwotCW1hcmdpbjogNHB4OwotCWJvcmRlci10b3Atd2lkdGg6IDFweDsKLQlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKLQlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7Ci0JYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKLQlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKLQlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci10b3Atc3R5bGU6IHNvbGlkOwotCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKLQlib3JkZXItYm90dG9tLXN0eWxlOiBub25lOwotCWJvcmRlci1sZWZ0LXN0eWxlOiBub25lOwotCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7Ci0JZm9udC1zaXplOiA4MCU7Ci19Ci0ubWVtVGVtcGxJdGVtTGVmdCB7Ci0JcGFkZGluZzogMXB4IDBweCAwcHggOHB4OwotCW1hcmdpbjogNHB4OwotCWJvcmRlci10b3Atd2lkdGg6IDFweDsKLQlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKLQlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7Ci0JYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKLQlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKLQlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci10b3Atc3R5bGU6IG5vbmU7Ci0JYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOwotCWJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7Ci0JYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7Ci0JYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKLQlmb250LXNpemU6IDgwJTsKLX0KLS5tZW1UZW1wbEl0ZW1SaWdodCB7Ci0JcGFkZGluZzogMXB4IDhweCAwcHggOHB4OwotCW1hcmdpbjogNHB4OwotCWJvcmRlci10b3Atd2lkdGg6IDFweDsKLQlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKLQlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7Ci0JYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKLQlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKLQlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci10b3Atc3R5bGU6IG5vbmU7Ci0JYm9yZGVyLXJpZ2h0LXN0eWxlOiBub25lOwotCWJvcmRlci1ib3R0b20tc3R5bGU6IG5vbmU7Ci0JYm9yZGVyLWxlZnQtc3R5bGU6IG5vbmU7Ci0JYmFja2dyb3VuZC1jb2xvcjogI0ZBRkFGQTsKLQlmb250LXNpemU6IDgwJTsKLX0KLS5tZW1UZW1wbFBhcmFtcyB7Ci0JcGFkZGluZzogMXB4IDBweCAwcHggOHB4OwotCW1hcmdpbjogNHB4OwotCWJvcmRlci10b3Atd2lkdGg6IDFweDsKLQlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKLQlib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7Ci0JYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsKLQlib3JkZXItdG9wLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1yaWdodC1jb2xvcjogI0UwRTBFMDsKLQlib3JkZXItYm90dG9tLWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci1sZWZ0LWNvbG9yOiAjRTBFMEUwOwotCWJvcmRlci10b3Atc3R5bGU6IHNvbGlkOwotCWJvcmRlci1yaWdodC1zdHlsZTogbm9uZTsKLQlib3JkZXItYm90dG9tLXN0eWxlOiBub25lOwotCWJvcmRlci1sZWZ0LXN0eWxlOiBub25lOwotICAgICAgIGNvbG9yOiAjNjA2MDYwOwotCWJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7Ci0JZm9udC1zaXplOiA4MCU7Ci19Ci0uc2VhcmNoICAgICB7IGNvbG9yOiAjMDAzMzk5OwotICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKLX0KLUZPUk0uc2VhcmNoIHsKLSAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OwotICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwcHg7Ci19Ci1JTlBVVC5zZWFyY2ggeyBmb250LXNpemU6IDc1JTsKLSAgICAgICAgICAgICAgIGNvbG9yOiAjMDAwMDgwOwotICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZmY7Ci19Ci1URC50aW55ICAgICAgeyBmb250LXNpemU6IDc1JTsKLX0KLWEgewotCWNvbG9yOiAjMjUyRTc4OwotfQotYTp2aXNpdGVkIHsKLQljb2xvcjogIzNEMjE4NTsKLX0KLS5kaXJ0YWIgeyBwYWRkaW5nOiA0cHg7Ci0gICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLSAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYjBiMGIwOwotfQotVEguZGlydGFiIHsgYmFja2dyb3VuZDogI2VlZWVmZjsKLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotSFIgeyBoZWlnaHQ6IDFweDsKLSAgICAgYm9yZGVyOiBub25lOwotICAgICBib3JkZXItdG9wOiAxcHggc29saWQgYmxhY2s7Ci19CmRpZmYgLS1naXQgYS9kb2NzL2RveHlnZW4ucG5nIGIvZG9jcy9kb3h5Z2VuLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBhMjc0Yi4uMDAwMDAwMAotLS0gYS9kb2NzL2RveHlnZW4ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jcy9maWxlcy5odG1sIGIvZG9jcy9maWxlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODQ4YTFkLi4wMDAwMDAwCi0tLSBhL2RvY3MvZmlsZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBGaWxlIEluZGV4PC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaW55WG1sIEZpbGUgTGlzdDwvaDE+SGVyZSBpcyBhIGxpc3Qgb2YgYWxsIGRvY3VtZW50ZWQgZmlsZXMgd2l0aCBicmllZiBkZXNjcmlwdGlvbnM6PHRhYmxlPgotICA8dHI+PHRkIGNsYXNzPSJpbmRleGtleSI+PGI+dGlueXN0ci5oPC9iPiA8YSBocmVmPSJ0aW55c3RyXzhoLXNvdXJjZS5odG1sIj5bY29kZV08L2E+PC90ZD48dGQgY2xhc3M9ImluZGV4dmFsdWUiPjwvdGQ+PC90cj4KLSAgPHRyPjx0ZCBjbGFzcz0iaW5kZXhrZXkiPjxiPnRpbnl4bWwuaDwvYj4gPGEgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+W2NvZGVdPC9hPjwvdGQ+PHRkIGNsYXNzPSJpbmRleHZhbHVlIj48L3RkPjwvdHI+Ci08L3RhYmxlPgotPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvZnVuY3Rpb25zLmh0bWwgYi9kb2NzL2Z1bmN0aW9ucy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Mjc0MWYwLi4wMDAwMDAwCi0tLSBhL2RvY3MvZnVuY3Rpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnM8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5BbGw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX2Z1bmMuaHRtbCI+RnVuY3Rpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc192YXJzLmh0bWwiPlZhcmlhYmxlczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3JlbGEuaHRtbCI+UmVsYXRlZCZuYnNwO0Z1bmN0aW9uczwvYT48L2Rpdj4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2EiPmE8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2MiPmM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2QiPmQ8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2UiPmU8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2YiPmY8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2ciPmc8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2kiPmk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X2wiPmw8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X24iPm48L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X28iPm88L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3AiPnA8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3EiPnE8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3IiPnI8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3MiPnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3QiPnQ8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3UiPnU8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2luZGV4X3YiPnY8L2E+PC9kaXY+Ci0KLTxwPgotSGVyZSBpcyBhIGxpc3Qgb2YgYWxsIGRvY3VtZW50ZWQgY2xhc3MgbWVtYmVycyB3aXRoIGxpbmtzIHRvIHRoZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBlYWNoIG1lbWJlcjoKLTxwPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2EiPi0gYSAtPC9hPjwvaDM+PHVsPgotPGxpPkF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNyI+VGlYbWxFbGVtZW50PC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfYyI+LSBjIC08L2E+PC9oMz48dWw+Ci08bGk+Q0RBVEEoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPlRpWG1sVGV4dDwvYT48bGk+Q2hpbGQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOCI+VGlYbWxIYW5kbGU8L2E+PGxpPkNoaWxkRWxlbWVudCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExMCI+VGlYbWxIYW5kbGU8L2E+PGxpPkNsZWFyKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5UaVhtbE5vZGU8L2E+PGxpPkNsZWFyRXJyb3IoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+VGlYbWxEb2N1bWVudDwvYT48bGk+Q2xvbmUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2IxIj5UaVhtbERvY3VtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E0Ij5UaVhtbFVua25vd248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2E5Ij5UaVhtbERlY2xhcmF0aW9uPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IwIj5UaVhtbFRleHQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPlRpWG1sQ29tbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjgiPlRpWG1sRWxlbWVudDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzIiPlRpWG1sTm9kZTwvYT48bGk+Q29sdW1uKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5UaVhtbEJhc2U8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9kIj4tIGQgLTwvYT48L2gzPjx1bD4KLTxsaT5Eb3VibGVWYWx1ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E2Ij5UaVhtbEF0dHJpYnV0ZTwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2UiPi0gZSAtPC9hPjwvaDM+PHVsPgotPGxpPkVsZW1lbnQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTYiPlRpWG1sSGFuZGxlPC9hPjxsaT5FbmNvZGluZygpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTciPlRpWG1sRGVjbGFyYXRpb248L2E+PGxpPkVycm9yKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTUiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yQ29sKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yRGVzYygpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE2Ij5UaVhtbERvY3VtZW50PC9hPjxsaT5FcnJvcklkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTciPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9yUm93KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTgiPlRpWG1sRG9jdW1lbnQ8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9mIj4tIGYgLTwvYT48L2gzPjx1bD4KLTxsaT5GaXJzdEF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjMiPlRpWG1sRWxlbWVudDwvYT48bGk+Rmlyc3RDaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E0Ij5UaVhtbEhhbmRsZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPlRpWG1sTm9kZTwvYT48bGk+Rmlyc3RDaGlsZEVsZW1lbnQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNiI+VGlYbWxIYW5kbGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU1Ij5UaVhtbE5vZGU8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9nIj4tIGcgLTwvYT48L2gzPjx1bD4KLTxsaT5HZXREb2N1bWVudCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPlRpWG1sTm9kZTwvYT48bGk+R2V0VGV4dCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjciPlRpWG1sRWxlbWVudDwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2kiPi0gaSAtPC9hPjwvaDM+PHVsPgotPGxpPkluc2VydEFmdGVyQ2hpbGQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI5Ij5UaVhtbE5vZGU8L2E+PGxpPkluc2VydEJlZm9yZUNoaWxkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+VGlYbWxOb2RlPC9hPjxsaT5JbnNlcnRFbmRDaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjYiPlRpWG1sTm9kZTwvYT48bGk+SW50VmFsdWUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPklzV2hpdGVTcGFjZUNvbmRlbnNlZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMSI+VGlYbWxCYXNlPC9hPjxsaT5JdGVyYXRlQ2hpbGRyZW4oKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI1Ij5UaVhtbE5vZGU8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9sIj4tIGwgLTwvYT48L2gzPjx1bD4KLTxsaT5MYXN0QXR0cmlidXRlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNSI+VGlYbWxFbGVtZW50PC9hPjxsaT5MYXN0Q2hpbGQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij5UaVhtbE5vZGU8L2E+PGxpPkxpbmtFbmRDaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjciPlRpWG1sTm9kZTwvYT48bGk+TG9hZEZpbGUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMCI+VGlYbWxEb2N1bWVudDwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X24iPi0gbiAtPC9hPjwvaDM+PHVsPgotPGxpPk5hbWUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMyI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPk5leHQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTUiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5OZXh0U2libGluZygpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDIiPlRpWG1sTm9kZTwvYT48bGk+TmV4dFNpYmxpbmdFbGVtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OSI+VGlYbWxOb2RlPC9hPjxsaT5Ob0NoaWxkcmVuKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1OSI+VGlYbWxOb2RlPC9hPjxsaT5Ob2RlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTE1Ij5UaVhtbEhhbmRsZTwvYT48bGk+Tm9kZVR5cGUKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5UaVhtbE5vZGU8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9vIj4tIG8gLTwvYT48L2gzPjx1bD4KLTxsaT5vcGVyYXRvciZsdDsmbHQ7Ci06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuNCI+VGlYbWxOb2RlPC9hPjxsaT5vcGVyYXRvciZndDsmZ3Q7Ci06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNuMiI+VGlYbWxOb2RlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfcCI+LSBwIC08L2E+PC9oMz48dWw+Ci08bGk+UGFyZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5UaVhtbE5vZGU8L2E+PGxpPlBhcnNlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlByZXZpb3VzKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+UHJldmlvdXNTaWJsaW5nKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+VGlYbWxOb2RlPC9hPjxsaT5QcmludCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTI0Ij5UaVhtbERvY3VtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E1Ij5UaVhtbFVua25vd248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNSI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5UaVhtbENvbW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI5Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlRpWG1sQXR0cmlidXRlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5UaVhtbEJhc2U8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9xIj4tIHEgLTwvYT48L2gzPjx1bD4KLTxsaT5RdWVyeURvdWJsZUF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeURvdWJsZVZhbHVlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTgiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5RdWVyeUZsb2F0QXR0cmlidXRlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMCI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeUludEF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeUludFZhbHVlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlRpWG1sQXR0cmlidXRlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfciI+LSByIC08L2E+PC9oMz48dWw+Ci08bGk+UmVtb3ZlQXR0cmlidXRlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMiI+VGlYbWxFbGVtZW50PC9hPjxsaT5SZW1vdmVDaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlRpWG1sTm9kZTwvYT48bGk+UmVwbGFjZUNoaWxkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+VGlYbWxOb2RlPC9hPjxsaT5Sb290RWxlbWVudCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj5UaVhtbERvY3VtZW50PC9hPjxsaT5Sb3coKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlRpWG1sQmFzZTwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3MiPi0gcyAtPC9hPjwvaDM+PHVsPgotPGxpPlNhdmVGaWxlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTEiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlNldEF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTkiPlRpWG1sRWxlbWVudDwvYT48bGk+U2V0Q0RBVEEoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPlRpWG1sVGV4dDwvYT48bGk+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5UaVhtbEJhc2U8L2E+PGxpPlNldERvdWJsZUF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjAiPlRpWG1sRWxlbWVudDwvYT48bGk+U2V0RG91YmxlVmFsdWUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTIiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXRJbnRWYWx1ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMSI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlNldE5hbWUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTMiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXRUYWJTaXplKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlNldFZhbHVlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE0Ij5UaVhtbEF0dHJpYnV0ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+VGlYbWxOb2RlPC9hPjxsaT5TdGFuZGFsb25lKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3QiPi0gdCAtPC9hPjwvaDM+PHVsPgotPGxpPlRleHQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTciPlRpWG1sSGFuZGxlPC9hPjxsaT5UaVhtbEF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+VGlYbWxDb21tZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+PGxpPlRpWG1sRGVjbGFyYXRpb24oKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EyIj5UaVhtbERlY2xhcmF0aW9uPC9hPjxsaT5UaVhtbERvY3VtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMiI+VGlYbWxEb2N1bWVudDwvYT48bGk+VGlYbWxFbGVtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPlRpWG1sSGFuZGxlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEiPlRpWG1sSGFuZGxlPC9hPjxsaT5UaVhtbFRleHQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTIiPlRpWG1sVGV4dDwvYT48bGk+VG9Db21tZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VGlYbWxOb2RlPC9hPjxsaT5Ub0RlY2xhcmF0aW9uKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VGlYbWxOb2RlPC9hPjxsaT5Ub0RvY3VtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VGlYbWxOb2RlPC9hPjxsaT5Ub0VsZW1lbnQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5UaVhtbE5vZGU8L2E+PGxpPlRvVGV4dCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRpWG1sTm9kZTwvYT48bGk+VG9Vbmtub3duKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VGlYbWxOb2RlPC9hPjxsaT5UeXBlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VGlYbWxOb2RlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfdSI+LSB1IC08L2E+PC9oMz48dWw+Ci08bGk+VW5rbm93bigpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExOCI+VGlYbWxIYW5kbGU8L2E+PGxpPnVzZXJEYXRhCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+VGlYbWxCYXNlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfdiI+LSB2IC08L2E+PC9oMz48dWw+Ci08bGk+VmFsdWUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNCI+VGlYbWxBdHRyaWJ1dGU8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlRpWG1sTm9kZTwvYT48bGk+VmFsdWVTdHIoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPlRpWG1sTm9kZTwvYT48bGk+VmVyc2lvbigpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTYiPlRpWG1sRGVjbGFyYXRpb248L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9uc19lbnVtLmh0bWwgYi9kb2NzL2Z1bmN0aW9uc19lbnVtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZWU5MzkuLjAwMDAwMDAKLS0tIGEvZG9jcy9mdW5jdGlvbnNfZW51bS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnMgLSBFbnVtZXJhdGlvbnM8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+QWxsPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19mdW5jLmh0bWwiPkZ1bmN0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfdmFycy5odG1sIj5WYXJpYWJsZXM8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3JlbGEuaHRtbCI+UmVsYXRlZCZuYnNwO0Z1bmN0aW9uczwvYT48L2Rpdj4KLQotPHA+Ci08dWw+Ci08bGk+Tm9kZVR5cGUKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij5UaVhtbE5vZGU8L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9uc19mdW5jLmh0bWwgYi9kb2NzL2Z1bmN0aW9uc19mdW5jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhN2ZiMGQuLjAwMDAwMDAKLS0tIGEvZG9jcy9mdW5jdGlvbnNfZnVuYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiBDbGFzcyBNZW1iZXJzIC0gRnVuY3Rpb25zPC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkFsbDwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9uc19mdW5jLmh0bWwiPkZ1bmN0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfdmFycy5odG1sIj5WYXJpYWJsZXM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX2VudW0uaHRtbCI+RW51bWVyYXRpb25zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19yZWxhLmh0bWwiPlJlbGF0ZWQmbmJzcDtGdW5jdGlvbnM8L2E+PC9kaXY+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9hIj5hPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9jIj5jPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9kIj5kPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9lIj5lPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9mIj5mPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9nIj5nPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9pIj5pPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9sIj5sPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9uIj5uPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9wIj5wPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9xIj5xPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9yIj5yPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF9zIj5zPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF90Ij50PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF91Ij51PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9IiNpbmRleF92Ij52PC9hPjwvZGl2PgotCi08cD4KLQotPHA+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfYSI+LSBhIC08L2E+PC9oMz48dWw+Ci08bGk+QXR0cmlidXRlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E3Ij5UaVhtbEVsZW1lbnQ8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9jIj4tIGMgLTwvYT48L2gzPjx1bD4KLTxsaT5DREFUQSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNiI+VGlYbWxUZXh0PC9hPjxsaT5DaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E4Ij5UaVhtbEhhbmRsZTwvYT48bGk+Q2hpbGRFbGVtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEwIj5UaVhtbEhhbmRsZTwvYT48bGk+Q2xlYXIoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUiPlRpWG1sTm9kZTwvYT48bGk+Q2xlYXJFcnJvcigpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIyIj5UaVhtbERvY3VtZW50PC9hPjxsaT5DbG9uZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYjEiPlRpWG1sRG9jdW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwjYTQiPlRpWG1sVW5rbm93bjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTkiPlRpWG1sRGVjbGFyYXRpb248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYjAiPlRpWG1sVGV4dDwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhNCI+VGlYbWxDb21tZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOCI+VGlYbWxFbGVtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MiI+VGlYbWxOb2RlPC9hPjxsaT5Db2x1bW4oKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPlRpWG1sQmFzZTwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2QiPi0gZCAtPC9hPjwvaDM+PHVsPgotPGxpPkRvdWJsZVZhbHVlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTYiPlRpWG1sQXR0cmlidXRlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfZSI+LSBlIC08L2E+PC9oMz48dWw+Ci08bGk+RWxlbWVudCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNiI+VGlYbWxIYW5kbGU8L2E+PGxpPkVuY29kaW5nKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNyI+VGlYbWxEZWNsYXJhdGlvbjwvYT48bGk+RXJyb3IoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNSI+VGlYbWxEb2N1bWVudDwvYT48bGk+RXJyb3JDb2woKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOSI+VGlYbWxEb2N1bWVudDwvYT48bGk+RXJyb3JEZXNjKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPkVycm9ySWQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNyI+VGlYbWxEb2N1bWVudDwvYT48bGk+RXJyb3JSb3coKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+VGlYbWxEb2N1bWVudDwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2YiPi0gZiAtPC9hPjwvaDM+PHVsPgotPGxpPkZpcnN0QXR0cmlidXRlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMyI+VGlYbWxFbGVtZW50PC9hPjxsaT5GaXJzdENoaWxkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTQiPlRpWG1sSGFuZGxlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExNyI+VGlYbWxOb2RlPC9hPjxsaT5GaXJzdENoaWxkRWxlbWVudCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E2Ij5UaVhtbEhhbmRsZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTUiPlRpWG1sTm9kZTwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2ciPi0gZyAtPC9hPjwvaDM+PHVsPgotPGxpPkdldERvY3VtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NyI+VGlYbWxOb2RlPC9hPjxsaT5HZXRUZXh0KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyNyI+VGlYbWxFbGVtZW50PC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfaSI+LSBpIC08L2E+PC9oMz48dWw+Ci08bGk+SW5zZXJ0QWZ0ZXJDaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjkiPlRpWG1sTm9kZTwvYT48bGk+SW5zZXJ0QmVmb3JlQ2hpbGQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI4Ij5UaVhtbE5vZGU8L2E+PGxpPkluc2VydEVuZENoaWxkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+VGlYbWxOb2RlPC9hPjxsaT5JbnRWYWx1ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E1Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+SXNXaGl0ZVNwYWNlQ29uZGVuc2VkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj5UaVhtbEJhc2U8L2E+PGxpPkl0ZXJhdGVDaGlsZHJlbigpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPlRpWG1sTm9kZTwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X2wiPi0gbCAtPC9hPjwvaDM+PHVsPgotPGxpPkxhc3RBdHRyaWJ1dGUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI1Ij5UaVhtbEVsZW1lbnQ8L2E+PGxpPkxhc3RDaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTkiPlRpWG1sTm9kZTwvYT48bGk+TGlua0VuZENoaWxkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNyI+VGlYbWxOb2RlPC9hPjxsaT5Mb2FkRmlsZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEwIj5UaVhtbERvY3VtZW50PC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfbiI+LSBuIC08L2E+PC9oMz48dWw+Ci08bGk+TmFtZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EzIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+TmV4dCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNSI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPk5leHRTaWJsaW5nKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MiI+VGlYbWxOb2RlPC9hPjxsaT5OZXh0U2libGluZ0VsZW1lbnQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ5Ij5UaVhtbE5vZGU8L2E+PGxpPk5vQ2hpbGRyZW4oKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5UaVhtbE5vZGU8L2E+PGxpPk5vZGUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTUiPlRpWG1sSGFuZGxlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfcCI+LSBwIC08L2E+PC9oMz48dWw+Ci08bGk+UGFyZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5UaVhtbE5vZGU8L2E+PGxpPlBhcnNlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlByZXZpb3VzKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE3Ij5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+UHJldmlvdXNTaWJsaW5nKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzNyI+VGlYbWxOb2RlPC9hPjxsaT5QcmludCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTI0Ij5UaVhtbERvY3VtZW50PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2E1Ij5UaVhtbFVua25vd248L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNSI+VGlYbWxUZXh0PC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2E1Ij5UaVhtbENvbW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI5Ij5UaVhtbEVsZW1lbnQ8L2E+LCA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlRpWG1sQXR0cmlidXRlPC9hPiwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2EyIj5UaVhtbEJhc2U8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF9xIj4tIHEgLTwvYT48L2gzPjx1bD4KLTxsaT5RdWVyeURvdWJsZUF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeURvdWJsZVZhbHVlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTgiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5RdWVyeUZsb2F0QXR0cmlidXRlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMCI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeUludEF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+VGlYbWxFbGVtZW50PC9hPjxsaT5RdWVyeUludFZhbHVlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTciPlRpWG1sQXR0cmlidXRlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfciI+LSByIC08L2E+PC9oMz48dWw+Ci08bGk+UmVtb3ZlQXR0cmlidXRlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyMiI+VGlYbWxFbGVtZW50PC9hPjxsaT5SZW1vdmVDaGlsZCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzEiPlRpWG1sTm9kZTwvYT48bGk+UmVwbGFjZUNoaWxkKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMCI+VGlYbWxOb2RlPC9hPjxsaT5Sb290RWxlbWVudCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj5UaVhtbERvY3VtZW50PC9hPjxsaT5Sb3coKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlRpWG1sQmFzZTwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3MiPi0gcyAtPC9hPjwvaDM+PHVsPgotPGxpPlNhdmVGaWxlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTEiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlNldEF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTkiPlRpWG1sRWxlbWVudDwvYT48bGk+U2V0Q0RBVEEoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPlRpWG1sVGV4dDwvYT48bGk+U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5UaVhtbEJhc2U8L2E+PGxpPlNldERvdWJsZUF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjAiPlRpWG1sRWxlbWVudDwvYT48bGk+U2V0RG91YmxlVmFsdWUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTIiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXRJbnRWYWx1ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMSI+VGlYbWxBdHRyaWJ1dGU8L2E+PGxpPlNldE5hbWUoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTMiPlRpWG1sQXR0cmlidXRlPC9hPjxsaT5TZXRUYWJTaXplKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlRpWG1sRG9jdW1lbnQ8L2E+PGxpPlNldFZhbHVlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE0Ij5UaVhtbEF0dHJpYnV0ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNCI+VGlYbWxOb2RlPC9hPjxsaT5TdGFuZGFsb25lKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3VsPgotPGgzPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9ImluZGV4X3QiPi0gdCAtPC9hPjwvaDM+PHVsPgotPGxpPlRleHQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTciPlRpWG1sSGFuZGxlPC9hPjxsaT5UaVhtbEF0dHJpYnV0ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EyIj5UaVhtbEF0dHJpYnV0ZTwvYT48bGk+VGlYbWxDb21tZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sI2EwIj5UaVhtbENvbW1lbnQ8L2E+PGxpPlRpWG1sRGVjbGFyYXRpb24oKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EyIj5UaVhtbERlY2xhcmF0aW9uPC9hPjxsaT5UaVhtbERvY3VtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMiI+VGlYbWxEb2N1bWVudDwvYT48bGk+VGlYbWxFbGVtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExIj5UaVhtbEVsZW1lbnQ8L2E+PGxpPlRpWG1sSGFuZGxlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTEiPlRpWG1sSGFuZGxlPC9hPjxsaT5UaVhtbFRleHQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTIiPlRpWG1sVGV4dDwvYT48bGk+VG9Db21tZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OCI+VGlYbWxOb2RlPC9hPjxsaT5Ub0RlY2xhcmF0aW9uKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E3MSI+VGlYbWxOb2RlPC9hPjxsaT5Ub0RvY3VtZW50KCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NiI+VGlYbWxOb2RlPC9hPjxsaT5Ub0VsZW1lbnQoKQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY3Ij5UaVhtbE5vZGU8L2E+PGxpPlRvVGV4dCgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPlRpWG1sTm9kZTwvYT48bGk+VG9Vbmtub3duKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+VGlYbWxOb2RlPC9hPjxsaT5UeXBlKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NiI+VGlYbWxOb2RlPC9hPjwvdWw+Ci08aDM+PGEgY2xhc3M9ImFuY2hvciIgbmFtZT0iaW5kZXhfdSI+LSB1IC08L2E+PC9oMz48dWw+Ci08bGk+VW5rbm93bigpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExOCI+VGlYbWxIYW5kbGU8L2E+PC91bD4KLTxoMz48YSBjbGFzcz0iYW5jaG9yIiBuYW1lPSJpbmRleF92Ij4tIHYgLTwvYT48L2gzPjx1bD4KLTxsaT5WYWx1ZSgpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E0Ij5UaVhtbEF0dHJpYnV0ZTwvYT4sIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMSI+VGlYbWxOb2RlPC9hPjxsaT5WYWx1ZVN0cigpCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMiI+VGlYbWxOb2RlPC9hPjxsaT5WZXJzaW9uKCkKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNiI+VGlYbWxEZWNsYXJhdGlvbjwvYT48L3VsPgotPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvZnVuY3Rpb25zX3JlbGEuaHRtbCBiL2RvY3MvZnVuY3Rpb25zX3JlbGEuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgzODE2Zi4uMDAwMDAwMAotLS0gYS9kb2NzL2Z1bmN0aW9uc19yZWxhLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+VGlueVhtbDogQ2xhc3MgTWVtYmVycyAtIFJlbGF0ZWQgRnVuY3Rpb25zPC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImluZGV4Lmh0bWwiPk1haW4mbmJzcDtQYWdlPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkFsbDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZnVuYy5odG1sIj5GdW5jdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3ZhcnMuaHRtbCI+VmFyaWFibGVzPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19lbnVtLmh0bWwiPkVudW1lcmF0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9uc19yZWxhLmh0bWwiPlJlbGF0ZWQmbmJzcDtGdW5jdGlvbnM8L2E+PC9kaXY+Ci0KLTxwPgotPHVsPgotPGxpPm9wZXJhdG9yJmx0OyZsdDsKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI240Ij5UaVhtbE5vZGU8L2E+PGxpPm9wZXJhdG9yJmd0OyZndDsKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24yIj5UaVhtbE5vZGU8L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2Z1bmN0aW9uc192YXJzLmh0bWwgYi9kb2NzL2Z1bmN0aW9uc192YXJzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkM2IwMzcuLjAwMDAwMDAKLS0tIGEvZG9jcy9mdW5jdGlvbnNfdmFycy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IENsYXNzIE1lbWJlcnMgLSBWYXJpYWJsZXM8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleEhMIiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+QWxsPC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9uc19mdW5jLmh0bWwiPkZ1bmN0aW9uczwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImZ1bmN0aW9uc192YXJzLmh0bWwiPlZhcmlhYmxlczwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnNfZW51bS5odG1sIj5FbnVtZXJhdGlvbnM8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zX3JlbGEuaHRtbCI+UmVsYXRlZCZuYnNwO0Z1bmN0aW9uczwvYT48L2Rpdj4KLQotPHA+Ci08dWw+Ci08bGk+dXNlckRhdGEKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI3AxIj5UaVhtbEJhc2U8L2E+PC91bD4KLTxociBzaXplPSIxIj48YWRkcmVzcyBzdHlsZT0iYWxpZ246IHJpZ2h0OyI+PHNtYWxsPkdlbmVyYXRlZCBvbiBTYXQgT2N0IDggMTQ6MTU6MzAgMjAwNSBmb3IgVGlueVhtbCBieSZuYnNwOwotPGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIiBhbGlnbj0ibWlkZGxlIiBib3JkZXI9IjAiPjwvYT4gMS40LjQgPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2NzL2hpZXJhcmNoeS5odG1sIGIvZG9jcy9oaWVyYXJjaHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwNGNmMi4uMDAwMDAwMAotLS0gYS9kb2NzL2hpZXJhcmNoeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IEhpZXJhcmNoaWNhbCBJbmRleDwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4SEwiIGhyZWY9ImhpZXJhcmNoeS5odG1sIj5DbGFzcyZuYnNwO0hpZXJhcmNoeTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+Q2xhc3MmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZpbGVzLmh0bWwiPkZpbGUmbmJzcDtMaXN0PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj5DbGFzcyZuYnNwO01lbWJlcnM8L2E+PC9kaXY+Ci08aDE+VGlueVhtbCBDbGFzcyBIaWVyYXJjaHk8L2gxPlRoaXMgaW5oZXJpdGFuY2UgbGlzdCBpcyBzb3J0ZWQgcm91Z2hseSwgYnV0IG5vdCBjb21wbGV0ZWx5LCBhbHBoYWJldGljYWxseTo8dWw+Ci08bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+Ci08dWw+Ci08bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPgotPHVsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+Ci08bGk+PGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4KLTxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4KLTxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4KLTxsaT48YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxVbmtub3duLmh0bWwiPlRpWG1sVW5rbm93bjwvYT4KLTwvdWw+Ci08L3VsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4KLTwvdWw+Ci08aHIgc2l6ZT0iMSI+PGFkZHJlc3Mgc3R5bGU9ImFsaWduOiByaWdodDsiPjxzbWFsbD5HZW5lcmF0ZWQgb24gU2F0IE9jdCA4IDE0OjE1OjMwIDIwMDUgZm9yIFRpbnlYbWwgYnkmbmJzcDsKLTxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIgYWxpZ249Im1pZGRsZSIgYm9yZGVyPSIwIj48L2E+IDEuNC40IDwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jcy9pbmRleC5odG1sIGIvZG9jcy9pbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTgxOGM2Li4wMDAwMDAwCi0tLSBhL2RvY3MvaW5kZXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzOSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+VGlueVhtbDogTWFpbiBQYWdlPC90aXRsZT4KLTxsaW5rIGhyZWY9ImRveHlnZW4uY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD48Ym9keT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS40LjQgLS0+Ci08ZGl2IGNsYXNzPSJxaW5kZXgiPjxhIGNsYXNzPSJxaW5kZXhITCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT5UaW55WG1sIERvY3VtZW50YXRpb248L2gxPgotPHA+Ci08aDMgYWxpZ249ImNlbnRlciI+Mi40LjAgPC9oMz48aDE+VGlueVhtbCA8L2gxPgotPHA+Ci1UaW55WG1sIGlzIGEgc2ltcGxlLCBzbWFsbCwgQysrIFhNTCBwYXJzZXIgdGhhdCBjYW4gYmUgZWFzaWx5IGludGVncmF0aW5nIGludG8gb3RoZXIgcHJvZ3JhbXMuPHA+Ci08aDI+V2hhdCBpdCBkb2VzLiA8L2gyPgotPHA+Ci1JbiBicmllZiwgVGlueVhtbCBwYXJzZXMgYW4gWE1MIGRvY3VtZW50LCBhbmQgYnVpbGRzIGZyb20gdGhhdCBhIERvY3VtZW50IE9iamVjdCBNb2RlbCAoRE9NKSB0aGF0IGNhbiBiZSByZWFkLCBtb2RpZmllZCwgYW5kIHNhdmVkLjxwPgotWE1MIHN0YW5kcyBmb3IgImVYdGVuc2libGUgTWFya3VwIExhbmd1YWdlLiIgSXQgYWxsb3dzIHlvdSB0byBjcmVhdGUgeW91ciBvd24gZG9jdW1lbnQgbWFya3Vwcy4gV2hlcmUgSFRNTCBkb2VzIGEgdmVyeSBnb29kIGpvYiBvZiBtYXJraW5nIGRvY3VtZW50cyBmb3IgYnJvd3NlcnMsIFhNTCBhbGxvd3MgeW91IHRvIGRlZmluZSBhbnkga2luZCBvZiBkb2N1bWVudCBtYXJrdXAsIGZvciBleGFtcGxlIGEgZG9jdW1lbnQgdGhhdCBkZXNjcmliZXMgYSAidG8gZG8iIGxpc3QgZm9yIGFuIG9yZ2FuaXplciBhcHBsaWNhdGlvbi4gWE1MIGlzIGEgdmVyeSBzdHJ1Y3R1cmVkIGFuZCBjb252ZW5pZW50IGZvcm1hdC4gQWxsIHRob3NlIHJhbmRvbSBmaWxlIGZvcm1hdHMgY3JlYXRlZCB0byBzdG9yZSBhcHBsaWNhdGlvbiBkYXRhIGNhbiBhbGwgYmUgcmVwbGFjZWQgd2l0aCBYTUwuIE9uZSBwYXJzZXIgZm9yIGV2ZXJ5dGhpbmcuPHA+Ci1UaGUgYmVzdCBwbGFjZSBmb3IgdGhlIGNvbXBsZXRlLCBjb3JyZWN0LCBhbmQgcXVpdGUgZnJhbmtseSBoYXJkIHRvIHJlYWQgc3BlYyBpcyBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvIj5odHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvPC9hPi4gQW4gaW50cm8gdG8gWE1MICh0aGF0IEkgcmVhbGx5IGxpa2UpIGNhbiBiZSBmb3VuZCBhdCA8YSBocmVmPSJodHRwOi8vc2tldy5vcmcveG1sL3R1dG9yaWFsLyI+aHR0cDovL3NrZXcub3JnL3htbC90dXRvcmlhbDwvYT4uPHA+Ci1UaGVyZSBhcmUgZGlmZmVyZW50IHdheXMgdG8gYWNjZXNzIGFuZCBpbnRlcmFjdCB3aXRoIFhNTCBkYXRhLiBUaW55WG1sIHVzZXMgYSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSksIG1lYW5pbmcgdGhlIFhNTCBkYXRhIGlzIHBhcnNlZCBpbnRvIGEgQysrIG9iamVjdHMgdGhhdCBjYW4gYmUgYnJvd3NlZCBhbmQgbWFuaXB1bGF0ZWQsIGFuZCB0aGVuIHdyaXR0ZW4gdG8gZGlzayBvciBhbm90aGVyIG91dHB1dCBzdHJlYW0uIFlvdSBjYW4gYWxzbyBjb25zdHJ1Y3QgYW4gWE1MIGRvY3VtZW50IGZyb20gc2NyYXRjaCB3aXRoIEMrKyBvYmplY3RzIGFuZCB3cml0ZSB0aGlzIHRvIGRpc2sgb3IgYW5vdGhlciBvdXRwdXQgc3RyZWFtLjxwPgotVGlueVhtbCBpcyBkZXNpZ25lZCB0byBiZSBlYXN5IGFuZCBmYXN0IHRvIGxlYXJuLiBJdCBpcyB0d28gaGVhZGVycyBhbmQgZm91ciBjcHAgZmlsZXMuIFNpbXBseSBhZGQgdGhlc2UgdG8geW91ciBwcm9qZWN0IGFuZCBvZmYgeW91IGdvLiBUaGVyZSBpcyBhbiBleGFtcGxlIGZpbGUgLSB4bWx0ZXN0LmNwcCAtIHRvIGdldCB5b3Ugc3RhcnRlZC48cD4KLVRpbnlYbWwgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFpMaWIgbGljZW5zZSwgc28geW91IGNhbiB1c2UgaXQgaW4gb3BlbiBzb3VyY2Ugb3IgY29tbWVyY2lhbCBjb2RlLiBUaGUgZGV0YWlscyBvZiB0aGUgbGljZW5zZSBhcmUgYXQgdGhlIHRvcCBvZiBldmVyeSBzb3VyY2UgZmlsZS48cD4KLVRpbnlYbWwgYXR0ZW1wdHMgdG8gYmUgYSBmbGV4aWJsZSBwYXJzZXIsIGJ1dCB3aXRoIHRydWx5IGNvcnJlY3QgYW5kIGNvbXBsaWFudCBYTUwgb3V0cHV0LiBUaW55WG1sIHNob3VsZCBjb21waWxlIG9uIGFueSByZWFzb25hYmx5IEMrKyBjb21wbGlhbnQgc3lzdGVtLiBJdCBkb2VzIG5vdCByZWx5IG9uIGV4Y2VwdGlvbnMgb3IgUlRUSS4gSXQgY2FuIGJlIGNvbXBpbGVkIHdpdGggb3Igd2l0aG91dCBTVEwgc3VwcG9ydC4gVGlueVhtbCBmdWxseSBzdXBwb3J0cyB0aGUgVVRGLTggZW5jb2RpbmcsIGFuZCB0aGUgZmlyc3QgNjRrIGNoYXJhY3RlciBlbnRpdGllcy48cD4KLTxoMj5XaGF0IGl0IGRvZXNuJ3QgZG8uIDwvaDI+Ci08cD4KLUl0IGRvZXNudCBwYXJzZSBvciB1c2UgRFREcyAoRG9jdW1lbnQgVHlwZSBEZWZpbml0aW9ucykgb3IgWFNMcyAoZVh0ZW5zaWJsZSBTdHlsZXNoZWV0IExhbmd1YWdlLikgVGhlcmUgYXJlIG90aGVyIHBhcnNlcnMgb3V0IHRoZXJlIChjaGVjayBvdXQgd3d3LnNvdXJjZWZvcmdlLm9yZywgc2VhcmNoIGZvciBYTUwpIHRoYXQgYXJlIG11Y2ggbW9yZSBmdWxseSBmZWF0dXJlZC4gQnV0IHRoZXkgYXJlIGFsc28gbXVjaCBiaWdnZXIsIHRha2UgbG9uZ2VyIHRvIHNldCB1cCBpbiB5b3VyIHByb2plY3QsIGhhdmUgYSBoaWdoZXIgbGVhcm5pbmcgY3VydmUsIGFuZCBvZnRlbiBoYXZlIGEgbW9yZSByZXN0cmljdGl2ZSBsaWNlbnNlLiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBicm93c2VycyBvciBoYXZlIG1vcmUgY29tcGxldGUgWE1MIG5lZWRzLCBUaW55WG1sIGlzIG5vdCB0aGUgcGFyc2VyIGZvciB5b3UuPHA+Ci1UaGUgZm9sbG93aW5nIERURCBzeW50YXggd2lsbCBub3QgcGFyc2UgYXQgdGhpcyB0aW1lIGluIFRpbnlYbWw6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7IURPQ1RZUEUgQXJjaGl2IFsKLQkgJmx0OyFFTEVNRU5UIENvbW1lbnQgKCNQQ0RBVEEpJmd0OwotCV0mZ3Q7Ci08L3ByZT48L2Rpdj48cD4KLWJlY2F1c2UgVGlueVhtbCBzZWVzIHRoaXMgYXMgYSAhRE9DVFlQRSBub2RlIHdpdGggYW4gaWxsZWdhbGx5IGVtYmVkZGVkICFFTEVNRU5UIG5vZGUuIFRoaXMgbWF5IGJlIGFkZHJlc3NlZCBpbiB0aGUgZnV0dXJlLjxwPgotPGgyPlR1dG9yaWFscy4gPC9oMj4KLTxwPgotRm9yIHRoZSBpbXBhdGllbnQsIGhlcmUgaXMgYSB0dXRvcmlhbCB0byBnZXQgeW91IGdvaW5nLiBBIGdyZWF0IHdheSB0byBnZXQgc3RhcnRlZCwgYnV0IGl0IGlzIHdvcnRoIHlvdXIgdGltZSB0byByZWFkIHRoaXMgKHZlcnkgc2hvcnQpIG1hbnVhbCBjb21wbGV0ZWx5LjxwPgotPHVsPgotPGxpPjxhIGNsYXNzPSJlbCIgaHJlZj0idHV0b3JpYWwwLmh0bWwiPlRpbnlYTUwgVHV0b3JpYWw8L2E+PC9saT48L3VsPgotPHA+Ci08aDI+Q29kZSBTdGF0dXMuIDwvaDI+Ci08cD4KLVRpbnlYbWwgaXMgbWF0dXJlLCB0ZXN0ZWQgY29kZS4gSXQgaXMgdmVyeSBzdGFibGUuIElmIHlvdSBmaW5kIGJ1Z3MsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCBvbiB0aGUgc291cmNlZm9yZ2Ugd2ViIHNpdGUgKHd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbCkuIFdlJ2xsIGdldCB0aGVtIHN0cmFpZ2h0ZW5lZCBvdXQgYXMgc29vbiBhcyBwb3NzaWJsZS48cD4KLVRoZXJlIGFyZSBzb21lIGFyZWFzIG9mIGltcHJvdmVtZW50OyBwbGVhc2UgY2hlY2sgc291cmNlZm9yZ2UgaWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHdvcmtpbmcgb24gVGlueVhtbC48cD4KLTxoMj5GZWF0dXJlcyA8L2gyPgotPHA+Ci08aDM+VXNpbmcgU1RMIDwvaDM+Ci08cD4KLVRpbnlYbWwgY2FuIGJlIGNvbXBpbGVkIHRvIHVzZSBvciBub3QgdXNlIFNUTC4gV2hlbiB1c2luZyBTVEwsIFRpbnlYbWwgdXNlcyB0aGUgc3RkOjpzdHJpbmcgY2xhc3MsIGFuZCBmdWxseSBzdXBwb3J0cyBzdGQ6OmlzdHJlYW0sIHN0ZDo6b3N0cmVhbSwgb3BlcmF0b3ImbHQ7Jmx0OywgYW5kIG9wZXJhdG9yJmd0OyZndDsuIE1hbnkgQVBJIG1ldGhvZHMgaGF2ZSBib3RoICdjb25zdCBjaGFyKicgYW5kICdjb25zdCBzdGQ6OnN0cmluZyZhbXA7JyBmb3Jtcy48cD4KLVdoZW4gU1RMIHN1cHBvcnQgaXMgY29tcGlsZWQgb3V0LCBubyBTVEwgZmlsZXMgYXJlIGluY2x1ZGVkIHdoYXRzb3Zlci4gQWxsIHRoZSBzdHJpbmcgY2xhc3NlcyBhcmUgaW1wbGVtZW50ZWQgYnkgVGlueVhtbCBpdHNlbGYuIEFQSSBtZXRob2RzIGFsbCB1c2UgdGhlICdjb25zdCBjaGFyKicgZm9ybSBmb3IgaW5wdXQuPHA+Ci1Vc2UgdGhlIGNvbXBpbGUgdGltZSBkZWZpbmU6PHA+Ci1USVhNTF9VU0VfU1RMPHA+Ci10byBjb21waWxlIG9uZSB2ZXJzaW9uIG9yIHRoZSBvdGhlci4gVGhpcyBjYW4gYmUgcGFzc2VkIGJ5IHRoZSBjb21waWxlciwgb3Igc2V0IGFzIHRoZSBmaXJzdCBsaW5lIG9mICJ0aW55eG1sLmgiLjxwPgotTm90ZTogSWYgY29tcGlsaW5nIHRoZSB0ZXN0IGNvZGUgaW4gTGludXgsIHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFRJTllYTUxfVVNFX1NUTD1ZRVMvTk8gd2lsbCBjb250cm9sIFNUTCBjb21waWxhdGlvbi4gSW4gdGhlIFdpbmRvd3MgcHJvamVjdCBmaWxlLCBTVEwgYW5kIG5vbiBTVEwgdGFyZ2V0cyBhcmUgcHJvdmlkZWQuIEluIHlvdXIgcHJvamVjdCwgaXRzIHByb2JhYmx5IGVhc2llc3QgdG8gYWRkIHRoZSBsaW5lICIjZGVmaW5lIFRJWE1MX1VTRV9TVEwiIGFzIHRoZSBmaXJzdCBsaW5lIG9mIDxhIGNsYXNzPSJlbCIgaHJlZj0idGlueXhtbF84aC1zb3VyY2UuaHRtbCI+dGlueXhtbC5oPC9hPi48cD4KLTxoMz5VVEYtOCA8L2gzPgotPHA+Ci1UaW55WG1sIHN1cHBvcnRzIFVURi04IGFsbG93aW5nIHRvIG1hbmlwdWxhdGUgWE1MIGZpbGVzIGluIGFueSBsYW5ndWFnZS4gVGlueVhtbCBhbHNvIHN1cHBvcnRzICJsZWdhY3kgbW9kZSIgLSB0aGUgZW5jb2RpbmcgdXNlZCBiZWZvcmUgVVRGLTggc3VwcG9ydCBhbmQgcHJvYmFibHkgYmVzdCBkZXNjcmliZWQgYXMgImV4dGVuZGVkIGFzY2lpIi48cD4KLU5vcm1hbGx5LCBUaW55WG1sIHdpbGwgdHJ5IHRvIGRldGVjdCB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgdXNlIGl0LiBIb3dldmVyLCBieSBzZXR0aW5nIHRoZSB2YWx1ZSBvZiBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HIGluIHRoZSBoZWFkZXIgZmlsZSwgVGlueVhtbCBjYW4gYmUgZm9yY2VkIHRvIGFsd2F5cyB1c2Ugb25lIGVuY29kaW5nLjxwPgotVGlueVhtbCB3aWxsIGFzc3VtZSBMZWdhY3kgTW9kZSB1bnRpbCBvbmUgb2YgdGhlIGZvbGxvd2luZyBvY2N1cnM6IDxvbD4KLTxsaT4KLUlmIHRoZSBub24tc3RhbmRhcmQgYnV0IGNvbW1vbiAiVVRGLTggbGVhZCBieXRlcyIgKDB4ZWYgMHhiYiAweGJmKSBiZWdpbiB0aGUgZmlsZSBvciBkYXRhIHN0cmVhbSwgVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguICA8L2xpPgotPGxpPgotSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIGFuIGVuY29kaW5nPSJVVEYtOCIsIHRoZW4gVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguICA8L2xpPgotPGxpPgotSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIG5vIGVuY29kaW5nIHNwZWNpZmllZCwgdGhlbiBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBVVEYtOC4gIDwvbGk+Ci08bGk+Ci1JZiB0aGUgZGVjbGFyYXRpb24gdGFnIGlzIHJlYWQsIGFuZCBpdCBoYXMgYW4gZW5jb2Rpbmc9InNvbWV0aGluZyBlbHNlIiwgdGhlbiBUaW55WG1sIHdpbGwgcmVhZCBpdCBhcyBMZWdhY3kgTW9kZS4gSW4gbGVnYWN5IG1vZGUsIFRpbnlYbWwgd2lsbCB3b3JrIGFzIGl0IGRpZCBiZWZvcmUuIEl0J3Mgbm90IGNsZWFyIHdoYXQgdGhhdCBtb2RlIGRvZXMgZXhhY3RseSwgYnV0IG9sZCBjb250ZW50IHNob3VsZCBrZWVwIHdvcmtpbmcuIDwvbGk+Ci08bGk+Ci1VbnRpbCBvbmUgb2YgdGhlIGFib3ZlIGNyaXRlcmlhIGlzIG1ldCwgVGlueVhtbCBydW5zIGluIExlZ2FjeSBNb2RlLiA8L2xpPgotPC9vbD4KLTxwPgotV2hhdCBoYXBwZW5zIGlmIHRoZSBlbmNvZGluZyBpcyBpbmNvcnJlY3RseSBzZXQgb3IgZGV0ZWN0ZWQ/IFRpbnlYbWwgd2lsbCB0cnkgdG8gcmVhZCBhbmQgcGFzcyB0aHJvdWdoIHRleHQgc2VlbiBhcyBpbXByb3Blcmx5IGVuY29kZWQuIFlvdSBtYXkgZ2V0IHNvbWUgc3RyYW5nZSByZXN1bHRzIG9yIG1hbmdsZWQgY2hhcmFjdGVycy4gWW91IG1heSB3YW50IHRvIGZvcmNlIFRpbnlYbWwgdG8gdGhlIGNvcnJlY3QgbW9kZS48cD4KLTxiPiBZb3UgbWF5IGZvcmNlIFRpbnlYbWwgdG8gTGVnYWN5IE1vZGUgYnkgdXNpbmcgTG9hZEZpbGUoIFRJWE1MX0VOQ09ESU5HX0xFR0FDWSApIG9yIExvYWRGaWxlKCBmaWxlbmFtZSwgVElYTUxfRU5DT0RJTkdfTEVHQUNZICkuIFlvdSBtYXkgZm9yY2UgaXQgdG8gdXNlIGxlZ2FjeSBtb2RlIGFsbCB0aGUgdGltZSBieSBzZXR0aW5nIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgPSBUSVhNTF9FTkNPRElOR19MRUdBQ1kuIExpa2V3aXNlLCB5b3UgbWF5IGZvcmNlIGl0IHRvIFRJWE1MX0VOQ09ESU5HX1VURjggd2l0aCB0aGUgc2FtZSB0ZWNobmlxdWUuPC9iPjxwPgotRm9yIEVuZ2xpc2ggdXNlcnMsIHVzaW5nIEVuZ2xpc2ggWE1MLCBVVEYtOCBpcyB0aGUgc2FtZSBhcyBsb3ctQVNDSUkuIFlvdSBkb24ndCBuZWVkIHRvIGJlIGF3YXJlIG9mIFVURi04IG9yIGNoYW5nZSB5b3VyIGNvZGUgaW4gYW55IHdheS4gWW91IGNhbiB0aGluayBvZiBVVEYtOCBhcyBhICJzdXBlcnNldCIgb2YgQVNDSUkuPHA+Ci1VVEYtOCBpcyBub3QgYSBkb3VibGUgYnl0ZSBmb3JtYXQgLSBidXQgaXQgaXMgYSBzdGFuZGFyZCBlbmNvZGluZyBvZiBVbmljb2RlISBUaW55WG1sIGRvZXMgbm90IHVzZSBvciBkaXJlY3RseSBzdXBwb3J0IHdjaGFyLCBUQ0hBUiwgb3IgTWljcm9zb2Z0cyBfVU5JQ09ERSBhdCB0aGlzIHRpbWUuIEl0IGlzIGNvbW1vbiB0byBzZWUgdGhlIHRlcm0gIlVuaWNvZGUiIGltcHJvcGVybHkgcmVmZXIgdG8gVVRGLTE2LCBhIHdpZGUgYnl0ZSBlbmNvZGluZyBvZiB1bmljb2RlLiBUaGlzIGlzIGEgc291cmNlIG9mIGNvbmZ1c2lvbi48cD4KLUZvciAiaGlnaC1hc2NpaSIgbGFuZ3VhZ2VzIC0gZXZlcnl0aGluZyBub3QgRW5nbGlzaCwgcHJldHR5IG11Y2ggLSBUaW55WG1sIGNhbiBoYW5kbGUgYWxsIGxhbmd1YWdlcywgYXQgdGhlIHNhbWUgdGltZSwgYXMgbG9uZyBhcyB0aGUgWE1MIGlzIGVuY29kZWQgaW4gVVRGLTguIFRoYXQgY2FuIGJlIGEgbGl0dGxlIHRyaWNreSwgb2xkZXIgcHJvZ3JhbXMgYW5kIG9wZXJhdGluZyBzeXN0ZW1zIHRlbmQgdG8gdXNlIHRoZSAiZGVmYXVsdCIgb3IgInRyYWRpdGlvbmFsIiBjb2RlIHBhZ2UuIE1hbnkgYXBwcyAoYW5kIGFsbW9zdCBhbGwgbW9kZXJuIG9uZXMpIGNhbiBvdXRwdXQgVVRGLTgsIGJ1dCBvbGRlciBvciBzdHViYm9ybiAob3IganVzdCBicm9rZW4pIG9uZXMgc3RpbGwgb3V0cHV0IHRleHQgaW4gdGhlIGRlZmF1bHQgY29kZSBwYWdlLjxwPgotRm9yIGV4YW1wbGUsIEphcGFuZXNlIHN5c3RlbXMgdHJhZGl0aW9uYWxseSB1c2UgU0hJRlQtSklTIGVuY29kaW5nLiBUZXh0IGVuY29kZWQgYXMgU0hJRlQtSklTIGNhbiBub3QgYmUgcmVhZCBieSB0aW55eG1sLiBBIGdvb2QgdGV4dCBlZGl0b3IgY2FuIGltcG9ydCBTSElGVC1KSVMgYW5kIHRoZW4gc2F2ZSBhcyBVVEYtOC48cD4KLVRoZSA8YSBocmVmPSJodHRwOi8vc2tldy5vcmcveG1sL3R1dG9yaWFsLyI+U2tldy5vcmcgbGluazwvYT4gZG9lcyBhIGdyZWF0IGpvYiBjb3ZlcmluZyB0aGUgZW5jb2RpbmcgaXNzdWUuPHA+Ci1UaGUgdGVzdCBmaWxlICJ1dGY4dGVzdC54bWwiIGlzIGFuIFhNTCBjb250YWluaW5nIEVuZ2xpc2gsIFNwYW5pc2gsIFJ1c3NpYW4sIGFuZCBTaW1wbGlmaWVkIENoaW5lc2UuIChIb3BlZnVsbHkgdGhleSBhcmUgdHJhbnNsYXRlZCBjb3JyZWN0bHkpLiBUaGUgZmlsZSAidXRmOHRlc3QuZ2lmIiBpcyBhIHNjcmVlbiBjYXB0dXJlIG9mIHRoZSBYTUwgZmlsZSwgcmVuZGVyZWQgaW4gSUUuIE5vdGUgdGhhdCBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGUgY29ycmVjdCBmb250cyAoU2ltcGxpZmllZCBDaGluZXNlIG9yIFJ1c3NpYW4pIG9uIHlvdXIgc3lzdGVtLCB5b3Ugd29uJ3Qgc2VlIG91dHB1dCB0aGF0IG1hdGNoZXMgdGhlIEdJRiBmaWxlIGV2ZW4gaWYgeW91IGNhbiBwYXJzZSBpdCBjb3JyZWN0bHkuIEFsc28gbm90ZSB0aGF0IChhdCBsZWFzdCBvbiBteSBXaW5kb3dzIG1hY2hpbmUpIGNvbnNvbGUgb3V0cHV0IGlzIGluIGEgV2VzdGVybiBjb2RlIHBhZ2UsIHNvIHRoYXQgUHJpbnQoKSBvciBwcmludGYoKSBjYW5ub3QgY29ycmVjdGx5IGRpc3BsYXkgdGhlIGZpbGUuIFRoaXMgaXMgbm90IGEgYnVnIGluIFRpbnlYbWwgLSBqdXN0IGFuIE9TIGlzc3VlLiBObyBkYXRhIGlzIGxvc3Qgb3IgZGVzdHJveWVkIGJ5IFRpbnlYbWwuIFRoZSBjb25zb2xlIGp1c3QgZG9lc24ndCByZW5kZXIgVVRGLTguPHA+Ci08aDM+RW50aXRpZXMgPC9oMz4KLTxwPgotVGlueVhtbCByZWNvZ25pemVzIHRoZSBwcmUtZGVmaW5lZCAiY2hhcmFjdGVyIGVudGl0aWVzIiwgbWVhbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMuIE5hbWVseTo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZhbXA7YW1wOwkmYW1wOwotCSZhbXA7bHQ7CSZsdDsKLQkmYW1wO2d0OwkmZ3Q7Ci0JJmFtcDtxdW90OwkiCi0JJmFtcDthcG9zOwknCi08L3ByZT48L2Rpdj48cD4KLVRoZXNlIGFyZSByZWNvZ25pemVkIHdoZW4gdGhlIFhNTCBkb2N1bWVudCBpcyByZWFkLCBhbmQgdHJhbnNsYXRlZCB0byB0aGVyZSBVVEYtOCBlcXVpdmFsZW50cy4gRm9yIGluc3RhbmNlLCB0ZXh0IHdpdGggdGhlIFhNTCBvZjo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CUZhciAmYW1wO2FtcDsgQXdheQotPC9wcmU+PC9kaXY+PHA+Ci13aWxsIGhhdmUgdGhlIFZhbHVlKCkgb2YgIkZhciAmYW1wOyBBd2F5IiB3aGVuIHF1ZXJpZWQgZnJvbSB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+IG9iamVjdCwgYW5kIHdpbGwgYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBYTUwgc3RyZWFtL2ZpbGUgYXMgYW4gYW1wZXJzYW5kLiBPbGRlciB2ZXJzaW9ucyBvZiBUaW55WG1sICJwcmVzZXJ2ZWQiIGNoYXJhY3RlciBlbnRpdGllcywgYnV0IHRoZSBuZXdlciB2ZXJzaW9ucyB3aWxsIHRyYW5zbGF0ZSB0aGVtIGludG8gY2hhcmFjdGVycy48cD4KLUFkZGl0aW9uYWxseSwgYW55IGNoYXJhY3RlciBjYW4gYmUgc3BlY2lmaWVkIGJ5IGl0cyBVbmljb2RlIGNvZGUgcG9pbnQ6IFRoZSBzeW50YXggIiZhbXA7I3hBMDsiIG9yICImYW1wOyMxNjA7IiBhcmUgYm90aCB0byB0aGUgbm9uLWJyZWFraW5nIHNwYWNlIGNoYXJhY2hlci48cD4KLTxoMz5TdHJlYW1zIDwvaDM+Ci08cD4KLVdpdGggVElYTUxfVVNFX1NUTCBvbiwgVGlYbWwgaGFzIGJlZW4gbW9kaWZpZWQgdG8gc3VwcG9ydCBib3RoIEMgKEZJTEUpIGFuZCBDKysgKG9wZXJhdG9yICZsdDsmbHQ7LCZndDsmZ3Q7KSBzdHJlYW1zLiBUaGVyZSBhcmUgc29tZSBkaWZmZXJlbmNlcyB0aGF0IHlvdSBtYXkgbmVlZCB0byBiZSBhd2FyZSBvZi48cD4KLUMgc3R5bGUgb3V0cHV0Ojx1bD4KLTxsaT5iYXNlZCBvbiBGSUxFKjwvbGk+PGxpPnRoZSBQcmludCgpIGFuZCBTYXZlRmlsZSgpIG1ldGhvZHM8L2xpPjwvdWw+Ci08cD4KLUdlbmVyYXRlcyBmb3JtYXR0ZWQgb3V0cHV0LCB3aXRoIHBsZW50eSBvZiB3aGl0ZSBzcGFjZSwgaW50ZW5kZWQgdG8gYmUgYXMgaHVtYW4tcmVhZGFibGUgYXMgcG9zc2libGUuIFRoZXkgYXJlIHZlcnkgZmFzdCwgYW5kIHRvbGVyYW50IG9mIGlsbCBmb3JtZWQgWE1MIGRvY3VtZW50cy4gRm9yIGV4YW1wbGUsIGFuIFhNTCBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIDIgcm9vdCBlbGVtZW50cyBhbmQgMiBkZWNsYXJhdGlvbnMsIHdpbGwgc3RpbGwgcHJpbnQuPHA+Ci1DIHN0eWxlIGlucHV0Ojx1bD4KLTxsaT5iYXNlZCBvbiBGSUxFKjwvbGk+PGxpPnRoZSBQYXJzZSgpIGFuZCBMb2FkRmlsZSgpIG1ldGhvZHM8L2xpPjwvdWw+Ci08cD4KLUEgZmFzdCwgdG9sZXJhbnQgcmVhZC4gVXNlIHdoZW5ldmVyIHlvdSBkb24ndCBuZWVkIHRoZSBDKysgc3RyZWFtcy48cD4KLUMrKyBzdHlsZSBvdXB1dDo8dWw+Ci08bGk+YmFzZWQgb24gc3RkOjpvc3RyZWFtPC9saT48bGk+b3BlcmF0b3ImbHQ7Jmx0OzwvbGk+PC91bD4KLTxwPgotR2VuZXJhdGVzIGNvbmRlbnNlZCBvdXRwdXQsIGludGVuZGVkIGZvciBuZXR3b3JrIHRyYW5zbWlzc2lvbiByYXRoZXIgdGhhbiByZWFkYWJpbGl0eS4gRGVwZW5kaW5nIG9uIHlvdXIgc3lzdGVtJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIG9zdHJlYW0gY2xhc3MsIHRoZXNlIG1heSBiZSBzb21ld2hhdCBzbG93ZXIuIChPciBtYXkgbm90LikgTm90IHRvbGVyYW50IG9mIGlsbCBmb3JtZWQgWE1MOiBhIGRvY3VtZW50IHNob3VsZCBjb250YWluIHRoZSBjb3JyZWN0IG9uZSByb290IGVsZW1lbnQuIEFkZGl0aW9uYWwgcm9vdCBsZXZlbCBlbGVtZW50cyB3aWxsIG5vdCBiZSBzdHJlYW1lZCBvdXQuPHA+Ci1DKysgc3R5bGUgaW5wdXQ6PHVsPgotPGxpPmJhc2VkIG9uIHN0ZDo6aXN0cmVhbTwvbGk+PGxpPm9wZXJhdG9yJmd0OyZndDs8L2xpPjwvdWw+Ci08cD4KLVJlYWRzIFhNTCBmcm9tIGEgc3RyZWFtLCBtYWtpbmcgaXQgdXNlZnVsIGZvciBuZXR3b3JrIHRyYW5zbWlzc2lvbi4gVGhlIHRyaWNreSBwYXJ0IGlzIGtub3dpbmcgd2hlbiB0aGUgWE1MIGRvY3VtZW50IGlzIGNvbXBsZXRlLCBzaW5jZSB0aGVyZSB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgb3RoZXIgZGF0YSBpbiB0aGUgc3RyZWFtLiBUaW55WG1sIHdpbGwgYXNzdW1lIHRoZSBYTUwgZGF0YSBpcyBjb21wbGV0ZSBhZnRlciBpdCByZWFkcyB0aGUgcm9vdCBlbGVtZW50LiBQdXQgYW5vdGhlciB3YXksIGRvY3VtZW50cyB0aGF0IGFyZSBpbGwtY29uc3RydWN0ZWQgd2l0aCBtb3JlIHRoYW4gb25lIHJvb3QgZWxlbWVudCB3aWxsIG5vdCByZWFkIGNvcnJlY3RseS4gQWxzbyBub3RlIHRoYXQgb3BlcmF0b3ImZ3Q7Jmd0OyBpcyBzb21ld2hhdCBzbG93ZXIgdGhhbiBQYXJzZSwgZHVlIHRvIGJvdGggaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCBhbmQgbGltaXRhdGlvbnMgb2YgVGlueVhtbC48cD4KLTxoMz5XaGl0ZSBzcGFjZSA8L2gzPgotPHA+Ci1UaGUgd29ybGQgc2ltcGx5IGRvZXMgbm90IGFncmVlIG9uIHdoZXRoZXIgd2hpdGUgc3BhY2Ugc2hvdWxkIGJlIGtlcHQsIG9yIGNvbmRlbnNlZC4gRm9yIGV4YW1wbGUsIHByZXRlbmQgdGhlICdfJyBpcyBhIHNwYWNlLCBhbmQgbG9vayBhdCAiSGVsbG9fX19fd29ybGQiLiBIVE1MLCBhbmQgYXQgbGVhc3Qgc29tZSBYTUwgcGFyc2Vycywgd2lsbCBpbnRlcnByZXQgdGhpcyBhcyAiSGVsbG9fd29ybGQiLiBUaGV5IGNvbmRlbnNlIHdoaXRlIHNwYWNlLiBTb21lIFhNTCBwYXJzZXJzIGRvIG5vdCwgYW5kIHdpbGwgbGVhdmUgaXQgYXMgIkhlbGxvX19fX3dvcmxkIi4gKFJlbWVtYmVyIHRvIGtlZXAgcHJldGVuZGluZyB0aGUgXyBpcyBhIHNwYWNlLikgT3RoZXJzIHN1Z2dlc3QgdGhhdCBfX0hlbGxvX19fd29ybGRfXyBzaG91bGQgYmVjb21lIEhlbGxvX19fd29ybGQuPHA+Ci1JdCdzIGFuIGlzc3VlIHRoYXQgaGFzbid0IGJlZW4gcmVzb2x2ZWQgdG8gbXkgc2F0aXNmYWN0aW9uLiBUaW55WG1sIHN1cHBvcnRzIHRoZSBmaXJzdCAyIGFwcHJvYWNoZXMuIENhbGwgPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5UaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggYm9vbCApPC9hPiB0byBzZXQgdGhlIGRlc2lyZWQgYmVoYXZpb3IuIFRoZSBkZWZhdWx0IGlzIHRvIGNvbmRlbnNlIHdoaXRlIHNwYWNlLjxwPgotSWYgeW91IGNoYW5nZSB0aGUgZGVmYXVsdCwgeW91IHNob3VsZCBjYWxsIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+VGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGJvb2wgKTwvYT4gYmVmb3JlIG1ha2luZyBhbnkgY2FsbHMgdG8gUGFyc2UgWE1MIGRhdGEsIGFuZCBJIGRvbid0IHJlY29tbWVuZCBjaGFuZ2luZyBpdCBhZnRlciBpdCBoYXMgYmVlbiBzZXQuPHA+Ci08aDM+SGFuZGxlcyA8L2gzPgotPHA+Ci1XaGVyZSBicm93c2luZyBhbiBYTUwgZG9jdW1lbnQgaW4gYSByb2J1c3Qgd2F5LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2hlY2sgZm9yIG51bGwgcmV0dXJucyBmcm9tIG1ldGhvZCBjYWxscy4gQW4gZXJyb3Igc2FmZSBpbXBsZW1lbnRhdGlvbiBjYW4gZ2VuZXJhdGUgYSBsb3Qgb2YgY29kZSBsaWtlOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij5UaVhtbEVsZW1lbnQqIHJvb3QgPSBkb2N1bWVudC5GaXJzdENoaWxkRWxlbWVudCggIkRvY3VtZW50IiApOwotaWYgKCByb290ICkKLXsKLQlUaVhtbEVsZW1lbnQqIGVsZW1lbnQgPSByb290LSZndDtGaXJzdENoaWxkRWxlbWVudCggIkVsZW1lbnQiICk7Ci0JaWYgKCBlbGVtZW50ICkKLQl7Ci0JCVRpWG1sRWxlbWVudCogY2hpbGQgPSBlbGVtZW50LSZndDtGaXJzdENoaWxkRWxlbWVudCggIkNoaWxkIiApOwotCQlpZiAoIGNoaWxkICkKLQkJewotCQkJVGlYbWxFbGVtZW50KiBjaGlsZDIgPSBjaGlsZC0mZ3Q7TmV4dFNpYmxpbmdFbGVtZW50KCAiQ2hpbGQiICk7Ci0JCQlpZiAoIGNoaWxkMiApCi0JCQl7Ci0JCQkJLy8gRmluYWxseSBkbyBzb21ldGhpbmcgdXNlZnVsLgotPC9wcmU+PC9kaXY+PHA+Ci1IYW5kbGVzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRvIGNsZWFuIHRoaXMgdXAuIFVzaW5nIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IGNsYXNzLCB0aGUgcHJldmlvdXMgY29kZSByZWR1Y2VzIHRvOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij5UaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZhbXA7ZG9jdW1lbnQgKTsKLVRpWG1sRWxlbWVudCogY2hpbGQyID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgMSApLkVsZW1lbnQoKTsKLWlmICggY2hpbGQyICkKLXsKLQkvLyBkbyBzb21ldGhpbmcgdXNlZnVsCi08L3ByZT48L2Rpdj48cD4KLVdoaWNoIGlzIG11Y2ggZWFzaWVyIHRvIGRlYWwgd2l0aC4gU2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uPHA+Ci08aDM+Um93IGFuZCBDb2x1bW4gdHJhY2tpbmcgPC9oMz4KLTxwPgotQmVpbmcgYWJsZSB0byB0cmFjayBub2RlcyBhbmQgYXR0cmlidXRlcyBiYWNrIHRvIHRoZWlyIG9yaWdpbiBsb2NhdGlvbiBpbiBzb3VyY2UgZmlsZXMgY2FuIGJlIHZlcnkgaW1wb3J0YW50IGZvciBzb21lIGFwcGxpY2F0aW9ucy4gQWRkaXRpb25hbGx5LCBrbm93aW5nIHdoZXJlIHBhcnNpbmcgZXJyb3JzIG9jY3VyZWQgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBjYW4gYmUgdmVyeSB0aW1lIHNhdmluZy48cD4KLVRpbnlYbWwgY2FuIHRyYWNrcyB0aGUgcm93IGFuZCBjb2x1bW4gb3JpZ2luIG9mIGFsbCBub2RlcyBhbmQgYXR0cmlidXRlcyBpbiBhIHRleHQgZmlsZS4gVGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+VGlYbWxCYXNlOjpSb3coKTwvYT4gYW5kIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhNCI+VGlYbWxCYXNlOjpDb2x1bW4oKTwvYT4gbWV0aG9kcyByZXR1cm4gdGhlIG9yaWdpbiBvZiB0aGUgbm9kZSBpbiB0aGUgc291cmNlIHRleHQuIFRoZSBjb3JyZWN0IHRhYnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gPGEgY2xhc3M9ImVsIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjAiPlRpWG1sRG9jdW1lbnQ6OlNldFRhYlNpemUoKTwvYT4uPHA+Ci08aDI+VXNpbmcgYW5kIEluc3RhbGxpbmcgPC9oMj4KLTxwPgotVG8gQ29tcGlsZSBhbmQgUnVuIHhtbHRlc3Q6PHA+Ci1BIExpbnV4IE1ha2VmaWxlIGFuZCBhIFdpbmRvd3MgVmlzdWFsIEMrKyAuZHN3IGZpbGUgaXMgcHJvdmlkZWQuIFNpbXBseSBjb21waWxlIGFuZCBydW4uIEl0IHdpbGwgd3JpdGUgdGhlIGZpbGUgZGVtb3Rlc3QueG1sIHRvIHlvdXIgZGlzayBhbmQgZ2VuZXJhdGUgb3V0cHV0IG9uIHRoZSBzY3JlZW4uIEl0IGFsc28gdGVzdHMgd2Fsa2luZyB0aGUgRE9NIGJ5IHByaW50aW5nIG91dCB0aGUgbnVtYmVyIG9mIG5vZGVzIGZvdW5kIHVzaW5nIGRpZmZlcmVudCB0ZWNobmlxdWVzLjxwPgotVGhlIExpbnV4IG1ha2VmaWxlIGlzIHZlcnkgZ2VuZXJpYyBhbmQgd2lsbCBwcm9iYWJseSBydW4gb24gb3RoZXIgc3lzdGVtcywgYnV0IGlzIG9ubHkgdGVzdGVkIG9uIExpbnV4LiBZb3Ugbm8gbG9uZ2VyIG5lZWQgdG8gcnVuICdtYWtlIGRlcGVuZCcuIFRoZSBkZXBlbmRlY2llcyBoYXZlIGJlZW4gaGFyZCBjb2RlZC48cD4KLTxoMz5XaW5kb3dzIHByb2plY3QgZmlsZSBmb3IgVkM2PC9oMz4KLTxwPgotPHVsPgotPGxpPgotdGlueXhtbDogdGlueXhtbCBsaWJyYXJ5LCBub24tU1RMICA8L2xpPgotPGxpPgotdGlueXhtbFNUTDogdGlueXhtbCBsaWJyYXJ5LCBTVEwgIDwvbGk+Ci08bGk+Ci10aW55WG1sVGVzdDogdGVzdCBhcHAsIG5vbi1TVEwgIDwvbGk+Ci08bGk+Ci10aW55WG1sVGVzdFNUTDogdGVzdCBhcHAsIFNUTCAgPC9saT4KLTwvdWw+Ci08cD4KLTxoMz5MaW51eCBNYWtlIGZpbGU8L2gzPgotPHA+Ci1BdCB0aGUgdG9wIG9mIHRoZSBtYWtlZmlsZSB5b3UgY2FuIHNldDo8cD4KLVBST0ZJTEUsIERFQlVHLCBhbmQgVElOWVhNTF9VU0VfU1RMLiBEZXRhaWxzIChzdWNoIHRoYXQgdGhleSBhcmUpIGFyZSBpbiB0aGUgbWFrZWZpbGUuPHA+Ci1JbiB0aGUgdGlueXhtbCBkaXJlY3RvcnksIHR5cGUgIm1ha2UgY2xlYW4iIHRoZW4gIm1ha2UiLiBUaGUgZXhlY3V0YWJsZSBmaWxlICd4bWx0ZXN0JyB3aWxsIGJlIGNyZWF0ZWQuPHA+Ci08aDM+VG8gVXNlIGluIGFuIEFwcGxpY2F0aW9uOjwvaDM+Ci08cD4KLUFkZCB0aW55eG1sLmNwcCwgPGEgY2xhc3M9ImVsIiBocmVmPSJ0aW55eG1sXzhoLXNvdXJjZS5odG1sIj50aW55eG1sLmg8L2E+LCB0aW55eG1sZXJyb3IuY3BwLCB0aW55eG1scGFyc2VyLmNwcCwgdGlueXN0ci5jcHAsIGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9InRpbnlzdHJfOGgtc291cmNlLmh0bWwiPnRpbnlzdHIuaDwvYT4gdG8geW91ciBwcm9qZWN0IG9yIG1ha2UgZmlsZS4gVGhhdCdzIGl0ISBJdCBzaG91bGQgY29tcGlsZSBvbiBhbnkgcmVhc29uYWJseSBjb21wbGlhbnQgQysrIHN5c3RlbS4gWW91IGRvIG5vdCBuZWVkIHRvIGVuYWJsZSBleGNlcHRpb25zIG9yIFJUVEkgZm9yIFRpbnlYbWwuPHA+Ci08aDI+SG93IFRpbnlYbWwgd29ya3MuIDwvaDI+Ci08cD4KLUFuIGV4YW1wbGUgaXMgcHJvYmFibHkgdGhlIGJlc3Qgd2F5IHRvIGdvLiBUYWtlOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9bm8mZ3Q7Ci0JJmx0OyEtLSBPdXIgdG8gZG8gbGlzdCBkYXRhIC0tJmd0OwotCSZsdDtUb0RvJmd0OwotCQkmbHQ7SXRlbSBwcmlvcml0eT0iMSImZ3Q7IEdvIHRvIHRoZSAmbHQ7Ym9sZCZndDtUb3kgc3RvcmUhJmx0Oy9ib2xkJmd0OyZsdDsvSXRlbSZndDsKLQkJJmx0O0l0ZW0gcHJpb3JpdHk9IjIiJmd0OyBEbyBiaWxscyZsdDsvSXRlbSZndDsKLQkmbHQ7L1RvRG8mZ3Q7Ci08L3ByZT48L2Rpdj48cD4KLUl0cyBub3QgbXVjaCBvZiBhIFRvIERvIGxpc3QsIGJ1dCBpdCB3aWxsIGRvLiBUbyByZWFkIHRoaXMgZmlsZSAoc2F5ICJkZW1vLnhtbCIpIHlvdSB3b3VsZCBjcmVhdGUgYSBkb2N1bWVudCwgYW5kIHBhcnNlIGl0IGluOiA8ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglUaVhtbERvY3VtZW50IGRvYyggImRlbW8ueG1sIiApOwotCWRvYy5Mb2FkRmlsZSgpOwotPC9wcmU+PC9kaXY+PHA+Ci1BbmQgaXRzIHJlYWR5IHRvIGdvLiBOb3cgbGV0cyBsb29rIGF0IHNvbWUgbGluZXMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgRE9NLjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4mbHQ7P3htbCB2ZXJzaW9uPSIxLjAiIHN0YW5kYWxvbmU9bm8mZ3Q7Ci08L3ByZT48L2Rpdj48cD4KLVRoZSBmaXJzdCBsaW5lIGlzIGEgZGVjbGFyYXRpb24sIGFuZCBnZXRzIHR1cm5lZCBpbnRvIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiBjbGFzcy4gSXQgd2lsbCBiZSB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGRvY3VtZW50IG5vZGUuPHA+Ci1UaGlzIGlzIHRoZSBvbmx5IGRpcmVjdGl2ZS9zcGVjaWFsIHRhZyBwYXJzZWQgYnkgYnkgVGlueVhtbC4gR2VuZXJhbGx5IGRpcmVjdGl2ZSB0YXJncyBhcmUgc3RvcmVkIGluIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiBzbyB0aGUgY29tbWFuZHMgd29udCBiZSBsb3N0IHdoZW4gaXQgaXMgc2F2ZWQgYmFjayB0byBkaXNrLjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4mbHQ7IS0tIE91ciB0byBkbyBsaXN0IGRhdGEgLS0mZ3Q7Ci08L3ByZT48L2Rpdj48cD4KLUEgY29tbWVudC4gV2lsbCBiZWNvbWUgYSA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4gb2JqZWN0LjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4mbHQ7VG9EbyZndDsKLTwvcHJlPjwvZGl2PjxwPgotVGhlICJUb0RvIiB0YWcgZGVmaW5lcyBhIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiBvYmplY3QuIFRoaXMgb25lIGRvZXMgbm90IGhhdmUgYW55IGF0dHJpYnV0ZXMsIGJ1dCBkb2VzIGNvbnRhaW4gMiBvdGhlciBlbGVtZW50cy48cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+Jmx0O0l0ZW0gcHJpb3JpdHk9IjEiJmd0OyAKLTwvcHJlPjwvZGl2PjxwPgotQ3JlYXRlcyBhbm90aGVyIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiB3aGljaCBpcyBhIGNoaWxkIG9mIHRoZSAiVG9EbyIgZWxlbWVudC4gVGhpcyBlbGVtZW50IGhhcyAxIGF0dHJpYnV0ZSwgd2l0aCB0aGUgbmFtZSAicHJpb3JpdHkiIGFuZCB0aGUgdmFsdWUgIjEiLjxwPgotR28gdG8gdGhlPHA+Ci1BIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPi4gVGhpcyBpcyBhIGxlYWYgbm9kZSBhbmQgY2Fubm90IGNvbnRhaW4gb3RoZXIgbm9kZXMuIEl0IGlzIGEgY2hpbGQgb2YgdGhlICJJdGVtIiA8YSBjbGFzcz0iZWwiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4uPHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPiZsdDtib2xkJmd0OwotPC9wcmU+PC9kaXY+PHA+Ci1Bbm90aGVyIDxhIGNsYXNzPSJlbCIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiwgdGhpcyBvbmUgYSBjaGlsZCBvZiB0aGUgIkl0ZW0iIGVsZW1lbnQuPHA+Ci1FdGMuPHA+Ci1Mb29raW5nIGF0IHRoZSBlbnRpcmUgb2JqZWN0IHRyZWUsIHlvdSBlbmQgdXAgd2l0aDogPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij5UaVhtbERvY3VtZW50CQkJCSJkZW1vLnhtbCIKLQlUaVhtbERlY2xhcmF0aW9uCQkidmVyc2lvbj0nMS4wJyIgInN0YW5kYWxvbmU9bm8iCi0JVGlYbWxDb21tZW50CQkJIiBPdXIgdG8gZG8gbGlzdCBkYXRhIgotCVRpWG1sRWxlbWVudAkJCSJUb0RvIgotCQlUaVhtbEVsZW1lbnQJCSJJdGVtIgkJQXR0cmlidHV0ZXM6IHByaW9yaXR5ID0gMQotCQkJVGlYbWxUZXh0CQkiR28gdG8gdGhlICIKLQkJCVRpWG1sRWxlbWVudCAgICAiYm9sZCIKLQkJCQlUaVhtbFRleHQJIlRveSBzdG9yZSEiCi0JCVRpWG1sRWxlbWVudAkJCSJJdGVtIgkJQXR0cmlidXRlczogcHJpb3JpdHk9MgotCQkJVGlYbWxUZXh0CQkJIkRvIGJpbGxzIgotPC9wcmU+PC9kaXY+PHA+Ci08aDI+RG9jdW1lbnRhdGlvbiA8L2gyPgotPHA+Ci1UaGUgZG9jdW1lbnRhdGlvbiBpcyBidWlsZCB3aXRoIERveHlnZW4sIHVzaW5nIHRoZSAnZG94JyBjb25maWd1cmF0aW9uIGZpbGUuPHA+Ci08aDI+TGljZW5zZSA8L2gyPgotPHA+Ci1UaW55WG1sIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSB6bGliIGxpY2Vuc2U6PHA+Ci1UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS48cD4KLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczo8cD4KLTEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLjxwPgotMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLjxwPgotMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi48cD4KLTxoMj5SZWZlcmVuY2VzIDwvaDI+Ci08cD4KLVRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIGlzIHRoZSBkZWZpbml0aXZlIHN0YW5kYXJkIGJvZHkgZm9yIFhNTCwgYW5kIHRoZXJlIHdlYiBwYWdlcyBjb250YWluIGh1Z2UgYW1vdW50cyBvZiBpbmZvcm1hdGlvbi48cD4KLVRoZSBkZWZpbml0aXZlIHNwZWM6IDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC8iPmh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbC0yMDA0MDIwNC88L2E+PHA+Ci1JIGFsc28gcmVjb21tZW5kICJYTUwgUG9ja2V0IFJlZmVyZW5jZSIgYnkgUm9iZXJ0IEVja3N0ZWluIGFuZCBwdWJsaXNoZWQgYnkgT1JlaWxseS4uLnRoZSBib29rIHRoYXQgZ290IHRoZSB3aG9sZSB0aGluZyBzdGFydGVkLjxwPgotPGgyPkNvbnRyaWJ1dG9ycywgQ29udGFjdHMsIGFuZCBhIEJyaWVmIEhpc3RvcnkgPC9oMj4KLTxwPgotVGhhbmtzIHZlcnkgbXVjaCB0byBldmVyeW9uZSB3aG8gc2VuZHMgc3VnZ2VzdGlvbnMsIGJ1Z3MsIGlkZWFzLCBhbmQgZW5jb3VyYWdlbWVudC4gSXQgYWxsIGhlbHBzLCBhbmQgbWFrZXMgdGhpcyBwcm9qZWN0IGZ1bi4gQSBzcGVjaWFsIHRoYW5rcyB0byB0aGUgY29udHJpYnV0b3JzIG9uIHRoZSB3ZWIgcGFnZXMgdGhhdCBrZWVwIGl0IGxpdmVseS48cD4KLVNvIG1hbnkgcGVvcGxlIGhhdmUgc2VudCBpbiBidWdzIGFuZCBpZGVhcywgdGhhdCByYXRoZXIgdGhhbiBsaXN0IGhlcmUgd2UgdHJ5IHRvIGdpdmUgY3JlZGl0IGR1ZSBpbiB0aGUgImNoYW5nZXMudHh0IiBmaWxlLjxwPgotVGlueVhtbCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJlIExlZSBUaG9tYXNvbi4gKE9mdGVuIHRoZSAiSSIgc3RpbGwgaW4gdGhlIGRvY3VtZW5hdGlvbi4pIExlZSByZXZpZXdzIGNoYW5nZXMgYW5kIHJlbGVhc2VzIG5ldyB2ZXJzaW9ucywgd2l0aCB0aGUgaGVscCBvZiBZdmVzIEJlcnF1aW4gYW5kIHRoZSB0aW55WG1sIGNvbW11bml0eS48cD4KLVdlIGFwcHJlY2lhdGUgeW91ciBzdWdnZXN0aW9ucywgYW5kIHdvdWxkIGxvdmUgdG8ga25vdyBpZiB5b3UgdXNlIFRpbnlYbWwuIEhvcGVmdWxseSB5b3Ugd2lsbCBlbmpveSBpdCBhbmQgZmluZCBpdCB1c2VmdWwuIFBsZWFzZSBwb3N0IHF1ZXN0aW9ucywgY29tbWVudHMsIGZpbGUgYnVncywgb3IgY29udGFjdCB1cyBhdDo8cD4KLXd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbDxwPgotTGVlIFRob21hc29uLCBZdmVzIEJlcnF1aW4gPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvdGlueXN0cl84aC1zb3VyY2UuaHRtbCBiL2RvY3MvdGlueXN0cl84aC1zb3VyY2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQwYTNjNS4uMDAwMDAwMAotLS0gYS9kb2NzL3RpbnlzdHJfOGgtc291cmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IHRpbnlzdHIuaCBTb3VyY2UgRmlsZTwvdGl0bGU+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+PGJvZHk+Ci08IS0tIEdlbmVyYXRlZCBieSBEb3h5Z2VuIDEuNC40IC0tPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSJpbmRleC5odG1sIj5NYWluJm5ic3A7UGFnZTwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJoaWVyYXJjaHkuaHRtbCI+Q2xhc3MmbmJzcDtIaWVyYXJjaHk8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iYW5ub3RhdGVkLmh0bWwiPkNsYXNzJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmaWxlcy5odG1sIj5GaWxlJm5ic3A7TGlzdDwvYT4gfCA8YSBjbGFzcz0icWluZGV4IiBocmVmPSJmdW5jdGlvbnMuaHRtbCI+Q2xhc3MmbmJzcDtNZW1iZXJzPC9hPjwvZGl2PgotPGgxPnRpbnlzdHIuaDwvaDE+PGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij48YSBuYW1lPSJsMDAwMDEiPjwvYT4wMDAwMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMDIiPjwvYT4wMDAwMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sPC9zcGFuPgotPGEgbmFtZT0ibDAwMDAzIj48L2E+MDAwMDMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPk9yaWdpbmFsIGZpbGUgYnkgWXZlcyBCZXJxdWluLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAwNCI+PC9hPjAwMDA0IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Ci08YSBuYW1lPSJsMDAwMDUiPjwvYT4wMDAwNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+VGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMDYiPjwvYT4wMDAwNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAwNyI+PC9hPjAwMDA3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5kYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDA4Ij48L2E+MDAwMDggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAwOSI+PC9hPjAwMDA5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnk8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMTAiPjwvYT4wMDAxMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+cHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kPC9zcGFuPgotPGEgbmFtZT0ibDAwMDExIj48L2E+MDAwMTEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPnJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6PC9zcGFuPgotPGEgbmFtZT0ibDAwMDEyIj48L2E+MDAwMTIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAxMyI+PC9hPjAwMDEzIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4xLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0PC9zcGFuPgotPGEgbmFtZT0ibDAwMDE0Ij48L2E+MDAwMTQgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPm5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpczwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAxNSI+PC9hPjAwMDE1IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5zb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb248L3NwYW4+Ci08YSBuYW1lPSJsMDAwMTYiPjwvYT4wMDAxNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+d291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC48L3NwYW4+Ci08YSBuYW1lPSJsMDAwMTciPjwvYT4wMDAxNyA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMDE4Ij48L2E+MDAwMTggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kPC9zcGFuPgotPGEgbmFtZT0ibDAwMDE5Ij48L2E+MDAwMTkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPm11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS48L3NwYW4+Ci08YSBuYW1lPSJsMDAwMjAiPjwvYT4wMDAyMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMDIxIj48L2E+MDAwMjEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAyMiI+PC9hPjAwMDIyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij5kaXN0cmlidXRpb24uPC9zcGFuPgotPGEgbmFtZT0ibDAwMDIzIj48L2E+MDAwMjMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiovPC9zcGFuPgotPGEgbmFtZT0ibDAwMDI0Ij48L2E+MDAwMjQgCi08YSBuYW1lPSJsMDAwMjUiPjwvYT4wMDAyNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMjYiPjwvYT4wMDAyNiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogVEhJUyBGSUxFIFdBUyBBTFRFUkVEIEJZIFR5Z2UgTG92c2V0LCA3LiBBcHJpbCAyMDA1Ljwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAyNyI+PC9hPjAwMDI3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAyOCI+PC9hPjAwMDI4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gKiAtIGNvbXBsZXRlbHkgcmV3cml0dGVuLiBjb21wYWN0LCBjbGVhbiwgYW5kIGZhc3QgaW1wbGVtZW50YXRpb24uPC9zcGFuPgotPGEgbmFtZT0ibDAwMDI5Ij48L2E+MDAwMjkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqIC0gc2l6ZW9mKFRpWG1sU3RyaW5nKSA9IHBvaW50ZXIgc2l6ZSAoNCBieXRlcyBvbiAzMi1iaXQgc3lzdGVtcyk8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMzAiPjwvYT4wMDAzMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBmaXhlZCByZXNlcnZlKCkgdG8gd29yayBhcyBwZXIgc3BlY2lmaWNhdGlvbi48L3NwYW4+Ci08YSBuYW1lPSJsMDAwMzEiPjwvYT4wMDAzMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBmaXhlZCBidWdneSBjb21wYXJlcyBvcGVyYXRvcj09KCksIG9wZXJhdG9yJmx0OygpLCBhbmQgb3BlcmF0b3ImZ3Q7KCk8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMzIiPjwvYT4wMDAzMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBmaXhlZCBvcGVyYXRvcis9KCkgdG8gdGFrZSBhIGNvbnN0IHJlZiBhcmd1bWVudCwgZm9sbG93aW5nIHNwZWMuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDMzIj48L2E+MDAwMzMgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqIC0gYWRkZWQgImNvcHkiIGNvbnN0cnVjdG9yIHdpdGggbGVuZ3RoLCBhbmQgbW9zdCBjb21wYXJlIG9wZXJhdG9ycy48L3NwYW4+Ci08YSBuYW1lPSJsMDAwMzQiPjwvYT4wMDAzNCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICogLSBhZGRlZCBzd2FwKCksIGNsZWFyKCksIHNpemUoKSwgY2FwYWNpdHkoKSwgb3BlcmF0b3IrKCkuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDM1Ij48L2E+MDAwMzUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAqLzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAzNiI+PC9hPjAwMDM2IAotPGEgbmFtZT0ibDAwMDM3Ij48L2E+MDAwMzcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmbmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAwMDM4Ij48L2E+MDAwMzggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMDM5Ij48L2E+MDAwMzkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmbmRlZiBUSVhNTF9TVFJJTkdfSU5DTFVERUQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNDAiPjwvYT4wMDA0MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2RlZmluZSBUSVhNTF9TVFJJTkdfSU5DTFVERUQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNDEiPjwvYT4wMDA0MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDAwNDIiPjwvYT4wMDA0MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7YXNzZXJ0LmgmZ3Q7PC9zcGFuPgotPGEgbmFtZT0ibDAwMDQzIj48L2E+MDAwNDMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0Ozwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA0NCI+PC9hPjAwMDQ0IAotPGEgbmFtZT0ibDAwMDQ1Ij48L2E+MDAwNDUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qPC9zcGFuPgotPGEgbmFtZT0ibDAwMDQ2Ij48L2E+MDAwNDYgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIFRpWG1sU3RyaW5nIGlzIGFuIGVtdWxhdGlvbiBvZiBhIHN1YnNldCBvZiB0aGUgc3RkOjpzdHJpbmcgdGVtcGxhdGUuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDQ3Ij48L2E+MDAwNDcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIEl0cyBwdXJwb3NlIGlzIHRvIGFsbG93IGNvbXBpbGluZyBUaW55WE1MIG9uIGNvbXBpbGVycyB3aXRoIG5vIG9yIHBvb3IgU1RMIHN1cHBvcnQuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDQ4Ij48L2E+MDAwNDggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIE9ubHkgdGhlIG1lbWJlciBmdW5jdGlvbnMgcmVsZXZhbnQgdG8gdGhlIFRpbnlYTUwgcHJvamVjdCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDQ5Ij48L2E+MDAwNDkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIFRoZSBidWZmZXIgYWxsb2NhdGlvbiBpcyBtYWRlIGJ5IGEgc2ltcGxpc3RpYyBwb3dlciBvZiAyIGxpa2UgbWVjaGFuaXNtIDogaWYgd2UgaW5jcmVhc2U8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNTAiPjwvYT4wMDA1MCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgYSBzdHJpbmcgYW5kIHRoZXJlJ3Mgbm8gbW9yZSByb29tLCB3ZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0d2ljZSBhcyBiaWcgYXMgd2UgbmVlZC48L3NwYW4+Ci08YSBuYW1lPSJsMDAwNTEiPjwvYT4wMDA1MSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ki88L3NwYW4+Ci08YSBuYW1lPSJsMDAwNTIiPjwvYT4wMDA1MiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPlRpWG1sU3RyaW5nCi08YSBuYW1lPSJsMDAwNTMiPjwvYT4wMDA1MyB7Ci08YSBuYW1lPSJsMDAwNTQiPjwvYT4wMDA1NCAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDoKLTxhIG5hbWU9ImwwMDA1NSI+PC9hPjAwMDU1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGhlIHNpemUgdHlwZSB1c2VkPC9zcGFuPgotPGEgbmFtZT0ibDAwMDU2Ij48L2E+MDAwNTYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50eXBlZGVmPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gc2l6ZV90eXBlOwotPGEgbmFtZT0ibDAwMDU3Ij48L2E+MDAwNTcgCi08YSBuYW1lPSJsMDAwNTgiPjwvYT4wMDA1OCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEVycm9yIHZhbHVlIGZvciBmaW5kIHByaW1pdGl2ZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA1OSI+PC9hPjAwMDU5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHNpemVfdHlwZSBucG9zOyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gPSAtMTs8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNjAiPjwvYT4wMDA2MCAKLTxhIG5hbWU9ImwwMDA2MSI+PC9hPjAwMDYxIAotPGEgbmFtZT0ibDAwMDYyIj48L2E+MDAwNjIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbFN0cmluZyBlbXB0eSBjb25zdHJ1Y3Rvcjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA2MyI+PC9hPjAwMDYzICAgICBUaVhtbFN0cmluZyAoKSA6IHJlcF8oJmFtcDtudWxscmVwXykKLTxhIG5hbWU9ImwwMDA2NCI+PC9hPjAwMDY0ICAgICB7Ci08YSBuYW1lPSJsMDAwNjUiPjwvYT4wMDA2NSAgICAgfQotPGEgbmFtZT0ibDAwMDY2Ij48L2E+MDAwNjYgCi08YSBuYW1lPSJsMDAwNjciPjwvYT4wMDA2NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sU3RyaW5nIGNvcHkgY29uc3RydWN0b3I8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNjgiPjwvYT4wMDA2OCAgICAgVGlYbWxTdHJpbmcgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgY29weSkKLTxhIG5hbWU9ImwwMDA2OSI+PC9hPjAwMDY5ICAgICB7Ci08YSBuYW1lPSJsMDAwNzAiPjwvYT4wMDA3MCAgICAgICAgIGluaXQoY29weS5sZW5ndGgoKSk7Ci08YSBuYW1lPSJsMDAwNzEiPjwvYT4wMDA3MSAgICAgICAgIG1lbWNweShzdGFydCgpLCBjb3B5LmRhdGEoKSwgbGVuZ3RoKCkpOwotPGEgbmFtZT0ibDAwMDcyIj48L2E+MDAwNzIgICAgIH0KLTxhIG5hbWU9ImwwMDA3MyI+PC9hPjAwMDczIAotPGEgbmFtZT0ibDAwMDc0Ij48L2E+MDAwNzQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbFN0cmluZyBjb25zdHJ1Y3RvciwgYmFzZWQgb24gYSBzdHJpbmc8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNzUiPjwvYT4wMDA3NSAgICAgVGlYbWxTdHJpbmcgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGNvcHkpCi08YSBuYW1lPSJsMDAwNzYiPjwvYT4wMDA3NiAgICAgewotPGEgbmFtZT0ibDAwMDc3Ij48L2E+MDAwNzcgICAgICAgICBpbml0KCBzdGF0aWNfY2FzdCZsdDtzaXplX3R5cGUmZ3Q7KCBzdHJsZW4oY29weSkgKSk7Ci08YSBuYW1lPSJsMDAwNzgiPjwvYT4wMDA3OCAgICAgICAgIG1lbWNweShzdGFydCgpLCBjb3B5LCBsZW5ndGgoKSk7Ci08YSBuYW1lPSJsMDAwNzkiPjwvYT4wMDA3OSAgICAgfQotPGEgbmFtZT0ibDAwMDgwIj48L2E+MDAwODAgCi08YSBuYW1lPSJsMDAwODEiPjwvYT4wMDA4MSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sU3RyaW5nIGNvbnN0cnVjdG9yLCBiYXNlZCBvbiBhIHN0cmluZzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA4MiI+PC9hPjAwMDgyICAgICBUaVhtbFN0cmluZyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogc3RyLCBzaXplX3R5cGUgbGVuKQotPGEgbmFtZT0ibDAwMDgzIj48L2E+MDAwODMgICAgIHsKLTxhIG5hbWU9ImwwMDA4NCI+PC9hPjAwMDg0ICAgICAgICAgaW5pdChsZW4pOwotPGEgbmFtZT0ibDAwMDg1Ij48L2E+MDAwODUgICAgICAgICBtZW1jcHkoc3RhcnQoKSwgc3RyLCBsZW4pOwotPGEgbmFtZT0ibDAwMDg2Ij48L2E+MDAwODYgICAgIH0KLTxhIG5hbWU9ImwwMDA4NyI+PC9hPjAwMDg3IAotPGEgbmFtZT0ibDAwMDg4Ij48L2E+MDAwODggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbFN0cmluZyBkZXN0cnVjdG9yPC9zcGFuPgotPGEgbmFtZT0ibDAwMDg5Ij48L2E+MDAwODkgICAgIH5UaVhtbFN0cmluZyAoKQotPGEgbmFtZT0ibDAwMDkwIj48L2E+MDAwOTAgICAgIHsKLTxhIG5hbWU9ImwwMDA5MSI+PC9hPjAwMDkxICAgICAgICAgcXVpdCgpOwotPGEgbmFtZT0ibDAwMDkyIj48L2E+MDAwOTIgICAgIH0KLTxhIG5hbWU9ImwwMDA5MyI+PC9hPjAwMDkzIAotPGEgbmFtZT0ibDAwMDk0Ij48L2E+MDAwOTQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyA9IG9wZXJhdG9yPC9zcGFuPgotPGEgbmFtZT0ibDAwMDk1Ij48L2E+MDAwOTUgICAgIFRpWG1sU3RyaW5nJmFtcDsgb3BlcmF0b3IgPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogY29weSkKLTxhIG5hbWU9ImwwMDA5NiI+PC9hPjAwMDk2ICAgICB7Ci08YSBuYW1lPSJsMDAwOTciPjwvYT4wMDA5NyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhc3NpZ24oIGNvcHksIChzaXplX3R5cGUpc3RybGVuKGNvcHkpKTsKLTxhIG5hbWU9ImwwMDA5OCI+PC9hPjAwMDk4ICAgICB9Ci08YSBuYW1lPSJsMDAwOTkiPjwvYT4wMDA5OSAKLTxhIG5hbWU9ImwwMDEwMCI+PC9hPjAwMTAwICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gPSBvcGVyYXRvcjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDEwMSI+PC9hPjAwMTAxICAgICBUaVhtbFN0cmluZyZhbXA7IG9wZXJhdG9yID0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgY29weSkKLTxhIG5hbWU9ImwwMDEwMiI+PC9hPjAwMTAyICAgICB7Ci08YSBuYW1lPSJsMDAxMDMiPjwvYT4wMDEwMyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhc3NpZ24oY29weS5zdGFydCgpLCBjb3B5Lmxlbmd0aCgpKTsKLTxhIG5hbWU9ImwwMDEwNCI+PC9hPjAwMTA0ICAgICB9Ci08YSBuYW1lPSJsMDAxMDUiPjwvYT4wMDEwNSAKLTxhIG5hbWU9ImwwMDEwNiI+PC9hPjAwMTA2IAotPGEgbmFtZT0ibDAwMTA3Ij48L2E+MDAxMDcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyArPSBvcGVyYXRvci4gTWFwcyB0byBhcHBlbmQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAxMDgiPjwvYT4wMDEwOCAgICAgVGlYbWxTdHJpbmcmYW1wOyBvcGVyYXRvciArPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogc3VmZml4KQotPGEgbmFtZT0ibDAwMTA5Ij48L2E+MDAxMDkgICAgIHsKLTxhIG5hbWU9ImwwMDExMCI+PC9hPjAwMTEwICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGFwcGVuZChzdWZmaXgsIHN0YXRpY19jYXN0Jmx0O3NpemVfdHlwZSZndDsoIHN0cmxlbihzdWZmaXgpICkpOwotPGEgbmFtZT0ibDAwMTExIj48L2E+MDAxMTEgICAgIH0KLTxhIG5hbWU9ImwwMDExMiI+PC9hPjAwMTEyIAotPGEgbmFtZT0ibDAwMTEzIj48L2E+MDAxMTMgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyArPSBvcGVyYXRvci4gTWFwcyB0byBhcHBlbmQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAxMTQiPjwvYT4wMDExNCAgICAgVGlYbWxTdHJpbmcmYW1wOyBvcGVyYXRvciArPSAoPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiBzaW5nbGUpCi08YSBuYW1lPSJsMDAxMTUiPjwvYT4wMDExNSAgICAgewotPGEgbmFtZT0ibDAwMTE2Ij48L2E+MDAxMTYgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXBwZW5kKCZhbXA7c2luZ2xlLCAxKTsKLTxhIG5hbWU9ImwwMDExNyI+PC9hPjAwMTE3ICAgICB9Ci08YSBuYW1lPSJsMDAxMTgiPjwvYT4wMDExOCAKLTxhIG5hbWU9ImwwMDExOSI+PC9hPjAwMTE5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gKz0gb3BlcmF0b3IuIE1hcHMgdG8gYXBwZW5kPC9zcGFuPgotPGEgbmFtZT0ibDAwMTIwIj48L2E+MDAxMjAgICAgIFRpWG1sU3RyaW5nJmFtcDsgb3BlcmF0b3IgKz0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgc3VmZml4KQotPGEgbmFtZT0ibDAwMTIxIj48L2E+MDAxMjEgICAgIHsKLTxhIG5hbWU9ImwwMDEyMiI+PC9hPjAwMTIyICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGFwcGVuZChzdWZmaXguZGF0YSgpLCBzdWZmaXgubGVuZ3RoKCkpOwotPGEgbmFtZT0ibDAwMTIzIj48L2E+MDAxMjMgICAgIH0KLTxhIG5hbWU9ImwwMDEyNCI+PC9hPjAwMTI0IAotPGEgbmFtZT0ibDAwMTI1Ij48L2E+MDAxMjUgCi08YSBuYW1lPSJsMDAxMjYiPjwvYT4wMDEyNiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIENvbnZlcnQgYSBUaVhtbFN0cmluZyBpbnRvIGEgbnVsbC10ZXJtaW5hdGVkIGNoYXIgKjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDEyNyI+PC9hPjAwMTI3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBjX3N0ciAoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3N0cjsgfQotPGEgbmFtZT0ibDAwMTI4Ij48L2E+MDAxMjggCi08YSBuYW1lPSJsMDAxMjkiPjwvYT4wMDEyOSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIENvbnZlcnQgYSBUaVhtbFN0cmluZyBpbnRvIGEgY2hhciAqIChuZWVkIG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQpLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDEzMCI+PC9hPjAwMTMwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBkYXRhICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c3RyOyB9Ci08YSBuYW1lPSJsMDAxMzEiPjwvYT4wMDEzMSAKLTxhIG5hbWU9ImwwMDEzMiI+PC9hPjAwMTMyICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUmV0dXJuIHRoZSBsZW5ndGggb2YgYSBUaVhtbFN0cmluZzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDEzMyI+PC9hPjAwMTMzICAgICBzaXplX3R5cGUgbGVuZ3RoICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c2l6ZTsgfQotPGEgbmFtZT0ibDAwMTM0Ij48L2E+MDAxMzQgCi08YSBuYW1lPSJsMDAxMzUiPjwvYT4wMDEzNSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEFsaWFzIGZvciBsZW5ndGgoKTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDEzNiI+PC9hPjAwMTM2ICAgICBzaXplX3R5cGUgc2l6ZSAoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3NpemU7IH0KLTxhIG5hbWU9ImwwMDEzNyI+PC9hPjAwMTM3IAotPGEgbmFtZT0ibDAwMTM4Ij48L2E+MDAxMzggICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBDaGVja3MgaWYgYSBUaVhtbFN0cmluZyBpcyBlbXB0eTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDEzOSI+PC9hPjAwMTM5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGVtcHR5ICgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c2l6ZSA9PSAwOyB9Ci08YSBuYW1lPSJsMDAxNDAiPjwvYT4wMDE0MCAKLTxhIG5hbWU9ImwwMDE0MSI+PC9hPjAwMTQxICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUmV0dXJuIGNhcGFjaXR5IG9mIHN0cmluZzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDE0MiI+PC9hPjAwMTQyICAgICBzaXplX3R5cGUgY2FwYWNpdHkgKCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtjYXBhY2l0eTsgfQotPGEgbmFtZT0ibDAwMTQzIj48L2E+MDAxNDMgCi08YSBuYW1lPSJsMDAxNDQiPjwvYT4wMDE0NCAKLTxhIG5hbWU9ImwwMDE0NSI+PC9hPjAwMTQ1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gc2luZ2xlIGNoYXIgZXh0cmFjdGlvbjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDE0NiI+PC9hPjAwMTQ2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4mYW1wOyBhdCAoc2l6ZV90eXBlIGluZGV4KTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3Q8L3NwYW4+Ci08YSBuYW1lPSJsMDAxNDciPjwvYT4wMDE0NyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgIDwvc3Bhbj57Ci08YSBuYW1lPSJsMDAxNDgiPjwvYT4wMDE0OCAgICAgICAgIGFzc2VydCggaW5kZXggJmx0OyBsZW5ndGgoKSApOwotPGEgbmFtZT0ibDAwMTQ5Ij48L2E+MDAxNDkgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcmVwXy0mZ3Q7c3RyWyBpbmRleCBdOwotPGEgbmFtZT0ibDAwMTUwIj48L2E+MDAxNTAgICAgIH0KLTxhIG5hbWU9ImwwMDE1MSI+PC9hPjAwMTUxIAotPGEgbmFtZT0ibDAwMTUyIj48L2E+MDAxNTIgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbXSBvcGVyYXRvcjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDE1MyI+PC9hPjAwMTUzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+JmFtcDsgb3BlcmF0b3IgW10gKHNpemVfdHlwZSBpbmRleCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0PC9zcGFuPgotPGEgbmFtZT0ibDAwMTU0Ij48L2E+MDAxNTQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgICA8L3NwYW4+ewotPGEgbmFtZT0ibDAwMTU1Ij48L2E+MDAxNTUgICAgICAgICBhc3NlcnQoIGluZGV4ICZsdDsgbGVuZ3RoKCkgKTsKLTxhIG5hbWU9ImwwMDE1NiI+PC9hPjAwMTU2ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3N0clsgaW5kZXggXTsKLTxhIG5hbWU9ImwwMDE1NyI+PC9hPjAwMTU3ICAgICB9Ci08YSBuYW1lPSJsMDAxNTgiPjwvYT4wMDE1OCAKLTxhIG5hbWU9ImwwMDE1OSI+PC9hPjAwMTU5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gZmluZCBhIGNoYXIgaW4gYSBzdHJpbmcuIFJldHVybiBUaVhtbFN0cmluZzo6bnBvcyBpZiBub3QgZm91bmQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAxNjAiPjwvYT4wMDE2MCAgICAgc2l6ZV90eXBlIGZpbmQgKDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gbG9va3VwKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3Q8L3NwYW4+Ci08YSBuYW1lPSJsMDAxNjEiPjwvYT4wMDE2MSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgIDwvc3Bhbj57Ci08YSBuYW1lPSJsMDAxNjIiPjwvYT4wMDE2MiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBmaW5kKGxvb2t1cCwgMCk7Ci08YSBuYW1lPSJsMDAxNjMiPjwvYT4wMDE2MyAgICAgfQotPGEgbmFtZT0ibDAwMTY0Ij48L2E+MDAxNjQgCi08YSBuYW1lPSJsMDAxNjUiPjwvYT4wMDE2NSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGZpbmQgYSBjaGFyIGluIGEgc3RyaW5nIGZyb20gYW4gb2Zmc2V0LiBSZXR1cm4gVGlYbWxTdHJpbmc6Om5wb3MgaWYgbm90IGZvdW5kPC9zcGFuPgotPGEgbmFtZT0ibDAwMTY2Ij48L2E+MDAxNjYgICAgIHNpemVfdHlwZSBmaW5kICg8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IHRvZmluZCwgc2l6ZV90eXBlIG9mZnNldCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0PC9zcGFuPgotPGEgbmFtZT0ibDAwMTY3Ij48L2E+MDAxNjcgPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgICA8L3NwYW4+ewotPGEgbmFtZT0ibDAwMTY4Ij48L2E+MDAxNjggICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAob2Zmc2V0ICZndDs9IGxlbmd0aCgpKSA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbnBvczsKLTxhIG5hbWU9ImwwMDE2OSI+PC9hPjAwMTY5IAotPGEgbmFtZT0ibDAwMTcwIj48L2E+MDAxNzAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmZvcjwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogcCA9IGNfc3RyKCkgKyBvZmZzZXQ7ICpwICE9IDxzcGFuIGNsYXNzPSJjaGFybGl0ZXJhbCI+J1wwJzwvc3Bhbj47ICsrcCkKLTxhIG5hbWU9ImwwMDE3MSI+PC9hPjAwMTcxICAgICAgICAgewotPGEgbmFtZT0ibDAwMTcyIj48L2E+MDAxNzIgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoKnAgPT0gdG9maW5kKSA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gc3RhdGljX2Nhc3QmbHQ7IHNpemVfdHlwZSAmZ3Q7KCBwIC0gY19zdHIoKSApOwotPGEgbmFtZT0ibDAwMTczIj48L2E+MDAxNzMgICAgICAgICB9Ci08YSBuYW1lPSJsMDAxNzQiPjwvYT4wMDE3NCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBucG9zOwotPGEgbmFtZT0ibDAwMTc1Ij48L2E+MDAxNzUgICAgIH0KLTxhIG5hbWU9ImwwMDE3NiI+PC9hPjAwMTc2IAotPGEgbmFtZT0ibDAwMTc3Ij48L2E+MDAxNzcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gY2xlYXIgKCkKLTxhIG5hbWU9ImwwMDE3OCI+PC9hPjAwMTc4ICAgICB7Ci08YSBuYW1lPSJsMDAxNzkiPjwvYT4wMDE3OSAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vL0xlZTo8L3NwYW4+Ci08YSBuYW1lPSJsMDAxODAiPjwvYT4wMDE4MCAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vL1RoZSBvcmlnaW5hbCB3YXMganVzdCB0b28gc3RyYW5nZSwgdGhvdWdoIGNvcnJlY3Q6PC9zcGFuPgotPGEgbmFtZT0ibDAwMTgxIj48L2E+MDAxODEgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gIFRpWG1sU3RyaW5nKCkuc3dhcCgqdGhpcyk7PC9zcGFuPgotPGEgbmFtZT0ibDAwMTgyIj48L2E+MDAxODIgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly9JbnN0ZWFkIHVzZSB0aGUgcXVpdCAmYW1wOyByZS1pbml0Ojwvc3Bhbj4KLTxhIG5hbWU9ImwwMDE4MyI+PC9hPjAwMTgzICAgICAgICAgcXVpdCgpOwotPGEgbmFtZT0ibDAwMTg0Ij48L2E+MDAxODQgICAgICAgICBpbml0KDAsMCk7Ci08YSBuYW1lPSJsMDAxODUiPjwvYT4wMDE4NSAgICAgfQotPGEgbmFtZT0ibDAwMTg2Ij48L2E+MDAxODYgCi08YSBuYW1lPSJsMDAxODciPjwvYT4wMDE4NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBGdW5jdGlvbiB0byByZXNlcnZlIGEgYmlnIGFtb3VudCBvZiBkYXRhIHdoZW4gd2Uga25vdyB3ZSdsbCBuZWVkIGl0LiBCZSBhd2FyZSB0aGF0IHRoaXM8L3NwYW4+Ci08YSBuYW1lPSJsMDAxODgiPjwvYT4wMDE4OCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICBmdW5jdGlvbiBET0VTIE5PVCBjbGVhciB0aGUgY29udGVudCBvZiB0aGUgVGlYbWxTdHJpbmcgaWYgYW55IGV4aXN0cy48L3NwYW4+Ci08YSBuYW1lPSJsMDAxODkiPjwvYT4wMDE4OSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgotPGEgbmFtZT0ibDAwMTkwIj48L2E+MDAxOTAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gcmVzZXJ2ZSAoc2l6ZV90eXBlIGNhcCk7Ci08YSBuYW1lPSJsMDAxOTEiPjwvYT4wMDE5MSAKLTxhIG5hbWU9ImwwMDE5MiI+PC9hPjAwMTkyICAgICBUaVhtbFN0cmluZyZhbXA7IGFzc2lnbiAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBzdHIsIHNpemVfdHlwZSBsZW4pOwotPGEgbmFtZT0ibDAwMTkzIj48L2E+MDAxOTMgCi08YSBuYW1lPSJsMDAxOTQiPjwvYT4wMDE5NCAgICAgVGlYbWxTdHJpbmcmYW1wOyBhcHBlbmQgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogc3RyLCBzaXplX3R5cGUgbGVuKTsKLTxhIG5hbWU9ImwwMDE5NSI+PC9hPjAwMTk1IAotPGEgbmFtZT0ibDAwMTk2Ij48L2E+MDAxOTYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gc3dhcCAoVGlYbWxTdHJpbmcmYW1wOyBvdGhlcikKLTxhIG5hbWU9ImwwMDE5NyI+PC9hPjAwMTk3ICAgICB7Ci08YSBuYW1lPSJsMDAxOTgiPjwvYT4wMDE5OCAgICAgICAgIFJlcCogciA9IHJlcF87Ci08YSBuYW1lPSJsMDAxOTkiPjwvYT4wMDE5OSAgICAgICAgIHJlcF8gPSBvdGhlci5yZXBfOwotPGEgbmFtZT0ibDAwMjAwIj48L2E+MDAyMDAgICAgICAgICBvdGhlci5yZXBfID0gcjsKLTxhIG5hbWU9ImwwMDIwMSI+PC9hPjAwMjAxICAgICB9Ci08YSBuYW1lPSJsMDAyMDIiPjwvYT4wMDIwMiAKLTxhIG5hbWU9ImwwMDIwMyI+PC9hPjAwMjAzICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgotPGEgbmFtZT0ibDAwMjA0Ij48L2E+MDAyMDQgCi08YSBuYW1lPSJsMDAyMDUiPjwvYT4wMDIwNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBpbml0KHNpemVfdHlwZSBzeikgeyBpbml0KHN6LCBzeik7IH0KLTxhIG5hbWU9ImwwMDIwNiI+PC9hPjAwMjA2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IHNldF9zaXplKHNpemVfdHlwZSBzeikgeyByZXBfLSZndDtzdHJbIHJlcF8tJmd0O3NpemUgPSBzeiBdID0gPHNwYW4gY2xhc3M9ImNoYXJsaXRlcmFsIj4nXDAnPC9zcGFuPjsgfQotPGEgbmFtZT0ibDAwMjA3Ij48L2E+MDAyMDcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHN0YXJ0KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXBfLSZndDtzdHI7IH0KLTxhIG5hbWU9ImwwMDIwOCI+PC9hPjAwMjA4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBmaW5pc2goKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHJlcF8tJmd0O3N0ciArIHJlcF8tJmd0O3NpemU7IH0KLTxhIG5hbWU9ImwwMDIwOSI+PC9hPjAwMjA5IAotPGEgbmFtZT0ibDAwMjEwIj48L2E+MDAyMTAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdHJ1Y3QgPC9zcGFuPlJlcAotPGEgbmFtZT0ibDAwMjExIj48L2E+MDAyMTEgICAgIHsKLTxhIG5hbWU9ImwwMDIxMiI+PC9hPjAwMjEyICAgICAgICAgc2l6ZV90eXBlIHNpemUsIGNhcGFjaXR5OwotPGEgbmFtZT0ibDAwMjEzIj48L2E+MDAyMTMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IHN0clsxXTsKLTxhIG5hbWU9ImwwMDIxNCI+PC9hPjAwMjE0ICAgICB9OwotPGEgbmFtZT0ibDAwMjE1Ij48L2E+MDAyMTUgCi08YSBuYW1lPSJsMDAyMTYiPjwvYT4wMDIxNiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBpbml0KHNpemVfdHlwZSBzeiwgc2l6ZV90eXBlIGNhcCkKLTxhIG5hbWU9ImwwMDIxNyI+PC9hPjAwMjE3ICAgICB7Ci08YSBuYW1lPSJsMDAyMTgiPjwvYT4wMDIxOCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+IChjYXApCi08YSBuYW1lPSJsMDAyMTkiPjwvYT4wMDIxOSAgICAgICAgIHsKLTxhIG5hbWU9ImwwMDIyMCI+PC9hPjAwMjIwICAgICAgICAgICAgIHJlcF8gPSBzdGF0aWNfY2FzdCZsdDtSZXAqJmd0OyhvcGVyYXRvciBuZXcoPHNwYW4gY2xhc3M9ImtleXdvcmQiPnNpemVvZjwvc3Bhbj4oUmVwKSArIGNhcCkpOwotPGEgbmFtZT0ibDAwMjIxIj48L2E+MDAyMjEgICAgICAgICAgICAgcmVwXy0mZ3Q7c3RyWyByZXBfLSZndDtzaXplID0gc3ogXSA9IDxzcGFuIGNsYXNzPSJjaGFybGl0ZXJhbCI+J1wwJzwvc3Bhbj47Ci08YSBuYW1lPSJsMDAyMjIiPjwvYT4wMDIyMiAgICAgICAgICAgICByZXBfLSZndDtjYXBhY2l0eSA9IGNhcDsKLTxhIG5hbWU9ImwwMDIyMyI+PC9hPjAwMjIzICAgICAgICAgfQotPGEgbmFtZT0ibDAwMjI0Ij48L2E+MDAyMjQgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmVsc2U8L3NwYW4+Ci08YSBuYW1lPSJsMDAyMjUiPjwvYT4wMDIyNSAgICAgICAgIHsKLTxhIG5hbWU9ImwwMDIyNiI+PC9hPjAwMjI2ICAgICAgICAgICAgIHJlcF8gPSAmYW1wO251bGxyZXBfOwotPGEgbmFtZT0ibDAwMjI3Ij48L2E+MDAyMjcgICAgICAgICB9Ci08YSBuYW1lPSJsMDAyMjgiPjwvYT4wMDIyOCAgICAgfQotPGEgbmFtZT0ibDAwMjI5Ij48L2E+MDAyMjkgCi08YSBuYW1lPSJsMDAyMzAiPjwvYT4wMDIzMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBxdWl0KCkKLTxhIG5hbWU9ImwwMDIzMSI+PC9hPjAwMjMxICAgICB7Ci08YSBuYW1lPSJsMDAyMzIiPjwvYT4wMDIzMiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+IChyZXBfICE9ICZhbXA7bnVsbHJlcF8pCi08YSBuYW1lPSJsMDAyMzMiPjwvYT4wMDIzMyAgICAgICAgIHsKLTxhIG5hbWU9ImwwMDIzNCI+PC9hPjAwMjM0ICAgICAgICAgICAgIG9wZXJhdG9yIGRlbGV0ZShyZXBfKTsKLTxhIG5hbWU9ImwwMDIzNSI+PC9hPjAwMjM1ICAgICAgICAgfQotPGEgbmFtZT0ibDAwMjM2Ij48L2E+MDAyMzYgICAgIH0KLTxhIG5hbWU9ImwwMDIzNyI+PC9hPjAwMjM3IAotPGEgbmFtZT0ibDAwMjM4Ij48L2E+MDAyMzggICAgIFJlcCAqIHJlcF87Ci08YSBuYW1lPSJsMDAyMzkiPjwvYT4wMDIzOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gUmVwIG51bGxyZXBfOwotPGEgbmFtZT0ibDAwMjQwIj48L2E+MDAyNDAgCi08YSBuYW1lPSJsMDAyNDEiPjwvYT4wMDI0MSB9IDsKLTxhIG5hbWU9ImwwMDI0MiI+PC9hPjAwMjQyIAotPGEgbmFtZT0ibDAwMjQzIj48L2E+MDAyNDMgCi08YSBuYW1lPSJsMDAyNDQiPjwvYT4wMDI0NCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yID09ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikKLTxhIG5hbWU9ImwwMDI0NSI+PC9hPjAwMjQ1IHsKLTxhIG5hbWU9ImwwMDI0NiI+PC9hPjAwMjQ2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gICAgKCBhLmxlbmd0aCgpID09IGIubGVuZ3RoKCkgKSAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG9wdGltaXphdGlvbiBvbiBzb21lIHBsYXRmb3Jtczwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI0NyI+PC9hPjAwMjQ3ICAgICAgICAgICAgJmFtcDsmYW1wOyAoIHN0cmNtcChhLmNfc3RyKCksIGIuY19zdHIoKSkgPT0gMCApOyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gYWN0dWFsIGNvbXBhcmU8L3NwYW4+Ci08YSBuYW1lPSJsMDAyNDgiPjwvYT4wMDI0OCB9Ci08YSBuYW1lPSJsMDAyNDkiPjwvYT4wMDI0OSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICZsdDsgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKQotPGEgbmFtZT0ibDAwMjUwIj48L2E+MDAyNTAgewotPGEgbmFtZT0ibDAwMjUxIj48L2E+MDAyNTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBzdHJjbXAoYS5jX3N0cigpLCBiLmNfc3RyKCkpICZsdDsgMDsKLTxhIG5hbWU9ImwwMDI1MiI+PC9hPjAwMjUyIH0KLTxhIG5hbWU9ImwwMDI1MyI+PC9hPjAwMjUzIAotPGEgbmFtZT0ibDAwMjU0Ij48L2E+MDAyNTQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAhPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICEoYSA9PSBiKTsgfQotPGEgbmFtZT0ibDAwMjU1Ij48L2E+MDAyNTUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAmZ3Q7ICAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGIgJmx0OyBhOyB9Ci08YSBuYW1lPSJsMDAyNTYiPjwvYT4wMDI1NiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yICZsdDs9ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gIShiICZsdDsgYSk7IH0KLTxhIG5hbWU9ImwwMDI1NyI+PC9hPjAwMjU3IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3IgJmd0Oz0gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBiKSB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAhKGEgJmx0OyBiKTsgfQotPGEgbmFtZT0ibDAwMjU4Ij48L2E+MDAyNTggCi08YSBuYW1lPSJsMDAyNTkiPjwvYT4wMDI1OSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yID09ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogYikgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gc3RyY21wKGEuY19zdHIoKSwgYikgPT0gMDsgfQotPGEgbmFtZT0ibDAwMjYwIj48L2E+MDAyNjAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciA9PSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGIgPT0gYTsgfQotPGEgbmFtZT0ibDAwMjYxIj48L2E+MDAyNjEgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAhPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICEoYSA9PSBiKTsgfQotPGEgbmFtZT0ibDAwMjYyIj48L2E+MDAyNjIgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBvcGVyYXRvciAhPSAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBhLCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGIpIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICEoYiA9PSBhKTsgfQotPGEgbmFtZT0ibDAwMjYzIj48L2E+MDAyNjMgCi08YSBuYW1lPSJsMDAyNjQiPjwvYT4wMDI2NCBUaVhtbFN0cmluZyBvcGVyYXRvciArICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYik7Ci08YSBuYW1lPSJsMDAyNjUiPjwvYT4wMDI2NSBUaVhtbFN0cmluZyBvcGVyYXRvciArICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sU3RyaW5nICZhbXA7IGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogYik7Ci08YSBuYW1lPSJsMDAyNjYiPjwvYT4wMDI2NiBUaVhtbFN0cmluZyBvcGVyYXRvciArICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGEsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gVGlYbWxTdHJpbmcgJmFtcDsgYik7Ci08YSBuYW1lPSJsMDAyNjciPjwvYT4wMDI2NyAKLTxhIG5hbWU9ImwwMDI2OCI+PC9hPjAwMjY4IAotPGEgbmFtZT0ibDAwMjY5Ij48L2E+MDAyNjkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qPC9zcGFuPgotPGEgbmFtZT0ibDAwMjcwIj48L2E+MDAyNzAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgIFRpWG1sT3V0U3RyZWFtIGlzIGFuIGVtdWxhdGlvbiBvZiBzdGQ6Om9zdHJlYW0uIEl0IGlzIGJhc2VkIG9uIFRpWG1sU3RyaW5nLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3MSI+PC9hPjAwMjcxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICBPbmx5IHRoZSBvcGVyYXRvcnMgdGhhdCB3ZSBuZWVkIGZvciBUaW55WE1MIGhhdmUgYmVlbiBkZXZlbG9wcGVkLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3MiI+PC9hPjAwMjcyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4qLzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3MyI+PC9hPjAwMjczIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+VGlYbWxPdXRTdHJlYW0gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiBUaVhtbFN0cmluZwotPGEgbmFtZT0ibDAwMjc0Ij48L2E+MDAyNzQgewotPGEgbmFtZT0ibDAwMjc1Ij48L2E+MDAyNzUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gOgotPGEgbmFtZT0ibDAwMjc2Ij48L2E+MDAyNzYgCi08YSBuYW1lPSJsMDAyNzciPjwvYT4wMDI3NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRpWG1sT3V0U3RyZWFtICZsdDsmbHQ7IG9wZXJhdG9yLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3OCI+PC9hPjAwMjc4ICAgICBUaVhtbE91dFN0cmVhbSAmYW1wOyBvcGVyYXRvciAmbHQ7Jmx0OyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbFN0cmluZyAmYW1wOyBpbikKLTxhIG5hbWU9ImwwMDI3OSI+PC9hPjAwMjc5ICAgICB7Ci08YSBuYW1lPSJsMDAyODAiPjwvYT4wMDI4MCAgICAgICAgICo8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gKz0gaW47Ci08YSBuYW1lPSJsMDAyODEiPjwvYT4wMDI4MSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAqPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+OwotPGEgbmFtZT0ibDAwMjgyIj48L2E+MDAyODIgICAgIH0KLTxhIG5hbWU9ImwwMDI4MyI+PC9hPjAwMjgzIAotPGEgbmFtZT0ibDAwMjg0Ij48L2E+MDAyODQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaVhtbE91dFN0cmVhbSAmbHQ7Jmx0OyBvcGVyYXRvci48L3NwYW4+Ci08YSBuYW1lPSJsMDAyODUiPjwvYT4wMDI4NSAgICAgVGlYbWxPdXRTdHJlYW0gJmFtcDsgb3BlcmF0b3IgJmx0OyZsdDsgKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGluKQotPGEgbmFtZT0ibDAwMjg2Ij48L2E+MDAyODYgICAgIHsKLTxhIG5hbWU9ImwwMDI4NyI+PC9hPjAwMjg3ICAgICAgICAgKjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiArPSBpbjsKLTxhIG5hbWU9ImwwMDI4OCI+PC9hPjAwMjg4ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICo8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj47Ci08YSBuYW1lPSJsMDAyODkiPjwvYT4wMDI4OSAgICAgfQotPGEgbmFtZT0ibDAwMjkwIj48L2E+MDAyOTAgCi08YSBuYW1lPSJsMDAyOTEiPjwvYT4wMDI5MSB9IDsKLTxhIG5hbWU9ImwwMDI5MiI+PC9hPjAwMjkyIAotPGEgbmFtZT0ibDAwMjkzIj48L2E+MDAyOTMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmICAvLyBUSVhNTF9TVFJJTkdfSU5DTFVERUQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAyOTQiPjwvYT4wMDI5NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmICAvLyBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPC9wcmU+PC9kaXY+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvdGlueXhtbF84aC1zb3VyY2UuaHRtbCBiL2RvY3MvdGlueXhtbF84aC1zb3VyY2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczNjg3Yi4uMDAwMDAwMAotLS0gYS9kb2NzL3Rpbnl4bWxfOGgtc291cmNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDM3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5UaW55WG1sOiB0aW55eG1sLmggU291cmNlIEZpbGU8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxoMT50aW55eG1sLmg8L2gxPjxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+PGEgbmFtZT0ibDAwMDAxIj48L2E+MDAwMDEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qPC9zcGFuPgotPGEgbmFtZT0ibDAwMDAyIj48L2E+MDAwMDIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPnd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAwMyI+PC9hPjAwMDAzIDxzcGFuIGNsYXNzPSJjb21tZW50Ij5PcmlnaW5hbCBjb2RlICgyLjAgYW5kIGVhcmxpZXIgKWNvcHlyaWdodCAoYykgMjAwMC0yMDAyIExlZSBUaG9tYXNvbiAod3d3LmdyaW5uaW5nbGl6YXJkLmNvbSk8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMDQiPjwvYT4wMDAwNCA8c3BhbiBjbGFzcz0iY29tbWVudCI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMDA1Ij48L2E+MDAwMDUgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPlRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkPC9zcGFuPgotPGEgbmFtZT0ibDAwMDA2Ij48L2E+MDAwMDYgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPndhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnk8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMDciPjwvYT4wMDAwNyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAwOCI+PC9hPjAwMDA4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Ci08YSBuYW1lPSJsMDAwMDkiPjwvYT4wMDAwOSA8c3BhbiBjbGFzcz0iY29tbWVudCI+UGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55PC9zcGFuPgotPGEgbmFtZT0ibDAwMDEwIj48L2E+MDAwMTAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPnB1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAxMSI+PC9hPjAwMDExIDxzcGFuIGNsYXNzPSJjb21tZW50Ij5yZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAxMiI+PC9hPjAwMDEyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij48L3NwYW4+Ci08YSBuYW1lPSJsMDAwMTMiPjwvYT4wMDAxMyA8c3BhbiBjbGFzcz0iY29tbWVudCI+MS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAxNCI+PC9hPjAwMDE0IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5ub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXM8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMTUiPjwvYT4wMDAxNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+c29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uPC9zcGFuPgotPGEgbmFtZT0ibDAwMDE2Ij48L2E+MDAwMTYgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPndvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDE3Ij48L2E+MDAwMTcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAxOCI+PC9hPjAwMDE4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4yLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAxOSI+PC9hPjAwMDE5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij5tdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuPC9zcGFuPgotPGEgbmFtZT0ibDAwMDIwIj48L2E+MDAwMjAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAyMSI+PC9hPjAwMDIxIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4zLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2U8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMjIiPjwvYT4wMDAyMiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ZGlzdHJpYnV0aW9uLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAyMyI+PC9hPjAwMDIzIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4qLzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAyNCI+PC9hPjAwMDI0IAotPGEgbmFtZT0ibDAwMDI1Ij48L2E+MDAwMjUgCi08YSBuYW1lPSJsMDAwMjYiPjwvYT4wMDAyNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZuZGVmIFRJTllYTUxfSU5DTFVERUQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMjciPjwvYT4wMDAyNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2RlZmluZSBUSU5ZWE1MX0lOQ0xVREVEPC9zcGFuPgotPGEgbmFtZT0ibDAwMDI4Ij48L2E+MDAwMjggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMDI5Ij48L2E+MDAwMjkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmZGVmIF9NU0NfVkVSPC9zcGFuPgotPGEgbmFtZT0ibDAwMDMwIj48L2E+MDAwMzAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNwcmFnbWEgd2FybmluZyggcHVzaCApPC9zcGFuPgotPGEgbmFtZT0ibDAwMDMxIj48L2E+MDAwMzEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ1MzAgKTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAzMiI+PC9hPjAwMDMyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0Nzg2ICk8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMzMiPjwvYT4wMDAzMyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwMDM0Ij48L2E+MDAwMzQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMDM1Ij48L2E+MDAwMzUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O2N0eXBlLmgmZ3Q7PC9zcGFuPgotPGEgbmFtZT0ibDAwMDM2Ij48L2E+MDAwMzYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7PC9zcGFuPgotPGEgbmFtZT0ibDAwMDM3Ij48L2E+MDAwMzcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0Ozwvc3Bhbj4KLTxhIG5hbWU9ImwwMDAzOCI+PC9hPjAwMDM4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDs8L3NwYW4+Ci08YSBuYW1lPSJsMDAwMzkiPjwvYT4wMDAzOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7YXNzZXJ0LmgmZ3Q7PC9zcGFuPgotPGEgbmFtZT0ibDAwMDQwIj48L2E+MDAwNDAgCi08YSBuYW1lPSJsMDAwNDEiPjwvYT4wMDA0MSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gSGVscCBvdXQgd2luZG93czo8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNDIiPjwvYT4wMDA0MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWYgZGVmaW5lZCggX0RFQlVHICkgJmFtcDsmYW1wOyAhZGVmaW5lZCggREVCVUcgKTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA0MyI+PC9hPjAwMDQzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZGVmaW5lIERFQlVHPC9zcGFuPgotPGEgbmFtZT0ibDAwMDQ0Ij48L2E+MDAwNDQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA0NSI+PC9hPjAwMDQ1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA0NiI+PC9hPjAwMDQ2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZiBkZWZpbmVkKCBERUJVRyApICZhbXA7JmFtcDsgZGVmaW5lZCggX01TQ19WRVIgKTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA0NyI+PC9hPjAwMDQ3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZSAmbHQ7d2luZG93cy5oJmd0Ozwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA0OCI+PC9hPjAwMDQ4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNkZWZpbmUgVElYTUxfTE9HIE91dHB1dERlYnVnU3RyaW5nPC9zcGFuPgotPGEgbmFtZT0ibDAwMDQ5Ij48L2E+MDAwNDkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbHNlPC9zcGFuPgotPGEgbmFtZT0ibDAwMDUwIj48L2E+MDAwNTAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNkZWZpbmUgVElYTUxfTE9HIHByaW50Zjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA1MSI+PC9hPjAwMDUxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNTIiPjwvYT4wMDA1MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDAwNTMiPjwvYT4wMDA1MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA1NCI+PC9hPjAwMDU0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2luY2x1ZGUgJmx0O3N0cmluZyZndDs8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNTUiPjwvYT4wMDA1NSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2luY2x1ZGUgJmx0O2lvc3RyZWFtJmd0Ozwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA1NiI+PC9hPjAwMDU2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZGVmaW5lIFRJWE1MX1NUUklORyAgICBzdGQ6OnN0cmluZzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA1NyI+PC9hPjAwMDU3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2RlZmluZSBUSVhNTF9JU1RSRUFNICAgc3RkOjppc3RyZWFtPC9zcGFuPgotPGEgbmFtZT0ibDAwMDU4Ij48L2E+MDAwNTggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZGVmaW5lIFRJWE1MX09TVFJFQU0gICBzdGQ6Om9zdHJlYW08L3NwYW4+Ci08YSBuYW1lPSJsMDAwNTkiPjwvYT4wMDA1OSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2Vsc2U8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNjAiPjwvYT4wMDA2MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpbmNsdWRlICJ0aW55c3RyLmgiPC9zcGFuPgotPGEgbmFtZT0ibDAwMDYxIj48L2E+MDAwNjEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNkZWZpbmUgVElYTUxfU1RSSU5HICAgIFRpWG1sU3RyaW5nPC9zcGFuPgotPGEgbmFtZT0ibDAwMDYyIj48L2E+MDAwNjIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZGVmaW5lIFRJWE1MX09TVFJFQU0gICBUaVhtbE91dFN0cmVhbTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA2MyI+PC9hPjAwMDYzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4jZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNjQiPjwvYT4wMDA2NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDAwNjUiPjwvYT4wMDA2NSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gRGVwcmVjYXRlZCBsaWJyYXJ5IGZ1bmN0aW9uIGhlbGwuIENvbXBpbGVycyB3YW50IHRvIHVzZSB0aGU8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNjYiPjwvYT4wMDA2NiA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbmV3IHNhZmUgdmVyc2lvbnMuIFRoaXMgcHJvYmFibHkgZG9lc24ndCBmdWxseSBhZGRyZXNzIHRoZSBwcm9ibGVtLDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA2NyI+PC9hPjAwMDY3IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBidXQgaXQgZ2V0cyBjbG9zZXIuIFRoZXJlIGFyZSB0b28gbWFueSBjb21waWxlcnMgZm9yIG1lIHRvIGZ1bGx5PC9zcGFuPgotPGEgbmFtZT0ibDAwMDY4Ij48L2E+MDAwNjggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHRlc3QuIElmIHlvdSBnZXQgY29tcGlsYXRpb24gdHJvdWJsZXMsIHVuZGVmaW5lIFRJWE1MX1NBRkU8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNjkiPjwvYT4wMDA2OSAKLTxhIG5hbWU9ImwwMDA3MCI+PC9hPjAwMDcwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNkZWZpbmUgVElYTUxfU0FGRSAgICAgIC8vIFRpbnlYbWwgaXNuJ3QgZnVsbHkgYnVmZmVyIG92ZXJydW4gcHJvdGVjdGVkLCBzYWZlIGNvZGUuIFRoaXMgaXMgd29yayBpbiBwcm9ncmVzcy48L3NwYW4+Ci08YSBuYW1lPSJsMDAwNzEiPjwvYT4wMDA3MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmZGVmIFRJWE1MX1NBRkU8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNzIiPjwvYT4wMDA3MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmYW1wOyZhbXA7IChfTVNDX1ZFUiAmZ3Q7PSAxMjAwICk8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNzMiPjwvYT4wMDA3MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gTWljcm9zb2Z0IHZpc3VhbCBzdHVkaW8sIHZlcnNpb24gNiBhbmQgaGlnaGVyLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA3NCI+PC9hPjAwMDc0ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vI3ByYWdtYSBtZXNzYWdlKCAiVXNpbmcgX3NuKiBmdW5jdGlvbnMuIiApPC9zcGFuPgotPGEgbmFtZT0ibDAwMDc1Ij48L2E+MDAwNzUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICAgICAjZGVmaW5lIFRJWE1MX1NOUFJJTlRGIF9zbnByaW50Zjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA3NiI+PC9hPjAwMDc2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgICAgICNkZWZpbmUgVElYTUxfU05TQ0FORiAgX3Nuc2NhbmY8L3NwYW4+Ci08YSBuYW1lPSJsMDAwNzciPjwvYT4wMDA3NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbGlmIGRlZmluZWQoX19HTlVDX18pICZhbXA7JmFtcDsgKF9fR05VQ19fICZndDs9IDMgKTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA3OCI+PC9hPjAwMDc4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBHQ0MgdmVyc2lvbiAzIGFuZCBoaWdoZXIuczwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA3OSI+PC9hPjAwMDc5ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vI3dhcm5pbmcoICJVc2luZyBzbiogZnVuY3Rpb25zLiIgKTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA4MCI+PC9hPjAwMDgwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAgICAgI2RlZmluZSBUSVhNTF9TTlBSSU5URiBzbnByaW50Zjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA4MSI+PC9hPjAwMDgxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgICAgICNkZWZpbmUgVElYTUxfU05TQ0FORiAgc25zY2FuZjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDA4MiI+PC9hPjAwMDgyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj48c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwMDgzIj48L2E+MDAwODMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNlbmRpZiAgPC9zcGFuPgotPGEgbmFtZT0ibDAwMDg0Ij48L2E+MDAwODQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMDg1Ij48L2E+MDAwODUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+OwotPGEgbmFtZT0ibDAwMDg2Ij48L2E+MDAwODYgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjsKLTxhIG5hbWU9ImwwMDA4NyI+PC9hPjAwMDg3IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT47Ci08YSBuYW1lPSJsMDAwODgiPjwvYT4wMDA4OCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+OwotPGEgbmFtZT0ibDAwMDg5Ij48L2E+MDAwODkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT47Ci08YSBuYW1lPSJsMDAwOTAiPjwvYT4wMDA5MCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+OwotPGEgbmFtZT0ibDAwMDkxIj48L2E+MDAwOTEgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+OwotPGEgbmFtZT0ibDAwMDkyIj48L2E+MDAwOTIgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj5UaVhtbFBhcnNpbmdEYXRhOwotPGEgbmFtZT0ibDAwMDkzIj48L2E+MDAwOTMgCi08YSBuYW1lPSJsMDAwOTQiPjwvYT4wMDA5NCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBUSVhNTF9NQUpPUl9WRVJTSU9OID0gMjsKLTxhIG5hbWU9ImwwMDA5NSI+PC9hPjAwMDk1IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IFRJWE1MX01JTk9SX1ZFUlNJT04gPSA0OwotPGEgbmFtZT0ibDAwMDk2Ij48L2E+MDAwOTYgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gVElYTUxfUEFUQ0hfVkVSU0lPTiA9IDA7Ci08YSBuYW1lPSJsMDAwOTciPjwvYT4wMDA5NyAKLTxhIG5hbWU9ImwwMDA5OCI+PC9hPjAwMDk4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgSW50ZXJuYWwgc3RydWN0dXJlIGZvciB0cmFja2luZyBsb2NhdGlvbiBvZiBpdGVtcyA8L3NwYW4+Ci08YSBuYW1lPSJsMDAwOTkiPjwvYT4wMDA5OSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIGluIHRoZSBYTUwgZmlsZS48L3NwYW4+Ci08YSBuYW1lPSJsMDAxMDAiPjwvYT4wMDEwMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ki88L3NwYW4+Ci08YSBuYW1lPSJsMDAxMDEiPjwvYT4wMDEwMSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RydWN0IDwvc3Bhbj5UaVhtbEN1cnNvcgotPGEgbmFtZT0ibDAwMTAyIj48L2E+MDAxMDIgewotPGEgbmFtZT0ibDAwMTAzIj48L2E+MDAxMDMgICAgIFRpWG1sQ3Vyc29yKCkgICAgICAgeyBDbGVhcigpOyB9Ci08YSBuYW1lPSJsMDAxMDQiPjwvYT4wMDEwNCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDbGVhcigpICAgICAgICB7IHJvdyA9IGNvbCA9IC0xOyB9Ci08YSBuYW1lPSJsMDAxMDUiPjwvYT4wMDEwNSAKLTxhIG5hbWU9ImwwMDEwNiI+PC9hPjAwMTA2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gcm93OyAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gMCBiYXNlZC48L3NwYW4+Ci08YSBuYW1lPSJsMDAxMDciPjwvYT4wMDEwNyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGNvbDsgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIDAgYmFzZWQuPC9zcGFuPgotPGEgbmFtZT0ibDAwMTA4Ij48L2E+MDAxMDggfTsKLTxhIG5hbWU9ImwwMDEwOSI+PC9hPjAwMTA5IAotPGEgbmFtZT0ibDAwMTEwIj48L2E+MDAxMTAgCi08YSBuYW1lPSJsMDAxMTEiPjwvYT4wMDExMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gT25seSB1c2VkIGJ5IEF0dHJpYnV0ZTo6UXVlcnkgZnVuY3Rpb25zPC9zcGFuPgotPGEgbmFtZT0ibDAwMTEyIj48L2E+MDAxMTIgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmVudW08L3NwYW4+IAotPGEgbmFtZT0ibDAwMTEzIj48L2E+MDAxMTMgeyAKLTxhIG5hbWU9ImwwMDExNCI+PC9hPjAwMTE0ICAgICBUSVhNTF9TVUNDRVNTLAotPGEgbmFtZT0ibDAwMTE1Ij48L2E+MDAxMTUgICAgIFRJWE1MX05PX0FUVFJJQlVURSwKLTxhIG5hbWU9ImwwMDExNiI+PC9hPjAwMTE2ICAgICBUSVhNTF9XUk9OR19UWVBFCi08YSBuYW1lPSJsMDAxMTciPjwvYT4wMDExNyB9OwotPGEgbmFtZT0ibDAwMTE4Ij48L2E+MDAxMTggCi08YSBuYW1lPSJsMDAxMTkiPjwvYT4wMDExOSAKLTxhIG5hbWU9ImwwMDEyMCI+PC9hPjAwMTIwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBVc2VkIGJ5IHRoZSBwYXJzaW5nIHJvdXRpbmVzLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDEyMSI+PC9hPjAwMTIxIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5lbnVtPC9zcGFuPiBUaVhtbEVuY29kaW5nCi08YSBuYW1lPSJsMDAxMjIiPjwvYT4wMDEyMiB7Ci08YSBuYW1lPSJsMDAxMjMiPjwvYT4wMDEyMyAgICAgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiwKLTxhIG5hbWU9ImwwMDEyNCI+PC9hPjAwMTI0ICAgICBUSVhNTF9FTkNPRElOR19VVEY4LAotPGEgbmFtZT0ibDAwMTI1Ij48L2E+MDAxMjUgICAgIFRJWE1MX0VOQ09ESU5HX0xFR0FDWQotPGEgbmFtZT0ibDAwMTI2Ij48L2E+MDAxMjYgfTsKLTxhIG5hbWU9ImwwMDEyNyI+PC9hPjAwMTI3IAotPGEgbmFtZT0ibDAwMTI4Ij48L2E+MDAxMjggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbEVuY29kaW5nIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgPSBUSVhNTF9FTkNPRElOR19VTktOT1dOOwotPGEgbmFtZT0ibDAwMTI5Ij48L2E+MDAxMjkgCi08YSBuYW1lPSJsMDAxNTIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+MDAxNTI8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4KLTxhIG5hbWU9ImwwMDE1MyI+PC9hPjAwMTUzIHsKLTxhIG5hbWU9ImwwMDE1NCI+PC9hPjAwMTU0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+OwotPGEgbmFtZT0ibDAwMTU1Ij48L2E+MDAxNTUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT47Ci08YSBuYW1lPSJsMDAxNTYiPjwvYT4wMDE1NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+OwotPGEgbmFtZT0ibDAwMTU3Ij48L2E+MDAxNTcgCi08YSBuYW1lPSJsMDAxNTgiPjwvYT4wMDE1OCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKLTxhIG5hbWU9ImwwMDE1OSI+PC9hPjAwMTU5ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPigpIDogICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+KDApIHt9Ci08YSBuYW1lPSJsMDAxNjAiPjwvYT4wMDE2MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPigpICAgICAgICAgICAgICAgICAgICB7fQotPGEgbmFtZT0ibDAwMTYxIj48L2E+MDAxNjEgCi08YSBuYW1lPSJsMDAxNjciPjwvYT4wMDE2NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTIiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdCA8L3NwYW4+PSAwOwotPGEgbmFtZT0ibDAwMTY4Ij48L2E+MDAxNjggCi08YSBuYW1lPSJsMDAxNzUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNlMCI+MDAxNzU8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UwIj5TZXRDb25kZW5zZVdoaXRlU3BhY2U8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGNvbmRlbnNlICkgICAgICB7IGNvbmRlbnNlV2hpdGVTcGFjZSA9IGNvbmRlbnNlOyB9Ci08YSBuYW1lPSJsMDAxNzYiPjwvYT4wMDE3NiAKLTxhIG5hbWU9ImwwMDE3OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2UxIj4wMDE3ODwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjZTEiPklzV2hpdGVTcGFjZUNvbmRlbnNlZDwvYT4oKSAgICAgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGNvbmRlbnNlV2hpdGVTcGFjZTsgfQotPGEgbmFtZT0ibDAwMTc5Ij48L2E+MDAxNzkgCi08YSBuYW1lPSJsMDAxOTgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNhMyI+MDAxOTg8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTMiPlJvdzwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbG9jYXRpb24ucm93ICsgMTsgfQotPGEgbmFtZT0ibDAwMTk5Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjYTQiPjAwMTk5PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sI2E0Ij5Db2x1bW48L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGxvY2F0aW9uLmNvbCArIDE7IH0gICAgCi08YSBuYW1lPSJsMDAyMDAiPjwvYT4wMDIwMCAKLTxhIG5hbWU9ImwwMDIwMSI+PC9hPjAwMjAxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+ICBTZXRVc2VyRGF0YSggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiogdXNlciApICAgICAgICAgeyA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+ID0gdXNlcjsgfQotPGEgbmFtZT0ibDAwMjAyIj48L2E+MDAyMDIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4qIEdldFVzZXJEYXRhKCkgICAgICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+dXNlckRhdGE8L2E+OyB9Ci08YSBuYW1lPSJsMDAyMDMiPjwvYT4wMDIwMyAKLTxhIG5hbWU9ImwwMDIwNCI+PC9hPjAwMjA0ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVGFibGUgdGhhdCByZXR1cnMsIGZvciBhIGdpdmVuIGxlYWQgYnl0ZSwgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlczwvc3Bhbj4KLTxhIG5hbWU9ImwwMDIwNSI+PC9hPjAwMjA1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gaW4gdGhlIFVURi04IHNlcXVlbmNlLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDIwNiI+PC9hPjAwMjA2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiB1dGY4Qnl0ZVRhYmxlWzI1Nl07Ci08YSBuYW1lPSJsMDAyMDciPjwvYT4wMDIwNyAKLTxhIG5hbWU9ImwwMDIwOCI+PC9hPjAwMjA4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEyIj5QYXJzZTwvYT4oICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIAotPGEgbmFtZT0ibDAwMjA5Ij48L2E+MDAyMDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCAKLTxhIG5hbWU9ImwwMDIxMCI+PC9hPjAwMjEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlYbWxFbmNvZGluZyBlbmNvZGluZyA8c3BhbiBjbGFzcz0iY29tbWVudCI+Lyo9IFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKi88L3NwYW4+ICkgPSAwOwotPGEgbmFtZT0ibDAwMjExIj48L2E+MDAyMTEgCi08YSBuYW1lPSJsMDAyMTIiPjwvYT4wMDIxMiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmVudW08L3NwYW4+Ci08YSBuYW1lPSJsMDAyMTMiPjwvYT4wMDIxMyAgICAgewotPGEgbmFtZT0ibDAwMjE0Ij48L2E+MDAyMTQgICAgICAgICBUSVhNTF9OT19FUlJPUiA9IDAsCi08YSBuYW1lPSJsMDAyMTUiPjwvYT4wMDIxNSAgICAgICAgIFRJWE1MX0VSUk9SLAotPGEgbmFtZT0ibDAwMjE2Ij48L2E+MDAyMTYgICAgICAgICBUSVhNTF9FUlJPUl9PUEVOSU5HX0ZJTEUsCi08YSBuYW1lPSJsMDAyMTciPjwvYT4wMDIxNyAgICAgICAgIFRJWE1MX0VSUk9SX09VVF9PRl9NRU1PUlksCi08YSBuYW1lPSJsMDAyMTgiPjwvYT4wMDIxOCAgICAgICAgIFRJWE1MX0VSUk9SX1BBUlNJTkdfRUxFTUVOVCwKLTxhIG5hbWU9ImwwMDIxOSI+PC9hPjAwMjE5ICAgICAgICAgVElYTUxfRVJST1JfRkFJTEVEX1RPX1JFQURfRUxFTUVOVF9OQU1FLAotPGEgbmFtZT0ibDAwMjIwIj48L2E+MDAyMjAgICAgICAgICBUSVhNTF9FUlJPUl9SRUFESU5HX0VMRU1FTlRfVkFMVUUsCi08YSBuYW1lPSJsMDAyMjEiPjwvYT4wMDIyMSAgICAgICAgIFRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywKLTxhIG5hbWU9ImwwMDIyMiI+PC9hPjAwMjIyICAgICAgICAgVElYTUxfRVJST1JfUEFSU0lOR19FTVBUWSwKLTxhIG5hbWU9ImwwMDIyMyI+PC9hPjAwMjIzICAgICAgICAgVElYTUxfRVJST1JfUkVBRElOR19FTkRfVEFHLAotPGEgbmFtZT0ibDAwMjI0Ij48L2E+MDAyMjQgICAgICAgICBUSVhNTF9FUlJPUl9QQVJTSU5HX1VOS05PV04sCi08YSBuYW1lPSJsMDAyMjUiPjwvYT4wMDIyNSAgICAgICAgIFRJWE1MX0VSUk9SX1BBUlNJTkdfQ09NTUVOVCwKLTxhIG5hbWU9ImwwMDIyNiI+PC9hPjAwMjI2ICAgICAgICAgVElYTUxfRVJST1JfUEFSU0lOR19ERUNMQVJBVElPTiwKLTxhIG5hbWU9ImwwMDIyNyI+PC9hPjAwMjI3ICAgICAgICAgVElYTUxfRVJST1JfRE9DVU1FTlRfRU1QVFksCi08YSBuYW1lPSJsMDAyMjgiPjwvYT4wMDIyOCAgICAgICAgIFRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsCi08YSBuYW1lPSJsMDAyMjkiPjwvYT4wMDIyOSAgICAgICAgIFRJWE1MX0VSUk9SX1BBUlNJTkdfQ0RBVEEsCi08YSBuYW1lPSJsMDAyMzAiPjwvYT4wMDIzMCAKLTxhIG5hbWU9ImwwMDIzMSI+PC9hPjAwMjMxICAgICAgICAgVElYTUxfRVJST1JfU1RSSU5HX0NPVU5UCi08YSBuYW1lPSJsMDAyMzIiPjwvYT4wMDIzMiAgICAgfTsKLTxhIG5hbWU9ImwwMDIzMyI+PC9hPjAwMjMzIAotPGEgbmFtZT0ibDAwMjM0Ij48L2E+MDAyMzQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj46Ci08YSBuYW1lPSJsMDAyMzUiPjwvYT4wMDIzNSAKLTxhIG5hbWU9ImwwMDIzNiI+PC9hPjAwMjM2ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gU2VlIFNUTF9TVFJJTkdfQlVHPC9zcGFuPgotPGEgbmFtZT0ibDAwMjM3Ij48L2E+MDAyMzcgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBVdGlsaXR5IGNsYXNzIHRvIG92ZXJjb21lIGEgYnVnLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDIzOCI+PC9hPjAwMjM4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPlN0cmluZ1RvQnVmZmVyCi08YSBuYW1lPSJsMDAyMzkiPjwvYT4wMDIzOSAgICAgewotPGEgbmFtZT0ibDAwMjQwIj48L2E+MDAyNDAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Ci08YSBuYW1lPSJsMDAyNDEiPjwvYT4wMDI0MSAgICAgICAgIFN0cmluZ1RvQnVmZmVyKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRJWE1MX1NUUklORyZhbXA7IHN0ciApOwotPGEgbmFtZT0ibDAwMjQyIj48L2E+MDAyNDIgICAgICAgICB+U3RyaW5nVG9CdWZmZXIoKTsKLTxhIG5hbWU9ImwwMDI0MyI+PC9hPjAwMjQzICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogYnVmZmVyOwotPGEgbmFtZT0ibDAwMjQ0Ij48L2E+MDAyNDQgICAgIH07Ci08YSBuYW1lPSJsMDAyNDUiPjwvYT4wMDI0NSAKLTxhIG5hbWU9ImwwMDI0NiI+PC9hPjAwMjQ2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qICBTa2lwV2hpdGVTcGFjZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotPGEgbmFtZT0ibDAwMjQ3Ij48L2E+MDAyNDcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5pbmxpbmU8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gIElzV2hpdGVTcGFjZSggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiBjICkgICAgICAKLTxhIG5hbWU9ImwwMDI0OCI+PC9hPjAwMjQ4ICAgICB7IAotPGEgbmFtZT0ibDAwMjQ5Ij48L2E+MDAyNDkgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCBpc3NwYWNlKCAoPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj51bnNpZ25lZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPikgYyApIHx8IGMgPT0gPHNwYW4gY2xhc3M9ImNoYXJsaXRlcmFsIj4nXG4nPC9zcGFuPiB8fCBjID09IDxzcGFuIGNsYXNzPSJjaGFybGl0ZXJhbCI+J1xyJzwvc3Bhbj4gKTsgCi08YSBuYW1lPSJsMDAyNTAiPjwvYT4wMDI1MCAgICAgfQotPGEgbmFtZT0ibDAwMjUxIj48L2E+MDAyNTEgCi08YSBuYW1lPSJsMDAyNTIiPjwvYT4wMDI1MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0IChUSVhNTF9PU1RSRUFNICopIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdCA8L3NwYW4+PSAwOwotPGEgbmFtZT0ibDAwMjUzIj48L2E+MDAyNTMgCi08YSBuYW1lPSJsMDAyNTQiPjwvYT4wMDI1NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDAyNTUiPjwvYT4wMDI1NSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IFN0cmVhbVdoaXRlU3BhY2UoIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Ci08YSBuYW1lPSJsMDAyNTYiPjwvYT4wMDI1NiAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gU3RyZWFtVG8oIFRJWE1MX0lTVFJFQU0gKiBpbiwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGNoYXJhY3RlciwgVElYTUxfU1RSSU5HICogdGFnICk7Ci08YSBuYW1lPSJsMDAyNTciPjwvYT4wMDI1NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwMjU4Ij48L2E+MDAyNTggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwMjU5Ij48L2E+MDAyNTkgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgUmVhZHMgYW4gWE1MIG5hbWUgaW50byB0aGUgc3RyaW5nIHByb3ZpZGVkLiBSZXR1cm5zPC9zcGFuPgotPGEgbmFtZT0ibDAwMjYwIj48L2E+MDAyNjAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgYSBwb2ludGVyIGp1c3QgcGFzdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIG5hbWUsPC9zcGFuPgotPGEgbmFtZT0ibDAwMjYxIj48L2E+MDAyNjEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgb3IgMCBpZiB0aGUgZnVuY3Rpb24gaGFzIGFuIGVycm9yLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI2MiI+PC9hPjAwMjYyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgKi88L3NwYW4+Ci08YSBuYW1lPSJsMDAyNjMiPjwvYT4wMDI2MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBSZWFkTmFtZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUSVhNTF9TVFJJTkcqIG5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMDI2NCI+PC9hPjAwMjY0IAotPGEgbmFtZT0ibDAwMjY1Ij48L2E+MDAyNjUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vKiAgUmVhZHMgdGV4dC4gUmV0dXJucyBhIHBvaW50ZXIgcGFzdCB0aGUgZ2l2ZW4gZW5kIHRhZy48L3NwYW4+Ci08YSBuYW1lPSJsMDAyNjYiPjwvYT4wMDI2NiA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICBXaWNrZWRseSBjb21wbGV4IG9wdGlvbnMsIGJ1dCBpdCBrZWVwcyB0aGUgKHNlbnNpdGl2ZSkgY29kZSBpbiBvbmUgcGxhY2UuPC9zcGFuPgotPGEgbmFtZT0ibDAwMjY3Ij48L2E+MDAyNjcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAqLzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI2OCI+PC9hPjAwMjY4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFJlYWRUZXh0KCAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGluLCAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gd2hlcmUgdG8gc3RhcnQ8L3NwYW4+Ci08YSBuYW1lPSJsMDAyNjkiPjwvYT4wMDI2OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSVhNTF9TVFJJTkcqIHRleHQsICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHRoZSBzdHJpbmcgcmVhZDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3MCI+PC9hPjAwMjcwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gaWdub3JlV2hpdGVTcGFjZSwgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gd2hldGhlciB0byBrZWVwIHRoZSB3aGl0ZSBzcGFjZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3MSI+PC9hPjAwMjcxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogZW5kVGFnLCAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB3aGF0IGVuZHMgdGhpcyB0ZXh0PC9zcGFuPgotPGEgbmFtZT0ibDAwMjcyIj48L2E+MDAyNzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBpZ25vcmVDYXNlLCAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB3aGV0aGVyIHRvIGlnbm9yZSBjYXNlIGluIHRoZSBlbmQgdGFnPC9zcGFuPgotPGEgbmFtZT0ibDAwMjczIj48L2E+MDAyNzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB0aGUgY3VycmVudCBlbmNvZGluZzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3NCI+PC9hPjAwMjc0IAotPGEgbmFtZT0ibDAwMjc1Ij48L2E+MDAyNzUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBJZiBhbiBlbnRpdHkgaGFzIGJlZW4gZm91bmQsIHRyYW5zZm9ybSBpdCBpbnRvIGEgY2hhcmFjdGVyLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI3NiI+PC9hPjAwMjc2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIEdldEVudGl0eSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBpbiwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogbGVuZ3RoLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci08YSBuYW1lPSJsMDAyNzciPjwvYT4wMDI3NyAKLTxhIG5hbWU9ImwwMDI3OCI+PC9hPjAwMjc4ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gR2V0IGEgY2hhcmFjdGVyLCB3aGlsZSBpbnRlcnByZXRpbmcgZW50aXRpZXMuPC9zcGFuPgotPGEgbmFtZT0ibDAwMjc5Ij48L2E+MDAyNzkgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBUaGUgbGVuZ3RoIGNhbiBiZSBmcm9tIDAgdG8gNCBieXRlcy48L3NwYW4+Ci08YSBuYW1lPSJsMDAyODAiPjwvYT4wMDI4MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmlubGluZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBHZXRDaGFyKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIF92YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBsZW5ndGgsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQotPGEgbmFtZT0ibDAwMjgxIj48L2E+MDAyODEgICAgIHsKLTxhIG5hbWU9ImwwMDI4MiI+PC9hPjAwMjgyICAgICAgICAgYXNzZXJ0KCBwICk7Ci08YSBuYW1lPSJsMDAyODMiPjwvYT4wMDI4MyAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCi08YSBuYW1lPSJsMDAyODQiPjwvYT4wMDI4NCAgICAgICAgIHsKLTxhIG5hbWU9ImwwMDI4NSI+PC9hPjAwMjg1ICAgICAgICAgICAgICpsZW5ndGggPSB1dGY4Qnl0ZVRhYmxlWyAqKCg8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KilwKSBdOwotPGEgbmFtZT0ibDAwMjg2Ij48L2E+MDAyODYgICAgICAgICAgICAgYXNzZXJ0KCAqbGVuZ3RoICZndDs9IDAgJmFtcDsmYW1wOyAqbGVuZ3RoICZsdDsgNSApOwotPGEgbmFtZT0ibDAwMjg3Ij48L2E+MDAyODcgICAgICAgICB9Ci08YSBuYW1lPSJsMDAyODgiPjwvYT4wMDI4OCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+ZWxzZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDI4OSI+PC9hPjAwMjg5ICAgICAgICAgewotPGEgbmFtZT0ibDAwMjkwIj48L2E+MDAyOTAgICAgICAgICAgICAgKmxlbmd0aCA9IDE7Ci08YSBuYW1lPSJsMDAyOTEiPjwvYT4wMDI5MSAgICAgICAgIH0KLTxhIG5hbWU9ImwwMDI5MiI+PC9hPjAwMjkyIAotPGEgbmFtZT0ibDAwMjkzIj48L2E+MDAyOTMgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoICpsZW5ndGggPT0gMSApCi08YSBuYW1lPSJsMDAyOTQiPjwvYT4wMDI5NCAgICAgICAgIHsKLTxhIG5hbWU9ImwwMDI5NSI+PC9hPjAwMjk1ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+aWY8L3NwYW4+ICggKnAgPT0gPHNwYW4gY2xhc3M9ImNoYXJsaXRlcmFsIj4nJmFtcDsnPC9zcGFuPiApCi08YSBuYW1lPSJsMDAyOTYiPjwvYT4wMDI5NiAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IEdldEVudGl0eSggcCwgX3ZhbHVlLCBsZW5ndGgsIGVuY29kaW5nICk7Ci08YSBuYW1lPSJsMDAyOTciPjwvYT4wMDI5NyAgICAgICAgICAgICAqX3ZhbHVlID0gKnA7Ci08YSBuYW1lPSJsMDAyOTgiPjwvYT4wMDI5OCAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcCsxOwotPGEgbmFtZT0ibDAwMjk5Ij48L2E+MDAyOTkgICAgICAgICB9Ci08YSBuYW1lPSJsMDAzMDAiPjwvYT4wMDMwMCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+ZWxzZTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCAqbGVuZ3RoICkKLTxhIG5hbWU9ImwwMDMwMSI+PC9hPjAwMzAxICAgICAgICAgewotPGEgbmFtZT0ibDAwMzAyIj48L2E+MDAzMDIgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vc3RybmNweSggX3ZhbHVlLCBwLCAqbGVuZ3RoICk7ICAgIC8vIGxvdHMgb2YgY29tcGlsZXJzIGRvbid0IGxpa2UgdGhpcyBmdW5jdGlvbiAodW5zYWZlKSw8L3NwYW4+Ci08YSBuYW1lPSJsMDAzMDMiPjwvYT4wMDMwMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gYW5kIHRoZSBudWxsIHRlcm1pbmF0b3IgaXNuJ3QgbmVlZGVkPC9zcGFuPgotPGEgbmFtZT0ibDAwMzA0Ij48L2E+MDAzMDQgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5mb3I8L3NwYW4+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gaT0wOyBwW2ldICZhbXA7JmFtcDsgaSZsdDsqbGVuZ3RoOyArK2kgKSB7Ci08YSBuYW1lPSJsMDAzMDUiPjwvYT4wMDMwNSAgICAgICAgICAgICAgICAgX3ZhbHVlW2ldID0gcFtpXTsKLTxhIG5hbWU9ImwwMDMwNiI+PC9hPjAwMzA2ICAgICAgICAgICAgIH0KLTxhIG5hbWU9ImwwMDMwNyI+PC9hPjAwMzA3ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBwICsgKCpsZW5ndGgpOwotPGEgbmFtZT0ibDAwMzA4Ij48L2E+MDAzMDggICAgICAgICB9Ci08YSBuYW1lPSJsMDAzMDkiPjwvYT4wMDMwOSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+ZWxzZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDMxMCI+PC9hPjAwMzEwICAgICAgICAgewotPGEgbmFtZT0ibDAwMzExIj48L2E+MDAzMTEgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIE5vdCB2YWxpZCB0ZXh0Ljwvc3Bhbj4KLTxhIG5hbWU9ImwwMDMxMiI+PC9hPjAwMzEyICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAwOwotPGEgbmFtZT0ibDAwMzEzIj48L2E+MDAzMTMgICAgICAgICB9Ci08YSBuYW1lPSJsMDAzMTQiPjwvYT4wMDMxNCAgICAgfQotPGEgbmFtZT0ibDAwMzE1Ij48L2E+MDAzMTUgCi08YSBuYW1lPSJsMDAzMTYiPjwvYT4wMDMxNiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFB1dHMgYSBzdHJpbmcgdG8gYSBzdHJlYW0sIGV4cGFuZGluZyBlbnRpdGllcyBhcyBpdCBnb2VzLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDMxNyI+PC9hPjAwMzE3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gTm90ZSB0aGlzIHNob3VsZCBub3QgY29udGlhbiB0aGUgJyZsdDsnLCAnJmd0OycsIGV0Yywgb3IgdGhleSB3aWxsIGJlIHRyYW5zZm9ybWVkIGludG8gZW50aXRpZXMhPC9zcGFuPgotPGEgbmFtZT0ibDAwMzE4Ij48L2E+MDAzMTggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gUHV0U3RyaW5nKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRJWE1MX1NUUklORyZhbXA7IHN0ciwgVElYTUxfT1NUUkVBTSogb3V0ICk7Ci08YSBuYW1lPSJsMDAzMTkiPjwvYT4wMDMxOSAKLTxhIG5hbWU9ImwwMDMyMCI+PC9hPjAwMzIwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFB1dFN0cmluZyggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUSVhNTF9TVFJJTkcmYW1wOyBzdHIsIFRJWE1MX1NUUklORyogb3V0ICk7Ci08YSBuYW1lPSJsMDAzMjEiPjwvYT4wMDMyMSAKLTxhIG5hbWU9ImwwMDMyMiI+PC9hPjAwMzIyICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUmV0dXJuIHRydWUgaWYgdGhlIG5leHQgY2hhcmFjdGVycyBpbiB0aGUgc3RyZWFtIGFyZSBhbnkgb2YgdGhlIGVuZFRhZyBzZXF1ZW5jZXMuPC9zcGFuPgotPGEgbmFtZT0ibDAwMzIzIj48L2E+MDAzMjMgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBJZ25vcmUgY2FzZSBvbmx5IHdvcmtzIGZvciBlbmdsaXNoLCBhbmQgc2hvdWxkIG9ubHkgYmUgcmVsaWVkIG9uIHdoZW4gY29tcGFyaW5nPC9zcGFuPgotPGEgbmFtZT0ibDAwMzI0Ij48L2E+MDAzMjQgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB0byBFbmdsaXNoIHdvcmRzOiBTdHJpbmdFcXVhbCggcCwgInZlcnNpb24iLCB0cnVlICkgaXMgZmluZS48L3NwYW4+Ci08YSBuYW1lPSJsMDAzMjUiPjwvYT4wMDMyNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBTdHJpbmdFcXVhbCggICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLAotPGEgbmFtZT0ibDAwMzI2Ij48L2E+MDAzMjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGVuZFRhZywKLTxhIG5hbWU9ImwwMDMyNyI+PC9hPjAwMzI3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBpZ25vcmVDYXNlLAotPGEgbmFtZT0ibDAwMzI4Ij48L2E+MDAzMjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci08YSBuYW1lPSJsMDAzMjkiPjwvYT4wMDMyOSAKLTxhIG5hbWU9ImwwMDMzMCI+PC9hPjAwMzMwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIGVycm9yU3RyaW5nWyBUSVhNTF9FUlJPUl9TVFJJTkdfQ09VTlQgXTsKLTxhIG5hbWU9ImwwMDMzMSI+PC9hPjAwMzMxIAotPGEgbmFtZT0ibDAwMzMyIj48L2E+MDAzMzIgICAgIFRpWG1sQ3Vyc29yIGxvY2F0aW9uOwotPGEgbmFtZT0ibDAwMzMzIj48L2E+MDAzMzMgCi08YSBuYW1lPSJsMDAzMzUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCNwMSI+MDAzMzU8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+KiAgICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwjcDEiPnVzZXJEYXRhPC9hPjsKLTxhIG5hbWU9ImwwMDMzNiI+PC9hPjAwMzM2ICAgICAKLTxhIG5hbWU9ImwwMDMzNyI+PC9hPjAwMzM3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gTm9uZSBvZiB0aGVzZSBtZXRob2RzIGFyZSByZWxpYWJsZSBmb3IgYW55IGxhbmd1YWdlIGV4Y2VwdCBFbmdsaXNoLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDMzOCI+PC9hPjAwMzM4ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gR29vZCBmb3IgYXBwcm94aW1hdGlvbiwgbm90IGdyZWF0IGZvciBhY2N1cmFjeS48L3NwYW4+Ci08YSBuYW1lPSJsMDAzMzkiPjwvYT4wMDMzOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IElzQWxwaGEoIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dW5zaWduZWQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gYW55Qnl0ZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotPGEgbmFtZT0ibDAwMzQwIj48L2E+MDAzNDAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5zdGF0aWM8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBJc0FscGhhTnVtKCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnVuc2lnbmVkPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+IGFueUJ5dGUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMDM0MSI+PC9hPjAwMzQxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+aW5saW5lPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gVG9Mb3dlciggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IHYsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQotPGEgbmFtZT0ibDAwMzQyIj48L2E+MDAzNDIgICAgIHsKLTxhIG5hbWU9ImwwMDM0MyI+PC9hPjAwMzQzICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKLTxhIG5hbWU9ImwwMDM0NCI+PC9hPjAwMzQ0ICAgICAgICAgewotPGEgbmFtZT0ibDAwMzQ1Ij48L2E+MDAzNDUgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCB2ICZsdDsgMTI4ICkgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHRvbG93ZXIoIHYgKTsKLTxhIG5hbWU9ImwwMDM0NiI+PC9hPjAwMzQ2ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiB2OwotPGEgbmFtZT0ibDAwMzQ3Ij48L2E+MDAzNDcgICAgICAgICB9Ci08YSBuYW1lPSJsMDAzNDgiPjwvYT4wMDM0OCAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+ZWxzZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDM0OSI+PC9hPjAwMzQ5ICAgICAgICAgewotPGEgbmFtZT0ibDAwMzUwIj48L2E+MDAzNTAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHRvbG93ZXIoIHYgKTsKLTxhIG5hbWU9ImwwMDM1MSI+PC9hPjAwMzUxICAgICAgICAgfQotPGEgbmFtZT0ibDAwMzUyIj48L2E+MDAzNTIgICAgIH0KLTxhIG5hbWU9ImwwMDM1MyI+PC9hPjAwMzUzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IENvbnZlcnRVVEYzMlRvVVRGOCggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj51bnNpZ25lZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5sb25nPC9zcGFuPiBpbnB1dCwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogb3V0cHV0LCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIGxlbmd0aCApOwotPGEgbmFtZT0ibDAwMzU0Ij48L2E+MDAzNTQgCi08YSBuYW1lPSJsMDAzNTUiPjwvYT4wMDM1NSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Ci08YSBuYW1lPSJsMDAzNTYiPjwvYT4wMDM1NiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4mYW1wOyApOyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBpbXBsZW1lbnRlZC48L3NwYW4+Ci08YSBuYW1lPSJsMDAzNTciPjwvYT4wMDM1NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4mYW1wOyBiYXNlICk7ICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgYWxsb3dlZC48L3NwYW4+Ci08YSBuYW1lPSJsMDAzNTgiPjwvYT4wMDM1OCAKLTxhIG5hbWU9ImwwMDM1OSI+PC9hPjAwMzU5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RydWN0IDwvc3Bhbj5FbnRpdHkKLTxhIG5hbWU9ImwwMDM2MCI+PC9hPjAwMzYwICAgICB7Ci08YSBuYW1lPSJsMDAzNjEiPjwvYT4wMDM2MSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogICAgIHN0cjsKLTxhIG5hbWU9ImwwMDM2MiI+PC9hPjAwMzYyICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj51bnNpZ25lZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+ICAgIHN0ckxlbmd0aDsKLTxhIG5hbWU9ImwwMDM2MyI+PC9hPjAwMzYzICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAgICAgICAgICAgIGNocjsKLTxhIG5hbWU9ImwwMDM2NCI+PC9hPjAwMzY0ICAgICB9OwotPGEgbmFtZT0ibDAwMzY1Ij48L2E+MDAzNjUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5lbnVtPC9zcGFuPgotPGEgbmFtZT0ibDAwMzY2Ij48L2E+MDAzNjYgICAgIHsKLTxhIG5hbWU9ImwwMDM2NyI+PC9hPjAwMzY3ICAgICAgICAgTlVNX0VOVElUWSA9IDUsCi08YSBuYW1lPSJsMDAzNjgiPjwvYT4wMDM2OCAgICAgICAgIE1BWF9FTlRJVFlfTEVOR1RIID0gNgotPGEgbmFtZT0ibDAwMzY5Ij48L2E+MDAzNjkgCi08YSBuYW1lPSJsMDAzNzAiPjwvYT4wMDM3MCAgICAgfTsKLTxhIG5hbWU9ImwwMDM3MSI+PC9hPjAwMzcxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+c3RhdGljPC9zcGFuPiBFbnRpdHkgZW50aXR5WyBOVU1fRU5USVRZIF07Ci08YSBuYW1lPSJsMDAzNzIiPjwvYT4wMDM3MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnN0YXRpYzwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBjb25kZW5zZVdoaXRlU3BhY2U7Ci08YSBuYW1lPSJsMDAzNzMiPjwvYT4wMDM3MyB9OwotPGEgbmFtZT0ibDAwMzc0Ij48L2E+MDAzNzQgCi08YSBuYW1lPSJsMDAzNzUiPjwvYT4wMDM3NSAKLTxhIG5hbWU9ImwwMDM4MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj4wMDM4MjwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQmFzZS5odG1sIj5UaVhtbEJhc2U8L2E+Ci08YSBuYW1lPSJsMDAzODMiPjwvYT4wMDM4MyB7Ci08YSBuYW1lPSJsMDAzODQiPjwvYT4wMDM4NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+OwotPGEgbmFtZT0ibDAwMzg1Ij48L2E+MDAzODUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mcmllbmQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT47Ci08YSBuYW1lPSJsMDAzODYiPjwvYT4wMDM4NiAKLTxhIG5hbWU9ImwwMDM4NyI+PC9hPjAwMzg3IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgotPGEgbmFtZT0ibDAwMzg4Ij48L2E+MDAzODggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMICAgIDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDM4OSI+PC9hPjAwMzg5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDM5MyI+PC9hPjAwMzkzICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gc3RkOjppc3RyZWFtJmFtcDsgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjIiPm9wZXJhdG9yICZndDsmZ3Q7IDwvYT4oc3RkOjppc3RyZWFtJmFtcDsgaW4sIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYmFzZSk7Ci08YSBuYW1lPSJsMDAzOTQiPjwvYT4wMDM5NCAKLTxhIG5hbWU9ImwwMDQxMSI+PC9hPjAwNDExICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gc3RkOjpvc3RyZWFtJmFtcDsgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjbjMiPm9wZXJhdG9yJmx0OyZsdDsgPC9hPihzdGQ6Om9zdHJlYW0mYW1wOyBvdXQsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBiYXNlKTsKLTxhIG5hbWU9ImwwMDQxMiI+PC9hPjAwNDEyIAotPGEgbmFtZT0ibDAwNDE0Ij48L2E+MDA0MTQgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7IDwvYT4oc3RkOjpzdHJpbmcmYW1wOyBvdXQsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4mYW1wOyBiYXNlICk7Ci08YSBuYW1lPSJsMDA0MTUiPjwvYT4wMDQxNSAKLTxhIG5hbWU9ImwwMDQxNiI+PC9hPjAwNDE2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZWxzZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQxNyI+PC9hPjAwNDE3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBVc2VkIGludGVybmFsbHksIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQxOCI+PC9hPjAwNDE4ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gVElYTUxfT1NUUkVBTSZhbXA7IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI24zIj5vcGVyYXRvciZsdDsmbHQ7IDwvYT4oVElYTUxfT1NUUkVBTSZhbXA7IG91dCwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGJhc2UpOwotPGEgbmFtZT0ibDAwNDE5Ij48L2E+MDA0MTkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQyMCI+PC9hPjAwNDIwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQyNCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI3c3Ij4wMDQyNDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5lbnVtPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+Ci08YSBuYW1lPSJsMDA0MjUiPjwvYT4wMDQyNSAgICAgewotPGEgbmFtZT0ibDAwNDI2Ij48L2E+MDA0MjYgICAgICAgICBET0NVTUVOVCwKLTxhIG5hbWU9ImwwMDQyNyI+PC9hPjAwNDI3ICAgICAgICAgRUxFTUVOVCwKLTxhIG5hbWU9ImwwMDQyOCI+PC9hPjAwNDI4ICAgICAgICAgQ09NTUVOVCwKLTxhIG5hbWU9ImwwMDQyOSI+PC9hPjAwNDI5ICAgICAgICAgVU5LTk9XTiwKLTxhIG5hbWU9ImwwMDQzMCI+PC9hPjAwNDMwICAgICAgICAgVEVYVCwKLTxhIG5hbWU9ImwwMDQzMSI+PC9hPjAwNDMxICAgICAgICAgREVDTEFSQVRJT04sCi08YSBuYW1lPSJsMDA0MzIiPjwvYT4wMDQzMiAgICAgICAgIFRZUEVDT1VOVAotPGEgbmFtZT0ibDAwNDMzIj48L2E+MDA0MzMgICAgIH07Ci08YSBuYW1lPSJsMDA0MzQiPjwvYT4wMDQzNCAKLTxhIG5hbWU9ImwwMDQzNSI+PC9hPjAwNDM1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCk7Ci08YSBuYW1lPSJsMDA0MzYiPjwvYT4wMDQzNiAKLTxhIG5hbWU9ImwwMDQ0OSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExIj4wMDQ0OTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTEiPlZhbHVlPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdmFsdWUuY19zdHIgKCk7IH0KLTxhIG5hbWU9ImwwMDQ1MCI+PC9hPjAwNDUwIAotPGEgbmFtZT0ibDAwNDUxIj48L2E+MDA0NTEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAwNDUyIj48L2E+MDA0NTIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwNDU2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIiPjAwNDU2PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyIj5WYWx1ZVN0cjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHZhbHVlOyB9Ci08YSBuYW1lPSJsMDA0NTciPjwvYT4wMDQ1NyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwNDU4Ij48L2E+MDA0NTggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwNDY4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPjAwNDY4PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIF92YWx1ZSkgeyB2YWx1ZSA9IF92YWx1ZTt9Ci08YSBuYW1lPSJsMDA0NjkiPjwvYT4wMDQ2OSAKLTxhIG5hbWU9ImwwMDQ3MCI+PC9hPjAwNDcwIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQ3MSI+PC9hPjAwNDcxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQ3MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0Ij4wMDQ3MjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApICAgIAotPGEgbmFtZT0ibDAwNDczIj48L2E+MDA0NzMgICAgIHsgICAgIAotPGEgbmFtZT0ibDAwNDc0Ij48L2E+MDA0NzQgICAgICAgICBTdHJpbmdUb0J1ZmZlciBidWYoIF92YWx1ZSApOwotPGEgbmFtZT0ibDAwNDc1Ij48L2E+MDA0NzUgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KCBidWYuYnVmZmVyID8gYnVmLmJ1ZmZlciA6IDxzcGFuIGNsYXNzPSJzdHJpbmdsaXRlcmFsIj4iIjwvc3Bhbj4gKTsgICAgICAgCi08YSBuYW1lPSJsMDA0NzYiPjwvYT4wMDQ3NiAgICAgfSAgIAotPGEgbmFtZT0ibDAwNDc3Ij48L2E+MDA0NzcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQ3OCI+PC9hPjAwNDc4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDQ4MCI+PC9hPjAwNDgwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1Ij5DbGVhcjwvYT4oKTsKLTxhIG5hbWU9ImwwMDQ4MSI+PC9hPjAwNDgxIAotPGEgbmFtZT0ibDAwNDgzIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPjAwNDgzPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2Ij5QYXJlbnQ8L2E+KCkgICAgICAgICAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gcGFyZW50OyB9Ci08YSBuYW1lPSJsMDA0ODQiPjwvYT4wMDQ4NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYiPlBhcmVudDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHBhcmVudDsgfQotPGEgbmFtZT0ibDAwNDg1Ij48L2E+MDA0ODUgCi08YSBuYW1lPSJsMDA0ODYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+MDA0ODY8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhOCI+Rmlyc3RDaGlsZDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gICBjb25zdCAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBmaXJzdENoaWxkOyB9ICAgICAgCi08YSBuYW1lPSJsMDA0ODciPjwvYT4wMDQ4NyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPigpICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBmaXJzdENoaWxkOyB9Ci08YSBuYW1lPSJsMDA0ODgiPjwvYT4wMDQ4OCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47ICAgICAgICAgICAgCi08YSBuYW1lPSJsMDA0ODkiPjwvYT4wMDQ4OSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKTsgICAgICAgICAgICAgICAgICAgICAgICAKLTxhIG5hbWU9ImwwMDQ5MCI+PC9hPjAwNDkwIAotPGEgbmFtZT0ibDAwNDkxIj48L2E+MDA0OTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIExhc3RDaGlsZCgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGxhc3RDaGlsZDsgfSAgICAgICAKLTxhIG5hbWU9ImwwMDQ5MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2ExMyI+MDA0OTI8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogTGFzdENoaWxkKCkgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGxhc3RDaGlsZDsgfQotPGEgbmFtZT0ibDAwNDkzIj48L2E+MDA0OTMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIExhc3RDaGlsZCggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogdmFsdWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OyAgICAgICAgIAotPGEgbmFtZT0ibDAwNDk0Ij48L2E+MDA0OTQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBMYXN0Q2hpbGQoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICk7IAotPGEgbmFtZT0ibDAwNDk1Ij48L2E+MDA0OTUgCi08YSBuYW1lPSJsMDA0OTYiPjwvYT4wMDQ5NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDA0OTciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTYiPjAwNDk3PC9hPiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgPC9zcGFuPnsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTgiPkZpcnN0Q2hpbGQ8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgICB9ICAgCi08YSBuYW1lPSJsMDA0OTgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMTciPjAwNDk4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApICAgICAgICAgICAgICB7ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E4Ij5GaXJzdENoaWxkPC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICAgfSAgIAotPGEgbmFtZT0ibDAwNDk5Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE4Ij4wMDQ5OTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIExhc3RDaGlsZCggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgIDwvc3Bhbj57ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IExhc3RDaGlsZCAoX3ZhbHVlLmNfc3RyICgpKTsgfSAgIAotPGEgbmFtZT0ibDAwNTAwIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTE5Ij4wMDUwMDwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBMYXN0Q2hpbGQoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKSAgICAgICAgICAgICAgIHsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gTGFzdENoaWxkIChfdmFsdWUuY19zdHIgKCkpOyB9ICAgCi08YSBuYW1lPSJsMDA1MDEiPjwvYT4wMDUwMSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwNTAyIj48L2E+MDA1MDIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwNTE5Ij48L2E+MDA1MTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcHJldmlvdXMgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAwNTIwIj48L2E+MDA1MjAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBwcmV2aW91cyApOwotPGEgbmFtZT0ibDAwNTIxIj48L2E+MDA1MjEgCi08YSBuYW1lPSJsMDA1MjMiPjwvYT4wMDUyMyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTIwIj5JdGVyYXRlQ2hpbGRyZW48L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcHJldmlvdXMgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAwNTI0Ij48L2E+MDA1MjQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlLCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcHJldmlvdXMgKTsKLTxhIG5hbWU9ImwwMDUyNSI+PC9hPjAwNTI1IAotPGEgbmFtZT0ibDAwNTI2Ij48L2E+MDA1MjYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAwNTI3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI0Ij4wMDUyNzwvYT4gPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHByZXZpb3VzICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICA8L3NwYW4+eyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjAiPkl0ZXJhdGVDaGlsZHJlbjwvYT4gKF92YWx1ZS5jX3N0ciAoKSwgcHJldmlvdXMpOyB9ICAgCi08YSBuYW1lPSJsMDA1MjgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjUiPjAwNTI4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSwgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIHByZXZpb3VzICkgeyAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyMCI+SXRlcmF0ZUNoaWxkcmVuPC9hPiAoX3ZhbHVlLmNfc3RyICgpLCBwcmV2aW91cyk7IH0gICAKLTxhIG5hbWU9ImwwMDUyOSI+PC9hPjAwNTI5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDA1MzAiPjwvYT4wMDUzMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDA1MzQiPjwvYT4wMDUzNCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyNiI+SW5zZXJ0RW5kQ2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+JmFtcDsgYWRkVGhpcyApOwotPGEgbmFtZT0ibDAwNTM1Ij48L2E+MDA1MzUgCi08YSBuYW1lPSJsMDA1MzYiPjwvYT4wMDUzNiAKLTxhIG5hbWU9ImwwMDU0NiI+PC9hPjAwNTQ2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTI3Ij5MaW5rRW5kQ2hpbGQ8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogYWRkVGhpcyApOwotPGEgbmFtZT0ibDAwNTQ3Ij48L2E+MDA1NDcgCi08YSBuYW1lPSJsMDA1NTEiPjwvYT4wMDU1MSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EyOCI+SW5zZXJ0QmVmb3JlQ2hpbGQ8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogYmVmb3JlVGhpcywgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGFkZFRoaXMgKTsKLTxhIG5hbWU9ImwwMDU1MiI+PC9hPjAwNTUyIAotPGEgbmFtZT0ibDAwNTU2Ij48L2E+MDA1NTYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMjkiPkluc2VydEFmdGVyQ2hpbGQ8L2E+KCAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIGFmdGVyVGhpcywgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGFkZFRoaXMgKTsKLTxhIG5hbWU9ImwwMDU1NyI+PC9hPjAwNTU3IAotPGEgbmFtZT0ibDAwNTYxIj48L2E+MDA1NjEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzAiPlJlcGxhY2VDaGlsZDwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiByZXBsYWNlVGhpcywgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IHdpdGhUaGlzICk7Ci08YSBuYW1lPSJsMDA1NjIiPjwvYT4wMDU2MiAKLTxhIG5hbWU9ImwwMDU2NCI+PC9hPjAwNTY0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMSI+UmVtb3ZlQ2hpbGQ8L2E+KCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogcmVtb3ZlVGhpcyApOwotPGEgbmFtZT0ibDAwNTY1Ij48L2E+MDA1NjUgCi08YSBuYW1lPSJsMDA1NjciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPjAwNTY3PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHByZXY7IH0KLTxhIG5hbWU9ImwwMDU2OCI+PC9hPjAwNTY4ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCkgICAgICAgICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBwcmV2OyB9Ci08YSBuYW1lPSJsMDA1NjkiPjwvYT4wMDU2OSAKLTxhIG5hbWU9ImwwMDU3MSI+PC9hPjAwNTcxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDU3MiI+PC9hPjAwNTcyICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMyIj5QcmV2aW91c1NpYmxpbmc8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiApOwotPGEgbmFtZT0ibDAwNTczIj48L2E+MDA1NzMgCi08YSBuYW1lPSJsMDA1NzQiPjwvYT4wMDU3NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDA1NzUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzYiPjAwNTc1PC9hPiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgfSAgIAotPGEgbmFtZT0ibDAwNTc2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTM3Ij4wMDU3NjwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzIiPlByZXZpb3VzU2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKSAgICAgICAgICAgICB7ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzMiI+UHJldmlvdXNTaWJsaW5nPC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICB9ICAgCi08YSBuYW1lPSJsMDA1NzciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMzgiPjAwNTc3PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgIDwvc3Bhbj57ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgIH0gICAKLTxhIG5hbWU9ImwwMDU3OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2EzOSI+MDA1Nzg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUpICAgICAgICAgICAgICAgICAgeyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDAiPk5leHRTaWJsaW5nPC9hPiAoX3ZhbHVlLmNfc3RyICgpKTsgICB9ICAgCi08YSBuYW1lPSJsMDA1NzkiPjwvYT4wMDU3OSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwNTgwIj48L2E+MDA1ODAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwNTgyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj4wMDU4MjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBuZXh0OyB9Ci08YSBuYW1lPSJsMDA1ODMiPjwvYT4wMDU4MyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0MCI+TmV4dFNpYmxpbmc8L2E+KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gbmV4dDsgfQotPGEgbmFtZT0ibDAwNTg0Ij48L2E+MDA1ODQgCi08YSBuYW1lPSJsMDA1ODYiPjwvYT4wMDU4NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDU4NyI+PC9hPjAwNTg3ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQwIj5OZXh0U2libGluZzwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqICk7Ci08YSBuYW1lPSJsMDA1ODgiPjwvYT4wMDU4OCAKLTxhIG5hbWU9ImwwMDU5MyI+PC9hPjAwNTkzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAwNTk0Ij48L2E+MDA1OTQgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oKTsKLTxhIG5hbWU9ImwwMDU5NSI+PC9hPjAwNTk1IAotPGEgbmFtZT0ibDAwNjAwIj48L2E+MDA2MDAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAwNjAxIj48L2E+MDA2MDEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqICk7Ci08YSBuYW1lPSJsMDA2MDIiPjwvYT4wMDYwMiAKLTxhIG5hbWU9ImwwMDYwMyI+PC9hPjAwNjAzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDYwNCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0OCI+MDA2MDQ8L2E+IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgPC9zcGFuPnsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTQ0Ij5OZXh0U2libGluZ0VsZW1lbnQ8L2E+IChfdmFsdWUuY19zdHIgKCkpOyAgICB9ICAgCi08YSBuYW1lPSJsMDA2MDUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDkiPjAwNjA1PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E0NCI+TmV4dFNpYmxpbmdFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSkgICAgICAgICAgICAgICAgeyAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNDQiPk5leHRTaWJsaW5nRWxlbWVudDwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7ICAgIH0gICAKLTxhIG5hbWU9ImwwMDYwNiI+PC9hPjAwNjA2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDA2MDciPjwvYT4wMDYwNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDA2MDkiPjwvYT4wMDYwOSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAwNjEwIj48L2E+MDA2MTAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpOwotPGEgbmFtZT0ibDAwNjExIj48L2E+MDA2MTEgCi08YSBuYW1lPSJsMDA2MTMiPjwvYT4wMDYxMyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDYxNCI+PC9hPjAwNjE0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICk7Ci08YSBuYW1lPSJsMDA2MTUiPjwvYT4wMDYxNSAKLTxhIG5hbWU9ImwwMDYxNiI+PC9hPjAwNjE2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDYxNyI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NCI+MDA2MTc8L2E+IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgPC9zcGFuPnsgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4gKF92YWx1ZS5jX3N0ciAoKSk7IH0gICAKLTxhIG5hbWU9ImwwMDYxOCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1NSI+MDA2MTg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTUwIj5GaXJzdENoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKSAgICAgICAgICAgICAgICB7ICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E1MCI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+IChfdmFsdWUuY19zdHIgKCkpOyB9ICAgCi08YSBuYW1lPSJsMDA2MTkiPjwvYT4wMDYxOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwNjIwIj48L2E+MDA2MjAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwNjI1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij4wMDYyNTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU2Ij5UeXBlPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdHlwZTsgfQotPGEgbmFtZT0ibDAwNjI2Ij48L2E+MDA2MjYgCi08YSBuYW1lPSJsMDA2MzAiPjwvYT4wMDYzMCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTciPkdldERvY3VtZW50PC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDA2MzEiPjwvYT4wMDYzMSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU3Ij5HZXREb2N1bWVudDwvYT4oKTsKLTxhIG5hbWU9ImwwMDYzMiI+PC9hPjAwNjMyIAotPGEgbmFtZT0ibDAwNjM0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij4wMDYzNDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTU5Ij5Ob0NoaWxkcmVuPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAhZmlyc3RDaGlsZDsgfQotPGEgbmFtZT0ibDAwNjM1Ij48L2E+MDA2MzUgCi08YSBuYW1lPSJsMDA2MzYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPjAwNjM2PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjAiPlRvRG9jdW1lbnQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgY29uc3QgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBET0NVTUVOVCApID8gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiopIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCi08YSBuYW1lPSJsMDA2MzciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPjAwNjM3PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IEVMRU1FTlQgICkgPyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiopICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAotPGEgbmFtZT0ibDAwNjM4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj4wMDYzODwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4qICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjIiPlRvQ29tbWVudDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBDT01NRU5UICApID8gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4qKSAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKLTxhIG5hbWU9ImwwMDYzOSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+MDA2Mzk8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KiAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gVU5LTk9XTiAgKSA/ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KikgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCi08YSBuYW1lPSJsMDA2NDAiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPjAwNjQwPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiogICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgIGNvbnN0ICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IFRFWFQgICAgICkgPyAoPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiopICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAotPGEgbmFtZT0ibDAwNjQxIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY1Ij4wMDY0MTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj5UaVhtbERlY2xhcmF0aW9uPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY1Ij5Ub0RlY2xhcmF0aW9uPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gREVDTEFSQVRJT04gKSA/ICg8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4qKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAotPGEgbmFtZT0ibDAwNjQyIj48L2E+MDA2NDIgCi08YSBuYW1lPSJsMDA2NDMiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjYiPjAwNjQzPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYwIj5Ub0RvY3VtZW50PC9hPigpICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IERPQ1VNRU5UICkgPyAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj5UaVhtbERvY3VtZW50PC9hPiopIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCi08YSBuYW1lPSJsMDA2NDQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjciPjAwNjQ0PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjEiPlRvRWxlbWVudDwvYT4oKSAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gRUxFTUVOVCAgKSA/ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiopICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAotPGEgbmFtZT0ibDAwNjQ1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY4Ij4wMDY0NTwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+KiAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYyIj5Ub0NvbW1lbnQ8L2E+KCkgICAgICAgICAgeyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gJmFtcDsmYW1wOyB0eXBlID09IENPTU1FTlQgICkgPyAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4qKSAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+IDogMDsgfSAKLTxhIG5hbWU9ImwwMDY0NiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2OSI+MDA2NDY8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiogIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MyI+VG9Vbmtub3duPC9hPigpICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBVTktOT1dOICApID8gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KikgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiA6IDA7IH0gCi08YSBuYW1lPSJsMDA2NDciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzAiPjAwNjQ3PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4qICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjQiPlRvVGV4dDwvYT4oKSAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPiAmYW1wOyZhbXA7IHR5cGUgPT0gVEVYVCAgICAgKSA/ICg8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiopICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAotPGEgbmFtZT0ibDAwNjQ4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTcxIj4wMDY0ODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NSI+VG9EZWNsYXJhdGlvbjwvYT4oKSAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICZhbXA7JmFtcDsgdHlwZSA9PSBERUNMQVJBVElPTiApID8gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4qKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gOiAwOyB9IAotPGEgbmFtZT0ibDAwNjQ5Ij48L2E+MDA2NDkgCi08YSBuYW1lPSJsMDA2NTMiPjwvYT4wMDY1MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNzIiPkNsb25lPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdCA8L3NwYW4+PSAwOwotPGEgbmFtZT0ibDAwNjU0Ij48L2E+MDA2NTQgCi08YSBuYW1lPSJsMDA2NTUiPjwvYT4wMDY1NSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPjoKLTxhIG5hbWU9ImwwMDY1NiI+PC9hPjAwNjU2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjdzciPk5vZGVUeXBlPC9hPiBfdHlwZSApOwotPGEgbmFtZT0ibDAwNjU3Ij48L2E+MDA2NTcgCi08YSBuYW1lPSJsMDA2NTgiPjwvYT4wMDY1OCAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIENvcHkgdG8gdGhlIGFsbG9jYXRlZCBvYmplY3QuIFNoYXJlZCBmdW5jdGlvbmFsaXR5IGJldHdlZW4gQ2xvbmUsIENvcHkgY29uc3RydWN0b3IsPC9zcGFuPgotPGEgbmFtZT0ibDAwNjU5Ij48L2E+MDA2NTkgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBhbmQgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuPC9zcGFuPgotPGEgbmFtZT0ibDAwNjYwIj48L2E+MDA2NjAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29weVRvKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogdGFyZ2V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDY2MSI+PC9hPjAwNjYxIAotPGEgbmFtZT0ibDAwNjYyIj48L2E+MDA2NjIgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAwNjYzIj48L2E+MDA2NjMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFRoZSByZWFsIHdvcmsgb2YgdGhlIGlucHV0IG9wZXJhdG9yLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDY2NCI+PC9hPjAwNjY0ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0qIGluLCBUSVhNTF9TVFJJTkcqIHRhZyApID0gMDsKLTxhIG5hbWU9ImwwMDY2NSI+PC9hPjAwNjY1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDA2NjYiPjwvYT4wMDY2NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDA2NjciPjwvYT4wMDY2NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEZpZ3VyZSBvdXQgd2hhdCBpcyBhdCAqcCwgYW5kIHBhcnNlIGl0LiBSZXR1cm5zIG51bGwgaWYgaXQgaXMgbm90IGFuIHhtbCBub2RlLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDY2OCI+PC9hPjAwNjY4ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogSWRlbnRpZnkoIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogc3RhcnQsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMDY2OSI+PC9hPjAwNjY5IAotPGEgbmFtZT0ibDAwNjcwIj48L2E+MDA2NzAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiAgICAgIHBhcmVudDsKLTxhIG5hbWU9ImwwMDY3MSI+PC9hPjAwNjcxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCN3NyI+Tm9kZVR5cGU8L2E+ICAgICAgICB0eXBlOwotPGEgbmFtZT0ibDAwNjcyIj48L2E+MDA2NzIgCi08YSBuYW1lPSJsMDA2NzMiPjwvYT4wMDY3MyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qICAgICAgZmlyc3RDaGlsZDsKLTxhIG5hbWU9ImwwMDY3NCI+PC9hPjAwNjc0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogICAgICBsYXN0Q2hpbGQ7Ci08YSBuYW1lPSJsMDA2NzUiPjwvYT4wMDY3NSAKLTxhIG5hbWU9ImwwMDY3NiI+PC9hPjAwNjc2ICAgICBUSVhNTF9TVFJJTkcgICAgdmFsdWU7Ci08YSBuYW1lPSJsMDA2NzciPjwvYT4wMDY3NyAKLTxhIG5hbWU9ImwwMDY3OCI+PC9hPjAwNjc4ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogICAgICBwcmV2OwotPGEgbmFtZT0ibDAwNjc5Ij48L2E+MDA2NzkgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiAgICAgIG5leHQ7Ci08YSBuYW1lPSJsMDA2ODAiPjwvYT4wMDY4MCAKLTxhIG5hbWU9ImwwMDY4MSI+PC9hPjAwNjgxIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKLTxhIG5hbWU9ImwwMDY4MiI+PC9hPjAwNjgyICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7ICk7ICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gbm90IGltcGxlbWVudGVkLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDY4MyI+PC9hPjAwNjgzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiZhbXA7IGJhc2UgKTsgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBhbGxvd2VkLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDY4NCI+PC9hPjAwNjg0IH07Ci08YSBuYW1lPSJsMDA2ODUiPjwvYT4wMDY4NSAKLTxhIG5hbWU9ImwwMDY4NiI+PC9hPjAwNjg2IAotPGEgbmFtZT0ibDAwNjk0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+MDA2OTQ8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxCYXNlLmh0bWwiPlRpWG1sQmFzZTwvYT4KLTxhIG5hbWU9ImwwMDY5NSI+PC9hPjAwNjk1IHsKLTxhIG5hbWU9ImwwMDY5NiI+PC9hPjAwNjk2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZnJpZW5kPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y2xhc3MgPC9zcGFuPlRpWG1sQXR0cmlidXRlU2V0OwotPGEgbmFtZT0ibDAwNjk3Ij48L2E+MDA2OTcgCi08YSBuYW1lPSJsMDA2OTgiPjwvYT4wMDY5OCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKLTxhIG5hbWU9ImwwMDcwMCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTAiPjAwNzAwPC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMCI+VGlYbWxBdHRyaWJ1dGU8L2E+KCkgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEJhc2UuaHRtbCI+VGlYbWxCYXNlPC9hPigpCi08YSBuYW1lPSJsMDA3MDEiPjwvYT4wMDcwMSAgICAgewotPGEgbmFtZT0ibDAwNzAyIj48L2E+MDA3MDIgICAgICAgICBkb2N1bWVudCA9IDA7Ci08YSBuYW1lPSJsMDA3MDMiPjwvYT4wMDcwMyAgICAgICAgIHByZXYgPSBuZXh0ID0gMDsKLTxhIG5hbWU9ImwwMDcwNCI+PC9hPjAwNzA0ICAgICB9Ci08YSBuYW1lPSJsMDA3MDUiPjwvYT4wMDcwNSAKLTxhIG5hbWU9ImwwMDcwNiI+PC9hPjAwNzA2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDcwNyI+PC9hPjAwNzA3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDcwOCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTEiPjAwNzA4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMCI+VGlYbWxBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX25hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfdmFsdWUgKQotPGEgbmFtZT0ibDAwNzA5Ij48L2E+MDA3MDkgICAgIHsKLTxhIG5hbWU9ImwwMDcxMCI+PC9hPjAwNzEwICAgICAgICAgbmFtZSA9IF9uYW1lOwotPGEgbmFtZT0ibDAwNzExIj48L2E+MDA3MTEgICAgICAgICB2YWx1ZSA9IF92YWx1ZTsKLTxhIG5hbWU9ImwwMDcxMiI+PC9hPjAwNzEyICAgICAgICAgZG9jdW1lbnQgPSAwOwotPGEgbmFtZT0ibDAwNzEzIj48L2E+MDA3MTMgICAgICAgICBwcmV2ID0gbmV4dCA9IDA7Ci08YSBuYW1lPSJsMDA3MTQiPjwvYT4wMDcxNCAgICAgfQotPGEgbmFtZT0ibDAwNzE1Ij48L2E+MDA3MTUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDcxNiI+PC9hPjAwNzE2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDcxOCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTIiPjAwNzE4PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMCI+VGlYbWxBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBfbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogX3ZhbHVlICkKLTxhIG5hbWU9ImwwMDcxOSI+PC9hPjAwNzE5ICAgICB7Ci08YSBuYW1lPSJsMDA3MjAiPjwvYT4wMDcyMCAgICAgICAgIG5hbWUgPSBfbmFtZTsKLTxhIG5hbWU9ImwwMDcyMSI+PC9hPjAwNzIxICAgICAgICAgdmFsdWUgPSBfdmFsdWU7Ci08YSBuYW1lPSJsMDA3MjIiPjwvYT4wMDcyMiAgICAgICAgIGRvY3VtZW50ID0gMDsKLTxhIG5hbWU9ImwwMDcyMyI+PC9hPjAwNzIzICAgICAgICAgcHJldiA9IG5leHQgPSAwOwotPGEgbmFtZT0ibDAwNzI0Ij48L2E+MDA3MjQgICAgIH0KLTxhIG5hbWU9ImwwMDcyNSI+PC9hPjAwNzI1IAotPGEgbmFtZT0ibDAwNzI2Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMyI+MDA3MjY8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EzIj5OYW1lPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgY29uc3QgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IG5hbWUuY19zdHIgKCk7IH0gICAgICAgCi08YSBuYW1lPSJsMDA3MjciPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E0Ij4wMDcyNzwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTQiPlZhbHVlPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gdmFsdWUuY19zdHIgKCk7IH0gICAgICAKLTxhIG5hbWU9ImwwMDcyOCI+PC9hPjAwNzI4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gICAgICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNSI+SW50VmFsdWU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotPGEgbmFtZT0ibDAwNzI5Ij48L2E+MDA3MjkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiAgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2E2Ij5Eb3VibGVWYWx1ZTwvYT4oKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi08YSBuYW1lPSJsMDA3MzAiPjwvYT4wMDczMCAKLTxhIG5hbWU9ImwwMDc0MCI+PC9hPjAwNzQwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhNyI+UXVlcnlJbnRWYWx1ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogX3ZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDc0MiI+PC9hPjAwNzQyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOCI+UXVlcnlEb3VibGVWYWx1ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+ZG91YmxlPC9zcGFuPiogX3ZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDc0MyI+PC9hPjAwNzQzIAotPGEgbmFtZT0ibDAwNzQ0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOSI+MDA3NDQ8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTkiPlNldE5hbWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIF9uYW1lICkgICB7IG5hbWUgPSBfbmFtZTsgfSAgICAgICAgICAgICAgIAotPGEgbmFtZT0ibDAwNzQ1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTAiPjAwNzQ1PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMCI+U2V0VmFsdWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIF92YWx1ZSApIHsgdmFsdWUgPSBfdmFsdWU7IH0gICAgICAgICAgICAgCi08YSBuYW1lPSJsMDA3NDYiPjwvYT4wMDc0NiAKLTxhIG5hbWU9ImwwMDc0NyI+PC9hPjAwNzQ3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTExIj5TZXRJbnRWYWx1ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBfdmFsdWUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi08YSBuYW1lPSJsMDA3NDgiPjwvYT4wMDc0OCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMiI+U2V0RG91YmxlVmFsdWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4gX3ZhbHVlICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotPGEgbmFtZT0ibDAwNzQ5Ij48L2E+MDA3NDkgCi08YSBuYW1lPSJsMDA3NTAiPjwvYT4wMDc1MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDA3NTEiPjwvYT4wMDc1MSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDA3NTIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMyI+MDA3NTI8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTkiPlNldE5hbWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX25hbWUgKSAgICAKLTxhIG5hbWU9ImwwMDc1MyI+PC9hPjAwNzUzICAgICB7ICAgCi08YSBuYW1lPSJsMDA3NTQiPjwvYT4wMDc1NCAgICAgICAgIFN0cmluZ1RvQnVmZmVyIGJ1ZiggX25hbWUgKTsKLTxhIG5hbWU9ImwwMDc1NSI+PC9hPjAwNzU1ICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhOSI+U2V0TmFtZTwvYT4gKCBidWYuYnVmZmVyID8gYnVmLmJ1ZmZlciA6IDxzcGFuIGNsYXNzPSJzdHJpbmdsaXRlcmFsIj4iZXJyb3IiPC9zcGFuPiApOyAgCi08YSBuYW1lPSJsMDA3NTYiPjwvYT4wMDc1NiAgICAgfQotPGEgbmFtZT0ibDAwNzU4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTQiPjAwNzU4PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExMCI+U2V0VmFsdWU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICkgIAotPGEgbmFtZT0ibDAwNzU5Ij48L2E+MDA3NTkgICAgIHsgICAKLTxhIG5hbWU9ImwwMDc2MCI+PC9hPjAwNzYwICAgICAgICAgU3RyaW5nVG9CdWZmZXIgYnVmKCBfdmFsdWUgKTsKLTxhIG5hbWU9ImwwMDc2MSI+PC9hPjAwNzYxICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTAiPlNldFZhbHVlPC9hPiggYnVmLmJ1ZmZlciA/IGJ1Zi5idWZmZXIgOiA8c3BhbiBjbGFzcz0ic3RyaW5nbGl0ZXJhbCI+ImVycm9yIjwvc3Bhbj4gKTsgIAotPGEgbmFtZT0ibDAwNzYyIj48L2E+MDA3NjIgICAgIH0KLTxhIG5hbWU9ImwwMDc2MyI+PC9hPjAwNzYzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDA3NjQiPjwvYT4wMDc2NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDA3NjYiPjwvYT4wMDc2NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjYTE1Ij5OZXh0PC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDA3NjciPjwvYT4wMDc2NyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNSI+TmV4dDwvYT4oKTsKLTxhIG5hbWU9ImwwMDc2OSI+PC9hPjAwNzY5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMTciPlByZXZpb3VzPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDA3NzAiPjwvYT4wMDc3MCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2ExNyI+UHJldmlvdXM8L2E+KCk7Ci08YSBuYW1lPSJsMDA3NzEiPjwvYT4wMDc3MSAKLTxhIG5hbWU9ImwwMDc3MiI+PC9hPjAwNzcyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yPT0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+JmFtcDsgcmhzICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByaHMuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNyMSI+bmFtZTwvYT4gPT0gbmFtZTsgfQotPGEgbmFtZT0ibDAwNzczIj48L2E+MDA3NzMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gb3BlcmF0b3ImbHQ7KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiZhbXA7IHJocyApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IG5hbWUgJmx0OyByaHMuPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNyMSI+bmFtZTwvYT47IH0KLTxhIG5hbWU9ImwwMDc3NCI+PC9hPjAwNzc0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IG9wZXJhdG9yJmd0OyggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4mYW1wOyByaHMgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gIGNvbnN0IDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBuYW1lICZndDsgcmhzLjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwjcjEiPm5hbWU8L2E+OyB9Ci08YSBuYW1lPSJsMDA3NzUiPjwvYT4wMDc3NSAKLTxhIG5hbWU9ImwwMDc3NiI+PC9hPjAwNzc2ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIEF0dHJpYnV0ZSBwYXJzaW5nIHN0YXJ0czogZmlyc3QgbGV0dGVyIG9mIHRoZSBuYW1lPC9zcGFuPgotPGEgbmFtZT0ibDAwNzc3Ij48L2E+MDA3NzcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zOiB0aGUgbmV4dCBjaGFyIGFmdGVyIHRoZSB2YWx1ZSBlbmQgcXVvdGU8L3NwYW4+Ci08YSBuYW1lPSJsMDA3NzgiPjwvYT4wMDc3OCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICovPC9zcGFuPgotPGEgbmFtZT0ibDAwNzc5Ij48L2E+MDA3NzkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFBhcnNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMDc4MCI+PC9hPjAwNzgwIAotPGEgbmFtZT0ibDAwNzgxIj48L2E+MDA3ODEgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBQcmludHMgdGhpcyBBdHRyaWJ1dGUgdG8gYSBGSUxFIHN0cmVhbS48L3NwYW4+Ci08YSBuYW1lPSJsMDA3ODIiPjwvYT4wMDc4MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCNhMjMiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDA3ODMiPjwvYT4wMDc4MyAKLTxhIG5hbWU9ImwwMDc4NCI+PC9hPjAwNzg0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAwNzg1Ij48L2E+MDA3ODUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBbaW50ZXJuYWwgdXNlXTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDc4NiI+PC9hPjAwNzg2ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gU2V0IHRoZSBkb2N1bWVudCBwb2ludGVyIHNvIHRoZSBhdHRyaWJ1dGUgY2FuIHJlcG9ydCBlcnJvcnMuPC9zcGFuPgotPGEgbmFtZT0ibDAwNzg3Ij48L2E+MDA3ODcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU2V0RG9jdW1lbnQoIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIGRvYyApICB7IGRvY3VtZW50ID0gZG9jOyB9Ci08YSBuYW1lPSJsMDA3ODgiPjwvYT4wMDc4OCAKLTxhIG5hbWU9ImwwMDc4OSI+PC9hPjAwNzg5IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKLTxhIG5hbWU9ImwwMDc5MCI+PC9hPjAwNzkwICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sI2EwIj5UaVhtbEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+JmFtcDsgKTsgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIG5vdCBpbXBsZW1lbnRlZC48L3NwYW4+Ci08YSBuYW1lPSJsMDA3OTEiPjwvYT4wMDc5MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+JmFtcDsgYmFzZSApOyAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgYWxsb3dlZC48L3NwYW4+Ci08YSBuYW1lPSJsMDA3OTIiPjwvYT4wMDc5MiAKLTxhIG5hbWU9ImwwMDc5MyI+PC9hPjAwNzkzICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+KiAgZG9jdW1lbnQ7ICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIEEgcG9pbnRlciBiYWNrIHRvIGEgZG9jdW1lbnQsIGZvciBlcnJvciByZXBvcnRpbmcuPC9zcGFuPgotPGEgbmFtZT0ibDAwNzk0Ij48L2E+MDA3OTQgICAgIFRJWE1MX1NUUklORyBuYW1lOwotPGEgbmFtZT0ibDAwNzk1Ij48L2E+MDA3OTUgICAgIFRJWE1MX1NUUklORyB2YWx1ZTsKLTxhIG5hbWU9ImwwMDc5NiI+PC9hPjAwNzk2ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIHByZXY7Ci08YSBuYW1lPSJsMDA3OTciPjwvYT4wMDc5NyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBuZXh0OwotPGEgbmFtZT0ibDAwNzk4Ij48L2E+MDA3OTggfTsKLTxhIG5hbWU9ImwwMDc5OSI+PC9hPjAwNzk5IAotPGEgbmFtZT0ibDAwODAwIj48L2E+MDA4MDAgCi08YSBuYW1lPSJsMDA4MDEiPjwvYT4wMDgwMSA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIEEgY2xhc3MgdXNlZCB0byBtYW5hZ2UgYSBncm91cCBvZiBhdHRyaWJ1dGVzLjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDgwMiI+PC9hPjAwODAyIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgSXQgaXMgb25seSB1c2VkIGludGVybmFsbHksIGJvdGggYnkgdGhlIEVMRU1FTlQgYW5kIHRoZSBERUNMQVJBVElPTi48L3NwYW4+Ci08YSBuYW1lPSJsMDA4MDMiPjwvYT4wMDgwMyA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDgwNCI+PC9hPjAwODA0IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgVGhlIHNldCBjYW4gYmUgY2hhbmdlZCB0cmFuc3BhcmVudCB0byB0aGUgRWxlbWVudCBhbmQgRGVjbGFyYXRpb248L3NwYW4+Ci08YSBuYW1lPSJsMDA4MDUiPjwvYT4wMDgwNSA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgIGNsYXNzZXMgdGhhdCB1c2UgaXQsIGJ1dCBOT1QgdHJhbnNwYXJlbnQgdG8gdGhlIEF0dHJpYnV0ZTwvc3Bhbj4KLTxhIG5hbWU9ImwwMDgwNiI+PC9hPjAwODA2IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgd2hpY2ggaGFzIHRvIGltcGxlbWVudCBhIG5leHQoKSBhbmQgcHJldmlvdXMoKSBtZXRob2QuIFdoaWNoIG1ha2VzPC9zcGFuPgotPGEgbmFtZT0ibDAwODA3Ij48L2E+MDA4MDcgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICBpdCBhIGJpdCBwcm9ibGVtYXRpYyBhbmQgcHJldmVudHMgdGhlIHVzZSBvZiBTVEwuPC9zcGFuPgotPGEgbmFtZT0ibDAwODA4Ij48L2E+MDA4MDggPHNwYW4gY2xhc3M9ImNvbW1lbnQiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMDgwOSI+PC9hPjAwODA5IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgVGhpcyB2ZXJzaW9uIGlzIGltcGxlbWVudGVkIHdpdGggY2lyY3VsYXIgbGlzdHMgYmVjYXVzZTo8L3NwYW4+Ci08YSBuYW1lPSJsMDA4MTAiPjwvYT4wMDgxMCA8c3BhbiBjbGFzcz0iY29tbWVudCI+ICAgICAgICAtIEkgbGlrZSBjaXJjdWxhciBsaXN0czwvc3Bhbj4KLTxhIG5hbWU9ImwwMDgxMSI+PC9hPjAwODExIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIC0gaXQgZGVtb25zdHJhdGVzIHNvbWUgaW5kZXBlbmRlbmNlIGZyb20gdGhlICh0eXBpY2FsKSBkb3VibHkgbGlua2VkIGxpc3QuPC9zcGFuPgotPGEgbmFtZT0ibDAwODEyIj48L2E+MDA4MTIgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiovPC9zcGFuPgotPGEgbmFtZT0ibDAwODEzIj48L2E+MDA4MTMgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj5UaVhtbEF0dHJpYnV0ZVNldAotPGEgbmFtZT0ibDAwODE0Ij48L2E+MDA4MTQgewotPGEgbmFtZT0ibDAwODE1Ij48L2E+MDA4MTUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Ci08YSBuYW1lPSJsMDA4MTYiPjwvYT4wMDgxNiAgICAgVGlYbWxBdHRyaWJ1dGVTZXQoKTsKLTxhIG5hbWU9ImwwMDgxNyI+PC9hPjAwODE3ICAgICB+VGlYbWxBdHRyaWJ1dGVTZXQoKTsKLTxhIG5hbWU9ImwwMDgxOCI+PC9hPjAwODE4IAotPGEgbmFtZT0ibDAwODE5Ij48L2E+MDA4MTkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQWRkKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIGF0dHJpYnV0ZSApOwotPGEgbmFtZT0ibDAwODIwIj48L2E+MDA4MjAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gUmVtb3ZlKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIGF0dHJpYnV0ZSApOwotPGEgbmFtZT0ibDAwODIxIj48L2E+MDA4MjEgCi08YSBuYW1lPSJsMDA4MjIiPjwvYT4wMDgyMiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIEZpcnN0KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgY29uc3QgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCBzZW50aW5lbC5uZXh0ID09ICZhbXA7c2VudGluZWwgKSA/IDAgOiBzZW50aW5lbC5uZXh0OyB9Ci08YSBuYW1lPSJsMDA4MjMiPjwvYT4wMDgyMyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBGaXJzdCgpICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIHNlbnRpbmVsLm5leHQgPT0gJmFtcDtzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLm5leHQ7IH0KLTxhIG5hbWU9ImwwMDgyNCI+PC9hPjAwODI0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogTGFzdCgpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiAoIHNlbnRpbmVsLnByZXYgPT0gJmFtcDtzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLnByZXY7IH0KLTxhIG5hbWU9ImwwMDgyNSI+PC9hPjAwODI1ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qIExhc3QoKSAgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggc2VudGluZWwucHJldiA9PSAmYW1wO3NlbnRpbmVsICkgPyAwIDogc2VudGluZWwucHJldjsgfQotPGEgbmFtZT0ibDAwODI2Ij48L2E+MDA4MjYgCi08YSBuYW1lPSJsMDA4MjciPjwvYT4wMDgyNyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEF0dHJpYnV0ZS5odG1sIj5UaVhtbEF0dHJpYnV0ZTwvYT4qICAgRmluZCggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogbmFtZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDA4MjgiPjwvYT4wMDgyOCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiBGaW5kKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBuYW1lICk7Ci08YSBuYW1lPSJsMDA4MjkiPjwvYT4wMDgyOSAKLTxhIG5hbWU9ImwwMDgzMCI+PC9hPjAwODMwIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcml2YXRlPC9zcGFuPjoKLTxhIG5hbWU9ImwwMDgzMSI+PC9hPjAwODMxICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8qTUU6ICBCZWNhdXNlIG9mIGhpZGRlbi9kaXNhYmxlZCBjb3B5LWNvbnN0cnVrdG9yIGluIFRpWG1sQXR0cmlidXRlIChzZW50aW5lbC1lbGVtZW50KSw8L3NwYW4+Ci08YSBuYW1lPSJsMDA4MzIiPjwvYT4wMDgzMiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vKk1FOiAgdGhpcyBjbGFzcyBtdXN0IGJlIGFsc28gdXNlIGEgaGlkZGVuL2Rpc2FibGVkIGNvcHktY29uc3RydWN0b3IgISEhPC9zcGFuPgotPGEgbmFtZT0ibDAwODMzIj48L2E+MDA4MzMgICAgIFRpWG1sQXR0cmlidXRlU2V0KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IFRpWG1sQXR0cmlidXRlU2V0JmFtcDsgKTsgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgYWxsb3dlZDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDgzNCI+PC9hPjAwODM0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBUaVhtbEF0dHJpYnV0ZVNldCZhbXA7ICk7IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyBub3QgYWxsb3dlZCAoYXMgVGlYbWxBdHRyaWJ1dGUpPC9zcGFuPgotPGEgbmFtZT0ibDAwODM1Ij48L2E+MDA4MzUgCi08YSBuYW1lPSJsMDA4MzYiPjwvYT4wMDgzNiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+IHNlbnRpbmVsOwotPGEgbmFtZT0ibDAwODM3Ij48L2E+MDA4MzcgfTsKLTxhIG5hbWU9ImwwMDgzOCI+PC9hPjAwODM4IAotPGEgbmFtZT0ibDAwODM5Ij48L2E+MDA4MzkgCi08YSBuYW1lPSJsMDA4NDQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+MDA4NDQ8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPgotPGEgbmFtZT0ibDAwODQ1Ij48L2E+MDA4NDUgewotPGEgbmFtZT0ibDAwODQ2Ij48L2E+MDA4NDYgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Ci08YSBuYW1lPSJsMDA4NDgiPjwvYT4wMDg0OCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTAiPlRpWG1sRWxlbWVudDwvYT4gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGluX3ZhbHVlKTsKLTxhIG5hbWU9ImwwMDg0OSI+PC9hPjAwODQ5IAotPGEgbmFtZT0ibDAwODUwIj48L2E+MDA4NTAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAwODUxIj48L2E+MDA4NTEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwODUyIj48L2E+MDA4NTIgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EwIj5UaVhtbEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICk7Ci08YSBuYW1lPSJsMDA4NTMiPjwvYT4wMDg1MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwODU0Ij48L2E+MDA4NTQgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwODU1Ij48L2E+MDA4NTUgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EwIj5UaVhtbEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+JmFtcDsgKTsKLTxhIG5hbWU9ImwwMDg1NiI+PC9hPjAwODU2IAotPGEgbmFtZT0ibDAwODU3Ij48L2E+MDA4NTcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+JmFtcDsgYmFzZSApOwotPGEgbmFtZT0ibDAwODU4Ij48L2E+MDA4NTggCi08YSBuYW1lPSJsMDA4NTkiPjwvYT4wMDg1OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPigpOwotPGEgbmFtZT0ibDAwODYwIj48L2E+MDA4NjAgCi08YSBuYW1lPSJsMDA4NjQiPjwvYT4wMDg2NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBuYW1lICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDg2NSI+PC9hPjAwODY1IAotPGEgbmFtZT0ibDAwODcyIj48L2E+MDA4NzIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBpICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDg3MyI+PC9hPjAwODczIAotPGEgbmFtZT0ibDAwODgwIj48L2E+MDA4ODAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+KiBkICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDg4MSI+PC9hPjAwODgxIAotPGEgbmFtZT0ibDAwODg5Ij48L2E+MDA4ODkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOCI+UXVlcnlJbnRBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiogX3ZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDg5MSI+PC9hPjAwODkxICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTkiPlF1ZXJ5RG91YmxlQXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4qIF92YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDA4OTMiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTAiPjAwODkzPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMCI+UXVlcnlGbG9hdEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5mbG9hdDwvc3Bhbj4qIF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+ewotPGEgbmFtZT0ibDAwODk0Ij48L2E+MDA4OTQgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4gZDsKLTxhIG5hbWU9ImwwMDg5NSI+PC9hPjAwODk1ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IHJlc3VsdCA9IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E5Ij5RdWVyeURvdWJsZUF0dHJpYnV0ZTwvYT4oIG5hbWUsICZhbXA7ZCApOwotPGEgbmFtZT0ibDAwODk2Ij48L2E+MDA4OTYgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPmlmPC9zcGFuPiAoIHJlc3VsdCA9PSBUSVhNTF9TVUNDRVNTICkgewotPGEgbmFtZT0ibDAwODk3Ij48L2E+MDA4OTcgICAgICAgICAgICAgKl92YWx1ZSA9IChmbG9hdClkOwotPGEgbmFtZT0ibDAwODk4Ij48L2E+MDA4OTggICAgICAgICB9Ci08YSBuYW1lPSJsMDA4OTkiPjwvYT4wMDg5OSAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiByZXN1bHQ7Ci08YSBuYW1lPSJsMDA5MDAiPjwvYT4wMDkwMCAgICAgfQotPGEgbmFtZT0ibDAwOTAxIj48L2E+MDA5MDEgCi08YSBuYW1lPSJsMDA5MDUiPjwvYT4wMDkwNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogX3ZhbHVlICk7Ci08YSBuYW1lPSJsMDA5MDYiPjwvYT4wMDkwNiAKLTxhIG5hbWU9ImwwMDkwNyI+PC9hPjAwOTA3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMDkwOCI+PC9hPjAwOTA4IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhNSI+QXR0cmlidXRlPC9hPiggbmFtZS5jX3N0cigpICk7IH0KLTxhIG5hbWU9ImwwMDkwOSI+PC9hPjAwOTA5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+KiBpICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E1Ij5BdHRyaWJ1dGU8L2E+KCBuYW1lLmNfc3RyKCksIGkgKTsgfQotPGEgbmFtZT0ibDAwOTEwIj48L2E+MDA5MTAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4qIGQgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTUiPkF0dHJpYnV0ZTwvYT4oIG5hbWUuY19zdHIoKSwgZCApOyB9Ci08YSBuYW1lPSJsMDA5MTEiPjwvYT4wMDkxMSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E4Ij5RdWVyeUludEF0dHJpYnV0ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4qIF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTgiPlF1ZXJ5SW50QXR0cmlidXRlPC9hPiggbmFtZS5jX3N0cigpLCBfdmFsdWUgKTsgfQotPGEgbmFtZT0ibDAwOTEyIj48L2E+MDA5MTIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhOSI+UXVlcnlEb3VibGVBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5kb3VibGU8L3NwYW4+KiBfdmFsdWUgKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2E5Ij5RdWVyeURvdWJsZUF0dHJpYnV0ZTwvYT4oIG5hbWUuY19zdHIoKSwgX3ZhbHVlICk7IH0KLTxhIG5hbWU9ImwwMDkxMyI+PC9hPjAwOTEzIAotPGEgbmFtZT0ibDAwOTE1Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTE3Ij4wMDkxNTwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTExIj5TZXRBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApIAotPGEgbmFtZT0ibDAwOTE2Ij48L2E+MDA5MTYgICAgIHsgICAKLTxhIG5hbWU9ImwwMDkxNyI+PC9hPjAwOTE3ICAgICAgICAgU3RyaW5nVG9CdWZmZXIgbiggbmFtZSApOwotPGEgbmFtZT0ibDAwOTE4Ij48L2E+MDA5MTggICAgICAgICBTdHJpbmdUb0J1ZmZlciB2KCBfdmFsdWUgKTsKLTxhIG5hbWU9ImwwMDkxOSI+PC9hPjAwOTE5ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCBuLmJ1ZmZlciAmYW1wOyZhbXA7IHYuYnVmZmVyICkKLTxhIG5hbWU9ImwwMDkyMCI+PC9hPjAwOTIwICAgICAgICAgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPiAobi5idWZmZXIsIHYuYnVmZmVyICk7IAotPGEgbmFtZT0ibDAwOTIxIj48L2E+MDA5MjEgICAgIH0gICAKLTxhIG5hbWU9ImwwMDkyMyI+PC9hPjAwOTIzICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2ExMSI+U2V0QXR0cmlidXRlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IG5hbWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBfdmFsdWUgKSAgICAKLTxhIG5hbWU9ImwwMDkyNCI+PC9hPjAwOTI0ICAgICB7ICAgCi08YSBuYW1lPSJsMDA5MjUiPjwvYT4wMDkyNSAgICAgICAgIFN0cmluZ1RvQnVmZmVyIG4oIG5hbWUgKTsKLTxhIG5hbWU9ImwwMDkyNiI+PC9hPjAwOTI2ICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5pZjwvc3Bhbj4gKCBuLmJ1ZmZlciApCi08YSBuYW1lPSJsMDA5MjciPjwvYT4wMDkyNyAgICAgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMTEiPlNldEF0dHJpYnV0ZTwvYT4gKG4uYnVmZmVyLCBfdmFsdWUpOyAgICAKLTxhIG5hbWU9ImwwMDkyOCI+PC9hPjAwOTI4ICAgICB9ICAgCi08YSBuYW1lPSJsMDA5MjkiPjwvYT4wMDkyOSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwOTMwIj48L2E+MDA5MzAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwOTM0Ij48L2E+MDA5MzQgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTExIj5TZXRBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gdmFsdWUgKTsKLTxhIG5hbWU9ImwwMDkzNSI+PC9hPjAwOTM1IAotPGEgbmFtZT0ibDAwOTM5Ij48L2E+MDA5MzkgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIwIj5TZXREb3VibGVBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBuYW1lLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmRvdWJsZTwvc3Bhbj4gdmFsdWUgKTsKLTxhIG5hbWU9ImwwMDk0MCI+PC9hPjAwOTQwIAotPGEgbmFtZT0ibDAwOTQzIj48L2E+MDA5NDMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIxIj5SZW1vdmVBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBuYW1lICk7Ci08YSBuYW1lPSJsMDA5NDQiPjwvYT4wMDk0NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDA5NDUiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjIiPjAwOTQ1PC9hPiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIxIj5SZW1vdmVBdHRyaWJ1dGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgbmFtZSApIHsgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjEiPlJlbW92ZUF0dHJpYnV0ZTwvYT4gKG5hbWUuY19zdHIgKCkpOyAgICB9ICAgCi08YSBuYW1lPSJsMDA5NDYiPjwvYT4wMDk0NiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAwOTQ3Ij48L2E+MDA5NDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAwOTQ4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIzIj4wMDk0ODwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjMiPkZpcnN0QXR0cmlidXRlPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXR0cmlidXRlU2V0LkZpcnN0KCk7IH0gICAgICAgIAotPGEgbmFtZT0ibDAwOTQ5Ij48L2E+MDA5NDkgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQXR0cmlidXRlLmh0bWwiPlRpWG1sQXR0cmlidXRlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTIzIj5GaXJzdEF0dHJpYnV0ZTwvYT4oKSAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsgfQotPGEgbmFtZT0ibDAwOTUwIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI1Ij4wMDk1MDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjUiPkxhc3RBdHRyaWJ1dGU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+ICAgY29uc3QgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gYXR0cmlidXRlU2V0Lkxhc3QoKTsgfSAgICAgCi08YSBuYW1lPSJsMDA5NTEiPjwvYT4wMDk1MSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxBdHRyaWJ1dGUuaHRtbCI+VGlYbWxBdHRyaWJ1dGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCNhMjUiPkxhc3RBdHRyaWJ1dGU8L2E+KCkgICAgICAgICAgICAgICAgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGF0dHJpYnV0ZVNldC5MYXN0KCk7IH0KLTxhIG5hbWU9ImwwMDk1MiI+PC9hPjAwOTUyIAotPGEgbmFtZT0ibDAwOTg1Ij48L2E+MDA5ODUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI3Ij5HZXRUZXh0PC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDA5ODYiPjwvYT4wMDk4NiAKLTxhIG5hbWU9ImwwMDk4OCI+PC9hPjAwOTg4ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sI2EyOCI+Q2xvbmU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMDk4OSI+PC9hPjAwOTg5ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gUHJpbnQgdGhlIEVsZW1lbnQgdG8gYSBGSUxFIHN0cmVhbS48L3NwYW4+Ci08YSBuYW1lPSJsMDA5OTAiPjwvYT4wMDk5MCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwjYTI5Ij5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAwOTkxIj48L2E+MDA5OTEgCi08YSBuYW1lPSJsMDA5OTIiPjwvYT4wMDk5MiAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8qICBBdHRyaWJ0dWUgcGFyc2luZyBzdGFydHM6IG5leHQgY2hhciBwYXN0ICcmbHQ7Jzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDk5MyI+PC9hPjAwOTkzIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuczogbmV4dCBjaGFyIHBhc3QgJyZndDsnPC9zcGFuPgotPGEgbmFtZT0ibDAwOTk0Ij48L2E+MDA5OTQgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAqLzwvc3Bhbj4KLTxhIG5hbWU9ImwwMDk5NSI+PC9hPjAwOTk1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBQYXJzZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci08YSBuYW1lPSJsMDA5OTYiPjwvYT4wMDk5NiAKLTxhIG5hbWU9ImwwMDk5NyI+PC9hPjAwOTk3IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+OgotPGEgbmFtZT0ibDAwOTk4Ij48L2E+MDA5OTggCi08YSBuYW1lPSJsMDA5OTkiPjwvYT4wMDk5OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb3B5VG8oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiB0YXJnZXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAxMDAwIj48L2E+MDEwMDAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ2xlYXJUaGlzKCk7ICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIGxpa2UgY2xlYXIsIGJ1dCBpbml0aWFsaXplcyAndGhpcycgb2JqZWN0IGFzIHdlbGw8L3NwYW4+Ci08YSBuYW1lPSJsMDEwMDEiPjwvYT4wMTAwMSAKLTxhIG5hbWU9ImwwMTAwMiI+PC9hPjAxMDAyICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gVXNlZCB0byBiZSBwdWJsaWMgW2ludGVybmFsIHVzZV08L3NwYW4+Ci08YSBuYW1lPSJsMDEwMDMiPjwvYT4wMTAwMyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDEwMDQiPjwvYT4wMTAwNCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKLTxhIG5hbWU9ImwwMTAwNSI+PC9hPjAxMDA1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDEwMDYiPjwvYT4wMTAwNiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIG91dCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDEwMDciPjwvYT4wMTAwNyAKLTxhIG5hbWU9ImwwMTAwOCI+PC9hPjAxMDA4ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIFtpbnRlcm5hbCB1c2VdPC9zcGFuPgotPGEgbmFtZT0ibDAxMDA5Ij48L2E+MDEwMDkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAgICAgUmVhZHMgdGhlICJ2YWx1ZSIgb2YgdGhlIGVsZW1lbnQgLS0gYW5vdGhlciBlbGVtZW50LCBvciB0ZXh0Ljwvc3Bhbj4KLTxhIG5hbWU9ImwwMTAxMCI+PC9hPjAxMDEwIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgIFRoaXMgc2hvdWxkIHRlcm1pbmF0ZSB3aXRoIHRoZSBjdXJyZW50IGVuZCB0YWcuPC9zcGFuPgotPGEgbmFtZT0ibDAxMDExIj48L2E+MDEwMTEgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAqLzwvc3Bhbj4KLTxhIG5hbWU9ImwwMTAxMiI+PC9hPjAxMDEyICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFJlYWRWYWx1ZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBpbiwgVGlYbWxQYXJzaW5nRGF0YSogcHJldkRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMTAxMyI+PC9hPjAxMDEzIAotPGEgbmFtZT0ibDAxMDE0Ij48L2E+MDEwMTQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgotPGEgbmFtZT0ibDAxMDE1Ij48L2E+MDEwMTUgCi08YSBuYW1lPSJsMDEwMTYiPjwvYT4wMTAxNiAgICAgVGlYbWxBdHRyaWJ1dGVTZXQgYXR0cmlidXRlU2V0OwotPGEgbmFtZT0ibDAxMDE3Ij48L2E+MDEwMTcgfTsKLTxhIG5hbWU9ImwwMTAxOCI+PC9hPjAxMDE4IAotPGEgbmFtZT0ibDAxMDE5Ij48L2E+MDEwMTkgCi08YSBuYW1lPSJsMDEwMjIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+MDEwMjI8L2E+IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jbGFzcyA8L3NwYW4+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4gOiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPgotPGEgbmFtZT0ibDAxMDIzIj48L2E+MDEwMjMgewotPGEgbmFtZT0ibDAxMDI0Ij48L2E+MDEwMjQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj46Ci08YSBuYW1lPSJsMDEwMjYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhMCI+MDEwMjY8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhMCI+VGlYbWxDb21tZW50PC9hPigpIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+OjpDT01NRU5UICkge30KLTxhIG5hbWU9ImwwMTAyNyI+PC9hPjAxMDI3ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCNhMCI+VGlYbWxDb21tZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiZhbXA7ICk7Ci08YSBuYW1lPSJsMDEwMjgiPjwvYT4wMTAyOCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwiPlRpWG1sQ29tbWVudDwvYT4mYW1wOyBiYXNlICk7Ci08YSBuYW1lPSJsMDEwMjkiPjwvYT4wMTAyOSAKLTxhIG5hbWU9ImwwMTAzMCI+PC9hPjAxMDMwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sQ29tbWVudC5odG1sIj5UaVhtbENvbW1lbnQ8L2E+KCkge30KLTxhIG5hbWU9ImwwMTAzMSI+PC9hPjAxMDMxIAotPGEgbmFtZT0ibDAxMDMzIj48L2E+MDEwMzMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTQiPkNsb25lPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDEwMzUiPjwvYT4wMTAzNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxDb21tZW50Lmh0bWwjYTUiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDEwMzYiPjwvYT4wMTAzNiAKLTxhIG5hbWU9ImwwMTAzNyI+PC9hPjAxMDM3ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+LyogIEF0dHJpYnR1ZSBwYXJzaW5nIHN0YXJ0czogYXQgdGhlICEgb2YgdGhlICEtLTwvc3Bhbj4KLTxhIG5hbWU9ImwwMTAzOCI+PC9hPjAxMDM4IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuczogbmV4dCBjaGFyIHBhc3QgJyZndDsnPC9zcGFuPgotPGEgbmFtZT0ibDAxMDM5Ij48L2E+MDEwMzkgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPiAgICAqLzwvc3Bhbj4KLTxhIG5hbWU9ImwwMTA0MCI+PC9hPjAxMDQwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBQYXJzZSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci08YSBuYW1lPSJsMDEwNDEiPjwvYT4wMTA0MSAKLTxhIG5hbWU9ImwwMTA0MiI+PC9hPjAxMDQyIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wcm90ZWN0ZWQ8L3NwYW4+OgotPGEgbmFtZT0ibDAxMDQzIj48L2E+MDEwNDMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gQ29weVRvKCA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbENvbW1lbnQuaHRtbCI+VGlYbWxDb21tZW50PC9hPiogdGFyZ2V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTA0NCI+PC9hPjAxMDQ0IAotPGEgbmFtZT0ibDAxMDQ1Ij48L2E+MDEwNDUgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB1c2VkIHRvIGJlIHB1YmxpYzwvc3Bhbj4KLTxhIG5hbWU9ImwwMTA0NiI+PC9hPjAxMDQ2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMTA0NyI+PC9hPjAxMDQ3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOwotPGEgbmFtZT0ibDAxMDQ4Ij48L2E+MDEwNDggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNlbmRpZjwvc3Bhbj4KLTxhIG5hbWU9ImwwMTA0OSI+PC9hPjAxMDQ5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTA1MCI+PC9hPjAxMDUwIAotPGEgbmFtZT0ibDAxMDUxIj48L2E+MDEwNTEgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgotPGEgbmFtZT0ibDAxMDUyIj48L2E+MDEwNTIgCi08YSBuYW1lPSJsMDEwNTMiPjwvYT4wMTA1MyB9OwotPGEgbmFtZT0ibDAxMDU0Ij48L2E+MDEwNTQgCi08YSBuYW1lPSJsMDEwNTUiPjwvYT4wMTA1NSAKLTxhIG5hbWU9ImwwMTA2MSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj4wMTA2MTwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+Ci08YSBuYW1lPSJsMDEwNjIiPjwvYT4wMTA2MiB7Ci08YSBuYW1lPSJsMDEwNjMiPjwvYT4wMTA2MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZyaWVuZDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPjsKLTxhIG5hbWU9ImwwMTA2NCI+PC9hPjAxMDY0IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgotPGEgbmFtZT0ibDAxMDY5Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTAiPjAxMDY5PC9hPiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTAiPlRpWG1sVGV4dDwvYT4gKDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIGluaXRWYWx1ZSApIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4gKDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+OjpURVhUKQotPGEgbmFtZT0ibDAxMDcwIj48L2E+MDEwNzAgICAgIHsKLTxhIG5hbWU9ImwwMTA3MSI+PC9hPjAxMDcxICAgICAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTMiPlNldFZhbHVlPC9hPiggaW5pdFZhbHVlICk7Ci08YSBuYW1lPSJsMDEwNzIiPjwvYT4wMTA3MiAgICAgICAgIGNkYXRhID0gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmZhbHNlPC9zcGFuPjsKLTxhIG5hbWU9ImwwMTA3MyI+PC9hPjAxMDczICAgICB9Ci08YSBuYW1lPSJsMDEwNzQiPjwvYT4wMTA3NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPigpIHt9Ci08YSBuYW1lPSJsMDEwNzUiPjwvYT4wMTA3NSAKLTxhIG5hbWU9ImwwMTA3NiI+PC9hPjAxMDc2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMTA3NyI+PC9hPjAxMDc3IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4KLTxhIG5hbWU9ImwwMTA3OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EyIj4wMTA3ODwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2EwIj5UaVhtbFRleHQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgaW5pdFZhbHVlICkgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiAoPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT46OlRFWFQpCi08YSBuYW1lPSJsMDEwNzkiPjwvYT4wMTA3OSAgICAgewotPGEgbmFtZT0ibDAxMDgwIj48L2E+MDEwODAgICAgICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhMyI+U2V0VmFsdWU8L2E+KCBpbml0VmFsdWUgKTsKLTxhIG5hbWU9ImwwMTA4MSI+PC9hPjAxMDgxICAgICAgICAgY2RhdGEgPSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+ZmFsc2U8L3NwYW4+OwotPGEgbmFtZT0ibDAxMDgyIj48L2E+MDEwODIgICAgIH0KLTxhIG5hbWU9ImwwMTA4MyI+PC9hPjAxMDgzIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDEwODQiPjwvYT4wMTA4NCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDEwODUiPjwvYT4wMTA4NSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTAiPlRpWG1sVGV4dDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwiPlRpWG1sVGV4dDwvYT4mYW1wOyBjb3B5ICkgOiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiggPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT46OlRFWFQgKSAgIHsgY29weS48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNiMSI+Q29weVRvPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICk7IH0KLTxhIG5hbWU9ImwwMTA4NiI+PC9hPjAxMDg2ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiZhbXA7IGJhc2UgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBiYXNlLjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2IxIj5Db3B5VG88L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gKTsgfQotPGEgbmFtZT0ibDAxMDg3Ij48L2E+MDEwODcgCi08YSBuYW1lPSJsMDEwODkiPjwvYT4wMTA4OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTUiPlByaW50PC9hPiggRklMRSogY2ZpbGUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBkZXB0aCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDEwOTAiPjwvYT4wMTA5MCAKLTxhIG5hbWU9ImwwMTA5MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sI2E2Ij4wMTA5MjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTYiPkNEQVRBPC9hPigpICAgICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBjZGF0YTsgfQotPGEgbmFtZT0ibDAxMDk0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYTciPjAxMDk0PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCNhNyI+U2V0Q0RBVEE8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IF9jZGF0YSApICAgIHsgY2RhdGEgPSBfY2RhdGE7IH0KLTxhIG5hbWU9ImwwMTA5NSI+PC9hPjAxMDk1IAotPGEgbmFtZT0ibDAxMDk2Ij48L2E+MDEwOTYgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFBhcnNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMTA5NyI+PC9hPjAxMDk3IAotPGEgbmFtZT0ibDAxMDk4Ij48L2E+MDEwOTggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj4gOgotPGEgbmFtZT0ibDAxMTAwIj48L2E+MDExMDAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxUZXh0Lmh0bWwjYjAiPkNsb25lPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDExMDEiPjwvYT4wMTEwMSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb3B5VG8oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVGV4dC5odG1sIj5UaVhtbFRleHQ8L2E+KiB0YXJnZXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAxMTAyIj48L2E+MDExMDIgCi08YSBuYW1lPSJsMDExMDMiPjwvYT4wMTEwMyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDExMDQiPjwvYT4wMTEwNCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiBCbGFuaygpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47IDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyByZXR1cm5zIHRydWUgaWYgYWxsIHdoaXRlIHNwYWNlIGFuZCBuZXcgbGluZXM8L3NwYW4+Ci08YSBuYW1lPSJsMDExMDUiPjwvYT4wMTEwNSAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIFtpbnRlcm5hbCB1c2VdPC9zcGFuPgotPGEgbmFtZT0ibDAxMTA2Ij48L2E+MDExMDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAxMTA3Ij48L2E+MDExMDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Ci08YSBuYW1lPSJsMDExMDgiPjwvYT4wMTEwOCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAxMTA5Ij48L2E+MDExMDkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAxMTEwIj48L2E+MDExMTAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgotPGEgbmFtZT0ibDAxMTExIj48L2E+MDExMTEgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gY2RhdGE7ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHRydWUgaWYgdGhpcyBzaG91bGQgYmUgaW5wdXQgYW5kIG91dHB1dCBhcyBhIENEQVRBIHN0eWxlIHRleHQgZWxlbWVudDwvc3Bhbj4KLTxhIG5hbWU9ImwwMTExMiI+PC9hPjAxMTEyIH07Ci08YSBuYW1lPSJsMDExMTMiPjwvYT4wMTExMyAKLTxhIG5hbWU9ImwwMTExNCI+PC9hPjAxMTE0IAotPGEgbmFtZT0ibDAxMTI4Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sIj4wMTEyODwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4KLTxhIG5hbWU9ImwwMTEyOSI+PC9hPjAxMTI5IHsKLTxhIG5hbWU9ImwwMTEzMCI+PC9hPjAxMTMwIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgotPGEgbmFtZT0ibDAxMTMyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EwIj4wMTEzMjwvYT4gICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4oKSAgIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+OjpERUNMQVJBVElPTiApIHt9Ci08YSBuYW1lPSJsMDExMzMiPjwvYT4wMTEzMyAKLTxhIG5hbWU9ImwwMTEzNCI+PC9hPjAxMTM0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAxMTM1Ij48L2E+MDExMzUgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAxMTM2Ij48L2E+MDExMzYgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4oICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92ZXJzaW9uLAotPGEgbmFtZT0ibDAxMTM3Ij48L2E+MDExMzcgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF9lbmNvZGluZywKLTxhIG5hbWU9ImwwMTEzOCI+PC9hPjAxMTM4ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBfc3RhbmRhbG9uZSApOwotPGEgbmFtZT0ibDAxMTM5Ij48L2E+MDExMzkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAxMTQwIj48L2E+MDExNDAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAxMTQyIj48L2E+MDExNDIgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhMCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4oICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBfdmVyc2lvbiwKLTxhIG5hbWU9ImwwMTE0MyI+PC9hPjAxMTQzICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogX2VuY29kaW5nLAotPGEgbmFtZT0ibDAxMTQ0Ij48L2E+MDExNDQgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBfc3RhbmRhbG9uZSApOwotPGEgbmFtZT0ibDAxMTQ1Ij48L2E+MDExNDUgCi08YSBuYW1lPSJsMDExNDYiPjwvYT4wMTE0NiAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2EwIj5UaVhtbERlY2xhcmF0aW9uPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwiPlRpWG1sRGVjbGFyYXRpb248L2E+JmFtcDsgY29weSApOwotPGEgbmFtZT0ibDAxMTQ3Ij48L2E+MDExNDcgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4mYW1wOyBjb3B5ICk7Ci08YSBuYW1lPSJsMDExNDgiPjwvYT4wMTE0OCAKLTxhIG5hbWU9ImwwMTE0OSI+PC9hPjAxMTQ5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4oKSB7fQotPGEgbmFtZT0ibDAxMTUwIj48L2E+MDExNTAgCi08YSBuYW1lPSJsMDExNTIiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTYiPjAxMTUyPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICo8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTYiPlZlcnNpb248L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHZlcnNpb24uY19zdHIgKCk7IH0KLTxhIG5hbWU9ImwwMTE1NCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNyI+MDExNTQ8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhNyI+RW5jb2Rpbmc8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gZW5jb2RpbmcuY19zdHIgKCk7IH0KLTxhIG5hbWU9ImwwMTE1NiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+MDExNTY8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCNhOCI+U3RhbmRhbG9uZTwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gc3RhbmRhbG9uZS5jX3N0ciAoKTsgfQotPGEgbmFtZT0ibDAxMTU3Ij48L2E+MDExNTcgCi08YSBuYW1lPSJsMDExNTkiPjwvYT4wMTE1OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERlY2xhcmF0aW9uLmh0bWwjYTkiPkNsb25lPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDExNjEiPjwvYT4wMTE2MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEZWNsYXJhdGlvbi5odG1sI2ExMCI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTE2MiI+PC9hPjAxMTYyIAotPGEgbmFtZT0ibDAxMTYzIj48L2E+MDExNjMgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFBhcnNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMTE2NCI+PC9hPjAxMTY0IAotPGEgbmFtZT0ibDAxMTY1Ij48L2E+MDExNjUgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj46Ci08YSBuYW1lPSJsMDExNjYiPjwvYT4wMTE2NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb3B5VG8oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRGVjbGFyYXRpb24uaHRtbCI+VGlYbWxEZWNsYXJhdGlvbjwvYT4qIHRhcmdldCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDExNjciPjwvYT4wMTE2NyAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnQiPi8vIHVzZWQgdG8gYmUgcHVibGljPC9zcGFuPgotPGEgbmFtZT0ibDAxMTY4Ij48L2E+MDExNjggPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAxMTY5Ij48L2E+MDExNjkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Ci08YSBuYW1lPSJsMDExNzAiPjwvYT4wMTE3MCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAxMTcxIj48L2E+MDExNzEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPiAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1PdXQgKCBUSVhNTF9PU1RSRUFNICogb3V0KSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAxMTcyIj48L2E+MDExNzIgCi08YSBuYW1lPSJsMDExNzMiPjwvYT4wMTE3MyA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Ci08YSBuYW1lPSJsMDExNzQiPjwvYT4wMTE3NCAKLTxhIG5hbWU9ImwwMTE3NSI+PC9hPjAxMTc1ICAgICBUSVhNTF9TVFJJTkcgdmVyc2lvbjsKLTxhIG5hbWU9ImwwMTE3NiI+PC9hPjAxMTc2ICAgICBUSVhNTF9TVFJJTkcgZW5jb2Rpbmc7Ci08YSBuYW1lPSJsMDExNzciPjwvYT4wMTE3NyAgICAgVElYTUxfU1RSSU5HIHN0YW5kYWxvbmU7Ci08YSBuYW1lPSJsMDExNzgiPjwvYT4wMTE3OCB9OwotPGEgbmFtZT0ibDAxMTc5Ij48L2E+MDExNzkgCi08YSBuYW1lPSJsMDExODAiPjwvYT4wMTE4MCAKLTxhIG5hbWU9ImwwMTE4OCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj4wMTE4ODwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiA6IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+Ci08YSBuYW1lPSJsMDExODkiPjwvYT4wMTE4OSB7Ci08YSBuYW1lPSJsMDExOTAiPjwvYT4wMTE5MCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHVibGljPC9zcGFuPjoKLTxhIG5hbWU9ImwwMTE5MSI+PC9hPjAxMTkxICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPigpIDogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4oIFRpWG1sTm9kZTo6VU5LTk9XTiApICAgIHt9Ci08YSBuYW1lPSJsMDExOTIiPjwvYT4wMTE5MiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IH48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPigpIHt9Ci08YSBuYW1lPSJsMDExOTMiPjwvYT4wMTE5MyAKLTxhIG5hbWU9ImwwMTE5NCI+PC9hPjAxMTk0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiZhbXA7IGNvcHkgKSA6IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KCBUaVhtbE5vZGU6OlVOS05PV04gKSAgICAgIHsgY29weS48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNiMCI+Q29weVRvPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPnRoaXM8L3NwYW4+ICk7IH0KLTxhIG5hbWU9ImwwMTE5NSI+PC9hPjAxMTk1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IG9wZXJhdG9yPSggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiZhbXA7IGNvcHkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjb3B5LjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sI2IwIj5Db3B5VG88L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dGhpczwvc3Bhbj4gKTsgfQotPGEgbmFtZT0ibDAxMTk2Ij48L2E+MDExOTYgCi08YSBuYW1lPSJsMDExOTgiPjwvYT4wMTE5OCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNCI+Q2xvbmU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTIwMCI+PC9hPjAxMjAwICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCNhNSI+UHJpbnQ8L2E+KCBGSUxFKiBjZmlsZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGRlcHRoICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTIwMSI+PC9hPjAxMjAxIAotPGEgbmFtZT0ibDAxMjAyIj48L2E+MDEyMDIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIFBhcnNlKCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLTxhIG5hbWU9ImwwMTIwMyI+PC9hPjAxMjAzIAotPGEgbmFtZT0ibDAxMjA0Ij48L2E+MDEyMDQgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByb3RlY3RlZDwvc3Bhbj46Ci08YSBuYW1lPSJsMDEyMDUiPjwvYT4wMTIwNSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb3B5VG8oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sVW5rbm93bi5odG1sIj5UaVhtbFVua25vd248L2E+KiB0YXJnZXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAxMjA2Ij48L2E+MDEyMDYgCi08YSBuYW1lPSJsMDEyMDciPjwvYT4wMTIwNyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDEyMDgiPjwvYT4wMTIwOCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKLTxhIG5hbWU9ImwwMTIwOSI+PC9hPjAxMjA5IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDEyMTAiPjwvYT4wMTIxMCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAxMjExIj48L2E+MDEyMTEgCi08YSBuYW1lPSJsMDEyMTIiPjwvYT4wMTIxMiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Ci08YSBuYW1lPSJsMDEyMTMiPjwvYT4wMTIxMyAKLTxhIG5hbWU9ImwwMTIxNCI+PC9hPjAxMjE0IH07Ci08YSBuYW1lPSJsMDEyMTUiPjwvYT4wMTIxNSAKLTxhIG5hbWU9ImwwMTIxNiI+PC9hPjAxMjE2IAotPGEgbmFtZT0ibDAxMjIxIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sIj4wMTIyMTwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+IDogPHNwYW4gY2xhc3M9ImtleXdvcmQiPnB1YmxpYzwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwiPlRpWG1sTm9kZTwvYT4KLTxhIG5hbWU9ImwwMTIyMiI+PC9hPjAxMjIyIHsKLTxhIG5hbWU9ImwwMTIyMyI+PC9hPjAxMjIzIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgotPGEgbmFtZT0ibDAxMjI1Ij48L2E+MDEyMjUgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMCI+VGlYbWxEb2N1bWVudDwvYT4oKTsKLTxhIG5hbWU9ImwwMTIyNyI+PC9hPjAxMjI3ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTAiPlRpWG1sRG9jdW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBkb2N1bWVudE5hbWUgKTsKLTxhIG5hbWU9ImwwMTIyOCI+PC9hPjAxMjI4IAotPGEgbmFtZT0ibDAxMjI5Ij48L2E+MDEyMjkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+ICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMPC9zcGFuPgotPGEgbmFtZT0ibDAxMjMwIj48L2E+MDEyMzAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAxMjMxIj48L2E+MDEyMzEgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMCI+VGlYbWxEb2N1bWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBkb2N1bWVudE5hbWUgKTsKLTxhIG5hbWU9ImwwMTIzMiI+PC9hPjAxMjMyIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDEyMzMiPjwvYT4wMTIzMyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDEyMzQiPjwvYT4wMTIzNCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EwIj5UaVhtbERvY3VtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwiPlRpWG1sRG9jdW1lbnQ8L2E+JmFtcDsgY29weSApOwotPGEgbmFtZT0ibDAxMjM1Ij48L2E+MDEyMzUgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gb3BlcmF0b3I9KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4mYW1wOyBjb3B5ICk7Ci08YSBuYW1lPSJsMDEyMzYiPjwvYT4wMTIzNiAKLTxhIG5hbWU9ImwwMTIzNyI+PC9hPjAxMjM3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gfjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4oKSB7fQotPGEgbmFtZT0ibDAxMjM4Ij48L2E+MDEyMzggCi08YSBuYW1lPSJsMDEyNDMiPjwvYT4wMTI0MyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTYiPkxvYWRGaWxlPC9hPiggVGlYbWxFbmNvZGluZyBlbmNvZGluZyA9IFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKLTxhIG5hbWU9ImwwMTI0NSI+PC9hPjAxMjQ1ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNyI+U2F2ZUZpbGU8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTI0NyI+PC9hPjAxMjQ3ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNiI+TG9hZEZpbGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyA9IFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKLTxhIG5hbWU9ImwwMTI0OSI+PC9hPjAxMjQ5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNyI+U2F2ZUZpbGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiBmaWxlbmFtZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDEyNTAiPjwvYT4wMTI1MCAKLTxhIG5hbWU9ImwwMTI1MSI+PC9hPjAxMjUxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMTI1MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTAiPjAxMjUyPC9hPiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Ym9vbDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2E2Ij5Mb2FkRmlsZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gc3RkOjpzdHJpbmcmYW1wOyBmaWxlbmFtZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyA9IFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKSAgICAgICAgICAgCi08YSBuYW1lPSJsMDEyNTMiPjwvYT4wMTI1MyAgICAgewotPGEgbmFtZT0ibDAxMjU0Ij48L2E+MDEyNTQgICAgICAgICBTdHJpbmdUb0J1ZmZlciBmKCBmaWxlbmFtZSApOwotPGEgbmFtZT0ibDAxMjU1Ij48L2E+MDEyNTUgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCBmLmJ1ZmZlciAmYW1wOyZhbXA7IExvYWRGaWxlKCBmLmJ1ZmZlciwgZW5jb2RpbmcgKSk7Ci08YSBuYW1lPSJsMDEyNTYiPjwvYT4wMTI1NiAgICAgfQotPGEgbmFtZT0ibDAxMjU3Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMSI+MDEyNTc8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhNyI+U2F2ZUZpbGU8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgZmlsZW5hbWUgKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+ICAgICAgCi08YSBuYW1lPSJsMDEyNTgiPjwvYT4wMTI1OCAgICAgewotPGEgbmFtZT0ibDAxMjU5Ij48L2E+MDEyNTkgICAgICAgICBTdHJpbmdUb0J1ZmZlciBmKCBmaWxlbmFtZSApOwotPGEgbmFtZT0ibDAxMjYwIj48L2E+MDEyNjAgICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCBmLmJ1ZmZlciAmYW1wOyZhbXA7IFNhdmVGaWxlKCBmLmJ1ZmZlciApKTsKLTxhIG5hbWU9ImwwMTI2MSI+PC9hPjAxMjYxICAgICB9Ci08YSBuYW1lPSJsMDEyNjIiPjwvYT4wMTI2MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAxMjYzIj48L2E+MDEyNjMgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAxMjY4Ij48L2E+MDEyNjggICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj52aXJ0dWFsPC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTIiPlBhcnNlPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhID0gMCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyA9IFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKLTxhIG5hbWU9ImwwMTI2OSI+PC9hPjAxMjY5IAotPGEgbmFtZT0ibDAxMjc0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExMyI+MDEyNzQ8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRWxlbWVudC5odG1sIj5UaVhtbEVsZW1lbnQ8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTEzIj5Sb290RWxlbWVudDwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgIDwvc3Bhbj57IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpOyB9Ci08YSBuYW1lPSJsMDEyNzUiPjwvYT4wMTI3NSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxFbGVtZW50Lmh0bWwiPlRpWG1sRWxlbWVudDwvYT4qIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTMiPlJvb3RFbGVtZW50PC9hPigpICAgICAgICAgICAgICAgICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNTAiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPigpOyB9Ci08YSBuYW1lPSJsMDEyNzYiPjwvYT4wMTI3NiAKLTxhIG5hbWU9ImwwMTI4MiI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTUiPjAxMjgyPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE1Ij5FcnJvcjwvYT4oKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGVycm9yOyB9Ci08YSBuYW1lPSJsMDEyODMiPjwvYT4wMTI4MyAKLTxhIG5hbWU9ImwwMTI4NSI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTYiPjAxMjg1PC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+ICogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExNiI+RXJyb3JEZXNjPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGVycm9yRGVzYy5jX3N0ciAoKTsgfQotPGEgbmFtZT0ibDAxMjg2Ij48L2E+MDEyODYgCi08YSBuYW1lPSJsMDEyOTAiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE3Ij4wMTI5MDwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTE3Ij5FcnJvcklkPC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiAgIGNvbnN0ICAgICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGVycm9ySWQ7IH0KLTxhIG5hbWU9ImwwMTI5MSI+PC9hPjAxMjkxIAotPGEgbmFtZT0ibDAxMjk5Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+MDEyOTk8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2ExOCI+RXJyb3JSb3c8L2E+KCkgIHsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IGVycm9yTG9jYXRpb24ucm93KzE7IH0KLTxhIG5hbWU9ImwwMTMwMCI+PC9hPjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPjAxMzAwPC9hPiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMTkiPkVycm9yQ29sPC9hPigpICB7IDxzcGFuIGNsYXNzPSJrZXl3b3JkZmxvdyI+cmV0dXJuPC9zcGFuPiBlcnJvckxvY2F0aW9uLmNvbCsxOyB9IAotPGEgbmFtZT0ibDAxMzAxIj48L2E+MDEzMDEgCi08YSBuYW1lPSJsMDEzMjYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIwIj4wMTMyNjwvYT4gICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMCI+U2V0VGFiU2l6ZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBfdGFic2l6ZSApICAgICB7IHRhYnNpemUgPSBfdGFic2l6ZTsgfQotPGEgbmFtZT0ibDAxMzI3Ij48L2E+MDEzMjcgCi08YSBuYW1lPSJsMDEzMjgiPjwvYT4wMTMyOCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IFRhYlNpemUoKTxzcGFuIGNsYXNzPSJrZXl3b3JkIj4gY29uc3QgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IHRhYnNpemU7IH0KLTxhIG5hbWU9ImwwMTMyOSI+PC9hPjAxMzI5IAotPGEgbmFtZT0ibDAxMzMzIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMiI+MDEzMzM8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjIiPkNsZWFyRXJyb3I8L2E+KCkgICAgICAgICAgICAgICAgICAgICAgIHsgICBlcnJvciA9IDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5mYWxzZTwvc3Bhbj47IAotPGEgbmFtZT0ibDAxMzM0Ij48L2E+MDEzMzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JJZCA9IDA7IAotPGEgbmFtZT0ibDAxMzM1Ij48L2E+MDEzMzUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXNjID0gPHNwYW4gY2xhc3M9InN0cmluZ2xpdGVyYWwiPiIiPC9zcGFuPjsgCi08YSBuYW1lPSJsMDEzMzYiPjwvYT4wMTMzNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckxvY2F0aW9uLnJvdyA9IGVycm9yTG9jYXRpb24uY29sID0gMDsgCi08YSBuYW1lPSJsMDEzMzciPjwvYT4wMTMzNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly9lcnJvckxvY2F0aW9uLmxhc3QgPSAwOyA8L3NwYW4+Ci08YSBuYW1lPSJsMDEzMzgiPjwvYT4wMTMzOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLTxhIG5hbWU9ImwwMTMzOSI+PC9hPjAxMzM5IAotPGEgbmFtZT0ibDAxMzQxIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxEb2N1bWVudC5odG1sI2EyMyI+MDEzNDE8L2E+ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPnZvaWQ8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCNhMjMiPlByaW50PC9hPigpPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+eyA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIzIj5QcmludDwvYT4oIHN0ZG91dCwgMCApOyB9Ci08YSBuYW1lPSJsMDEzNDIiPjwvYT4wMTM0MiAKLTxhIG5hbWU9ImwwMTM0NCI+PC9hPjAxMzQ0ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYTIzIj5QcmludDwvYT4oIEZJTEUqIGNmaWxlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gZGVwdGggPSAwICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTM0NSI+PC9hPjAxMzQ1ICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gW2ludGVybmFsIHVzZV08L3NwYW4+Ci08YSBuYW1lPSJsMDEzNDYiPjwvYT4wMTM0NiAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTZXRFcnJvciggPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGVyciwgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmNoYXI8L3NwYW4+KiBlcnJvckxvY2F0aW9uLCBUaVhtbFBhcnNpbmdEYXRhKiBwcmV2RGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotPGEgbmFtZT0ibDAxMzQ3Ij48L2E+MDEzNDcgCi08YSBuYW1lPSJsMDEzNDgiPjwvYT4wMTM0OCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJvdGVjdGVkPC9zcGFuPiA6Ci08YSBuYW1lPSJsMDEzNDkiPjwvYT4wMTM0OSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+dm9pZDwvc3Bhbj4gU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTM1MCI+PC9hPjAxMzUwICAgICA8c3BhbiBjbGFzcz0iY29tbWVudCI+Ly8gW2ludGVybmFsIHVzZV08L3NwYW4+Ci08YSBuYW1lPSJsMDEzNTEiPjwvYT4wMTM1MSAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnZpcnR1YWw8L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbERvY3VtZW50Lmh0bWwjYjEiPkNsb25lPC9hPigpIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDEzNTIiPjwvYT4wMTM1MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj4gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEw8L3NwYW4+Ci08YSBuYW1lPSJsMDEzNTMiPjwvYT4wMTM1MyA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+ICAgICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZCI+dmlydHVhbDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKLTxhIG5hbWU9ImwwMTM1NCI+PC9hPjAxMzU0IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDEzNTUiPjwvYT4wMTM1NSA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDEzNTYiPjwvYT4wMTM1NiA8c3BhbiBjbGFzcz0ia2V5d29yZCI+cHJpdmF0ZTwvc3Bhbj46Ci08YSBuYW1lPSJsMDEzNTciPjwvYT4wMTM1NyAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj52b2lkPC9zcGFuPiBDb3B5VG8oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sRG9jdW1lbnQuaHRtbCI+VGlYbWxEb2N1bWVudDwvYT4qIHRhcmdldCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDEzNTgiPjwvYT4wMTM1OCAKLTxhIG5hbWU9ImwwMTM1OSI+PC9hPjAxMzU5ICAgICA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmJvb2w8L3NwYW4+IGVycm9yOwotPGEgbmFtZT0ibDAxMzYwIj48L2E+MDEzNjAgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiAgZXJyb3JJZDsKLTxhIG5hbWU9ImwwMTM2MSI+PC9hPjAxMzYxICAgICBUSVhNTF9TVFJJTkcgZXJyb3JEZXNjOwotPGEgbmFtZT0ibDAxMzYyIj48L2E+MDEzNjIgICAgIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiB0YWJzaXplOwotPGEgbmFtZT0ibDAxMzYzIj48L2E+MDEzNjMgICAgIFRpWG1sQ3Vyc29yIGVycm9yTG9jYXRpb247Ci08YSBuYW1lPSJsMDEzNjQiPjwvYT4wMTM2NCAgICAgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5ib29sPC9zcGFuPiB1c2VNaWNyb3NvZnRCT007ICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50Ij4vLyB0aGUgVVRGLTggQk9NIHdlcmUgZm91bmQgd2hlbiByZWFkLiBOb3RlIHRoaXMsIGFuZCB0cnkgdG8gd3JpdGUuPC9zcGFuPgotPGEgbmFtZT0ibDAxMzY1Ij48L2E+MDEzNjUgfTsKLTxhIG5hbWU9ImwwMTM2NiI+PC9hPjAxMzY2IAotPGEgbmFtZT0ibDAxMzY3Ij48L2E+MDEzNjcgCi08YSBuYW1lPSJsMDE0NDgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj4wMTQ0ODwvYT4gPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNsYXNzIDwvc3Bhbj48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4KLTxhIG5hbWU9ImwwMTQ0OSI+PC9hPjAxNDQ5IHsKLTxhIG5hbWU9ImwwMTQ1MCI+PC9hPjAxNDUwIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5wdWJsaWM8L3NwYW4+OgotPGEgbmFtZT0ibDAxNDUyIj48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMCI+MDE0NTI8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EwIj5UaVhtbEhhbmRsZTwvYT4oIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBfbm9kZSApICAgICAgICAgICAgICAgICB7IHRoaXMtJmd0O25vZGUgPSBfbm9kZTsgfQotPGEgbmFtZT0ibDAxNDU0Ij48L2E+PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMSI+MDE0NTQ8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2EwIj5UaVhtbEhhbmRsZTwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+JmFtcDsgcmVmICkgICAgICAgICAgIHsgdGhpcy0mZ3Q7bm9kZSA9IHJlZi48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI3IwIj5ub2RlPC9hPjsgfQotPGEgbmFtZT0ibDAxNDU1Ij48L2E+MDE0NTUgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiBvcGVyYXRvcj0oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+JmFtcDsgcmVmICkgeyB0aGlzLSZndDtub2RlID0gcmVmLjxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjcjAiPm5vZGU8L2E+OyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50aGlzPC9zcGFuPjsgfQotPGEgbmFtZT0ibDAxNDU2Ij48L2E+MDE0NTYgCi08YSBuYW1lPSJsMDE0NTgiPjwvYT4wMTQ1OCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTMiPkZpcnN0Q2hpbGQ8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTQ2MCI+PC9hPjAxNDYwICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMyI+Rmlyc3RDaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiAqIHZhbHVlICkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTQ2MiI+PC9hPjAxNDYyICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCkgPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPjsKLTxhIG5hbWU9ImwwMTQ2NCI+PC9hPjAxNDY0ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNSI+Rmlyc3RDaGlsZEVsZW1lbnQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4gKiB2YWx1ZSApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDE0NjUiPjwvYT4wMTQ2NSAKLTxhIG5hbWU9ImwwMTQ2OSI+PC9hPjAxNDY5ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhNyI+Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+Y2hhcjwvc3Bhbj4qIHZhbHVlLCA8c3BhbiBjbGFzcz0ia2V5d29yZHR5cGUiPmludDwvc3Bhbj4gaW5kZXggKSA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+OwotPGEgbmFtZT0ibDAxNDczIj48L2E+MDE0NzMgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwiPlRpWG1sSGFuZGxlPC9hPiA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2E3Ij5DaGlsZDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBpbmRleCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDE0NzgiPjwvYT4wMTQ3OCAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTkiPkNoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5jaGFyPC9zcGFuPiogdmFsdWUsIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBpbmRleCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDE0ODMiPjwvYT4wMTQ4MyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTkiPkNoaWxkRWxlbWVudDwvYT4oIDxzcGFuIGNsYXNzPSJrZXl3b3JkdHlwZSI+aW50PC9zcGFuPiBpbmRleCApIDxzcGFuIGNsYXNzPSJrZXl3b3JkIj5jb25zdDwvc3Bhbj47Ci08YSBuYW1lPSJsMDE0ODQiPjwvYT4wMTQ4NCAKLTxhIG5hbWU9ImwwMTQ4NSI+PC9hPjAxNDg1IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjaWZkZWYgVElYTUxfVVNFX1NUTDwvc3Bhbj4KLTxhIG5hbWU9ImwwMTQ4NiI+PC9hPjAxNDg2IDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPjwvc3Bhbj4gICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTMiPkZpcnN0Q2hpbGQ8L2E+KCA8c3BhbiBjbGFzcz0ia2V5d29yZCI+Y29uc3Q8L3NwYW4+IHN0ZDo6c3RyaW5nJmFtcDsgX3ZhbHVlICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTMiPkZpcnN0Q2hpbGQ8L2E+KCBfdmFsdWUuY19zdHIoKSApOyB9Ci08YSBuYW1lPSJsMDE0ODciPjwvYT4wMTQ4NyAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSApPHNwYW4gY2xhc3M9ImtleXdvcmQiPiBjb25zdCAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTUiPkZpcnN0Q2hpbGRFbGVtZW50PC9hPiggX3ZhbHVlLmNfc3RyKCkgKTsgfQotPGEgbmFtZT0ibDAxNDg4Ij48L2E+MDE0ODggCi08YSBuYW1lPSJsMDE0ODkiPjwvYT4wMTQ4OSAgICAgPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCI+VGlYbWxIYW5kbGU8L2E+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTciPkNoaWxkPC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGluZGV4ICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sSGFuZGxlLmh0bWwjYTciPkNoaWxkPC9hPiggX3ZhbHVlLmNfc3RyKCksIGluZGV4ICk7IH0KLTxhIG5hbWU9ImwwMTQ5MCI+PC9hPjAxNDkwICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sIj5UaVhtbEhhbmRsZTwvYT4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOSI+Q2hpbGRFbGVtZW50PC9hPiggPHNwYW4gY2xhc3M9ImtleXdvcmQiPmNvbnN0PC9zcGFuPiBzdGQ6OnN0cmluZyZhbXA7IF92YWx1ZSwgPHNwYW4gY2xhc3M9ImtleXdvcmR0eXBlIj5pbnQ8L3NwYW4+IGluZGV4ICk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhOSI+Q2hpbGRFbGVtZW50PC9hPiggX3ZhbHVlLmNfc3RyKCksIGluZGV4ICk7IH0KLTxhIG5hbWU9ImwwMTQ5MSI+PC9hPjAxNDkxIDxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiAgICAjZW5kaWY8L3NwYW4+Ci08YSBuYW1lPSJsMDE0OTIiPjwvYT4wMTQ5MiA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+Ci08YSBuYW1lPSJsMDE0OTQiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNSI+MDE0OTQ8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCI+VGlYbWxOb2RlPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTUiPk5vZGU8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+IG5vZGU7IH0gCi08YSBuYW1lPSJsMDE0OTYiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNiI+MDE0OTY8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEVsZW1lbnQuaHRtbCI+VGlYbWxFbGVtZW50PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTYiPkVsZW1lbnQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggKCBub2RlICZhbXA7JmFtcDsgbm9kZS0mZ3Q7PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYxIj5Ub0VsZW1lbnQ8L2E+KCkgKSA/IG5vZGUtJmd0OzxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2MSI+VG9FbGVtZW50PC9hPigpIDogMCApOyB9Ci08YSBuYW1lPSJsMDE0OTgiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExNyI+MDE0OTg8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFRleHQuaHRtbCI+VGlYbWxUZXh0PC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTciPlRleHQ8L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgPC9zcGFuPnsgPHNwYW4gY2xhc3M9ImtleXdvcmRmbG93Ij5yZXR1cm48L3NwYW4+ICggKCBub2RlICZhbXA7JmFtcDsgbm9kZS0mZ3Q7PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTY0Ij5Ub1RleHQ8L2E+KCkgKSA/IG5vZGUtJmd0OzxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sI2E2NCI+VG9UZXh0PC9hPigpIDogMCApOyB9Ci08YSBuYW1lPSJsMDE1MDAiPjwvYT48YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbEhhbmRsZS5odG1sI2ExOCI+MDE1MDA8L2E+ICAgICA8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbFVua25vd24uaHRtbCI+VGlYbWxVbmtub3duPC9hPiogPGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxIYW5kbGUuaHRtbCNhMTgiPlVua25vd248L2E+KCk8c3BhbiBjbGFzcz0ia2V5d29yZCI+IGNvbnN0ICAgICAgICAgICA8L3NwYW4+eyA8c3BhbiBjbGFzcz0ia2V5d29yZGZsb3ciPnJldHVybjwvc3Bhbj4gKCAoIG5vZGUgJmFtcDsmYW1wOyBub2RlLSZndDs8YSBjbGFzcz0iY29kZSIgaHJlZj0iY2xhc3NUaVhtbE5vZGUuaHRtbCNhNjMiPlRvVW5rbm93bjwvYT4oKSApID8gbm9kZS0mZ3Q7PGEgY2xhc3M9ImNvZGUiIGhyZWY9ImNsYXNzVGlYbWxOb2RlLmh0bWwjYTYzIj5Ub1Vua25vd248L2E+KCkgOiAwICk7IH0KLTxhIG5hbWU9ImwwMTUwMSI+PC9hPjAxNTAxIAotPGEgbmFtZT0ibDAxNTAyIj48L2E+MDE1MDIgPHNwYW4gY2xhc3M9ImtleXdvcmQiPnByaXZhdGU8L3NwYW4+OgotPGEgbmFtZT0ibDAxNTAzIj48L2E+MDE1MDMgICAgIDxhIGNsYXNzPSJjb2RlIiBocmVmPSJjbGFzc1RpWG1sTm9kZS5odG1sIj5UaVhtbE5vZGU8L2E+KiBub2RlOwotPGEgbmFtZT0ibDAxNTA0Ij48L2E+MDE1MDQgfTsKLTxhIG5hbWU9ImwwMTUwNSI+PC9hPjAxNTA1IAotPGEgbmFtZT0ibDAxNTA2Ij48L2E+MDE1MDYgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2lmZGVmIF9NU0NfVkVSPC9zcGFuPgotPGEgbmFtZT0ibDAxNTA3Ij48L2E+MDE1MDcgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwcmVwcm9jZXNzb3IiPiNwcmFnbWEgd2FybmluZyggcG9wICk8L3NwYW4+Ci08YSBuYW1lPSJsMDE1MDgiPjwvYT4wMTUwOCA8c3BhbiBjbGFzcz0icHJlcHJvY2Vzc29yIj48L3NwYW4+PHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAxNTA5Ij48L2E+MDE1MDkgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPGEgbmFtZT0ibDAxNTEwIj48L2E+MDE1MTAgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+I2VuZGlmPC9zcGFuPgotPGEgbmFtZT0ibDAxNTExIj48L2E+MDE1MTEgPHNwYW4gY2xhc3M9InByZXByb2Nlc3NvciI+PC9zcGFuPgotPC9wcmU+PC9kaXY+PGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvY3MvdHV0b3JpYWwwLmh0bWwgYi9kb2NzL3R1dG9yaWFsMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjI1ZDM3Li4wMDAwMDAwCi0tLSBhL2RvY3MvdHV0b3JpYWwwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPlRpbnlYbWw6IFRpbnlYTUwgVHV0b3JpYWw8L3RpdGxlPgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPjxib2R5PgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjQuNCAtLT4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaW5kZXguaHRtbCI+TWFpbiZuYnNwO1BhZ2U8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iaGllcmFyY2h5Lmh0bWwiPkNsYXNzJm5ic3A7SGllcmFyY2h5PC9hPiB8IDxhIGNsYXNzPSJxaW5kZXgiIGhyZWY9ImFubm90YXRlZC5odG1sIj5DbGFzcyZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZmlsZXMuaHRtbCI+RmlsZSZuYnNwO0xpc3Q8L2E+IHwgPGEgY2xhc3M9InFpbmRleCIgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPkNsYXNzJm5ic3A7TWVtYmVyczwvYT48L2Rpdj4KLTxkaXYgY2xhc3M9Im5hdiI+Ci08YSBjbGFzcz0iZWwiIGhyZWY9ImluZGV4Lmh0bWwiPmluZGV4PC9hPjwvZGl2PgotPGgxPjxhIGNsYXNzPSJhbmNob3IiIG5hbWU9InR1dG9yaWFsMCI+VGlueVhNTCBUdXRvcmlhbDwvYT48L2gxPjxoMT5UdXRvcmlhbCBQcmVsaW1pbmFyeSA8L2gxPgotPHA+Ci1UaGVzZSBwYWdlcyBjb250YWlucyBhIGJ1bmNoIG9mIGV4YW1wbGVzIG9mIHVzaW5nIFRpbnlYbWwuPHA+Ci1FYWNoIGRlbW8gaXMgd3JpdHRlbiBpbiBhIHN0YW5kYWxvbmUgZnVuY3Rpb24uIElmIHlvdSB3YW50IHRvIHRyeSB0aGUgY29kZSwgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIGNvcHkvcGFzdGUgdGhlIGNvZGUgaW50byBhIGZpbGUsIHRoZW4gaGF2ZSBhIG1haW4gdG8gY2FsbCBpdC48cD4KLVNvIGlmIHRoZSBleGFtcGxlIGhhcyBhIGZ1bmN0aW9uOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCB3cml0ZV9zaW1wbGVfZG9jKCkKLQl7Ci0JCS4uLgotCX0KLQk8L3ByZT48L2Rpdj48cD4KLXRoZW4gdGhlICpjb21wbGV0ZSogcHJvZ3JhbSB5b3UgbmVlZCB0byB0cnkgaXQgaXM6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkjaW5jbHVkZSAic3RkYWZ4LmgiIC8vICZsdDstLSB5b3UgTUlHSFQgbmVlZCB0aGlzCi0JI2luY2x1ZGUgInRpbnl4bWwuaCIgLy8gJmx0Oy0tIHlvdSBkZWZpbml0ZWx5IG5lZWQgdGhpcyA7KQotCi0Jdm9pZCB3cml0ZV9zaW1wbGVfZG9jKCkKLQl7Ci0JCS4uLgotCX0KLQotCXZvaWQgbWFpbiggdm9pZCApCi0JewotCQl3cml0ZV9zaW1wbGVfZG9jKCk7Ci0JfQotCTwvcHJlPjwvZGl2PjxwPgotVHdvIGV4YW1wbGUgWE1MIGRhdGFzZXRzL2ZpbGVzIHdpbGwgYmUgdXNlZC4gVGhlIGZpcnN0IGxvb2tzIGxpa2UgdGhpczo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDs/eG1sIHZlcnNpb249IjEuMCIgPyZndDsKLQkmbHQ7SGVsbG8mZ3Q7V29ybGQmbHQ7L0hlbGxvJmd0OwotCTwvcHJlPjwvZGl2PjxwPgotVGhlIG90aGVyOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JJmx0Oz94bWwgdmVyc2lvbj0iMS4wIiA/Jmd0OwotCSZsdDtwb2V0cnkmZ3Q7Ci0JCSZsdDt2ZXJzZSZndDsKLQkJCUFsYXMKLQkJCSAgR3JlYXQgV2hhdGV2ZXIKLQkJCQlBbGFzIChhZ2FpbikKLQkJJmx0Oy92ZXJzZSZndDsKLQkmbHQ7L3BvZXRyeSZndDsKLQk8L3ByZT48L2Rpdj48cD4KLTxoMT5HZXR0aW5nIFN0YXJ0ZWQgPC9oMT4KLTxwPgotPGgyPkxvYWQgWE1MIGZyb20gYSBmaWxlIDwvaDI+Ci08cD4KLUxvYWRpbmcgYSBmaWxlIGlzIGFzIHNpbXBsZSBhczo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CXZvaWQgbG9hZF9maWxlKCApCi0JewotCQlUaVhtbERvY3VtZW50IGRvYyggImRlbW8ueG1sIiApOwotCQlib29sIGxvYWRPa2F5ID0gZG9jLkxvYWRGaWxlKCk7Ci0KLQkJaWYgKCBsb2FkT2theSApCi0JCXsKLQkJCS8vIFlvdXIgZG9jdW1lbnQgaXMgbG9hZGVkIC0gZG8gd2hhdCB5b3UgbGlrZQotCQkJLy8gd2l0aCBpdC4KLQkJCS8vCi0JCQkvLyBIZXJlIHdlJ2xsIGR1bXAgdGhlIHN0cnVjdHVyZSB0byBTVERPVVQsCi0JCQkvLyBqdXN0IGZvciBleGFtcGxlCi0JCQlkdW1wX3RvX3N0ZG91dCggJmFtcDtkb2MgKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8vIGxvYWQgZmFpbGVkCi0JCX0KLQl9Ci0JPC9wcmU+PC9kaXY+PHA+Ci1UaGUgYGBkdW1wX3RvX3N0ZG91dGBgIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhlIHNlY3Rpb24gYER1bXAgc3RydWN0dXJlIG9mIGEgRG9jdW1lbnQgdG8gU1RET1VUYCBiZWxvdy4gSWYgeW91IHJ1biB0aGlzIHByb2dyYW0gd2l0aCB0aGlzIFhNTDo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDs/eG1sIHZlcnNpb249IjEuMCIgPyZndDsKLQkmbHQ7SGVsbG8mZ3Q7V29ybGQmbHQ7L0hlbGxvJmd0OwotCTwvcHJlPjwvZGl2PjxwPgotWW91J2xsIHNlZSB0aGlzOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRE9DVU1FTlQKLQkrIERFQ0xBUkFUSU9OCi0JKyBFTEVNRU5UIEhlbGxvCi0JICArIFRFWFRbV29ybGRdCi0JPC9wcmU+PC9kaXY+PHA+Ci08aDI+QnVpbGRpbmcgRG9jdW1lbnRzIFByb2dyYW1hdGljYWxseSA8L2gyPgotPHA+Ci1FeGFtcGxlOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCB3cml0ZV9zaW1wbGVfZG9jKCApCi0JewotCQkvLyBNYWtlIHhtbDogJmx0Oz94bWwgLi4mZ3Q7Jmx0O0hlbGxvJmd0O1dvcmxkJmx0Oy9IZWxsbyZndDsKLQkJVGlYbWxEb2N1bWVudCBkb2M7Ci0JCVRpWG1sRGVjbGFyYXRpb24gKiBkZWNsID0gbmV3IFRpWG1sRGVjbGFyYXRpb24oICIxLjAiLCAiIiwgIiIgKTsKLQkJVGlYbWxFbGVtZW50ICogZWxlbWVudCA9IG5ldyBUaVhtbEVsZW1lbnQoICJIZWxsbyIgKTsKLQkJVGlYbWxUZXh0ICogdGV4dCA9IG5ldyBUaVhtbFRleHQoICJXb3JsZCIgKTsKLQkJZWxlbWVudC0mZ3Q7TGlua0VuZENoaWxkKCB0ZXh0ICk7Ci0JCWRvYy5MaW5rRW5kQ2hpbGQoIGRlY2wgKTsKLQkJZG9jLkxpbmtFbmRDaGlsZCggZWxlbWVudCApOwotCQkKLQkJZHVtcF90b19zdGRvdXQoICZhbXA7ZG9jICk7Ci0JCWRvYy5TYXZlRmlsZSggIm1hZGVCeUhhbmQueG1sIiApOwotCX0KLQk8L3ByZT48L2Rpdj48cD4KLUFsdGVybmF0aXZlbHk6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgl2b2lkIHdyaXRlX3NpbXBsZV9kb2MyKCApCi0JewotCQkvLyBzYW1lIGFzIHdyaXRlX3NpbXBsZV9kb2MxIGJ1dCBhZGQgZWFjaCBub2RlCi0JCS8vIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGludG8gdGhlIHRyZWUuCi0JCi0JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQlUaVhtbERlY2xhcmF0aW9uICogZGVjbCA9IG5ldyBUaVhtbERlY2xhcmF0aW9uKCAiMS4wIiwgIiIsICIiICk7Ci0JCWRvYy5MaW5rRW5kQ2hpbGQoIGRlY2wgKTsKLQkJCi0JCVRpWG1sRWxlbWVudCAqIGVsZW1lbnQgPSBuZXcgVGlYbWxFbGVtZW50KCAiSGVsbG8iICk7Ci0JCWRvYy5MaW5rRW5kQ2hpbGQoIGVsZW1lbnQgKTsKLQkJCi0JCVRpWG1sVGV4dCAqIHRleHQgPSBuZXcgVGlYbWxUZXh0KCAiV29ybGQiICk7Ci0JCWVsZW1lbnQtJmd0O0xpbmtFbmRDaGlsZCggdGV4dCApOwotCQkKLQkJZHVtcF90b19zdGRvdXQoICZhbXA7ZG9jICk7Ci0JCWRvYy5TYXZlRmlsZSggIm1hZGVCeUhhbmQyLnhtbCIgKTsKLQl9Ci0JPC9wcmU+PC9kaXY+PHA+Ci1Cb3RoIG9mIHRoZXNlIHByb2R1Y2UgdGhlIHNhbWUgWE1MLCBuYW1lbHk6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgkmbHQ7P3htbCB2ZXJzaW9uPSIxLjAiID8mZ3Q7Ci0JJmx0O0hlbGxvJmd0O1dvcmxkJmx0Oy9IZWxsbyZndDsKLQk8L3ByZT48L2Rpdj48cD4KLU9yIGluIHN0cnVjdHVyZSBmb3JtOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRE9DVU1FTlQKLQkrIERFQ0xBUkFUSU9OCi0JKyBFTEVNRU5UIEhlbGxvCi0JICArIFRFWFRbV29ybGRdCi0JPC9wcmU+PC9kaXY+PHA+Ci08aDI+U2F2aW5nIERvY3VtZW50cyB0byBGaWxlIDwvaDI+Ci08cD4KLVRoaXMgZnVuY3Rpb246PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPgl2b2lkIHdyaXRlX3NpbXBsZV9kb2MzKCApICAKLQl7ICAKLQkJLy8gVGhpcyBleGFtcGxlIGNvdXJ0ZXN5IG9mIHBvbG9jb2xlZ2UKLQkgCi0JCVRpWG1sRG9jdW1lbnQgZG9jOyAgCi0JCVRpWG1sRGVjbGFyYXRpb24gKiBkZWNsID0gbmV3IFRpWG1sRGVjbGFyYXRpb24oICIxLjAiLCAiIiwgIiIgKTsgIAotCQlkb2MuTGlua0VuZENoaWxkKCBkZWNsICk7ICAKLQkgCi0JCVRpWG1sRWxlbWVudCAqIGVsZW1lbnQgPSBuZXcgVGlYbWxFbGVtZW50KCAiSGVsbG8iICk7ICAKLQkJZG9jLkxpbmtFbmRDaGlsZCggZWxlbWVudCApOyAgCi0JIAotCQlUaVhtbFRleHQgKiB0ZXh0ID0gbmV3IFRpWG1sVGV4dCggIk9wZW5pbmcgYSBuZXcgc2FsdXRhdGlvbiIgKTsgIAotCQllbGVtZW50LSZndDtMaW5rRW5kQ2hpbGQoIHRleHQgKTsgIAotCSAKLQkJVGlYbWxFbGVtZW50ICogZWxlbWVudDIgPSBuZXcgVGlYbWxFbGVtZW50KCAiR3JlZXRpbmciICk7ICAKLQkJZWxlbWVudC0mZ3Q7TGlua0VuZENoaWxkKCBlbGVtZW50MiApOyAgCi0JIAotCQlUaVhtbFRleHQgKiB0ZXh0MiA9IG5ldyBUaVhtbFRleHQoICJIb3cgYXJlIHlvdT8iICk7ICAKLQkJZWxlbWVudDItJmd0O0xpbmtFbmRDaGlsZCggdGV4dDIgKTsgIAotCSAKLQkJVGlYbWxFbGVtZW50ICogZWxlbWVudDMgPSBuZXcgVGlYbWxFbGVtZW50KCAiTGFuZ3VhZ2UiICk7ICAKLQkJZWxlbWVudDItJmd0O0xpbmtFbmRDaGlsZCggZWxlbWVudDMgKTsgIAotCSAKLQkJVGlYbWxUZXh0ICogdGV4dDMgPSBuZXcgVGlYbWxUZXh0KCAiRW5nbGlzaCIgKTsgIAotCQllbGVtZW50My0mZ3Q7TGlua0VuZENoaWxkKCB0ZXh0MyApOyAgCi0JIAotCQlUaVhtbEVsZW1lbnQgKiBlbGVtZW50NCA9IG5ldyBUaVhtbEVsZW1lbnQoICJFeGNsYW1hdGlvbiIgKTsgIAotCQllbGVtZW50LSZndDtMaW5rRW5kQ2hpbGQoIGVsZW1lbnQ0ICk7ICAKLQkgCi0JCVRpWG1sVGV4dCAqIHRleHQ0ID0gbmV3IFRpWG1sVGV4dCggIllvdSBoYXZlIGNoaWxkcmVuISIgKTsgIAotCQllbGVtZW50NC0mZ3Q7TGlua0VuZENoaWxkKCB0ZXh0NCApOyAgCi0JIAotCQlkdW1wX3RvX3N0ZG91dCggJmFtcDtkb2MgKTsKLQkJZG9jLlNhdmVGaWxlKCAibWFkZUJ5SGFuZDMueG1sIiApOyAgCi0JfSAgCi0JPC9wcmU+PC9kaXY+PHA+Ci1Qcm9kdWNlcyB0aGlzIHN0cnVjdHVyZTo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CURvY3VtZW50Ci0JKyBEZWNsYXJhdGlvbgotCSsgRWxlbWVudCAiSGVsbG8iCi0JICArIFRleHQ6IFtPcGVuaW5nIGEgbmV3IHNhbHV0YXRpb25dCi0JICArIEVsZW1lbnQgIkdyZWV0aW5nIgotCQkrIFRleHQ6IFtIb3cgYXJlIHlvdT9dCi0JCSsgRWxlbWVudCAiTGFuZ3VhZ2UiCi0JCSAgKyBUZXh0OiBbRW5nbGlzaF0KLQkgICsgRWxlbWVudCAiRXhjbGFtYXRpb24iCi0JCSsgVGV4dDogW1lvdSBoYXZlIGNoaWxkcmVuIV0KLQk8L3ByZT48L2Rpdj48cD4KLVRoZSBmaWxlIGBgbWFkZUJ5SGFuZDMueG1sYGAgbG9va3MgZXhhY3RseSBsaWtlIHRoaXMgKGluY2x1ZGluZyBpbmRlbnRzKTo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CSZsdDs/eG1sIHZlcnNpb249IjEuMCIgPyZndDsKLQkmbHQ7SGVsbG8mZ3Q7T3BlbmluZyBhIG5ldyBzYWx1dGF0aW9uCi0JICAgICZsdDtHcmVldGluZyZndDtIb3cgYXJlIHlvdT8KLQkgICAgICAgICZsdDtMYW5ndWFnZSZndDtFbmdsaXNoJmx0Oy9MYW5ndWFnZSZndDsKLQkgICAgJmx0Oy9HcmVldGluZyZndDsKLQkgICAgJmx0O0V4Y2xhbWF0aW9uJmd0O1lvdSBoYXZlIGNoaWxkcmVuISZsdDsvRXhjbGFtYXRpb24mZ3Q7Ci0JJmx0Oy9IZWxsbyZndDsKLQk8L3ByZT48L2Rpdj48cD4KLUkgd2FzIHN1cnByaXNlZCB0aGF0IFRpbnlYbWwsIGJ5IGRlZmF1bHQsIHdyaXRlcyB0aGUgWE1MIGluIHdoYXQgb3RoZXIgQVBJcyBjYWxsIGEgInByZXR0eSIgZm9ybWF0IC0gaXQgbW9kaWZpZXMgdGhlIHdoaXRlc3BhY2Ugb2YgdGV4dCBvZiBlbGVtZW50cyB0aGF0IGNvbnRhaW4gb3RoZXIgbm9kZXMgc28gdGhhdCB3cml0aW5nIHRoZSB0cmVlIGluY2x1ZGVzIGFuIGluZGljYXRpb24gb2YgbmVzdGluZyBsZXZlbC48cD4KLUkgaGF2ZW4ndCBsb29rZWQgeWV0IHRvIHNlZSBpZiB0aGVyZSBpcyBhIHdheSB0byB0dXJuIG9mZiBpbmRlbnRpbmcgd2hlbiB3cml0aW5nIGEgZmlsZSAtIGl0cyBib3VuZCB0byBiZSBlYXN5LjxwPgotW0xlZTogSXQncyBlYXN5IGluIFNUTCBtb2RlLCBqdXN0IHVzZSBjb3V0ICZsdDsmbHQ7IG15RG9jLiBOb24tU1RMIG1vZGUgaXMgYWx3YXlzIGluICJwcmV0dHkiIGZvcm1hdC4gQWRkaW5nIGEgc3dpdGNoIHdvdWxkIGJlIGEgbmljZSBmZWF0dXJlIGFuZCBoYXMgYmVlbiByZXF1ZXN0ZWQuXTxwPgotPGgxPkl0ZXJhdGluZyBPdmVyIERvY3VtZW50cyA8L2gxPgotPHA+Ci08aDI+RHVtcCBzdHJ1Y3R1cmUgb2YgYSBEb2N1bWVudCB0byBTVERPVVQgPC9oMj4KLTxwPgotT2Z0ZW4gd2hlbiB5b3UncmUgc3RhcnRpbmcgaXRzIGhlbHBmdWwgYW5kIHJlYXNzdXJpbmcgdG8ga25vdyB0aGF0IHlvdSdyZSBkb2N1bWVudCBnb3QgbG9hZGVkIGFzIHlvdSBleHBlY3QgaXQgdG8uPHA+Ci1CZWxvdyBJJ3ZlIGRlZmluZWQgYSBmdW5jdGlvbiB0byB3YWxrIGEgZG9jdW1lbnQgYW5kIHdyaXRlIGNvbnRlbnRzIHRvIFNURE9VVDo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CS8vIGEgdXRpbGl0eSBmdW5jdGlvbiBkZWZpbmluZyBhIHZlcnkgc2ltcGxlIG1ldGhvZCB0byBpbmRlbnQgYSBsaW5lIG9mIHRleHQKLQljb25zdCBjaGFyICogZ2V0SW5kZW50KCB1bnNpZ25lZCBpbnQgbnVtSW5kZW50cyApCi0JewotCQlzdGF0aWMgY29uc3QgY2hhciAqIHBJTkRFTlQgPSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI7Ci0JCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgTEVOR1RIID0gc3RybGVuKCBwSU5ERU5UICk7Ci0JCi0JCWlmICggbnVtSW5kZW50cyAmZ3Q7IExFTkdUSCApIG51bUluZGVudHMgPSBMRU5HVEg7Ci0JCi0JCXJldHVybiAmYW1wO3BJTkRFTlRbIExFTkdUSC1udW1JbmRlbnRzIF07Ci0JfQotCQotCXZvaWQgZHVtcF90b19zdGRvdXQoIFRpWG1sTm9kZSAqIHBQYXJlbnQsIHVuc2lnbmVkIGludCBpbmRlbnQgPSAwICkKLQl7Ci0JCWlmICggIXBQYXJlbnQgKSByZXR1cm47Ci0JCi0JCVRpWG1sVGV4dCAqcFRleHQ7Ci0JCWludCB0ID0gcFBhcmVudC0mZ3Q7VHlwZSgpOwotCQlwcmludGYoICIlcyIsIGdldEluZGVudCggaW5kZW50KSk7Ci0JCi0JCXN3aXRjaCAoIHQgKQotCQl7Ci0JCWNhc2UgVGlYbWxOb2RlOjpET0NVTUVOVDoKLQkJCXByaW50ZiggIkRvY3VtZW50IiApOwotCQkJYnJlYWs7Ci0JCi0JCWNhc2UgVGlYbWxOb2RlOjpFTEVNRU5UOgotCQkJcHJpbnRmKCAiRWxlbWVudCBcIiVzXCIiLCBwUGFyZW50LSZndDtWYWx1ZSgpICk7Ci0JCQlicmVhazsKLQkKLQkJY2FzZSBUaVhtbE5vZGU6OkNPTU1FTlQ6Ci0JCQlwcmludGYoICJDb21tZW50OiBcIiVzXCIiLCBwUGFyZW50LSZndDtWYWx1ZSgpKTsKLQkJCWJyZWFrOwotCQotCQljYXNlIFRpWG1sTm9kZTo6VU5LTk9XTjoKLQkJCXByaW50ZiggIlVua25vd24iICk7Ci0JCQlicmVhazsKLQkKLQkJY2FzZSBUaVhtbE5vZGU6OlRFWFQ6Ci0JCQlwVGV4dCA9IHBQYXJlbnQtJmd0O1RvVGV4dCgpOwotCQkJcHJpbnRmKCAiVGV4dDogWyVzXSIsIHBUZXh0LSZndDtWYWx1ZSgpICk7Ci0JCQlicmVhazsKLQkKLQkJY2FzZSBUaVhtbE5vZGU6OkRFQ0xBUkFUSU9OOgotCQkJcHJpbnRmKCAiRGVjbGFyYXRpb24iICk7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOwotCQl9Ci0JCXByaW50ZiggIlxuIiApOwotCQotCQlUaVhtbE5vZGUgKiBwQ2hpbGQ7Ci0JCi0JCWZvciAoIHBDaGlsZCA9IHBQYXJlbnQtJmd0O0ZpcnN0Q2hpbGQoKTsgcENoaWxkICE9IDA7IHBDaGlsZCA9IHBDaGlsZC0mZ3Q7TmV4dFNpYmxpbmcoKSkgCi0JCXsKLQkJCWR1bXBfdG9fc3Rkb3V0KCBwQ2hpbGQsIGluZGVudCsyICk7Ci0JCX0KLQl9Ci0JPC9wcmU+PC9kaXY+PHA+Ci1UbyBsb2FkIGEgZmlsZSBhbmQgZHVtcCBpdHMgc3RydWN0dXJlOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4Jdm9pZCBsb2FkX2FuZF9kaXNwbGF5KCApCi0JewotCQkvLyBpbXBvcnRhbnQgZm9yIHRoZSBwb2V0cnkgZGVtbywgYnV0IHlvdSBtYXkgbm90IG5lZWQgdGhpcyAKLQkJLy8gaW4geW91ciBvd24gcHJvamVjdHMKLQkJVGlYbWxCYXNlOjpTZXRDb25kZW5zZVdoaXRlU3BhY2UoIGZhbHNlICk7Ci0JCi0JCVRpWG1sRG9jdW1lbnQgZG9jKCAiZGVtby54bWwiICk7Ci0JCWJvb2wgbG9hZE9rYXkgPSBkb2MuTG9hZEZpbGUoKTsKLQkKLQkJaWYgKCBsb2FkT2theSApCi0JCXsKLQkJCWR1bXBfdG9fc3Rkb3V0KCAmYW1wO2RvYyApOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJcHJpbnRmKCAiU29tZXRoaW5nIHdlbnQgd3JvbmdcbiIgKTsKLQkJfQotCX0KLQk8L3ByZT48L2Rpdj48cD4KLUlmIHlvdSBydW4gdGhpcyB3aXRoIHRoZSBmaXJzdCBYTUwgZmlsZSB5b3UnbGwgc2VlIHRoaXMgb24gU1RET1VUOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRE9DVU1FTlQKLQkrIERFQ0xBUkFUSU9OCi0JKyBFTEVNRU5UIEhlbGxvCi0JICArIFRFWFRbV29ybGRdCi0JPC9wcmU+PC9kaXY+PHA+Ci1hbmQgb24gdGhlIHNlY29uZCBYTUwgZmlsZTo8cD4KLTxkaXYgY2xhc3M9ImZyYWdtZW50Ij48cHJlIGNsYXNzPSJmcmFnbWVudCI+CURPQ1VNRU5UCi0JKyBERUNMQVJBVElPTgotCSsgRUxFTUVOVCBwb2V0cnkKLQkgICsgQ09NTUVOVDogIG15IGdyZWF0IHdvcmsgb2YgYXJ0Ci0JICArIEVMRU1FTlQgdmVyc2UKLQkgICAgKyBURVhUWwotCUFsYXMKLQkgIEdyZWF0IFdoYXRldmVyCi0JICAgIEFsYXMgKGFnYWluKQotCV0KLQk8L3ByZT48L2Rpdj48cD4KLU5vdGUgdGhhdCBpZiB5b3UgY2FsbCBkdW1wX3RvX3N0ZG91dCBsaWtlIHRoaXM6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglkdW1wX3RvX3N0ZG91dCggZG9jLlJvb3RFbGVtZW50KCkpOwotCTwvcHJlPjwvZGl2PjxwPgotWW91J2xsIHNlZSB0aGlzIGluc3RlYWQ6PHA+Ci08ZGl2IGNsYXNzPSJmcmFnbWVudCI+PHByZSBjbGFzcz0iZnJhZ21lbnQiPglFTEVNRU5UIEhlbGxvCi0JKyBURVhUW1dvcmxkXQotCTwvcHJlPjwvZGl2PjxwPgotYW5kOjxwPgotPGRpdiBjbGFzcz0iZnJhZ21lbnQiPjxwcmUgY2xhc3M9ImZyYWdtZW50Ij4JRUxFTUVOVCBwb2V0cnkKLQkrIENPTU1FTlQ6ICBteSBncmVhdCB3b3JrIG9mIGFydAotCSsgRUxFTUVOVCB2ZXJzZQotICAJKyBURVhUWwotCUFsYXMKLQkgIEdyZWF0IFdoYXRldmVyCi0JICAgIEFsYXMgKGFnYWluKQotCV0gCi0JPC9wcmU+PC9kaXY+PHA+Ci08ZW0+IEF1dGhvcnMgYW5kIENoYW5nZXMgPHVsPgotPGxpPgotV3JpdHRlbiBieSBFbGxlcnMsIEFwcmlsIDIwMDUgIDwvbGk+Ci08bGk+Ci1NaW5vciBlZGl0cyBhbmQgaW50ZWdyYXRpb24gaW50byBkb2Mgc3lzdGVtLCBMZWUgVGhvbWFzb24gU2VwdGVtYmVyIDIwMDUgIDwvbGk+Ci08L3VsPgotPC9lbT4gPGhyIHNpemU9IjEiPjxhZGRyZXNzIHN0eWxlPSJhbGlnbjogcmlnaHQ7Ij48c21hbGw+R2VuZXJhdGVkIG9uIFNhdCBPY3QgOCAxNDoxNTozMCAyMDA1IGZvciBUaW55WG1sIGJ5Jm5ic3A7Ci08YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iIGFsaWduPSJtaWRkbGUiIGJvcmRlcj0iMCI+PC9hPiAxLjQuNCA8L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2VjaG8uZHNwIGIvZWNoby5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZWI4OTYuLjAwMDAwMDAKLS0tIGEvZWNoby5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJlY2hvIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMNCi0NCi1DRkc9ZWNobyAtIFdpbjMyIERlYnVnDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJlY2hvLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJlY2hvLm1hayIgQ0ZHPSJlY2hvIC0gV2luMzIgRGVidWciDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgImVjaG8gLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJlY2hvIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gImVjaG8gLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiZWNob1JlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgImVjaG9SZWxlYXNlIg0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIlRJWE1MX1VTRV9TVEwiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJlY2hvIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiZWNob19fX1dpbjMyX0RlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgImVjaG9fX19XaW4zMl9EZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiZWNob0RlYnVnIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJlY2hvRGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0QgIlRJWE1MX1VTRV9TVEwiIC9GUiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJlY2hvIC0gV2luMzIgUmVsZWFzZSINCi0jIE5hbWUgImVjaG8gLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5ceG1sdGVzdGVyXGJ1Z3Rlc3QuY3BwDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cdGlueXN0ci5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55c3RyLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55eG1sLmNwcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXHRpbnl4bWwuaA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXHRpbnl4bWxlcnJvci5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55eG1scGFyc2VyLmNwcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3JlYWRtZS50eHQgYi9yZWFkbWUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjgwODRiLi4wMDAwMDAwCi0tLSBhL3JlYWRtZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw1MDIgKzAsMCBAQAotLyoqIEBtYWlucGFnZQotCi08aDE+IFRpbnlYbWwgPC9oMT4KLQotVGlueVhtbCBpcyBhIHNpbXBsZSwgc21hbGwsIEMrKyBYTUwgcGFyc2VyIHRoYXQgY2FuIGJlIGVhc2lseSAKLWludGVncmF0aW5nIGludG8gb3RoZXIgcHJvZ3JhbXMuCi0KLTxoMj4gV2hhdCBpdCBkb2VzLiA8L2gyPgotCQotSW4gYnJpZWYsIFRpbnlYbWwgcGFyc2VzIGFuIFhNTCBkb2N1bWVudCwgYW5kIGJ1aWxkcyBmcm9tIHRoYXQgYSAKLURvY3VtZW50IE9iamVjdCBNb2RlbCAoRE9NKSB0aGF0IGNhbiBiZSByZWFkLCBtb2RpZmllZCwgYW5kIHNhdmVkLgotCi1YTUwgc3RhbmRzIGZvciAiZVh0ZW5zaWJsZSBNYXJrdXAgTGFuZ3VhZ2UuIiBJdCBhbGxvd3MgeW91IHRvIGNyZWF0ZSAKLXlvdXIgb3duIGRvY3VtZW50IG1hcmt1cHMuIFdoZXJlIEhUTUwgZG9lcyBhIHZlcnkgZ29vZCBqb2Igb2YgbWFya2luZyAKLWRvY3VtZW50cyBmb3IgYnJvd3NlcnMsIFhNTCBhbGxvd3MgeW91IHRvIGRlZmluZSBhbnkga2luZCBvZiBkb2N1bWVudCAKLW1hcmt1cCwgZm9yIGV4YW1wbGUgYSBkb2N1bWVudCB0aGF0IGRlc2NyaWJlcyBhICJ0byBkbyIgbGlzdCBmb3IgYW4gCi1vcmdhbml6ZXIgYXBwbGljYXRpb24uIFhNTCBpcyBhIHZlcnkgc3RydWN0dXJlZCBhbmQgY29udmVuaWVudCBmb3JtYXQuCi1BbGwgdGhvc2UgcmFuZG9tIGZpbGUgZm9ybWF0cyBjcmVhdGVkIHRvIHN0b3JlIGFwcGxpY2F0aW9uIGRhdGEgY2FuIAotYWxsIGJlIHJlcGxhY2VkIHdpdGggWE1MLiBPbmUgcGFyc2VyIGZvciBldmVyeXRoaW5nLgotCi1UaGUgYmVzdCBwbGFjZSBmb3IgdGhlIGNvbXBsZXRlLCBjb3JyZWN0LCBhbmQgcXVpdGUgZnJhbmtseSBoYXJkIHRvCi1yZWFkIHNwZWMgaXMgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLTIwMDQwMjA0LyI+Ci1odHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvPC9hPi4gQW4gaW50cm8gdG8gWE1MCi0odGhhdCBJIHJlYWxseSBsaWtlKSBjYW4gYmUgZm91bmQgYXQgCi08YSBocmVmPSJodHRwOi8vc2tldy5vcmcveG1sL3R1dG9yaWFsLyI+aHR0cDovL3NrZXcub3JnL3htbC90dXRvcmlhbDwvYT4uCi0KLVRoZXJlIGFyZSBkaWZmZXJlbnQgd2F5cyB0byBhY2Nlc3MgYW5kIGludGVyYWN0IHdpdGggWE1MIGRhdGEuCi1UaW55WG1sIHVzZXMgYSBEb2N1bWVudCBPYmplY3QgTW9kZWwgKERPTSksIG1lYW5pbmcgdGhlIFhNTCBkYXRhIGlzIHBhcnNlZAotaW50byBhIEMrKyBvYmplY3RzIHRoYXQgY2FuIGJlIGJyb3dzZWQgYW5kIG1hbmlwdWxhdGVkLCBhbmQgdGhlbiAKLXdyaXR0ZW4gdG8gZGlzayBvciBhbm90aGVyIG91dHB1dCBzdHJlYW0uIFlvdSBjYW4gYWxzbyBjb25zdHJ1Y3QgYW4gWE1MIGRvY3VtZW50IGZyb20KLXNjcmF0Y2ggd2l0aCBDKysgb2JqZWN0cyBhbmQgd3JpdGUgdGhpcyB0byBkaXNrIG9yIGFub3RoZXIgb3V0cHV0Ci1zdHJlYW0uCi0KLVRpbnlYbWwgaXMgZGVzaWduZWQgdG8gYmUgZWFzeSBhbmQgZmFzdCB0byBsZWFybi4gSXQgaXMgdHdvIGhlYWRlcnMgCi1hbmQgZm91ciBjcHAgZmlsZXMuIFNpbXBseSBhZGQgdGhlc2UgdG8geW91ciBwcm9qZWN0IGFuZCBvZmYgeW91IGdvLiAKLVRoZXJlIGlzIGFuIGV4YW1wbGUgZmlsZSAtIHhtbHRlc3QuY3BwIC0gdG8gZ2V0IHlvdSBzdGFydGVkLiAKLQotVGlueVhtbCBpcyByZWxlYXNlZCB1bmRlciB0aGUgWkxpYiBsaWNlbnNlLCAKLXNvIHlvdSBjYW4gdXNlIGl0IGluIG9wZW4gc291cmNlIG9yIGNvbW1lcmNpYWwgY29kZS4gVGhlIGRldGFpbHMKLW9mIHRoZSBsaWNlbnNlIGFyZSBhdCB0aGUgdG9wIG9mIGV2ZXJ5IHNvdXJjZSBmaWxlLgotCi1UaW55WG1sIGF0dGVtcHRzIHRvIGJlIGEgZmxleGlibGUgcGFyc2VyLCBidXQgd2l0aCB0cnVseSBjb3JyZWN0IGFuZAotY29tcGxpYW50IFhNTCBvdXRwdXQuIFRpbnlYbWwgc2hvdWxkIGNvbXBpbGUgb24gYW55IHJlYXNvbmFibHkgQysrCi1jb21wbGlhbnQgc3lzdGVtLiBJdCBkb2VzIG5vdCByZWx5IG9uIGV4Y2VwdGlvbnMgb3IgUlRUSS4gSXQgY2FuIGJlIAotY29tcGlsZWQgd2l0aCBvciB3aXRob3V0IFNUTCBzdXBwb3J0LiBUaW55WG1sIGZ1bGx5IHN1cHBvcnRzCi10aGUgVVRGLTggZW5jb2RpbmcsIGFuZCB0aGUgZmlyc3QgNjRrIGNoYXJhY3RlciBlbnRpdGllcy4KLQotCi08aDI+IFdoYXQgaXQgZG9lc24ndCBkby4gPC9oMj4KLQotSXQgZG9lc250IHBhcnNlIG9yIHVzZSBEVERzIChEb2N1bWVudCBUeXBlIERlZmluaXRpb25zKSBvciBYU0xzCi0oZVh0ZW5zaWJsZSBTdHlsZXNoZWV0IExhbmd1YWdlLikgVGhlcmUgYXJlIG90aGVyIHBhcnNlcnMgb3V0IHRoZXJlIAotKGNoZWNrIG91dCB3d3cuc291cmNlZm9yZ2Uub3JnLCBzZWFyY2ggZm9yIFhNTCkgdGhhdCBhcmUgbXVjaCBtb3JlIGZ1bGx5Ci1mZWF0dXJlZC4gQnV0IHRoZXkgYXJlIGFsc28gbXVjaCBiaWdnZXIsIHRha2UgbG9uZ2VyIHRvIHNldCB1cCBpbgoteW91ciBwcm9qZWN0LCBoYXZlIGEgaGlnaGVyIGxlYXJuaW5nIGN1cnZlLCBhbmQgb2Z0ZW4gaGF2ZSBhIG1vcmUKLXJlc3RyaWN0aXZlIGxpY2Vuc2UuIElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGJyb3dzZXJzIG9yIGhhdmUgbW9yZQotY29tcGxldGUgWE1MIG5lZWRzLCBUaW55WG1sIGlzIG5vdCB0aGUgcGFyc2VyIGZvciB5b3UuCi0KLVRoZSBmb2xsb3dpbmcgRFREIHN5bnRheCB3aWxsIG5vdCBwYXJzZSBhdCB0aGlzIHRpbWUgaW4gVGlueVhtbDoKLQotQHZlcmJhdGltCi0JPCFET0NUWVBFIEFyY2hpdiBbCi0JIDwhRUxFTUVOVCBDb21tZW50ICgjUENEQVRBKT4KLQldPgotQGVuZHZlcmJhdGltCi0KLWJlY2F1c2UgVGlueVhtbCBzZWVzIHRoaXMgYXMgYSAhRE9DVFlQRSBub2RlIHdpdGggYW4gaWxsZWdhbGx5IAotZW1iZWRkZWQgIUVMRU1FTlQgbm9kZS4gVGhpcyBtYXkgYmUgYWRkcmVzc2VkIGluIHRoZSBmdXR1cmUuCi0KLTxoMj4gVHV0b3JpYWxzLiA8L2gyPgotCi1Gb3IgdGhlIGltcGF0aWVudCwgaGVyZSBpcyBhIHR1dG9yaWFsIHRvIGdldCB5b3UgZ29pbmcuIEEgZ3JlYXQgd2F5IHRvIGdldCBzdGFydGVkLCAKLWJ1dCBpdCBpcyB3b3J0aCB5b3VyIHRpbWUgdG8gcmVhZCB0aGlzICh2ZXJ5IHNob3J0KSBtYW51YWwgY29tcGxldGVseS4KLQotLSBAc3VicGFnZSB0dXRvcmlhbDAKLQotPGgyPiBDb2RlIFN0YXR1cy4gIDwvaDI+Ci0KLVRpbnlYbWwgaXMgbWF0dXJlLCB0ZXN0ZWQgY29kZS4gSXQgaXMgdmVyeSBzdGFibGUuIElmIHlvdSBmaW5kCi1idWdzLCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQgb24gdGhlIHNvdXJjZWZvcmdlIHdlYiBzaXRlCi0od3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sKS4KLVdlJ2xsIGdldCB0aGVtIHN0cmFpZ2h0ZW5lZCBvdXQgYXMgc29vbiBhcyBwb3NzaWJsZS4KLQotVGhlcmUgYXJlIHNvbWUgYXJlYXMgb2YgaW1wcm92ZW1lbnQ7IHBsZWFzZSBjaGVjayBzb3VyY2Vmb3JnZSBpZiB5b3UgYXJlCi1pbnRlcmVzdGVkIGluIHdvcmtpbmcgb24gVGlueVhtbC4KLQotCi08aDI+IEZlYXR1cmVzIDwvaDI+Ci0KLTxoMz4gVXNpbmcgU1RMIDwvaDM+Ci0KLVRpbnlYbWwgY2FuIGJlIGNvbXBpbGVkIHRvIHVzZSBvciBub3QgdXNlIFNUTC4gV2hlbiB1c2luZyBTVEwsIFRpbnlYbWwKLXVzZXMgdGhlIHN0ZDo6c3RyaW5nIGNsYXNzLCBhbmQgZnVsbHkgc3VwcG9ydHMgc3RkOjppc3RyZWFtLCBzdGQ6Om9zdHJlYW0sCi1vcGVyYXRvcjw8LCBhbmQgb3BlcmF0b3I+Pi4gTWFueSBBUEkgbWV0aG9kcyBoYXZlIGJvdGggJ2NvbnN0IGNoYXIqJyBhbmQKLSdjb25zdCBzdGQ6OnN0cmluZyYnIGZvcm1zLgotCi1XaGVuIFNUTCBzdXBwb3J0IGlzIGNvbXBpbGVkIG91dCwgbm8gU1RMIGZpbGVzIGFyZSBpbmNsdWRlZCB3aGF0c292ZXIuIEFsbAotdGhlIHN0cmluZyBjbGFzc2VzIGFyZSBpbXBsZW1lbnRlZCBieSBUaW55WG1sIGl0c2VsZi4gQVBJIG1ldGhvZHMKLWFsbCB1c2UgdGhlICdjb25zdCBjaGFyKicgZm9ybSBmb3IgaW5wdXQuCi0KLVVzZSB0aGUgY29tcGlsZSB0aW1lICNkZWZpbmU6Ci0KLQlUSVhNTF9VU0VfU1RMCi0KLXRvIGNvbXBpbGUgb25lIHZlcnNpb24gb3IgdGhlIG90aGVyLiBUaGlzIGNhbiBiZSBwYXNzZWQgYnkgdGhlIGNvbXBpbGVyLAotb3Igc2V0IGFzIHRoZSBmaXJzdCBsaW5lIG9mICJ0aW55eG1sLmgiLgotCi1Ob3RlOiBJZiBjb21waWxpbmcgdGhlIHRlc3QgY29kZSBpbiBMaW51eCwgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQKLXZhcmlhYmxlIFRJTllYTUxfVVNFX1NUTD1ZRVMvTk8gd2lsbCBjb250cm9sIFNUTCBjb21waWxhdGlvbi4gSW4gdGhlCi1XaW5kb3dzIHByb2plY3QgZmlsZSwgU1RMIGFuZCBub24gU1RMIHRhcmdldHMgYXJlIHByb3ZpZGVkLiBJbiB5b3VyIHByb2plY3QsCi1pdHMgcHJvYmFibHkgZWFzaWVzdCB0byBhZGQgdGhlIGxpbmUgIiNkZWZpbmUgVElYTUxfVVNFX1NUTCIgYXMgdGhlIGZpcnN0Ci1saW5lIG9mIHRpbnl4bWwuaC4KLQotPGgzPiBVVEYtOCA8L2gzPgotCi1UaW55WG1sIHN1cHBvcnRzIFVURi04IGFsbG93aW5nIHRvIG1hbmlwdWxhdGUgWE1MIGZpbGVzIGluIGFueSBsYW5ndWFnZS4gVGlueVhtbAotYWxzbyBzdXBwb3J0cyAibGVnYWN5IG1vZGUiIC0gdGhlIGVuY29kaW5nIHVzZWQgYmVmb3JlIFVURi04IHN1cHBvcnQgYW5kCi1wcm9iYWJseSBiZXN0IGRlc2NyaWJlZCBhcyAiZXh0ZW5kZWQgYXNjaWkiLgotCi1Ob3JtYWxseSwgVGlueVhtbCB3aWxsIHRyeSB0byBkZXRlY3QgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYW5kIHVzZSBpdC4gSG93ZXZlciwKLWJ5IHNldHRpbmcgdGhlIHZhbHVlIG9mIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgaW4gdGhlIGhlYWRlciBmaWxlLCBUaW55WG1sCi1jYW4gYmUgZm9yY2VkIHRvIGFsd2F5cyB1c2Ugb25lIGVuY29kaW5nLgotCi1UaW55WG1sIHdpbGwgYXNzdW1lIExlZ2FjeSBNb2RlIHVudGlsIG9uZSBvZiB0aGUgZm9sbG93aW5nIG9jY3VyczoKLTxvbD4KLQk8bGk+IElmIHRoZSBub24tc3RhbmRhcmQgYnV0IGNvbW1vbiAiVVRGLTggbGVhZCBieXRlcyIgKDB4ZWYgMHhiYiAweGJmKQotCQkgYmVnaW4gdGhlIGZpbGUgb3IgZGF0YSBzdHJlYW0sIFRpbnlYbWwgd2lsbCByZWFkIGl0IGFzIFVURi04LiA8L2xpPgotCTxsaT4gSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIGFuIGVuY29kaW5nPSJVVEYtOCIsIHRoZW4KLQkJIFRpbnlYbWwgd2lsbCByZWFkIGl0IGFzIFVURi04LiA8L2xpPgotCTxsaT4gSWYgdGhlIGRlY2xhcmF0aW9uIHRhZyBpcyByZWFkLCBhbmQgaXQgaGFzIG5vIGVuY29kaW5nIHNwZWNpZmllZCwgdGhlbgotCQkgVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgVVRGLTguIDwvbGk+Ci0JPGxpPiBJZiB0aGUgZGVjbGFyYXRpb24gdGFnIGlzIHJlYWQsIGFuZCBpdCBoYXMgYW4gZW5jb2Rpbmc9InNvbWV0aGluZyBlbHNlIiwgdGhlbgotCQkgVGlueVhtbCB3aWxsIHJlYWQgaXQgYXMgTGVnYWN5IE1vZGUuIEluIGxlZ2FjeSBtb2RlLCBUaW55WG1sIHdpbGwgCi0JCSB3b3JrIGFzIGl0IGRpZCBiZWZvcmUuIEl0J3Mgbm90IGNsZWFyIHdoYXQgdGhhdCBtb2RlIGRvZXMgZXhhY3RseSwgYnV0IAotCQkgb2xkIGNvbnRlbnQgc2hvdWxkIGtlZXAgd29ya2luZy48L2xpPgotCTxsaT4gVW50aWwgb25lIG9mIHRoZSBhYm92ZSBjcml0ZXJpYSBpcyBtZXQsIFRpbnlYbWwgcnVucyBpbiBMZWdhY3kgTW9kZS48L2xpPgotPC9vbD4KLQotV2hhdCBoYXBwZW5zIGlmIHRoZSBlbmNvZGluZyBpcyBpbmNvcnJlY3RseSBzZXQgb3IgZGV0ZWN0ZWQ/IFRpbnlYbWwgd2lsbCB0cnkKLXRvIHJlYWQgYW5kIHBhc3MgdGhyb3VnaCB0ZXh0IHNlZW4gYXMgaW1wcm9wZXJseSBlbmNvZGVkLiBZb3UgbWF5IGdldCBzb21lIHN0cmFuZ2UKLXJlc3VsdHMgb3IgbWFuZ2xlZCBjaGFyYWN0ZXJzLiBZb3UgbWF5IHdhbnQgdG8gZm9yY2UgVGlueVhtbCB0byB0aGUgY29ycmVjdCBtb2RlLgotCi08Yj4gWW91IG1heSBmb3JjZSBUaW55WG1sIHRvIExlZ2FjeSBNb2RlIGJ5IHVzaW5nIExvYWRGaWxlKCBUSVhNTF9FTkNPRElOR19MRUdBQ1kgKSBvcgotTG9hZEZpbGUoIGZpbGVuYW1lLCBUSVhNTF9FTkNPRElOR19MRUdBQ1kgKS4gWW91IG1heSBmb3JjZSBpdCB0byB1c2UgbGVnYWN5IG1vZGUgYWxsCi10aGUgdGltZSBieSBzZXR0aW5nIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgPSBUSVhNTF9FTkNPRElOR19MRUdBQ1kuIExpa2V3aXNlLCB5b3UgbWF5IAotZm9yY2UgaXQgdG8gVElYTUxfRU5DT0RJTkdfVVRGOCB3aXRoIHRoZSBzYW1lIHRlY2huaXF1ZS48L2I+Ci0KLUZvciBFbmdsaXNoIHVzZXJzLCB1c2luZyBFbmdsaXNoIFhNTCwgVVRGLTggaXMgdGhlIHNhbWUgYXMgbG93LUFTQ0lJLiBZb3UKLWRvbid0IG5lZWQgdG8gYmUgYXdhcmUgb2YgVVRGLTggb3IgY2hhbmdlIHlvdXIgY29kZSBpbiBhbnkgd2F5LiBZb3UgY2FuIHRoaW5rCi1vZiBVVEYtOCBhcyBhICJzdXBlcnNldCIgb2YgQVNDSUkuCi0KLVVURi04IGlzIG5vdCBhIGRvdWJsZSBieXRlIGZvcm1hdCAtIGJ1dCBpdCBpcyBhIHN0YW5kYXJkIGVuY29kaW5nIG9mIFVuaWNvZGUhCi1UaW55WG1sIGRvZXMgbm90IHVzZSBvciBkaXJlY3RseSBzdXBwb3J0IHdjaGFyLCBUQ0hBUiwgb3IgTWljcm9zb2Z0cyBfVU5JQ09ERSBhdCB0aGlzIHRpbWUuIAotSXQgaXMgY29tbW9uIHRvIHNlZSB0aGUgdGVybSAiVW5pY29kZSIgaW1wcm9wZXJseSByZWZlciB0byBVVEYtMTYsIGEgd2lkZSBieXRlIGVuY29kaW5nCi1vZiB1bmljb2RlLiBUaGlzIGlzIGEgc291cmNlIG9mIGNvbmZ1c2lvbi4KLQotRm9yICJoaWdoLWFzY2lpIiBsYW5ndWFnZXMgLSBldmVyeXRoaW5nIG5vdCBFbmdsaXNoLCBwcmV0dHkgbXVjaCAtIFRpbnlYbWwgY2FuCi1oYW5kbGUgYWxsIGxhbmd1YWdlcywgYXQgdGhlIHNhbWUgdGltZSwgYXMgbG9uZyBhcyB0aGUgWE1MIGlzIGVuY29kZWQKLWluIFVURi04LiBUaGF0IGNhbiBiZSBhIGxpdHRsZSB0cmlja3ksIG9sZGVyIHByb2dyYW1zIGFuZCBvcGVyYXRpbmcgc3lzdGVtcwotdGVuZCB0byB1c2UgdGhlICJkZWZhdWx0IiBvciAidHJhZGl0aW9uYWwiIGNvZGUgcGFnZS4gTWFueSBhcHBzIChhbmQgYWxtb3N0IGFsbAotbW9kZXJuIG9uZXMpIGNhbiBvdXRwdXQgVVRGLTgsIGJ1dCBvbGRlciBvciBzdHViYm9ybiAob3IganVzdCBicm9rZW4pIG9uZXMKLXN0aWxsIG91dHB1dCB0ZXh0IGluIHRoZSBkZWZhdWx0IGNvZGUgcGFnZS4gCi0KLUZvciBleGFtcGxlLCBKYXBhbmVzZSBzeXN0ZW1zIHRyYWRpdGlvbmFsbHkgdXNlIFNISUZULUpJUyBlbmNvZGluZy4gCi1UZXh0IGVuY29kZWQgYXMgU0hJRlQtSklTIGNhbiBub3QgYmUgcmVhZCBieSB0aW55eG1sLiAKLUEgZ29vZCB0ZXh0IGVkaXRvciBjYW4gaW1wb3J0IFNISUZULUpJUyBhbmQgdGhlbiBzYXZlIGFzIFVURi04LgotCi1UaGUgPGEgaHJlZj0iaHR0cDovL3NrZXcub3JnL3htbC90dXRvcmlhbC8iPlNrZXcub3JnIGxpbms8L2E+IGRvZXMgYSBncmVhdAotam9iIGNvdmVyaW5nIHRoZSBlbmNvZGluZyBpc3N1ZS4KLQotVGhlIHRlc3QgZmlsZSAidXRmOHRlc3QueG1sIiBpcyBhbiBYTUwgY29udGFpbmluZyBFbmdsaXNoLCBTcGFuaXNoLCBSdXNzaWFuLAotYW5kIFNpbXBsaWZpZWQgQ2hpbmVzZS4gKEhvcGVmdWxseSB0aGV5IGFyZSB0cmFuc2xhdGVkIGNvcnJlY3RseSkuIFRoZSBmaWxlCi0idXRmOHRlc3QuZ2lmIiBpcyBhIHNjcmVlbiBjYXB0dXJlIG9mIHRoZSBYTUwgZmlsZSwgcmVuZGVyZWQgaW4gSUUuIE5vdGUgdGhhdAotaWYgeW91IGRvbid0IGhhdmUgdGhlIGNvcnJlY3QgZm9udHMgKFNpbXBsaWZpZWQgQ2hpbmVzZSBvciBSdXNzaWFuKSBvbiB5b3VyCi1zeXN0ZW0sIHlvdSB3b24ndCBzZWUgb3V0cHV0IHRoYXQgbWF0Y2hlcyB0aGUgR0lGIGZpbGUgZXZlbiBpZiB5b3UgY2FuIHBhcnNlCi1pdCBjb3JyZWN0bHkuIEFsc28gbm90ZSB0aGF0IChhdCBsZWFzdCBvbiBteSBXaW5kb3dzIG1hY2hpbmUpIGNvbnNvbGUgb3V0cHV0Ci1pcyBpbiBhIFdlc3Rlcm4gY29kZSBwYWdlLCBzbyB0aGF0IFByaW50KCkgb3IgcHJpbnRmKCkgY2Fubm90IGNvcnJlY3RseSBkaXNwbGF5Ci10aGUgZmlsZS4gVGhpcyBpcyBub3QgYSBidWcgaW4gVGlueVhtbCAtIGp1c3QgYW4gT1MgaXNzdWUuIE5vIGRhdGEgaXMgbG9zdCBvciAKLWRlc3Ryb3llZCBieSBUaW55WG1sLiBUaGUgY29uc29sZSBqdXN0IGRvZXNuJ3QgcmVuZGVyIFVURi04LgotCi0KLTxoMz4gRW50aXRpZXMgPC9oMz4KLVRpbnlYbWwgcmVjb2duaXplcyB0aGUgcHJlLWRlZmluZWQgImNoYXJhY3RlciBlbnRpdGllcyIsIG1lYW5pbmcgc3BlY2lhbAotY2hhcmFjdGVycy4gTmFtZWx5OgotCi1AdmVyYmF0aW0KLQkmYW1wOwkmCi0JJmx0Owk8Ci0JJmd0Owk+Ci0JJnF1b3Q7CSIKLQkmYXBvczsJJwotQGVuZHZlcmJhdGltCi0KLVRoZXNlIGFyZSByZWNvZ25pemVkIHdoZW4gdGhlIFhNTCBkb2N1bWVudCBpcyByZWFkLCBhbmQgdHJhbnNsYXRlZCB0byB0aGVyZQotVVRGLTggZXF1aXZhbGVudHMuIEZvciBpbnN0YW5jZSwgdGV4dCB3aXRoIHRoZSBYTUwgb2Y6Ci0KLUB2ZXJiYXRpbQotCUZhciAmYW1wOyBBd2F5Ci1AZW5kdmVyYmF0aW0KLQotd2lsbCBoYXZlIHRoZSBWYWx1ZSgpIG9mICJGYXIgJiBBd2F5IiB3aGVuIHF1ZXJpZWQgZnJvbSB0aGUgVGlYbWxUZXh0IG9iamVjdCwKLWFuZCB3aWxsIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgWE1MIHN0cmVhbS9maWxlIGFzIGFuIGFtcGVyc2FuZC4gT2xkZXIgdmVyc2lvbnMKLW9mIFRpbnlYbWwgInByZXNlcnZlZCIgY2hhcmFjdGVyIGVudGl0aWVzLCBidXQgdGhlIG5ld2VyIHZlcnNpb25zIHdpbGwgdHJhbnNsYXRlCi10aGVtIGludG8gY2hhcmFjdGVycy4KLQotQWRkaXRpb25hbGx5LCBhbnkgY2hhcmFjdGVyIGNhbiBiZSBzcGVjaWZpZWQgYnkgaXRzIFVuaWNvZGUgY29kZSBwb2ludDoKLVRoZSBzeW50YXggIiYjeEEwOyIgb3IgIiYjMTYwOyIgYXJlIGJvdGggdG8gdGhlIG5vbi1icmVha2luZyBzcGFjZSBjaGFyYWNoZXIuCi0KLQotPGgzPiBTdHJlYW1zIDwvaDM+Ci1XaXRoIFRJWE1MX1VTRV9TVEwgb24sCi1UaVhtbCBoYXMgYmVlbiBtb2RpZmllZCB0byBzdXBwb3J0IGJvdGggQyAoRklMRSkgYW5kIEMrKyAob3BlcmF0b3IgPDwsPj4pIAotc3RyZWFtcy4gVGhlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXMgdGhhdCB5b3UgbWF5IG5lZWQgdG8gYmUgYXdhcmUgb2YuCi0KLUMgc3R5bGUgb3V0cHV0OgotCS0gYmFzZWQgb24gRklMRSoKLQktIHRoZSBQcmludCgpIGFuZCBTYXZlRmlsZSgpIG1ldGhvZHMKLQotCUdlbmVyYXRlcyBmb3JtYXR0ZWQgb3V0cHV0LCB3aXRoIHBsZW50eSBvZiB3aGl0ZSBzcGFjZSwgaW50ZW5kZWQgdG8gYmUgYXMgCi0JaHVtYW4tcmVhZGFibGUgYXMgcG9zc2libGUuIFRoZXkgYXJlIHZlcnkgZmFzdCwgYW5kIHRvbGVyYW50IG9mIGlsbCBmb3JtZWQgCi0JWE1MIGRvY3VtZW50cy4gRm9yIGV4YW1wbGUsIGFuIFhNTCBkb2N1bWVudCB0aGF0IGNvbnRhaW5zIDIgcm9vdCBlbGVtZW50cyAKLQlhbmQgMiBkZWNsYXJhdGlvbnMsIHdpbGwgc3RpbGwgcHJpbnQuCi0KLUMgc3R5bGUgaW5wdXQ6Ci0JLSBiYXNlZCBvbiBGSUxFKgotCS0gdGhlIFBhcnNlKCkgYW5kIExvYWRGaWxlKCkgbWV0aG9kcwotCi0JQSBmYXN0LCB0b2xlcmFudCByZWFkLiBVc2Ugd2hlbmV2ZXIgeW91IGRvbid0IG5lZWQgdGhlIEMrKyBzdHJlYW1zLgotCi1DKysgc3R5bGUgb3VwdXQ6Ci0JLSBiYXNlZCBvbiBzdGQ6Om9zdHJlYW0KLQktIG9wZXJhdG9yPDwKLQotCUdlbmVyYXRlcyBjb25kZW5zZWQgb3V0cHV0LCBpbnRlbmRlZCBmb3IgbmV0d29yayB0cmFuc21pc3Npb24gcmF0aGVyIHRoYW4KLQlyZWFkYWJpbGl0eS4gRGVwZW5kaW5nIG9uIHlvdXIgc3lzdGVtJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIG9zdHJlYW0gY2xhc3MsCi0JdGhlc2UgbWF5IGJlIHNvbWV3aGF0IHNsb3dlci4gKE9yIG1heSBub3QuKSBOb3QgdG9sZXJhbnQgb2YgaWxsIGZvcm1lZCBYTUw6Ci0JYSBkb2N1bWVudCBzaG91bGQgY29udGFpbiB0aGUgY29ycmVjdCBvbmUgcm9vdCBlbGVtZW50LiBBZGRpdGlvbmFsIHJvb3QgbGV2ZWwKLQllbGVtZW50cyB3aWxsIG5vdCBiZSBzdHJlYW1lZCBvdXQuCi0KLUMrKyBzdHlsZSBpbnB1dDoKLQktIGJhc2VkIG9uIHN0ZDo6aXN0cmVhbQotCS0gb3BlcmF0b3I+PgotCi0JUmVhZHMgWE1MIGZyb20gYSBzdHJlYW0sIG1ha2luZyBpdCB1c2VmdWwgZm9yIG5ldHdvcmsgdHJhbnNtaXNzaW9uLiBUaGUgdHJpY2t5Ci0JcGFydCBpcyBrbm93aW5nIHdoZW4gdGhlIFhNTCBkb2N1bWVudCBpcyBjb21wbGV0ZSwgc2luY2UgdGhlcmUgd2lsbCBhbG1vc3QKLQljZXJ0YWlubHkgYmUgb3RoZXIgZGF0YSBpbiB0aGUgc3RyZWFtLiBUaW55WG1sIHdpbGwgYXNzdW1lIHRoZSBYTUwgZGF0YSBpcwotCWNvbXBsZXRlIGFmdGVyIGl0IHJlYWRzIHRoZSByb290IGVsZW1lbnQuIFB1dCBhbm90aGVyIHdheSwgZG9jdW1lbnRzIHRoYXQKLQlhcmUgaWxsLWNvbnN0cnVjdGVkIHdpdGggbW9yZSB0aGFuIG9uZSByb290IGVsZW1lbnQgd2lsbCBub3QgcmVhZCBjb3JyZWN0bHkuCi0JQWxzbyBub3RlIHRoYXQgb3BlcmF0b3I+PiBpcyBzb21ld2hhdCBzbG93ZXIgdGhhbiBQYXJzZSwgZHVlIHRvIGJvdGggCi0JaW1wbGVtZW50YXRpb24gb2YgdGhlIFNUTCBhbmQgbGltaXRhdGlvbnMgb2YgVGlueVhtbC4KLQotPGgzPiBXaGl0ZSBzcGFjZSA8L2gzPgotVGhlIHdvcmxkIHNpbXBseSBkb2VzIG5vdCBhZ3JlZSBvbiB3aGV0aGVyIHdoaXRlIHNwYWNlIHNob3VsZCBiZSBrZXB0LCBvciBjb25kZW5zZWQuCi1Gb3IgZXhhbXBsZSwgcHJldGVuZCB0aGUgJ18nIGlzIGEgc3BhY2UsIGFuZCBsb29rIGF0ICJIZWxsb19fX193b3JsZCIuIEhUTUwsIGFuZCAKLWF0IGxlYXN0IHNvbWUgWE1MIHBhcnNlcnMsIHdpbGwgaW50ZXJwcmV0IHRoaXMgYXMgIkhlbGxvX3dvcmxkIi4gVGhleSBjb25kZW5zZSB3aGl0ZQotc3BhY2UuIFNvbWUgWE1MIHBhcnNlcnMgZG8gbm90LCBhbmQgd2lsbCBsZWF2ZSBpdCBhcyAiSGVsbG9fX19fd29ybGQiLiAoUmVtZW1iZXIKLXRvIGtlZXAgcHJldGVuZGluZyB0aGUgXyBpcyBhIHNwYWNlLikgT3RoZXJzIHN1Z2dlc3QgdGhhdCBfX0hlbGxvX19fd29ybGRfXyBzaG91bGQgYmVjb21lCi1IZWxsb19fX3dvcmxkLgotCi1JdCdzIGFuIGlzc3VlIHRoYXQgaGFzbid0IGJlZW4gcmVzb2x2ZWQgdG8gbXkgc2F0aXNmYWN0aW9uLiBUaW55WG1sIHN1cHBvcnRzIHRoZQotZmlyc3QgMiBhcHByb2FjaGVzLiBDYWxsIFRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBib29sICkgdG8gc2V0IHRoZSBkZXNpcmVkIGJlaGF2aW9yLgotVGhlIGRlZmF1bHQgaXMgdG8gY29uZGVuc2Ugd2hpdGUgc3BhY2UuCi0KLUlmIHlvdSBjaGFuZ2UgdGhlIGRlZmF1bHQsIHlvdSBzaG91bGQgY2FsbCBUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggYm9vbCApCi1iZWZvcmUgbWFraW5nIGFueSBjYWxscyB0byBQYXJzZSBYTUwgZGF0YSwgYW5kIEkgZG9uJ3QgcmVjb21tZW5kIGNoYW5naW5nIGl0IGFmdGVyCi1pdCBoYXMgYmVlbiBzZXQuCi0KLQotPGgzPiBIYW5kbGVzIDwvaDM+Ci0KLVdoZXJlIGJyb3dzaW5nIGFuIFhNTCBkb2N1bWVudCBpbiBhIHJvYnVzdCB3YXksIGl0IGlzIGltcG9ydGFudCB0byBjaGVjawotZm9yIG51bGwgcmV0dXJucyBmcm9tIG1ldGhvZCBjYWxscy4gQW4gZXJyb3Igc2FmZSBpbXBsZW1lbnRhdGlvbiBjYW4KLWdlbmVyYXRlIGEgbG90IG9mIGNvZGUgbGlrZToKLQotQHZlcmJhdGltCi1UaVhtbEVsZW1lbnQqIHJvb3QgPSBkb2N1bWVudC5GaXJzdENoaWxkRWxlbWVudCggIkRvY3VtZW50IiApOwotaWYgKCByb290ICkKLXsKLQlUaVhtbEVsZW1lbnQqIGVsZW1lbnQgPSByb290LT5GaXJzdENoaWxkRWxlbWVudCggIkVsZW1lbnQiICk7Ci0JaWYgKCBlbGVtZW50ICkKLQl7Ci0JCVRpWG1sRWxlbWVudCogY2hpbGQgPSBlbGVtZW50LT5GaXJzdENoaWxkRWxlbWVudCggIkNoaWxkIiApOwotCQlpZiAoIGNoaWxkICkKLQkJewotCQkJVGlYbWxFbGVtZW50KiBjaGlsZDIgPSBjaGlsZC0+TmV4dFNpYmxpbmdFbGVtZW50KCAiQ2hpbGQiICk7Ci0JCQlpZiAoIGNoaWxkMiApCi0JCQl7Ci0JCQkJLy8gRmluYWxseSBkbyBzb21ldGhpbmcgdXNlZnVsLgotQGVuZHZlcmJhdGltCi0KLUhhbmRsZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gY2xlYW4gdGhpcyB1cC4gVXNpbmcgdGhlIFRpWG1sSGFuZGxlIGNsYXNzLAotdGhlIHByZXZpb3VzIGNvZGUgcmVkdWNlcyB0bzoKLQotQHZlcmJhdGltCi1UaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZkb2N1bWVudCApOwotVGlYbWxFbGVtZW50KiBjaGlsZDIgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZCggIkRvY3VtZW50IiApLkZpcnN0Q2hpbGQoICJFbGVtZW50IiApLkNoaWxkKCAiQ2hpbGQiLCAxICkuRWxlbWVudCgpOwotaWYgKCBjaGlsZDIgKQotewotCS8vIGRvIHNvbWV0aGluZyB1c2VmdWwKLUBlbmR2ZXJiYXRpbQotCi1XaGljaCBpcyBtdWNoIGVhc2llciB0byBkZWFsIHdpdGguIFNlZSBUaVhtbEhhbmRsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotCi08aDM+IFJvdyBhbmQgQ29sdW1uIHRyYWNraW5nIDwvaDM+Ci1CZWluZyBhYmxlIHRvIHRyYWNrIG5vZGVzIGFuZCBhdHRyaWJ1dGVzIGJhY2sgdG8gdGhlaXIgb3JpZ2luIGxvY2F0aW9uCi1pbiBzb3VyY2UgZmlsZXMgY2FuIGJlIHZlcnkgaW1wb3J0YW50IGZvciBzb21lIGFwcGxpY2F0aW9ucy4gQWRkaXRpb25hbGx5LAota25vd2luZyB3aGVyZSBwYXJzaW5nIGVycm9ycyBvY2N1cmVkIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgY2FuIGJlIHZlcnkKLXRpbWUgc2F2aW5nLgotCi1UaW55WG1sIGNhbiB0cmFja3MgdGhlIHJvdyBhbmQgY29sdW1uIG9yaWdpbiBvZiBhbGwgbm9kZXMgYW5kIGF0dHJpYnV0ZXMKLWluIGEgdGV4dCBmaWxlLiBUaGUgVGlYbWxCYXNlOjpSb3coKSBhbmQgVGlYbWxCYXNlOjpDb2x1bW4oKSBtZXRob2RzIHJldHVybgotdGhlIG9yaWdpbiBvZiB0aGUgbm9kZSBpbiB0aGUgc291cmNlIHRleHQuIFRoZSBjb3JyZWN0IHRhYnMgY2FuIGJlIAotY29uZmlndXJlZCBpbiBUaVhtbERvY3VtZW50OjpTZXRUYWJTaXplKCkuCi0KLQotPGgyPiBVc2luZyBhbmQgSW5zdGFsbGluZyA8L2gyPgotCi1UbyBDb21waWxlIGFuZCBSdW4geG1sdGVzdDoKLQotQSBMaW51eCBNYWtlZmlsZSBhbmQgYSBXaW5kb3dzIFZpc3VhbCBDKysgLmRzdyBmaWxlIGlzIHByb3ZpZGVkLiAKLVNpbXBseSBjb21waWxlIGFuZCBydW4uIEl0IHdpbGwgd3JpdGUgdGhlIGZpbGUgZGVtb3Rlc3QueG1sIHRvIHlvdXIgCi1kaXNrIGFuZCBnZW5lcmF0ZSBvdXRwdXQgb24gdGhlIHNjcmVlbi4gSXQgYWxzbyB0ZXN0cyB3YWxraW5nIHRoZQotRE9NIGJ5IHByaW50aW5nIG91dCB0aGUgbnVtYmVyIG9mIG5vZGVzIGZvdW5kIHVzaW5nIGRpZmZlcmVudCAKLXRlY2huaXF1ZXMuCi0KLVRoZSBMaW51eCBtYWtlZmlsZSBpcyB2ZXJ5IGdlbmVyaWMgYW5kIHdpbGwKLXByb2JhYmx5IHJ1biBvbiBvdGhlciBzeXN0ZW1zLCBidXQgaXMgb25seSB0ZXN0ZWQgb24gTGludXguIFlvdSBubwotbG9uZ2VyIG5lZWQgdG8gcnVuICdtYWtlIGRlcGVuZCcuIFRoZSBkZXBlbmRlY2llcyBoYXZlIGJlZW4KLWhhcmQgY29kZWQuCi0KLTxoMz5XaW5kb3dzIHByb2plY3QgZmlsZSBmb3IgVkM2PC9oMz4KLTx1bD4KLTxsaT50aW55eG1sOgkJdGlueXhtbCBsaWJyYXJ5LCBub24tU1RMIDwvbGk+Ci08bGk+dGlueXhtbFNUTDoJCXRpbnl4bWwgbGlicmFyeSwgU1RMIDwvbGk+Ci08bGk+dGlueVhtbFRlc3Q6CXRlc3QgYXBwLCBub24tU1RMIDwvbGk+Ci08bGk+dGlueVhtbFRlc3RTVEw6IHRlc3QgYXBwLCBTVEwgPC9saT4KLTwvdWw+Ci0KLTxoMz5MaW51eCBNYWtlIGZpbGU8L2gzPgotQXQgdGhlIHRvcCBvZiB0aGUgbWFrZWZpbGUgeW91IGNhbiBzZXQ6Ci0KLVBST0ZJTEUsIERFQlVHLCBhbmQgVElOWVhNTF9VU0VfU1RMLiBEZXRhaWxzIChzdWNoIHRoYXQgdGhleSBhcmUpIGFyZSBpbgotdGhlIG1ha2VmaWxlLgotCi1JbiB0aGUgdGlueXhtbCBkaXJlY3RvcnksIHR5cGUgIm1ha2UgY2xlYW4iIHRoZW4gIm1ha2UiLiBUaGUgZXhlY3V0YWJsZQotZmlsZSAneG1sdGVzdCcgd2lsbCBiZSBjcmVhdGVkLgotCi0KLQotPGgzPlRvIFVzZSBpbiBhbiBBcHBsaWNhdGlvbjo8L2gzPgotCi1BZGQgdGlueXhtbC5jcHAsIHRpbnl4bWwuaCwgdGlueXhtbGVycm9yLmNwcCwgdGlueXhtbHBhcnNlci5jcHAsIHRpbnlzdHIuY3BwLCBhbmQgdGlueXN0ci5oIHRvIHlvdXIKLXByb2plY3Qgb3IgbWFrZSBmaWxlLiBUaGF0J3MgaXQhIEl0IHNob3VsZCBjb21waWxlIG9uIGFueSByZWFzb25hYmx5Ci1jb21wbGlhbnQgQysrIHN5c3RlbS4gWW91IGRvIG5vdCBuZWVkIHRvIGVuYWJsZSBleGNlcHRpb25zIG9yCi1SVFRJIGZvciBUaW55WG1sLgotCi0KLTxoMj4gSG93IFRpbnlYbWwgd29ya3MuICA8L2gyPgotCi1BbiBleGFtcGxlIGlzIHByb2JhYmx5IHRoZSBiZXN0IHdheSB0byBnby4gVGFrZToKLUB2ZXJiYXRpbQotCTw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT1ubz4KLQk8IS0tIE91ciB0byBkbyBsaXN0IGRhdGEgLS0+Ci0JPFRvRG8+Ci0JCTxJdGVtIHByaW9yaXR5PSIxIj4gR28gdG8gdGhlIDxib2xkPlRveSBzdG9yZSE8L2JvbGQ+PC9JdGVtPgotCQk8SXRlbSBwcmlvcml0eT0iMiI+IERvIGJpbGxzPC9JdGVtPgotCTwvVG9Ebz4KLUBlbmR2ZXJiYXRpbQotCi1JdHMgbm90IG11Y2ggb2YgYSBUbyBEbyBsaXN0LCBidXQgaXQgd2lsbCBkby4gVG8gcmVhZCB0aGlzIGZpbGUgCi0oc2F5ICJkZW1vLnhtbCIpIHlvdSB3b3VsZCBjcmVhdGUgYSBkb2N1bWVudCwgYW5kIHBhcnNlIGl0IGluOgotQHZlcmJhdGltCi0JVGlYbWxEb2N1bWVudCBkb2MoICJkZW1vLnhtbCIgKTsKLQlkb2MuTG9hZEZpbGUoKTsKLUBlbmR2ZXJiYXRpbQotCi1BbmQgaXRzIHJlYWR5IHRvIGdvLiBOb3cgbGV0cyBsb29rIGF0IHNvbWUgbGluZXMgYW5kIGhvdyB0aGV5IAotcmVsYXRlIHRvIHRoZSBET00uCi0KLUB2ZXJiYXRpbQotPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPW5vPgotQGVuZHZlcmJhdGltCi0KLQlUaGUgZmlyc3QgbGluZSBpcyBhIGRlY2xhcmF0aW9uLCBhbmQgZ2V0cyB0dXJuZWQgaW50byB0aGUKLQlUaVhtbERlY2xhcmF0aW9uIGNsYXNzLiBJdCB3aWxsIGJlIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUKLQlkb2N1bWVudCBub2RlLgotCQotCVRoaXMgaXMgdGhlIG9ubHkgZGlyZWN0aXZlL3NwZWNpYWwgdGFnIHBhcnNlZCBieSBieSBUaW55WG1sLgotCUdlbmVyYWxseSBkaXJlY3RpdmUgdGFyZ3MgYXJlIHN0b3JlZCBpbiBUaVhtbFVua25vd24gc28gdGhlIAotCWNvbW1hbmRzIHdvbnQgYmUgbG9zdCB3aGVuIGl0IGlzIHNhdmVkIGJhY2sgdG8gZGlzay4KLQotQHZlcmJhdGltCi08IS0tIE91ciB0byBkbyBsaXN0IGRhdGEgLS0+Ci1AZW5kdmVyYmF0aW0KLQotCUEgY29tbWVudC4gV2lsbCBiZWNvbWUgYSBUaVhtbENvbW1lbnQgb2JqZWN0LgotCi1AdmVyYmF0aW0KLTxUb0RvPgotQGVuZHZlcmJhdGltCi0KLQlUaGUgIlRvRG8iIHRhZyBkZWZpbmVzIGEgVGlYbWxFbGVtZW50IG9iamVjdC4gVGhpcyBvbmUgZG9lcyBub3QgaGF2ZSAKLQlhbnkgYXR0cmlidXRlcywgYnV0IGRvZXMgY29udGFpbiAyIG90aGVyIGVsZW1lbnRzLgotCi1AdmVyYmF0aW0KLTxJdGVtIHByaW9yaXR5PSIxIj4gCi1AZW5kdmVyYmF0aW0KLQotCUNyZWF0ZXMgYW5vdGhlciBUaVhtbEVsZW1lbnQgd2hpY2ggaXMgYSBjaGlsZCBvZiB0aGUgIlRvRG8iIGVsZW1lbnQuIAotCVRoaXMgZWxlbWVudCBoYXMgMSBhdHRyaWJ1dGUsIHdpdGggdGhlIG5hbWUgInByaW9yaXR5IiBhbmQgdGhlIHZhbHVlIAotCSIxIi4KLQotR28gdG8gdGhlIAotCi0JQSBUaVhtbFRleHQuIFRoaXMgaXMgYSBsZWFmIG5vZGUgYW5kIGNhbm5vdCBjb250YWluIG90aGVyIG5vZGVzLiAKLQlJdCBpcyBhIGNoaWxkIG9mIHRoZSAiSXRlbSIgVGlYbWxFbGVtZW50LgotCi1AdmVyYmF0aW0KLTxib2xkPgotQGVuZHZlcmJhdGltCi0KLQkKLQlBbm90aGVyIFRpWG1sRWxlbWVudCwgdGhpcyBvbmUgYSBjaGlsZCBvZiB0aGUgIkl0ZW0iIGVsZW1lbnQuCi0KLUV0Yy4KLQotTG9va2luZyBhdCB0aGUgZW50aXJlIG9iamVjdCB0cmVlLCB5b3UgZW5kIHVwIHdpdGg6Ci1AdmVyYmF0aW0KLVRpWG1sRG9jdW1lbnQJCQkJImRlbW8ueG1sIgotCVRpWG1sRGVjbGFyYXRpb24JCSJ2ZXJzaW9uPScxLjAnIiAic3RhbmRhbG9uZT1ubyIKLQlUaVhtbENvbW1lbnQJCQkiIE91ciB0byBkbyBsaXN0IGRhdGEiCi0JVGlYbWxFbGVtZW50CQkJIlRvRG8iCi0JCVRpWG1sRWxlbWVudAkJIkl0ZW0iCQlBdHRyaWJ0dXRlczogcHJpb3JpdHkgPSAxCi0JCQlUaVhtbFRleHQJCSJHbyB0byB0aGUgIgotCQkJVGlYbWxFbGVtZW50ICAgICJib2xkIgotCQkJCVRpWG1sVGV4dAkiVG95IHN0b3JlISIKLQkJVGlYbWxFbGVtZW50CQkJIkl0ZW0iCQlBdHRyaWJ1dGVzOiBwcmlvcml0eT0yCi0JCQlUaVhtbFRleHQJCQkiRG8gYmlsbHMiCi1AZW5kdmVyYmF0aW0KLQotPGgyPiBEb2N1bWVudGF0aW9uIDwvaDI+Ci0KLVRoZSBkb2N1bWVudGF0aW9uIGlzIGJ1aWxkIHdpdGggRG94eWdlbiwgdXNpbmcgdGhlICdkb3gnIAotY29uZmlndXJhdGlvbiBmaWxlLgotCi08aDI+IExpY2Vuc2UgPC9oMj4KLQotVGlueVhtbCBpcyByZWxlYXNlZCB1bmRlciB0aGUgemxpYiBsaWNlbnNlOgotCi1UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZCAKLXdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgCi1kYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi0KLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSAKLXB1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCAKLXJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci0KLTEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QgCi1ub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgCi1zb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gCi13b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgotCi0yLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCAKLW11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLQotMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIAotZGlzdHJpYnV0aW9uLgotCi08aDI+IFJlZmVyZW5jZXMgIDwvaDI+Ci0KLVRoZSBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtIGlzIHRoZSBkZWZpbml0aXZlIHN0YW5kYXJkIGJvZHkgZm9yIAotWE1MLCBhbmQgdGhlcmUgd2ViIHBhZ2VzIGNvbnRhaW4gaHVnZSBhbW91bnRzIG9mIGluZm9ybWF0aW9uLiAKLQotVGhlIGRlZmluaXRpdmUgc3BlYzogPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sLTIwMDQwMjA0LyI+Ci1odHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWwtMjAwNDAyMDQvPC9hPgotCi1JIGFsc28gcmVjb21tZW5kICJYTUwgUG9ja2V0IFJlZmVyZW5jZSIgYnkgUm9iZXJ0IEVja3N0ZWluIGFuZCBwdWJsaXNoZWQgYnkgCi1PUmVpbGx5Li4udGhlIGJvb2sgdGhhdCBnb3QgdGhlIHdob2xlIHRoaW5nIHN0YXJ0ZWQuCi0KLTxoMj4gQ29udHJpYnV0b3JzLCBDb250YWN0cywgYW5kIGEgQnJpZWYgSGlzdG9yeSA8L2gyPgotCi1UaGFua3MgdmVyeSBtdWNoIHRvIGV2ZXJ5b25lIHdobyBzZW5kcyBzdWdnZXN0aW9ucywgYnVncywgaWRlYXMsIGFuZCAKLWVuY291cmFnZW1lbnQuIEl0IGFsbCBoZWxwcywgYW5kIG1ha2VzIHRoaXMgcHJvamVjdCBmdW4uIEEgc3BlY2lhbCB0aGFua3MKLXRvIHRoZSBjb250cmlidXRvcnMgb24gdGhlIHdlYiBwYWdlcyB0aGF0IGtlZXAgaXQgbGl2ZWx5LgotCi1TbyBtYW55IHBlb3BsZSBoYXZlIHNlbnQgaW4gYnVncyBhbmQgaWRlYXMsIHRoYXQgcmF0aGVyIHRoYW4gbGlzdCBoZXJlIAotd2UgdHJ5IHRvIGdpdmUgY3JlZGl0IGR1ZSBpbiB0aGUgImNoYW5nZXMudHh0IiBmaWxlLgotCi1UaW55WG1sIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYmUgTGVlIFRob21hc29uLiAoT2Z0ZW4gdGhlICJJIiBzdGlsbAotaW4gdGhlIGRvY3VtZW5hdGlvbi4pIExlZSByZXZpZXdzIGNoYW5nZXMgYW5kIHJlbGVhc2VzIG5ldyB2ZXJzaW9ucywKLXdpdGggdGhlIGhlbHAgb2YgWXZlcyBCZXJxdWluIGFuZCB0aGUgdGlueVhtbCBjb21tdW5pdHkuCi0KLVdlIGFwcHJlY2lhdGUgeW91ciBzdWdnZXN0aW9ucywgYW5kIHdvdWxkIGxvdmUgdG8ga25vdyBpZiB5b3UgCi11c2UgVGlueVhtbC4gSG9wZWZ1bGx5IHlvdSB3aWxsIGVuam95IGl0IGFuZCBmaW5kIGl0IHVzZWZ1bC4gCi1QbGVhc2UgcG9zdCBxdWVzdGlvbnMsIGNvbW1lbnRzLCBmaWxlIGJ1Z3MsIG9yIGNvbnRhY3QgdXMgYXQ6Ci0KLXd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAotCi1MZWUgVGhvbWFzb24sCi1ZdmVzIEJlcnF1aW4KLSovCmRpZmYgLS1naXQgYS90aW55WG1sVGVzdC5kc3AgYi90aW55WG1sVGVzdC5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MjYyYjkuLjAwMDAwMDAKLS0tIGEvdGlueVhtbFRlc3QuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ0aW55WG1sVGVzdCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzDQotDQotQ0ZHPXRpbnlYbWxUZXN0IC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgInRpbnlYbWxUZXN0Lm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ0aW55WG1sVGVzdC5tYWsiIENGRz0idGlueVhtbFRlc3QgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAidGlueVhtbFRlc3QgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJ0aW55WG1sVGVzdCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJ0aW55WG1sVGVzdCAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueVhtbFRlc3RfX19XaW4zMl9SZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAidGlueVhtbFRlc3RfX19XaW4zMl9SZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX1JlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiAvRkQgL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgLi9SZWxlYXNlL3Rpbnl4bWwubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAidGlueVhtbFRlc3QgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJ0aW55WG1sVGVzdF9fX1dpbjMyX0RlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0X19fV2luMzJfRGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZSIC9GRCAvR1ogL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgLi9EZWJ1Zy90aW55eG1sZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAidGlueVhtbFRlc3QgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAidGlueVhtbFRlc3QgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5ceG1sdGVzdC5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS90aW55WG1sVGVzdFNUTC5kc3AgYi90aW55WG1sVGVzdFNUTC5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNDllMDYuLjAwMDAwMDAKLS0tIGEvdGlueVhtbFRlc3RTVEwuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJ0aW55WG1sVGVzdFNUTCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIgMHgwMTAzDQotDQotQ0ZHPXRpbnlYbWxUZXN0U1RMIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgInRpbnlYbWxUZXN0U1RMLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ0aW55WG1sVGVzdFNUTC5tYWsiIENGRz0idGlueVhtbFRlc3RTVEwgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAidGlueVhtbFRlc3RTVEwgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIENvbnNvbGUgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9SZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgInRpbnlYbWxUZXN0U1RMX19fV2luMzJfUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9SZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJ0aW55WG1sVGVzdFNUTF9fX1dpbjMyX1JlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJUSVhNTF9VU0VfU1RMIiAvRkQgL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgLi9SZWxlYXNlX1NUTC90aW55eG1sX3N0bC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ0aW55WG1sVGVzdFNUTCAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgInRpbnlYbWxUZXN0U1RMX19fV2luMzJfRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9EZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9EZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAidGlueVhtbFRlc3RTVExfX19XaW4zMl9EZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiVElYTUxfVVNFX1NUTCIgL0ZSIC9GRCAvR1ogL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgLi9EZWJ1Z19TVEwvdGlueXhtbGRfc3RsLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAidGlueVhtbFRlc3RTVEwgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAidGlueVhtbFRlc3RTVEwgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5ceG1sdGVzdC5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS90aW55c3RyLmNwcCBiL3RpbnlzdHIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTI1MjQyLi4wMDAwMDAwCi0tLSBhL3RpbnlzdHIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8qCi13d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3Rpbnl4bWwKLU9yaWdpbmFsIGZpbGUgYnkgWXZlcyBCZXJxdWluLgotCi1UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAotd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueQotZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgotCi1QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLXB1cnBvc2UsIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZAotcmVkaXN0cmlidXRlIGl0IGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLQotMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdAotbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCi1zb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24KLXdvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi0KLTIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kCi1tdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi0KLTMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZQotZGlzdHJpYnV0aW9uLgotKi8KLQotLyoKLSAqIFRISVMgRklMRSBXQVMgQUxURVJFRCBCWSBUeWdlIEz4dnNldCwgNy4gQXByaWwgMjAwNS4KLSAqLwotCi0KLSNpZm5kZWYgVElYTUxfVVNFX1NUTAotCi0jaW5jbHVkZSAidGlueXN0ci5oIgotCi0vLyBFcnJvciB2YWx1ZSBmb3IgZmluZCBwcmltaXRpdmUKLWNvbnN0IFRpWG1sU3RyaW5nOjpzaXplX3R5cGUgVGlYbWxTdHJpbmc6Om5wb3MgPSBzdGF0aWNfY2FzdDwgc2l6ZV90eXBlID4oLTEpOwotCi0vLyBOdWxsIHJlcC4KLVRpWG1sU3RyaW5nOjpSZXAgVGlYbWxTdHJpbmc6Om51bGxyZXBfID0geyAwLCAwLCAnXDAnIH07Ci0KLQotdm9pZCBUaVhtbFN0cmluZzo6cmVzZXJ2ZSAoc2l6ZV90eXBlIGNhcCkKLXsKLQlpZiAoY2FwID4gY2FwYWNpdHkoKSkKLQl7Ci0JCVRpWG1sU3RyaW5nIHRtcDsKLQkJdG1wLmluaXQobGVuZ3RoKCksIGNhcCk7Ci0JCW1lbWNweSh0bXAuc3RhcnQoKSwgZGF0YSgpLCBsZW5ndGgoKSk7Ci0JCXN3YXAodG1wKTsKLQl9Ci19Ci0KLQotVGlYbWxTdHJpbmcmIFRpWG1sU3RyaW5nOjphc3NpZ24oY29uc3QgY2hhciogc3RyLCBzaXplX3R5cGUgbGVuKQotewotCXNpemVfdHlwZSBjYXAgPSBjYXBhY2l0eSgpOwotCWlmIChsZW4gPiBjYXAgfHwgY2FwID4gMyoobGVuICsgOCkpCi0JewotCQlUaVhtbFN0cmluZyB0bXA7Ci0JCXRtcC5pbml0KGxlbik7Ci0JCW1lbWNweSh0bXAuc3RhcnQoKSwgc3RyLCBsZW4pOwotCQlzd2FwKHRtcCk7Ci0JfQotCWVsc2UKLQl7Ci0JCW1lbW1vdmUoc3RhcnQoKSwgc3RyLCBsZW4pOwotCQlzZXRfc2l6ZShsZW4pOwotCX0KLQlyZXR1cm4gKnRoaXM7Ci19Ci0KLQotVGlYbWxTdHJpbmcmIFRpWG1sU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3R5cGUgbGVuKQotewotCXNpemVfdHlwZSBuZXdzaXplID0gbGVuZ3RoKCkgKyBsZW47Ci0JaWYgKG5ld3NpemUgPiBjYXBhY2l0eSgpKQotCXsKLQkJcmVzZXJ2ZSAobmV3c2l6ZSArIGNhcGFjaXR5KCkpOwotCX0KLQltZW1tb3ZlKGZpbmlzaCgpLCBzdHIsIGxlbik7Ci0Jc2V0X3NpemUobmV3c2l6ZSk7Ci0JcmV0dXJuICp0aGlzOwotfQotCi0KLVRpWG1sU3RyaW5nIG9wZXJhdG9yICsgKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKQotewotCVRpWG1sU3RyaW5nIHRtcDsKLQl0bXAucmVzZXJ2ZShhLmxlbmd0aCgpICsgYi5sZW5ndGgoKSk7Ci0JdG1wICs9IGE7Ci0JdG1wICs9IGI7Ci0JcmV0dXJuIHRtcDsKLX0KLQotVGlYbWxTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBjaGFyKiBiKQotewotCVRpWG1sU3RyaW5nIHRtcDsKLQlUaVhtbFN0cmluZzo6c2l6ZV90eXBlIGJfbGVuID0gc3RhdGljX2Nhc3Q8VGlYbWxTdHJpbmc6OnNpemVfdHlwZT4oIHN0cmxlbihiKSApOwotCXRtcC5yZXNlcnZlKGEubGVuZ3RoKCkgKyBiX2xlbik7Ci0JdG1wICs9IGE7Ci0JdG1wLmFwcGVuZChiLCBiX2xlbik7Ci0JcmV0dXJuIHRtcDsKLX0KLQotVGlYbWxTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgY2hhciogYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKQotewotCVRpWG1sU3RyaW5nIHRtcDsKLQlUaVhtbFN0cmluZzo6c2l6ZV90eXBlIGFfbGVuID0gc3RhdGljX2Nhc3Q8VGlYbWxTdHJpbmc6OnNpemVfdHlwZT4oIHN0cmxlbihhKSApOwotCXRtcC5yZXNlcnZlKGFfbGVuICsgYi5sZW5ndGgoKSk7Ci0JdG1wLmFwcGVuZChhLCBhX2xlbik7Ci0JdG1wICs9IGI7Ci0JcmV0dXJuIHRtcDsKLX0KLQotCi0jZW5kaWYJLy8gVElYTUxfVVNFX1NUTApkaWZmIC0tZ2l0IGEvdGlueXN0ci5oIGIvdGlueXN0ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWRkMmY5Li4wMDAwMDAwCi0tLSBhL3RpbnlzdHIuaAorKysgL2Rldi9udWxsCkBAIC0xLDI5NCArMCwwIEBACi0vKgotd3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCi1PcmlnaW5hbCBmaWxlIGJ5IFl2ZXMgQmVycXVpbi4KLQotVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLXdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkKLWRhbWFnZXMgYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KLQotUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci1wdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQKLXJlZGlzdHJpYnV0ZSBpdCBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci0KLTEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3QKLW5vdCBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcwotc29mdHdhcmUgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uCi13b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgotCi0yLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZAotbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgotCi0zLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UKLWRpc3RyaWJ1dGlvbi4KLSovCi0KLS8qCi0gKiBUSElTIEZJTEUgV0FTIEFMVEVSRUQgQlkgVHlnZSBMb3ZzZXQsIDcuIEFwcmlsIDIwMDUuCi0gKgotICogLSBjb21wbGV0ZWx5IHJld3JpdHRlbi4gY29tcGFjdCwgY2xlYW4sIGFuZCBmYXN0IGltcGxlbWVudGF0aW9uLgotICogLSBzaXplb2YoVGlYbWxTdHJpbmcpID0gcG9pbnRlciBzaXplICg0IGJ5dGVzIG9uIDMyLWJpdCBzeXN0ZW1zKQotICogLSBmaXhlZCByZXNlcnZlKCkgdG8gd29yayBhcyBwZXIgc3BlY2lmaWNhdGlvbi4KLSAqIC0gZml4ZWQgYnVnZ3kgY29tcGFyZXMgb3BlcmF0b3I9PSgpLCBvcGVyYXRvcjwoKSwgYW5kIG9wZXJhdG9yPigpCi0gKiAtIGZpeGVkIG9wZXJhdG9yKz0oKSB0byB0YWtlIGEgY29uc3QgcmVmIGFyZ3VtZW50LCBmb2xsb3dpbmcgc3BlYy4KLSAqIC0gYWRkZWQgImNvcHkiIGNvbnN0cnVjdG9yIHdpdGggbGVuZ3RoLCBhbmQgbW9zdCBjb21wYXJlIG9wZXJhdG9ycy4KLSAqIC0gYWRkZWQgc3dhcCgpLCBjbGVhcigpLCBzaXplKCksIGNhcGFjaXR5KCksIG9wZXJhdG9yKygpLgotICovCi0KLSNpZm5kZWYgVElYTUxfVVNFX1NUTAotCi0jaWZuZGVmIFRJWE1MX1NUUklOR19JTkNMVURFRAotI2RlZmluZSBUSVhNTF9TVFJJTkdfSU5DTFVERUQKLQotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0vKgotICAgVGlYbWxTdHJpbmcgaXMgYW4gZW11bGF0aW9uIG9mIGEgc3Vic2V0IG9mIHRoZSBzdGQ6OnN0cmluZyB0ZW1wbGF0ZS4KLSAgIEl0cyBwdXJwb3NlIGlzIHRvIGFsbG93IGNvbXBpbGluZyBUaW55WE1MIG9uIGNvbXBpbGVycyB3aXRoIG5vIG9yIHBvb3IgU1RMIHN1cHBvcnQuCi0gICBPbmx5IHRoZSBtZW1iZXIgZnVuY3Rpb25zIHJlbGV2YW50IHRvIHRoZSBUaW55WE1MIHByb2plY3QgaGF2ZSBiZWVuIGltcGxlbWVudGVkLgotICAgVGhlIGJ1ZmZlciBhbGxvY2F0aW9uIGlzIG1hZGUgYnkgYSBzaW1wbGlzdGljIHBvd2VyIG9mIDIgbGlrZSBtZWNoYW5pc20gOiBpZiB3ZSBpbmNyZWFzZQotICAgYSBzdHJpbmcgYW5kIHRoZXJlJ3Mgbm8gbW9yZSByb29tLCB3ZSBhbGxvY2F0ZSBhIGJ1ZmZlciB0d2ljZSBhcyBiaWcgYXMgd2UgbmVlZC4KLSovCi1jbGFzcyBUaVhtbFN0cmluZwotewotICBwdWJsaWMgOgotCS8vIFRoZSBzaXplIHR5cGUgdXNlZAotICAJdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90eXBlOwotCi0JLy8gRXJyb3IgdmFsdWUgZm9yIGZpbmQgcHJpbWl0aXZlCi0Jc3RhdGljIGNvbnN0IHNpemVfdHlwZSBucG9zOyAvLyA9IC0xOwotCi0KLQkvLyBUaVhtbFN0cmluZyBlbXB0eSBjb25zdHJ1Y3RvcgotCVRpWG1sU3RyaW5nICgpIDogcmVwXygmbnVsbHJlcF8pCi0JewotCX0KLQotCS8vIFRpWG1sU3RyaW5nIGNvcHkgY29uc3RydWN0b3IKLQlUaVhtbFN0cmluZyAoY29uc3QgVGlYbWxTdHJpbmcgJiBjb3B5KQotCXsKLQkJaW5pdChjb3B5Lmxlbmd0aCgpKTsKLQkJbWVtY3B5KHN0YXJ0KCksIGNvcHkuZGF0YSgpLCBsZW5ndGgoKSk7Ci0JfQotCi0JLy8gVGlYbWxTdHJpbmcgY29uc3RydWN0b3IsIGJhc2VkIG9uIGEgc3RyaW5nCi0JVGlYbWxTdHJpbmcgKGNvbnN0IGNoYXIgKiBjb3B5KQotCXsKLQkJaW5pdCggc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPiggc3RybGVuKGNvcHkpICkpOwotCQltZW1jcHkoc3RhcnQoKSwgY29weSwgbGVuZ3RoKCkpOwotCX0KLQotCS8vIFRpWG1sU3RyaW5nIGNvbnN0cnVjdG9yLCBiYXNlZCBvbiBhIHN0cmluZwotCVRpWG1sU3RyaW5nIChjb25zdCBjaGFyICogc3RyLCBzaXplX3R5cGUgbGVuKQotCXsKLQkJaW5pdChsZW4pOwotCQltZW1jcHkoc3RhcnQoKSwgc3RyLCBsZW4pOwotCX0KLQotCS8vIFRpWG1sU3RyaW5nIGRlc3RydWN0b3IKLQl+VGlYbWxTdHJpbmcgKCkKLQl7Ci0JCXF1aXQoKTsKLQl9Ci0KLQkvLyA9IG9wZXJhdG9yCi0JVGlYbWxTdHJpbmcmIG9wZXJhdG9yID0gKGNvbnN0IGNoYXIgKiBjb3B5KQotCXsKLQkJcmV0dXJuIGFzc2lnbiggY29weSwgKHNpemVfdHlwZSlzdHJsZW4oY29weSkpOwotCX0KLQotCS8vID0gb3BlcmF0b3IKLQlUaVhtbFN0cmluZyYgb3BlcmF0b3IgPSAoY29uc3QgVGlYbWxTdHJpbmcgJiBjb3B5KQotCXsKLQkJcmV0dXJuIGFzc2lnbihjb3B5LnN0YXJ0KCksIGNvcHkubGVuZ3RoKCkpOwotCX0KLQotCi0JLy8gKz0gb3BlcmF0b3IuIE1hcHMgdG8gYXBwZW5kCi0JVGlYbWxTdHJpbmcmIG9wZXJhdG9yICs9IChjb25zdCBjaGFyICogc3VmZml4KQotCXsKLQkJcmV0dXJuIGFwcGVuZChzdWZmaXgsIHN0YXRpY19jYXN0PHNpemVfdHlwZT4oIHN0cmxlbihzdWZmaXgpICkpOwotCX0KLQotCS8vICs9IG9wZXJhdG9yLiBNYXBzIHRvIGFwcGVuZAotCVRpWG1sU3RyaW5nJiBvcGVyYXRvciArPSAoY2hhciBzaW5nbGUpCi0JewotCQlyZXR1cm4gYXBwZW5kKCZzaW5nbGUsIDEpOwotCX0KLQotCS8vICs9IG9wZXJhdG9yLiBNYXBzIHRvIGFwcGVuZAotCVRpWG1sU3RyaW5nJiBvcGVyYXRvciArPSAoY29uc3QgVGlYbWxTdHJpbmcgJiBzdWZmaXgpCi0JewotCQlyZXR1cm4gYXBwZW5kKHN1ZmZpeC5kYXRhKCksIHN1ZmZpeC5sZW5ndGgoKSk7Ci0JfQotCi0KLQkvLyBDb252ZXJ0IGEgVGlYbWxTdHJpbmcgaW50byBhIG51bGwtdGVybWluYXRlZCBjaGFyICoKLQljb25zdCBjaGFyICogY19zdHIgKCkgY29uc3QgeyByZXR1cm4gcmVwXy0+c3RyOyB9Ci0KLQkvLyBDb252ZXJ0IGEgVGlYbWxTdHJpbmcgaW50byBhIGNoYXIgKiAobmVlZCBub3QgYmUgbnVsbCB0ZXJtaW5hdGVkKS4KLQljb25zdCBjaGFyICogZGF0YSAoKSBjb25zdCB7IHJldHVybiByZXBfLT5zdHI7IH0KLQotCS8vIFJldHVybiB0aGUgbGVuZ3RoIG9mIGEgVGlYbWxTdHJpbmcKLQlzaXplX3R5cGUgbGVuZ3RoICgpIGNvbnN0IHsgcmV0dXJuIHJlcF8tPnNpemU7IH0KLQotCS8vIEFsaWFzIGZvciBsZW5ndGgoKQotCXNpemVfdHlwZSBzaXplICgpIGNvbnN0IHsgcmV0dXJuIHJlcF8tPnNpemU7IH0KLQotCS8vIENoZWNrcyBpZiBhIFRpWG1sU3RyaW5nIGlzIGVtcHR5Ci0JYm9vbCBlbXB0eSAoKSBjb25zdCB7IHJldHVybiByZXBfLT5zaXplID09IDA7IH0KLQotCS8vIFJldHVybiBjYXBhY2l0eSBvZiBzdHJpbmcKLQlzaXplX3R5cGUgY2FwYWNpdHkgKCkgY29uc3QgeyByZXR1cm4gcmVwXy0+Y2FwYWNpdHk7IH0KLQotCi0JLy8gc2luZ2xlIGNoYXIgZXh0cmFjdGlvbgotCWNvbnN0IGNoYXImIGF0IChzaXplX3R5cGUgaW5kZXgpIGNvbnN0Ci0JewotCQlhc3NlcnQoIGluZGV4IDwgbGVuZ3RoKCkgKTsKLQkJcmV0dXJuIHJlcF8tPnN0clsgaW5kZXggXTsKLQl9Ci0KLQkvLyBbXSBvcGVyYXRvcgotCWNoYXImIG9wZXJhdG9yIFtdIChzaXplX3R5cGUgaW5kZXgpIGNvbnN0Ci0JewotCQlhc3NlcnQoIGluZGV4IDwgbGVuZ3RoKCkgKTsKLQkJcmV0dXJuIHJlcF8tPnN0clsgaW5kZXggXTsKLQl9Ci0KLQkvLyBmaW5kIGEgY2hhciBpbiBhIHN0cmluZy4gUmV0dXJuIFRpWG1sU3RyaW5nOjpucG9zIGlmIG5vdCBmb3VuZAotCXNpemVfdHlwZSBmaW5kIChjaGFyIGxvb2t1cCkgY29uc3QKLQl7Ci0JCXJldHVybiBmaW5kKGxvb2t1cCwgMCk7Ci0JfQotCi0JLy8gZmluZCBhIGNoYXIgaW4gYSBzdHJpbmcgZnJvbSBhbiBvZmZzZXQuIFJldHVybiBUaVhtbFN0cmluZzo6bnBvcyBpZiBub3QgZm91bmQKLQlzaXplX3R5cGUgZmluZCAoY2hhciB0b2ZpbmQsIHNpemVfdHlwZSBvZmZzZXQpIGNvbnN0Ci0JewotCQlpZiAob2Zmc2V0ID49IGxlbmd0aCgpKSByZXR1cm4gbnBvczsKLQotCQlmb3IgKGNvbnN0IGNoYXIqIHAgPSBjX3N0cigpICsgb2Zmc2V0OyAqcCAhPSAnXDAnOyArK3ApCi0JCXsKLQkJICAgaWYgKCpwID09IHRvZmluZCkgcmV0dXJuIHN0YXRpY19jYXN0PCBzaXplX3R5cGUgPiggcCAtIGNfc3RyKCkgKTsKLQkJfQotCQlyZXR1cm4gbnBvczsKLQl9Ci0KLQl2b2lkIGNsZWFyICgpCi0JewotCQkvL0xlZToKLQkJLy9UaGUgb3JpZ2luYWwgd2FzIGp1c3QgdG9vIHN0cmFuZ2UsIHRob3VnaCBjb3JyZWN0OgotCQkvLwlUaVhtbFN0cmluZygpLnN3YXAoKnRoaXMpOwotCQkvL0luc3RlYWQgdXNlIHRoZSBxdWl0ICYgcmUtaW5pdDoKLQkJcXVpdCgpOwotCQlpbml0KDAsMCk7Ci0JfQotCi0JLyoJRnVuY3Rpb24gdG8gcmVzZXJ2ZSBhIGJpZyBhbW91bnQgb2YgZGF0YSB3aGVuIHdlIGtub3cgd2UnbGwgbmVlZCBpdC4gQmUgYXdhcmUgdGhhdCB0aGlzCi0JCWZ1bmN0aW9uIERPRVMgTk9UIGNsZWFyIHRoZSBjb250ZW50IG9mIHRoZSBUaVhtbFN0cmluZyBpZiBhbnkgZXhpc3RzLgotCSovCi0Jdm9pZCByZXNlcnZlIChzaXplX3R5cGUgY2FwKTsKLQotCVRpWG1sU3RyaW5nJiBhc3NpZ24gKGNvbnN0IGNoYXIqIHN0ciwgc2l6ZV90eXBlIGxlbik7Ci0KLQlUaVhtbFN0cmluZyYgYXBwZW5kIChjb25zdCBjaGFyKiBzdHIsIHNpemVfdHlwZSBsZW4pOwotCi0Jdm9pZCBzd2FwIChUaVhtbFN0cmluZyYgb3RoZXIpCi0JewotCQlSZXAqIHIgPSByZXBfOwotCQlyZXBfID0gb3RoZXIucmVwXzsKLQkJb3RoZXIucmVwXyA9IHI7Ci0JfQotCi0gIHByaXZhdGU6Ci0KLQl2b2lkIGluaXQoc2l6ZV90eXBlIHN6KSB7IGluaXQoc3osIHN6KTsgfQotCXZvaWQgc2V0X3NpemUoc2l6ZV90eXBlIHN6KSB7IHJlcF8tPnN0clsgcmVwXy0+c2l6ZSA9IHN6IF0gPSAnXDAnOyB9Ci0JY2hhciogc3RhcnQoKSBjb25zdCB7IHJldHVybiByZXBfLT5zdHI7IH0KLQljaGFyKiBmaW5pc2goKSBjb25zdCB7IHJldHVybiByZXBfLT5zdHIgKyByZXBfLT5zaXplOyB9Ci0KLQlzdHJ1Y3QgUmVwCi0JewotCQlzaXplX3R5cGUgc2l6ZSwgY2FwYWNpdHk7Ci0JCWNoYXIgc3RyWzFdOwotCX07Ci0KLQl2b2lkIGluaXQoc2l6ZV90eXBlIHN6LCBzaXplX3R5cGUgY2FwKQotCXsKLQkJaWYgKGNhcCkKLQkJewotCQkJcmVwXyA9IHN0YXRpY19jYXN0PFJlcCo+KG9wZXJhdG9yIG5ldyhzaXplb2YoUmVwKSArIGNhcCkpOwotCQkJcmVwXy0+c3RyWyByZXBfLT5zaXplID0gc3ogXSA9ICdcMCc7Ci0JCQlyZXBfLT5jYXBhY2l0eSA9IGNhcDsKLQkJfQotCQllbHNlCi0JCXsKLQkJCXJlcF8gPSAmbnVsbHJlcF87Ci0JCX0KLQl9Ci0KLQl2b2lkIHF1aXQoKQotCXsKLQkJaWYgKHJlcF8gIT0gJm51bGxyZXBfKQotCQl7Ci0JCQlvcGVyYXRvciBkZWxldGUocmVwXyk7Ci0JCX0KLQl9Ci0KLQlSZXAgKiByZXBfOwotCXN0YXRpYyBSZXAgbnVsbHJlcF87Ci0KLX0gOwotCi0KLWlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikKLXsKLQlyZXR1cm4gICAgKCBhLmxlbmd0aCgpID09IGIubGVuZ3RoKCkgKQkJCQkvLyBvcHRpbWl6YXRpb24gb24gc29tZSBwbGF0Zm9ybXMKLQkgICAgICAgJiYgKCBzdHJjbXAoYS5jX3N0cigpLCBiLmNfc3RyKCkpID09IDAgKTsJLy8gYWN0dWFsIGNvbXBhcmUKLX0KLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKQotewotCXJldHVybiBzdHJjbXAoYS5jX3N0cigpLCBiLmNfc3RyKCkpIDwgMDsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yID4gIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gYiA8IGE7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIDw9IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gIShiIDwgYSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yID49IChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gIShhIDwgYik7IH0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IFRpWG1sU3RyaW5nICYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gc3RyY21wKGEuY19zdHIoKSwgYikgPT0gMDsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYikgeyByZXR1cm4gYiA9PSBhOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgVGlYbWxTdHJpbmcgJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBjaGFyKiBhLCBjb25zdCBUaVhtbFN0cmluZyAmIGIpIHsgcmV0dXJuICEoYiA9PSBhKTsgfQotCi1UaVhtbFN0cmluZyBvcGVyYXRvciArIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IFRpWG1sU3RyaW5nICYgYik7Ci1UaVhtbFN0cmluZyBvcGVyYXRvciArIChjb25zdCBUaVhtbFN0cmluZyAmIGEsIGNvbnN0IGNoYXIqIGIpOwotVGlYbWxTdHJpbmcgb3BlcmF0b3IgKyAoY29uc3QgY2hhciogYSwgY29uc3QgVGlYbWxTdHJpbmcgJiBiKTsKLQotCi0vKgotICAgVGlYbWxPdXRTdHJlYW0gaXMgYW4gZW11bGF0aW9uIG9mIHN0ZDo6b3N0cmVhbS4gSXQgaXMgYmFzZWQgb24gVGlYbWxTdHJpbmcuCi0gICBPbmx5IHRoZSBvcGVyYXRvcnMgdGhhdCB3ZSBuZWVkIGZvciBUaW55WE1MIGhhdmUgYmVlbiBkZXZlbG9wcGVkLgotKi8KLWNsYXNzIFRpWG1sT3V0U3RyZWFtIDogcHVibGljIFRpWG1sU3RyaW5nCi17Ci1wdWJsaWMgOgotCi0JLy8gVGlYbWxPdXRTdHJlYW0gPDwgb3BlcmF0b3IuCi0JVGlYbWxPdXRTdHJlYW0gJiBvcGVyYXRvciA8PCAoY29uc3QgVGlYbWxTdHJpbmcgJiBpbikKLQl7Ci0JCSp0aGlzICs9IGluOwotCQlyZXR1cm4gKnRoaXM7Ci0JfQotCi0JLy8gVGlYbWxPdXRTdHJlYW0gPDwgb3BlcmF0b3IuCi0JVGlYbWxPdXRTdHJlYW0gJiBvcGVyYXRvciA8PCAoY29uc3QgY2hhciAqIGluKQotCXsKLQkJKnRoaXMgKz0gaW47Ci0JCXJldHVybiAqdGhpczsKLQl9Ci0KLX0gOwotCi0jZW5kaWYJLy8gVElYTUxfU1RSSU5HX0lOQ0xVREVECi0jZW5kaWYJLy8gVElYTUxfVVNFX1NUTApkaWZmIC0tZ2l0IGEvdGlueXhtbC5jcHAgYi90aW55eG1sLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY4NGRlYy4uMDAwMDAwMAotLS0gYS90aW55eG1sLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MzggKzAsMCBAQAotLyoKLXd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAotT3JpZ2luYWwgY29kZSAoMi4wIGFuZCBlYXJsaWVyICljb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBMZWUgVGhvbWFzb24gKHd3dy5ncmlubmluZ2xpemFyZC5jb20pCi0KLVRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi13YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55Ci1kYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi0KLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCi1yZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgotCi0xLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Ci1ub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKLXNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgotd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLQotMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKLW11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLQotMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCi1kaXN0cmlidXRpb24uCi0qLwotCi0jaW5jbHVkZSA8Y3R5cGUuaD4KLSNpbmNsdWRlICJ0aW55eG1sLmgiCi0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0jaW5jbHVkZSA8c3N0cmVhbT4KLSNlbmRpZgotCi0KLWJvb2wgVGlYbWxCYXNlOjpjb25kZW5zZVdoaXRlU3BhY2UgPSB0cnVlOwotCi12b2lkIFRpWG1sQmFzZTo6UHV0U3RyaW5nKCBjb25zdCBUSVhNTF9TVFJJTkcmIHN0ciwgVElYTUxfT1NUUkVBTSogc3RyZWFtICkKLXsKLQlUSVhNTF9TVFJJTkcgYnVmZmVyOwotCVB1dFN0cmluZyggc3RyLCAmYnVmZmVyICk7Ci0JKCpzdHJlYW0pIDw8IGJ1ZmZlcjsKLX0KLQotdm9pZCBUaVhtbEJhc2U6OlB1dFN0cmluZyggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIsIFRJWE1MX1NUUklORyogb3V0U3RyaW5nICkKLXsKLQlpbnQgaT0wOwotCi0Jd2hpbGUoIGk8KGludClzdHIubGVuZ3RoKCkgKQotCXsKLQkJdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpIHN0cltpXTsKLQotCQlpZiAoICAgIGMgPT0gJyYnIAotCQkgICAgICYmIGkgPCAoIChpbnQpc3RyLmxlbmd0aCgpIC0gMiApCi0JCQkgJiYgc3RyW2krMV0gPT0gJyMnCi0JCQkgJiYgc3RyW2krMl0gPT0gJ3gnICkKLQkJewotCQkJLy8gSGV4YWRlY2ltYWwgY2hhcmFjdGVyIHJlZmVyZW5jZS4KLQkJCS8vIFBhc3MgdGhyb3VnaCB1bmNoYW5nZWQuCi0JCQkvLyAmI3hBOTsJLS0gY29weXJpZ2h0IHN5bWJvbCwgZm9yIGV4YW1wbGUuCi0JCQkvLwotCQkJLy8gVGhlIC0xIGlzIGEgYnVnIGZpeCBmcm9tIFJvYiBMYXZlYXV4LiBJdCBrZWVwcwotCQkJLy8gYW4gb3ZlcmZsb3cgZnJvbSBoYXBwZW5pbmcgaWYgdGhlcmUgaXMgbm8gJzsnLgotCQkJLy8gVGhlcmUgYXJlIGFjdHVhbGx5IDIgd2F5cyB0byBleGl0IHRoaXMgbG9vcCAtCi0JCQkvLyB3aGlsZSBmYWlscyAoZXJyb3IgY2FzZSkgYW5kIGJyZWFrIChzZW1pY29sb24gZm91bmQpLgotCQkJLy8gSG93ZXZlciwgdGhlcmUgaXMgbm8gbWVjaGFuaXNtIChjdXJyZW50bHkpIGZvcgotCQkJLy8gdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYW4gZXJyb3IuCi0JCQl3aGlsZSAoIGk8KGludClzdHIubGVuZ3RoKCktMSApCi0JCQl7Ci0JCQkJb3V0U3RyaW5nLT5hcHBlbmQoIHN0ci5jX3N0cigpICsgaSwgMSApOwotCQkJCSsraTsKLQkJCQlpZiAoIHN0cltpXSA9PSAnOycgKQotCQkJCQlicmVhazsKLQkJCX0KLQkJfQotCQllbHNlIGlmICggYyA9PSAnJicgKQotCQl7Ci0JCQlvdXRTdHJpbmctPmFwcGVuZCggZW50aXR5WzBdLnN0ciwgZW50aXR5WzBdLnN0ckxlbmd0aCApOwotCQkJKytpOwotCQl9Ci0JCWVsc2UgaWYgKCBjID09ICc8JyApCi0JCXsKLQkJCW91dFN0cmluZy0+YXBwZW5kKCBlbnRpdHlbMV0uc3RyLCBlbnRpdHlbMV0uc3RyTGVuZ3RoICk7Ci0JCQkrK2k7Ci0JCX0KLQkJZWxzZSBpZiAoIGMgPT0gJz4nICkKLQkJewotCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGVudGl0eVsyXS5zdHIsIGVudGl0eVsyXS5zdHJMZW5ndGggKTsKLQkJCSsraTsKLQkJfQotCQllbHNlIGlmICggYyA9PSAnXCInICkKLQkJewotCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGVudGl0eVszXS5zdHIsIGVudGl0eVszXS5zdHJMZW5ndGggKTsKLQkJCSsraTsKLQkJfQotCQllbHNlIGlmICggYyA9PSAnXCcnICkKLQkJewotCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGVudGl0eVs0XS5zdHIsIGVudGl0eVs0XS5zdHJMZW5ndGggKTsKLQkJCSsraTsKLQkJfQotCQllbHNlIGlmICggYyA8IDMyICkKLQkJewotCQkJLy8gRWFzeSBwYXNzIGF0IG5vbi1hbHBoYS9udW1lcmljL3N5bWJvbAotCQkJLy8gQmVsb3cgMzIgaXMgc3ltYm9saWMuCi0JCQljaGFyIGJ1ZlsgMzIgXTsKLQkJCQotCQkJI2lmIGRlZmluZWQoVElYTUxfU05QUklOVEYpCQkKLQkJCQlUSVhNTF9TTlBSSU5URiggYnVmLCBzaXplb2YoYnVmKSwgIiYjeCUwMlg7IiwgKHVuc2lnbmVkKSAoIGMgJiAweGZmICkgKTsKLQkJCSNlbHNlCi0JCQkJc3ByaW50ZiggYnVmLCAiJiN4JTAyWDsiLCAodW5zaWduZWQpICggYyAmIDB4ZmYgKSApOwotCQkJI2VuZGlmCQkKLQotCQkJLy8qTUU6CXdhcm5pbmcgQzQyNjc6IGNvbnZlcnQgJ3NpemVfdCcgdG8gJ2ludCcKLQkJCS8vKk1FOglJbnQtQ2FzdCB0byBtYWtlIGNvbXBpbGVyIGhhcHB5IC4uLgotCQkJb3V0U3RyaW5nLT5hcHBlbmQoIGJ1ZiwgKGludClzdHJsZW4oIGJ1ZiApICk7Ci0JCQkrK2k7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvL2NoYXIgcmVhbGMgPSAoY2hhcikgYzsKLQkJCS8vb3V0U3RyaW5nLT5hcHBlbmQoICZyZWFsYywgMSApOwotCQkJKm91dFN0cmluZyArPSAoY2hhcikgYzsJLy8gc29tZXdoYXQgbW9yZSBlZmZpY2llbnQgZnVuY3Rpb24gY2FsbC4KLQkJCSsraTsKLQkJfQotCX0KLX0KLQotCi0vLyA8LS0gU3RyYW5nZSBjbGFzcyBmb3IgYSBidWcgZml4LiBTZWFyY2ggZm9yIFNUTF9TVFJJTkdfQlVHCi1UaVhtbEJhc2U6OlN0cmluZ1RvQnVmZmVyOjpTdHJpbmdUb0J1ZmZlciggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIgKQotewotCWJ1ZmZlciA9IG5ldyBjaGFyWyBzdHIubGVuZ3RoKCkrMSBdOwotCWlmICggYnVmZmVyICkKLQl7Ci0JCXN0cmNweSggYnVmZmVyLCBzdHIuY19zdHIoKSApOwotCX0KLX0KLQotCi1UaVhtbEJhc2U6OlN0cmluZ1RvQnVmZmVyOjp+U3RyaW5nVG9CdWZmZXIoKQotewotCWRlbGV0ZSBbXSBidWZmZXI7Ci19Ci0vLyBFbmQgc3RyYW5nZSBidWcgZml4LiAtLT4KLQotCi1UaVhtbE5vZGU6OlRpWG1sTm9kZSggTm9kZVR5cGUgX3R5cGUgKSA6IFRpWG1sQmFzZSgpCi17Ci0JcGFyZW50ID0gMDsKLQl0eXBlID0gX3R5cGU7Ci0JZmlyc3RDaGlsZCA9IDA7Ci0JbGFzdENoaWxkID0gMDsKLQlwcmV2ID0gMDsKLQluZXh0ID0gMDsKLX0KLQotCi1UaVhtbE5vZGU6On5UaVhtbE5vZGUoKQotewotCVRpWG1sTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQ7Ci0JVGlYbWxOb2RlKiB0ZW1wID0gMDsKLQotCXdoaWxlICggbm9kZSApCi0JewotCQl0ZW1wID0gbm9kZTsKLQkJbm9kZSA9IG5vZGUtPm5leHQ7Ci0JCWRlbGV0ZSB0ZW1wOwotCX0JCi19Ci0KLQotdm9pZCBUaVhtbE5vZGU6OkNvcHlUbyggVGlYbWxOb2RlKiB0YXJnZXQgKSBjb25zdAotewotCXRhcmdldC0+U2V0VmFsdWUgKHZhbHVlLmNfc3RyKCkgKTsKLQl0YXJnZXQtPnVzZXJEYXRhID0gdXNlckRhdGE7IAotfQotCi0KLXZvaWQgVGlYbWxOb2RlOjpDbGVhcigpCi17Ci0JVGlYbWxOb2RlKiBub2RlID0gZmlyc3RDaGlsZDsKLQlUaVhtbE5vZGUqIHRlbXAgPSAwOwotCi0Jd2hpbGUgKCBub2RlICkKLQl7Ci0JCXRlbXAgPSBub2RlOwotCQlub2RlID0gbm9kZS0+bmV4dDsKLQkJZGVsZXRlIHRlbXA7Ci0JfQkKLQotCWZpcnN0Q2hpbGQgPSAwOwotCWxhc3RDaGlsZCA9IDA7Ci19Ci0KLQotVGlYbWxOb2RlKiBUaVhtbE5vZGU6OkxpbmtFbmRDaGlsZCggVGlYbWxOb2RlKiBub2RlICkKLXsKLQlub2RlLT5wYXJlbnQgPSB0aGlzOwotCi0Jbm9kZS0+cHJldiA9IGxhc3RDaGlsZDsKLQlub2RlLT5uZXh0ID0gMDsKLQotCWlmICggbGFzdENoaWxkICkKLQkJbGFzdENoaWxkLT5uZXh0ID0gbm9kZTsKLQllbHNlCi0JCWZpcnN0Q2hpbGQgPSBub2RlOwkJCS8vIGl0IHdhcyBhbiBlbXB0eSBsaXN0LgotCi0JbGFzdENoaWxkID0gbm9kZTsKLQlyZXR1cm4gbm9kZTsKLX0KLQotCi1UaVhtbE5vZGUqIFRpWG1sTm9kZTo6SW5zZXJ0RW5kQ2hpbGQoIGNvbnN0IFRpWG1sTm9kZSYgYWRkVGhpcyApCi17Ci0JVGlYbWxOb2RlKiBub2RlID0gYWRkVGhpcy5DbG9uZSgpOwotCWlmICggIW5vZGUgKQotCQlyZXR1cm4gMDsKLQotCXJldHVybiBMaW5rRW5kQ2hpbGQoIG5vZGUgKTsKLX0KLQotCi1UaVhtbE5vZGUqIFRpWG1sTm9kZTo6SW5zZXJ0QmVmb3JlQ2hpbGQoIFRpWG1sTm9kZSogYmVmb3JlVGhpcywgY29uc3QgVGlYbWxOb2RlJiBhZGRUaGlzICkKLXsJCi0JaWYgKCAhYmVmb3JlVGhpcyB8fCBiZWZvcmVUaGlzLT5wYXJlbnQgIT0gdGhpcyApCi0JCXJldHVybiAwOwotCi0JVGlYbWxOb2RlKiBub2RlID0gYWRkVGhpcy5DbG9uZSgpOwotCWlmICggIW5vZGUgKQotCQlyZXR1cm4gMDsKLQlub2RlLT5wYXJlbnQgPSB0aGlzOwotCi0Jbm9kZS0+bmV4dCA9IGJlZm9yZVRoaXM7Ci0Jbm9kZS0+cHJldiA9IGJlZm9yZVRoaXMtPnByZXY7Ci0JaWYgKCBiZWZvcmVUaGlzLT5wcmV2ICkKLQl7Ci0JCWJlZm9yZVRoaXMtPnByZXYtPm5leHQgPSBub2RlOwotCX0KLQllbHNlCi0JewotCQlhc3NlcnQoIGZpcnN0Q2hpbGQgPT0gYmVmb3JlVGhpcyApOwotCQlmaXJzdENoaWxkID0gbm9kZTsKLQl9Ci0JYmVmb3JlVGhpcy0+cHJldiA9IG5vZGU7Ci0JcmV0dXJuIG5vZGU7Ci19Ci0KLQotVGlYbWxOb2RlKiBUaVhtbE5vZGU6Okluc2VydEFmdGVyQ2hpbGQoIFRpWG1sTm9kZSogYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUmIGFkZFRoaXMgKQotewotCWlmICggIWFmdGVyVGhpcyB8fCBhZnRlclRoaXMtPnBhcmVudCAhPSB0aGlzICkKLQkJcmV0dXJuIDA7Ci0KLQlUaVhtbE5vZGUqIG5vZGUgPSBhZGRUaGlzLkNsb25lKCk7Ci0JaWYgKCAhbm9kZSApCi0JCXJldHVybiAwOwotCW5vZGUtPnBhcmVudCA9IHRoaXM7Ci0KLQlub2RlLT5wcmV2ID0gYWZ0ZXJUaGlzOwotCW5vZGUtPm5leHQgPSBhZnRlclRoaXMtPm5leHQ7Ci0JaWYgKCBhZnRlclRoaXMtPm5leHQgKQotCXsKLQkJYWZ0ZXJUaGlzLT5uZXh0LT5wcmV2ID0gbm9kZTsKLQl9Ci0JZWxzZQotCXsKLQkJYXNzZXJ0KCBsYXN0Q2hpbGQgPT0gYWZ0ZXJUaGlzICk7Ci0JCWxhc3RDaGlsZCA9IG5vZGU7Ci0JfQotCWFmdGVyVGhpcy0+bmV4dCA9IG5vZGU7Ci0JcmV0dXJuIG5vZGU7Ci19Ci0KLQotVGlYbWxOb2RlKiBUaVhtbE5vZGU6OlJlcGxhY2VDaGlsZCggVGlYbWxOb2RlKiByZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlJiB3aXRoVGhpcyApCi17Ci0JaWYgKCByZXBsYWNlVGhpcy0+cGFyZW50ICE9IHRoaXMgKQotCQlyZXR1cm4gMDsKLQotCVRpWG1sTm9kZSogbm9kZSA9IHdpdGhUaGlzLkNsb25lKCk7Ci0JaWYgKCAhbm9kZSApCi0JCXJldHVybiAwOwotCi0Jbm9kZS0+bmV4dCA9IHJlcGxhY2VUaGlzLT5uZXh0OwotCW5vZGUtPnByZXYgPSByZXBsYWNlVGhpcy0+cHJldjsKLQotCWlmICggcmVwbGFjZVRoaXMtPm5leHQgKQotCQlyZXBsYWNlVGhpcy0+bmV4dC0+cHJldiA9IG5vZGU7Ci0JZWxzZQotCQlsYXN0Q2hpbGQgPSBub2RlOwotCi0JaWYgKCByZXBsYWNlVGhpcy0+cHJldiApCi0JCXJlcGxhY2VUaGlzLT5wcmV2LT5uZXh0ID0gbm9kZTsKLQllbHNlCi0JCWZpcnN0Q2hpbGQgPSBub2RlOwotCi0JZGVsZXRlIHJlcGxhY2VUaGlzOwotCW5vZGUtPnBhcmVudCA9IHRoaXM7Ci0JcmV0dXJuIG5vZGU7Ci19Ci0KLQotYm9vbCBUaVhtbE5vZGU6OlJlbW92ZUNoaWxkKCBUaVhtbE5vZGUqIHJlbW92ZVRoaXMgKQotewotCWlmICggcmVtb3ZlVGhpcy0+cGFyZW50ICE9IHRoaXMgKQotCXsJCi0JCWFzc2VydCggMCApOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JaWYgKCByZW1vdmVUaGlzLT5uZXh0ICkKLQkJcmVtb3ZlVGhpcy0+bmV4dC0+cHJldiA9IHJlbW92ZVRoaXMtPnByZXY7Ci0JZWxzZQotCQlsYXN0Q2hpbGQgPSByZW1vdmVUaGlzLT5wcmV2OwotCi0JaWYgKCByZW1vdmVUaGlzLT5wcmV2ICkKLQkJcmVtb3ZlVGhpcy0+cHJldi0+bmV4dCA9IHJlbW92ZVRoaXMtPm5leHQ7Ci0JZWxzZQotCQlmaXJzdENoaWxkID0gcmVtb3ZlVGhpcy0+bmV4dDsKLQotCWRlbGV0ZSByZW1vdmVUaGlzOwotCXJldHVybiB0cnVlOwotfQotCi1jb25zdCBUaVhtbE5vZGUqIFRpWG1sTm9kZTo6Rmlyc3RDaGlsZCggY29uc3QgY2hhciAqIF92YWx1ZSApIGNvbnN0Ci17Ci0JY29uc3QgVGlYbWxOb2RlKiBub2RlOwotCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCApCi0JewotCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCi0JCQlyZXR1cm4gbm9kZTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLQotVGlYbWxOb2RlKiBUaVhtbE5vZGU6OkZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQotewotCVRpWG1sTm9kZSogbm9kZTsKLQlmb3IgKCBub2RlID0gZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHQgKQotCXsKLQkJaWYgKCBzdHJjbXAoIG5vZGUtPlZhbHVlKCksIF92YWx1ZSApID09IDAgKQotCQkJcmV0dXJuIG5vZGU7Ci0JfQotCXJldHVybiAwOwotfQotCi0KLWNvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpMYXN0Q2hpbGQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKSBjb25zdAotewotCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKLQlmb3IgKCBub2RlID0gbGFzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+cHJldiApCi0JewotCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCi0JCQlyZXR1cm4gbm9kZTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLVRpWG1sTm9kZSogVGlYbWxOb2RlOjpMYXN0Q2hpbGQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQotewotCVRpWG1sTm9kZSogbm9kZTsKLQlmb3IgKCBub2RlID0gbGFzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+cHJldiApCi0JewotCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCi0JCQlyZXR1cm4gbm9kZTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLWNvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IFRpWG1sTm9kZSogcHJldmlvdXMgKSBjb25zdAotewotCWlmICggIXByZXZpb3VzICkKLQl7Ci0JCXJldHVybiBGaXJzdENoaWxkKCk7Ci0JfQotCWVsc2UKLQl7Ci0JCWFzc2VydCggcHJldmlvdXMtPnBhcmVudCA9PSB0aGlzICk7Ci0JCXJldHVybiBwcmV2aW91cy0+TmV4dFNpYmxpbmcoKTsKLQl9Ci19Ci0KLVRpWG1sTm9kZSogVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4oIFRpWG1sTm9kZSogcHJldmlvdXMgKQotewotCWlmICggIXByZXZpb3VzICkKLQl7Ci0JCXJldHVybiBGaXJzdENoaWxkKCk7Ci0JfQotCWVsc2UKLQl7Ci0JCWFzc2VydCggcHJldmlvdXMtPnBhcmVudCA9PSB0aGlzICk7Ci0JCXJldHVybiBwcmV2aW91cy0+TmV4dFNpYmxpbmcoKTsKLQl9Ci19Ci0KLWNvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IGNoYXIgKiB2YWwsIGNvbnN0IFRpWG1sTm9kZSogcHJldmlvdXMgKSBjb25zdAotewotCWlmICggIXByZXZpb3VzICkKLQl7Ci0JCXJldHVybiBGaXJzdENoaWxkKCB2YWwgKTsKLQl9Ci0JZWxzZQotCXsKLQkJYXNzZXJ0KCBwcmV2aW91cy0+cGFyZW50ID09IHRoaXMgKTsKLQkJcmV0dXJuIHByZXZpb3VzLT5OZXh0U2libGluZyggdmFsICk7Ci0JfQotfQotCi1UaVhtbE5vZGUqIFRpWG1sTm9kZTo6SXRlcmF0ZUNoaWxkcmVuKCBjb25zdCBjaGFyICogdmFsLCBUaVhtbE5vZGUqIHByZXZpb3VzICkKLXsKLQlpZiAoICFwcmV2aW91cyApCi0JewotCQlyZXR1cm4gRmlyc3RDaGlsZCggdmFsICk7Ci0JfQotCWVsc2UKLQl7Ci0JCWFzc2VydCggcHJldmlvdXMtPnBhcmVudCA9PSB0aGlzICk7Ci0JCXJldHVybiBwcmV2aW91cy0+TmV4dFNpYmxpbmcoIHZhbCApOwotCX0KLX0KLQotY29uc3QgVGlYbWxOb2RlKiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nKCBjb25zdCBjaGFyICogX3ZhbHVlICkgY29uc3QgCi17Ci0JY29uc3QgVGlYbWxOb2RlKiBub2RlOwotCWZvciAoIG5vZGUgPSBuZXh0OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCApCi0JewotCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCi0JCQlyZXR1cm4gbm9kZTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLVRpWG1sTm9kZSogVGlYbWxOb2RlOjpOZXh0U2libGluZyggY29uc3QgY2hhciAqIF92YWx1ZSApCi17Ci0JVGlYbWxOb2RlKiBub2RlOwotCWZvciAoIG5vZGUgPSBuZXh0OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCApCi0JewotCQlpZiAoIHN0cmNtcCggbm9kZS0+VmFsdWUoKSwgX3ZhbHVlICkgPT0gMCApCi0JCQlyZXR1cm4gbm9kZTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLWNvbnN0IFRpWG1sTm9kZSogVGlYbWxOb2RlOjpQcmV2aW91c1NpYmxpbmcoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKSBjb25zdAotewotCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKLQlmb3IgKCBub2RlID0gcHJldjsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXYgKQotCXsKLQkJaWYgKCBzdHJjbXAoIG5vZGUtPlZhbHVlKCksIF92YWx1ZSApID09IDAgKQotCQkJcmV0dXJuIG5vZGU7Ci0JfQotCXJldHVybiAwOwotfQotCi1UaVhtbE5vZGUqIFRpWG1sTm9kZTo6UHJldmlvdXNTaWJsaW5nKCBjb25zdCBjaGFyICogX3ZhbHVlICkKLXsKLQlUaVhtbE5vZGUqIG5vZGU7Ci0JZm9yICggbm9kZSA9IHByZXY7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2ICkKLQl7Ci0JCWlmICggc3RyY21wKCBub2RlLT5WYWx1ZSgpLCBfdmFsdWUgKSA9PSAwICkKLQkJCXJldHVybiBub2RlOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotdm9pZCBUaVhtbEVsZW1lbnQ6OlJlbW92ZUF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUgKQotewotCVRpWG1sQXR0cmlidXRlKiBub2RlID0gYXR0cmlidXRlU2V0LkZpbmQoIG5hbWUgKTsKLQlpZiAoIG5vZGUgKQotCXsKLQkJYXR0cmlidXRlU2V0LlJlbW92ZSggbm9kZSApOwotCQlkZWxldGUgbm9kZTsKLQl9Ci19Ci0KLWNvbnN0IFRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCgpIGNvbnN0Ci17Ci0JY29uc3QgVGlYbWxOb2RlKiBub2RlOwotCi0JZm9yICgJbm9kZSA9IEZpcnN0Q2hpbGQoKTsKLQkJCW5vZGU7Ci0JCQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCi0JewotCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKLQkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLVRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCgpCi17Ci0JVGlYbWxOb2RlKiBub2RlOwotCi0JZm9yICgJbm9kZSA9IEZpcnN0Q2hpbGQoKTsKLQkJCW5vZGU7Ci0JCQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCi0JewotCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKLQkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLWNvbnN0IFRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpGaXJzdENoaWxkRWxlbWVudCggY29uc3QgY2hhciAqIF92YWx1ZSApIGNvbnN0Ci17Ci0JY29uc3QgVGlYbWxOb2RlKiBub2RlOwotCi0JZm9yICgJbm9kZSA9IEZpcnN0Q2hpbGQoIF92YWx1ZSApOwotCQkJbm9kZTsKLQkJCW5vZGUgPSBub2RlLT5OZXh0U2libGluZyggX3ZhbHVlICkgKQotCXsKLQkJaWYgKCBub2RlLT5Ub0VsZW1lbnQoKSApCi0JCQlyZXR1cm4gbm9kZS0+VG9FbGVtZW50KCk7Ci0JfQotCXJldHVybiAwOwotfQotCi1UaVhtbEVsZW1lbnQqIFRpWG1sTm9kZTo6Rmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQotewotCVRpWG1sTm9kZSogbm9kZTsKLQotCWZvciAoCW5vZGUgPSBGaXJzdENoaWxkKCBfdmFsdWUgKTsKLQkJCW5vZGU7Ci0JCQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoIF92YWx1ZSApICkKLQl7Ci0JCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQotCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotY29uc3QgVGlYbWxFbGVtZW50KiBUaVhtbE5vZGU6Ok5leHRTaWJsaW5nRWxlbWVudCgpIGNvbnN0Ci17Ci0JY29uc3QgVGlYbWxOb2RlKiBub2RlOwotCi0JZm9yICgJbm9kZSA9IE5leHRTaWJsaW5nKCk7Ci0Jbm9kZTsKLQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCi0JewotCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKLQkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLVRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQoKQotewotCVRpWG1sTm9kZSogbm9kZTsKLQotCWZvciAoCW5vZGUgPSBOZXh0U2libGluZygpOwotCW5vZGU7Ci0Jbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCkgKQotCXsKLQkJaWYgKCBub2RlLT5Ub0VsZW1lbnQoKSApCi0JCQlyZXR1cm4gbm9kZS0+VG9FbGVtZW50KCk7Ci0JfQotCXJldHVybiAwOwotfQotCi1jb25zdCBUaVhtbEVsZW1lbnQqIFRpWG1sTm9kZTo6TmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBjaGFyICogX3ZhbHVlICkgY29uc3QKLXsKLQljb25zdCBUaVhtbE5vZGUqIG5vZGU7Ci0KLQlmb3IgKAlub2RlID0gTmV4dFNpYmxpbmcoIF92YWx1ZSApOwotCW5vZGU7Ci0Jbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCBfdmFsdWUgKSApCi0JewotCQlpZiAoIG5vZGUtPlRvRWxlbWVudCgpICkKLQkJCXJldHVybiBub2RlLT5Ub0VsZW1lbnQoKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLVRpWG1sRWxlbWVudCogVGlYbWxOb2RlOjpOZXh0U2libGluZ0VsZW1lbnQoIGNvbnN0IGNoYXIgKiBfdmFsdWUgKQotewotCVRpWG1sTm9kZSogbm9kZTsKLQotCWZvciAoCW5vZGUgPSBOZXh0U2libGluZyggX3ZhbHVlICk7Ci0Jbm9kZTsKLQlub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoIF92YWx1ZSApICkKLQl7Ci0JCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQotCQkJcmV0dXJuIG5vZGUtPlRvRWxlbWVudCgpOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotCi1jb25zdCBUaVhtbERvY3VtZW50KiBUaVhtbE5vZGU6OkdldERvY3VtZW50KCkgY29uc3QKLXsKLQljb25zdCBUaVhtbE5vZGUqIG5vZGU7Ci0KLQlmb3IoIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50ICkKLQl7Ci0JCWlmICggbm9kZS0+VG9Eb2N1bWVudCgpICkKLQkJCXJldHVybiBub2RlLT5Ub0RvY3VtZW50KCk7Ci0JfQotCXJldHVybiAwOwotfQotCi1UaVhtbERvY3VtZW50KiBUaVhtbE5vZGU6OkdldERvY3VtZW50KCkKLXsKLQlUaVhtbE5vZGUqIG5vZGU7Ci0KLQlmb3IoIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50ICkKLQl7Ci0JCWlmICggbm9kZS0+VG9Eb2N1bWVudCgpICkKLQkJCXJldHVybiBub2RlLT5Ub0RvY3VtZW50KCk7Ci0JfQotCXJldHVybiAwOwotfQotCi1UaVhtbEVsZW1lbnQ6OlRpWG1sRWxlbWVudCAoY29uc3QgY2hhciAqIF92YWx1ZSkKLQk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpFTEVNRU5UICkKLXsKLQlmaXJzdENoaWxkID0gbGFzdENoaWxkID0gMDsKLQl2YWx1ZSA9IF92YWx1ZTsKLX0KLQotCi0jaWZkZWYgVElYTUxfVVNFX1NUTAotVGlYbWxFbGVtZW50OjpUaVhtbEVsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSAKLQk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpFTEVNRU5UICkKLXsKLQlmaXJzdENoaWxkID0gbGFzdENoaWxkID0gMDsKLQl2YWx1ZSA9IF92YWx1ZTsKLX0KLSNlbmRpZgotCi0KLVRpWG1sRWxlbWVudDo6VGlYbWxFbGVtZW50KCBjb25zdCBUaVhtbEVsZW1lbnQmIGNvcHkpCi0JOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6RUxFTUVOVCApCi17Ci0JZmlyc3RDaGlsZCA9IGxhc3RDaGlsZCA9IDA7Ci0JY29weS5Db3B5VG8oIHRoaXMgKTsJCi19Ci0KLQotdm9pZCBUaVhtbEVsZW1lbnQ6Om9wZXJhdG9yPSggY29uc3QgVGlYbWxFbGVtZW50JiBiYXNlICkKLXsKLQlDbGVhclRoaXMoKTsKLQliYXNlLkNvcHlUbyggdGhpcyApOwotfQotCi0KLVRpWG1sRWxlbWVudDo6flRpWG1sRWxlbWVudCgpCi17Ci0JQ2xlYXJUaGlzKCk7Ci19Ci0KLQotdm9pZCBUaVhtbEVsZW1lbnQ6OkNsZWFyVGhpcygpCi17Ci0JQ2xlYXIoKTsKLQl3aGlsZSggYXR0cmlidXRlU2V0LkZpcnN0KCkgKQotCXsKLQkJVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsKLQkJYXR0cmlidXRlU2V0LlJlbW92ZSggbm9kZSApOwotCQlkZWxldGUgbm9kZTsKLQl9Ci19Ci0KLQotY29uc3QgY2hhciAqIFRpWG1sRWxlbWVudDo6QXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSApIGNvbnN0Ci17Ci0JY29uc3QgVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggbmFtZSApOwotCi0JaWYgKCBub2RlICkKLQkJcmV0dXJuIG5vZGUtPlZhbHVlKCk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotCi1jb25zdCBjaGFyICogVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBpbnQqIGkgKSBjb25zdAotewotCWNvbnN0IGNoYXIgKiBzID0gQXR0cmlidXRlKCBuYW1lICk7Ci0JaWYgKCBpICkKLQl7Ci0JCWlmICggcyApCi0JCQkqaSA9IGF0b2koIHMgKTsKLQkJZWxzZQotCQkJKmkgPSAwOwotCX0KLQlyZXR1cm4gczsKLX0KLQotCi1jb25zdCBjaGFyICogVGlYbWxFbGVtZW50OjpBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBkb3VibGUqIGQgKSBjb25zdAotewotCWNvbnN0IGNoYXIgKiBzID0gQXR0cmlidXRlKCBuYW1lICk7Ci0JaWYgKCBkICkKLQl7Ci0JCWlmICggcyApCi0JCQkqZCA9IGF0b2YoIHMgKTsKLQkJZWxzZQotCQkJKmQgPSAwOwotCX0KLQlyZXR1cm4gczsKLX0KLQotCi1pbnQgVGlYbWxFbGVtZW50OjpRdWVyeUludEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgaW50KiBpdmFsICkgY29uc3QKLXsKLQljb25zdCBUaVhtbEF0dHJpYnV0ZSogbm9kZSA9IGF0dHJpYnV0ZVNldC5GaW5kKCBuYW1lICk7Ci0JaWYgKCAhbm9kZSApCi0JCXJldHVybiBUSVhNTF9OT19BVFRSSUJVVEU7Ci0KLQlyZXR1cm4gbm9kZS0+UXVlcnlJbnRWYWx1ZSggaXZhbCApOwotfQotCi0KLWludCBUaVhtbEVsZW1lbnQ6OlF1ZXJ5RG91YmxlQXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUqIGR2YWwgKSBjb25zdAotewotCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBub2RlID0gYXR0cmlidXRlU2V0LkZpbmQoIG5hbWUgKTsKLQlpZiAoICFub2RlICkKLQkJcmV0dXJuIFRJWE1MX05PX0FUVFJJQlVURTsKLQotCXJldHVybiBub2RlLT5RdWVyeURvdWJsZVZhbHVlKCBkdmFsICk7Ci19Ci0KLQotdm9pZCBUaVhtbEVsZW1lbnQ6OlNldEF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUsIGludCB2YWwgKQotewkKLQljaGFyIGJ1Zls2NF07Ci0JI2lmIGRlZmluZWQoVElYTUxfU05QUklOVEYpCQkKLQkJVElYTUxfU05QUklOVEYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCIsIHZhbCApOwotCSNlbHNlCi0JCXNwcmludGYoIGJ1ZiwgIiVkIiwgdmFsICk7Ci0JI2VuZGlmCi0JU2V0QXR0cmlidXRlKCBuYW1lLCBidWYgKTsKLX0KLQotCi12b2lkIFRpWG1sRWxlbWVudDo6U2V0RG91YmxlQXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSwgZG91YmxlIHZhbCApCi17CQotCWNoYXIgYnVmWzI1Nl07Ci0JI2lmIGRlZmluZWQoVElYTUxfU05QUklOVEYpCQkKLQkJVElYTUxfU05QUklOVEYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZiIsIHZhbCApOwotCSNlbHNlCi0JCXNwcmludGYoIGJ1ZiwgIiVmIiwgdmFsICk7Ci0JI2VuZGlmCi0JU2V0QXR0cmlidXRlKCBuYW1lLCBidWYgKTsKLX0KLQotCi12b2lkIFRpWG1sRWxlbWVudDo6U2V0QXR0cmlidXRlKCBjb25zdCBjaGFyICogbmFtZSwgY29uc3QgY2hhciAqIF92YWx1ZSApCi17Ci0JVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggbmFtZSApOwotCWlmICggbm9kZSApCi0JewotCQlub2RlLT5TZXRWYWx1ZSggX3ZhbHVlICk7Ci0JCXJldHVybjsKLQl9Ci0KLQlUaVhtbEF0dHJpYnV0ZSogYXR0cmliID0gbmV3IFRpWG1sQXR0cmlidXRlKCBuYW1lLCBfdmFsdWUgKTsKLQlpZiAoIGF0dHJpYiApCi0JewotCQlhdHRyaWJ1dGVTZXQuQWRkKCBhdHRyaWIgKTsKLQl9Ci0JZWxzZQotCXsKLQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOwotCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9PVVRfT0ZfTUVNT1JZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Ci0JfQotfQotCi12b2lkIFRpWG1sRWxlbWVudDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAotewotCWludCBpOwotCWZvciAoIGk9MDsgaTxkZXB0aDsgaSsrICkKLQl7Ci0JCWZwcmludGYoIGNmaWxlLCAiICAgICIgKTsKLQl9Ci0KLQlmcHJpbnRmKCBjZmlsZSwgIjwlcyIsIHZhbHVlLmNfc3RyKCkgKTsKLQotCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBhdHRyaWI7Ci0JZm9yICggYXR0cmliID0gYXR0cmlidXRlU2V0LkZpcnN0KCk7IGF0dHJpYjsgYXR0cmliID0gYXR0cmliLT5OZXh0KCkgKQotCXsKLQkJZnByaW50ZiggY2ZpbGUsICIgIiApOwotCQlhdHRyaWItPlByaW50KCBjZmlsZSwgZGVwdGggKTsKLQl9Ci0KLQkvLyBUaGVyZSBhcmUgMyBkaWZmZXJlbnQgZm9ybWF0dGluZyBhcHByb2FjaGVzOgotCS8vIDEpIEFuIGVsZW1lbnQgd2l0aG91dCBjaGlsZHJlbiBpcyBwcmludGVkIGFzIGEgPGZvbyAvPiBub2RlCi0JLy8gMikgQW4gZWxlbWVudCB3aXRoIG9ubHkgYSB0ZXh0IGNoaWxkIGlzIHByaW50ZWQgYXMgPGZvbz4gdGV4dCA8L2Zvbz4KLQkvLyAzKSBBbiBlbGVtZW50IHdpdGggY2hpbGRyZW4gaXMgcHJpbnRlZCBvbiBtdWx0aXBsZSBsaW5lcy4KLQlUaVhtbE5vZGUqIG5vZGU7Ci0JaWYgKCAhZmlyc3RDaGlsZCApCi0JewotCQlmcHJpbnRmKCBjZmlsZSwgIiAvPiIgKTsKLQl9Ci0JZWxzZSBpZiAoIGZpcnN0Q2hpbGQgPT0gbGFzdENoaWxkICYmIGZpcnN0Q2hpbGQtPlRvVGV4dCgpICkKLQl7Ci0JCWZwcmludGYoIGNmaWxlLCAiPiIgKTsKLQkJZmlyc3RDaGlsZC0+UHJpbnQoIGNmaWxlLCBkZXB0aCArIDEgKTsKLQkJZnByaW50ZiggY2ZpbGUsICI8LyVzPiIsIHZhbHVlLmNfc3RyKCkgKTsKLQl9Ci0JZWxzZQotCXsKLQkJZnByaW50ZiggY2ZpbGUsICI+IiApOwotCi0JCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlPW5vZGUtPk5leHRTaWJsaW5nKCkgKQotCQl7Ci0JCQlpZiAoICFub2RlLT5Ub1RleHQoKSApCi0JCQl7Ci0JCQkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKLQkJCX0KLQkJCW5vZGUtPlByaW50KCBjZmlsZSwgZGVwdGgrMSApOwotCQl9Ci0JCWZwcmludGYoIGNmaWxlLCAiXG4iICk7Ci0JCWZvciggaT0wOyBpPGRlcHRoOyArK2kgKQotCQlmcHJpbnRmKCBjZmlsZSwgIiAgICAiICk7Ci0JCWZwcmludGYoIGNmaWxlLCAiPC8lcz4iLCB2YWx1ZS5jX3N0cigpICk7Ci0JfQotfQotCi12b2lkIFRpWG1sRWxlbWVudDo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogc3RyZWFtICkgY29uc3QKLXsKLQkoKnN0cmVhbSkgPDwgIjwiIDw8IHZhbHVlOwotCi0JY29uc3QgVGlYbWxBdHRyaWJ1dGUqIGF0dHJpYjsKLQlmb3IgKCBhdHRyaWIgPSBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsgYXR0cmliOyBhdHRyaWIgPSBhdHRyaWItPk5leHQoKSApCi0JewkKLQkJKCpzdHJlYW0pIDw8ICIgIjsKLQkJYXR0cmliLT5TdHJlYW1PdXQoIHN0cmVhbSApOwotCX0KLQotCS8vIElmIHRoaXMgbm9kZSBoYXMgY2hpbGRyZW4sIGdpdmUgaXQgYSBjbG9zaW5nIHRhZy4gRWxzZQotCS8vIG1ha2UgaXQgYW4gZW1wdHkgdGFnLgotCVRpWG1sTm9kZSogbm9kZTsKLQlpZiAoIGZpcnN0Q2hpbGQgKQotCXsgCQkKLQkJKCpzdHJlYW0pIDw8ICI+IjsKLQotCQlmb3IgKCBub2RlID0gZmlyc3RDaGlsZDsgbm9kZTsgbm9kZT1ub2RlLT5OZXh0U2libGluZygpICkKLQkJewotCQkJbm9kZS0+U3RyZWFtT3V0KCBzdHJlYW0gKTsKLQkJfQotCQkoKnN0cmVhbSkgPDwgIjwvIiA8PCB2YWx1ZSA8PCAiPiI7Ci0JfQotCWVsc2UKLQl7Ci0JCSgqc3RyZWFtKSA8PCAiIC8+IjsKLQl9Ci19Ci0KLQotdm9pZCBUaVhtbEVsZW1lbnQ6OkNvcHlUbyggVGlYbWxFbGVtZW50KiB0YXJnZXQgKSBjb25zdAotewotCS8vIHN1cGVyY2xhc3M6Ci0JVGlYbWxOb2RlOjpDb3B5VG8oIHRhcmdldCApOwotCi0JLy8gRWxlbWVudCBjbGFzczogCi0JLy8gQ2xvbmUgdGhlIGF0dHJpYnV0ZXMsIHRoZW4gY2xvbmUgdGhlIGNoaWxkcmVuLgotCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSAwOwotCWZvcigJYXR0cmlidXRlID0gYXR0cmlidXRlU2V0LkZpcnN0KCk7Ci0JYXR0cmlidXRlOwotCWF0dHJpYnV0ZSA9IGF0dHJpYnV0ZS0+TmV4dCgpICkKLQl7Ci0JCXRhcmdldC0+U2V0QXR0cmlidXRlKCBhdHRyaWJ1dGUtPk5hbWUoKSwgYXR0cmlidXRlLT5WYWx1ZSgpICk7Ci0JfQotCi0JVGlYbWxOb2RlKiBub2RlID0gMDsKLQlmb3IgKCBub2RlID0gZmlyc3RDaGlsZDsgbm9kZTsgbm9kZSA9IG5vZGUtPk5leHRTaWJsaW5nKCkgKQotCXsKLQkJdGFyZ2V0LT5MaW5rRW5kQ2hpbGQoIG5vZGUtPkNsb25lKCkgKTsKLQl9Ci19Ci0KLQotVGlYbWxOb2RlKiBUaVhtbEVsZW1lbnQ6OkNsb25lKCkgY29uc3QKLXsKLQlUaVhtbEVsZW1lbnQqIGNsb25lID0gbmV3IFRpWG1sRWxlbWVudCggVmFsdWUoKSApOwotCWlmICggIWNsb25lICkKLQkJcmV0dXJuIDA7Ci0KLQlDb3B5VG8oIGNsb25lICk7Ci0JcmV0dXJuIGNsb25lOwotfQotCi0KLWNvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6R2V0VGV4dCgpIGNvbnN0Ci17Ci0JY29uc3QgVGlYbWxOb2RlKiBjaGlsZCA9IHRoaXMtPkZpcnN0Q2hpbGQoKTsKLQlpZiAoIGNoaWxkICkgewotCQljb25zdCBUaVhtbFRleHQqIGNoaWxkVGV4dCA9IGNoaWxkLT5Ub1RleHQoKTsKLQkJaWYgKCBjaGlsZFRleHQgKSB7Ci0JCQlyZXR1cm4gY2hpbGRUZXh0LT5WYWx1ZSgpOwotCQl9Ci0JfQotCXJldHVybiAwOwotfQotCi0KLVRpWG1sRG9jdW1lbnQ6OlRpWG1sRG9jdW1lbnQoKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpET0NVTUVOVCApCi17Ci0JdGFic2l6ZSA9IDQ7Ci0JdXNlTWljcm9zb2Z0Qk9NID0gZmFsc2U7Ci0JQ2xlYXJFcnJvcigpOwotfQotCi1UaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50KCBjb25zdCBjaGFyICogZG9jdW1lbnROYW1lICkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6RE9DVU1FTlQgKQotewotCXRhYnNpemUgPSA0OwotCXVzZU1pY3Jvc29mdEJPTSA9IGZhbHNlOwotCXZhbHVlID0gZG9jdW1lbnROYW1lOwotCUNsZWFyRXJyb3IoKTsKLX0KLQotCi0jaWZkZWYgVElYTUxfVVNFX1NUTAotVGlYbWxEb2N1bWVudDo6VGlYbWxEb2N1bWVudCggY29uc3Qgc3RkOjpzdHJpbmcmIGRvY3VtZW50TmFtZSApIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OkRPQ1VNRU5UICkKLXsKLQl0YWJzaXplID0gNDsKLQl1c2VNaWNyb3NvZnRCT00gPSBmYWxzZTsKLSAgICB2YWx1ZSA9IGRvY3VtZW50TmFtZTsKLQlDbGVhckVycm9yKCk7Ci19Ci0jZW5kaWYKLQotCi1UaVhtbERvY3VtZW50OjpUaVhtbERvY3VtZW50KCBjb25zdCBUaVhtbERvY3VtZW50JiBjb3B5ICkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6RE9DVU1FTlQgKQotewotCWNvcHkuQ29weVRvKCB0aGlzICk7Ci19Ci0KLQotdm9pZCBUaVhtbERvY3VtZW50OjpvcGVyYXRvcj0oIGNvbnN0IFRpWG1sRG9jdW1lbnQmIGNvcHkgKQotewotCUNsZWFyKCk7Ci0JY29weS5Db3B5VG8oIHRoaXMgKTsKLX0KLQotCi1ib29sIFRpWG1sRG9jdW1lbnQ6OkxvYWRGaWxlKCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQkvLyBTZWUgU1RMX1NUUklOR19CVUcgYmVsb3cuCi0JU3RyaW5nVG9CdWZmZXIgYnVmKCB2YWx1ZSApOwotCi0JaWYgKCBidWYuYnVmZmVyICYmIExvYWRGaWxlKCBidWYuYnVmZmVyLCBlbmNvZGluZyApICkKLQkJcmV0dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLQotYm9vbCBUaVhtbERvY3VtZW50OjpTYXZlRmlsZSgpIGNvbnN0Ci17Ci0JLy8gU2VlIFNUTF9TVFJJTkdfQlVHIGJlbG93LgotCVN0cmluZ1RvQnVmZmVyIGJ1ZiggdmFsdWUgKTsKLQotCWlmICggYnVmLmJ1ZmZlciAmJiBTYXZlRmlsZSggYnVmLmJ1ZmZlciApICkKLQkJcmV0dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVGlYbWxEb2N1bWVudDo6TG9hZEZpbGUoIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQkvLyBEZWxldGUgdGhlIGV4aXN0aW5nIGRhdGE6Ci0JQ2xlYXIoKTsKLQlsb2NhdGlvbi5DbGVhcigpOwotCi0JLy8gVGhlcmUgd2FzIGEgcmVhbGx5IHRlcnJpZnlpbmcgbGl0dGxlIGJ1ZyBoZXJlLiBUaGUgY29kZToKLQkvLwkJdmFsdWUgPSBmaWxlbmFtZQotCS8vIGluIHRoZSBTVEwgY2FzZSwgY2F1c2UgdGhlIGFzc2lnbm1lbnQgbWV0aG9kIG9mIHRoZSBzdGQ6OnN0cmluZyB0bwotCS8vIGJlIGNhbGxlZC4gV2hhdCBpcyBzdHJhbmdlLCBpcyB0aGF0IHRoZSBzdGQ6OnN0cmluZyBoYWQgdGhlIHNhbWUKLQkvLyBhZGRyZXNzIGFzIGl0J3MgY19zdHIoKSBtZXRob2QsIGFuZCBzbyBiYWQgdGhpbmdzIGhhcHBlbi4gTG9va3MKLQkvLyBsaWtlIGEgYnVnIGluIHRoZSBNaWNyb3NvZnQgU1RMIGltcGxlbWVudGF0aW9uLgotCS8vIFNlZSBTVExfU1RSSU5HX0JVRyBhYm92ZS4KLQkvLyBGaXhlZCB3aXRoIHRoZSBTdHJpbmdUb0J1ZmZlciBjbGFzcy4KLQl2YWx1ZSA9IGZpbGVuYW1lOwotCi0JLy8gcmVhZGluZyBpbiBiaW5hcnkgbW9kZSBzbyB0aGF0IHRpbnl4bWwgY2FuIG5vcm1hbGl6ZSB0aGUgRU9MCi0JRklMRSogZmlsZSA9IGZvcGVuKCB2YWx1ZS5jX3N0ciAoKSwgInJiIiApOwkKLQotCWlmICggZmlsZSApCi0JewotCQkvLyBHZXQgdGhlIGZpbGUgc2l6ZSwgc28gd2UgY2FuIHByZS1hbGxvY2F0ZSB0aGUgc3RyaW5nLiBIVUdFIHNwZWVkIGltcGFjdC4KLQkJbG9uZyBsZW5ndGggPSAwOwotCQlmc2VlayggZmlsZSwgMCwgU0VFS19FTkQgKTsKLQkJbGVuZ3RoID0gZnRlbGwoIGZpbGUgKTsKLQkJZnNlZWsoIGZpbGUsIDAsIFNFRUtfU0VUICk7Ci0KLQkJLy8gU3RyYW5nZSBjYXNlLCBidXQgZ29vZCB0byBoYW5kbGUgdXAgZnJvbnQuCi0JCWlmICggbGVuZ3RoID09IDAgKQotCQl7Ci0JCQlmY2xvc2UoIGZpbGUgKTsKLQkJCXJldHVybiBmYWxzZTsKLQkJfQotCi0JCS8vIElmIHdlIGhhdmUgYSBmaWxlLCBhc3N1bWUgaXQgaXMgYWxsIG9uZSBiaWcgWE1MIGZpbGUsIGFuZCByZWFkIGl0IGluLgotCQkvLyBUaGUgZG9jdW1lbnQgcGFyc2VyIG1heSBkZWNpZGUgdGhlIGRvY3VtZW50IGVuZHMgc29vbmVyIHRoYW4gdGhlIGVudGlyZSBmaWxlLCBob3dldmVyLgotCQlUSVhNTF9TVFJJTkcgZGF0YTsKLQkJZGF0YS5yZXNlcnZlKCBsZW5ndGggKTsKLQotCQkvLyBTdWJ0bGUgYnVnIGhlcmUuIFRpbnlYbWwgZGlkIHVzZSBmZ2V0cy4gQnV0IGZyb20gdGhlIFhNTCBzcGVjOgotCQkvLyAyLjExIEVuZC1vZi1MaW5lIEhhbmRsaW5nCi0JCS8vIDxzbmlwPgotCQkvLyA8cXVvdGU+Ci0JCS8vIC4uLnRoZSBYTUwgcHJvY2Vzc29yIE1VU1QgYmVoYXZlIGFzIGlmIGl0IG5vcm1hbGl6ZWQgYWxsIGxpbmUgYnJlYWtzIGluIGV4dGVybmFsIAotCQkvLyBwYXJzZWQgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZG9jdW1lbnQgZW50aXR5KSBvbiBpbnB1dCwgYmVmb3JlIHBhcnNpbmcsIGJ5IHRyYW5zbGF0aW5nIAotCQkvLyBib3RoIHRoZSB0d28tY2hhcmFjdGVyIHNlcXVlbmNlICN4RCAjeEEgYW5kIGFueSAjeEQgdGhhdCBpcyBub3QgZm9sbG93ZWQgYnkgI3hBIHRvIAotCQkvLyBhIHNpbmdsZSAjeEEgY2hhcmFjdGVyLgotCQkvLyA8L3F1b3RlPgotCQkvLwotCQkvLyBJdCBpcyBub3QgY2xlYXIgZmdldHMgZG9lcyB0aGF0LCBhbmQgY2VydGFpbmx5IGlzbid0IGNsZWFyIGl0IHdvcmtzIGNyb3NzIHBsYXRmb3JtLiAKLQkJLy8gR2VuZXJhbGx5LCB5b3UgZXhwZWN0IGZnZXRzIHRvIHRyYW5zbGF0ZSBmcm9tIHRoZSBjb252ZW50aW9uIG9mIHRoZSBPUyB0byB0aGUgYy91bml4Ci0JCS8vIGNvbnZlbnRpb24sIGFuZCBub3Qgd29yayBnZW5lcmFsbHkuCi0KLQkJLyoKLQkJd2hpbGUoIGZnZXRzKCBidWYsIHNpemVvZihidWYpLCBmaWxlICkgKQotCQl7Ci0JCQlkYXRhICs9IGJ1ZjsKLQkJfQotCQkqLwotCi0JCWNoYXIqIGJ1ZiA9IG5ldyBjaGFyWyBsZW5ndGgrMSBdOwotCQlidWZbMF0gPSAwOwotCi0JCWlmICggZnJlYWQoIGJ1ZiwgbGVuZ3RoLCAxLCBmaWxlICkgIT0gMSApIHsKLQkJLy9pZiAoIGZyZWFkKCBidWYsIDEsIGxlbmd0aCwgZmlsZSApICE9IChzaXplX3QpbGVuZ3RoICkgewotCQkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX09QRU5JTkdfRklMRSwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQkJZmNsb3NlKCBmaWxlICk7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0KLQkJZmNsb3NlKCBmaWxlICk7Ci0KLQkJY29uc3QgY2hhciogbGFzdFBvcyA9IGJ1ZjsKLQkJY29uc3QgY2hhciogcCA9IGJ1ZjsKLQotCQlidWZbbGVuZ3RoXSA9IDA7Ci0JCXdoaWxlKCAqcCApIHsKLQkJCWFzc2VydCggcCA8IChidWYrbGVuZ3RoKSApOwotCQkJaWYgKCAqcCA9PSAweGEgKSB7Ci0JCQkJLy8gTmV3bGluZSBjaGFyYWN0ZXIuIE5vIHNwZWNpYWwgcnVsZXMgZm9yIHRoaXMuIEFwcGVuZCBhbGwgdGhlIGNoYXJhY3RlcnMKLQkJCQkvLyBzaW5jZSB0aGUgbGFzdCBzdHJpbmcsIGFuZCBpbmNsdWRlIHRoZSBuZXdsaW5lLgotCQkJCWRhdGEuYXBwZW5kKCBsYXN0UG9zLCBwLWxhc3RQb3MrMSApOwkvLyBhcHBlbmQsIGluY2x1ZGUgdGhlIG5ld2xpbmUKLQkJCQkrK3A7CQkJCQkJCQkJLy8gbW92ZSBwYXN0IHRoZSBuZXdsaW5lCi0JCQkJbGFzdFBvcyA9IHA7CQkJCQkJCS8vIGFuZCBwb2ludCB0byB0aGUgbmV3IGJ1ZmZlciAobWF5IGJlIDApCi0JCQkJYXNzZXJ0KCBwIDw9IChidWYrbGVuZ3RoKSApOwotCQkJfQotCQkJZWxzZSBpZiAoICpwID09IDB4ZCApIHsKLQkJCQkvLyBDYXJyaWFnZSByZXR1cm4uIEFwcGVuZCB3aGF0IHdlIGhhdmUgc28gZmFyLCB0aGVuCi0JCQkJLy8gaGFuZGxlIG1vdmluZyBmb3J3YXJkIGluIHRoZSBidWZmZXIuCi0JCQkJaWYgKCAocC1sYXN0UG9zKSA+IDAgKSB7Ci0JCQkJCWRhdGEuYXBwZW5kKCBsYXN0UG9zLCBwLWxhc3RQb3MgKTsJLy8gZG8gbm90IGFkZCB0aGUgQ1IKLQkJCQl9Ci0JCQkJZGF0YSArPSAoY2hhcikweGE7CQkJCQkJLy8gYSBwcm9wZXIgbmV3bGluZQotCi0JCQkJaWYgKCAqKHArMSkgPT0gMHhhICkgewotCQkJCQkvLyBDYXJyaWFnZSByZXR1cm4gLSBuZXcgbGluZSBzZXF1ZW5jZQotCQkJCQlwICs9IDI7Ci0JCQkJCWxhc3RQb3MgPSBwOwotCQkJCQlhc3NlcnQoIHAgPD0gKGJ1ZitsZW5ndGgpICk7Ci0JCQkJfQotCQkJCWVsc2UgewotCQkJCQkvLyBpdCB3YXMgZm9sbG93ZWQgYnkgc29tZXRoaW5nIGVsc2UuLi50aGF0IGlzIHByZXN1bWFibHkgY2hhcmFjdGVycyBhZ2Fpbi4KLQkJCQkJKytwOwotCQkJCQlsYXN0UG9zID0gcDsKLQkJCQkJYXNzZXJ0KCBwIDw9IChidWYrbGVuZ3RoKSApOwotCQkJCX0KLQkJCX0KLQkJCWVsc2UgewotCQkJCSsrcDsKLQkJCX0KLQkJfQotCQkvLyBIYW5kbGUgYW55IGxlZnQgb3ZlciBjaGFyYWN0ZXJzLgotCQlpZiAoIHAtbGFzdFBvcyApIHsKLQkJCWRhdGEuYXBwZW5kKCBsYXN0UG9zLCBwLWxhc3RQb3MgKTsKLQkJfQkJCi0JCWRlbGV0ZSBbXSBidWY7Ci0JCWJ1ZiA9IDA7Ci0KLQkJUGFyc2UoIGRhdGEuY19zdHIoKSwgMCwgZW5jb2RpbmcgKTsKLQotCQlpZiAoICBFcnJvcigpICkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZWxzZQotCQkJcmV0dXJuIHRydWU7Ci0JfQotCVNldEVycm9yKCBUSVhNTF9FUlJPUl9PUEVOSU5HX0ZJTEUsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVGlYbWxEb2N1bWVudDo6U2F2ZUZpbGUoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSApIGNvbnN0Ci17Ci0JLy8gVGhlIG9sZCBjIHN0dWZmIGxpdmVzIG9uLi4uCi0JRklMRSogZnAgPSBmb3BlbiggZmlsZW5hbWUsICJ3IiApOwotCWlmICggZnAgKQotCXsKLQkJaWYgKCB1c2VNaWNyb3NvZnRCT00gKSAKLQkJewotCQkJY29uc3QgdW5zaWduZWQgY2hhciBUSVhNTF9VVEZfTEVBRF8wID0gMHhlZlU7Ci0JCQljb25zdCB1bnNpZ25lZCBjaGFyIFRJWE1MX1VURl9MRUFEXzEgPSAweGJiVTsKLQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgVElYTUxfVVRGX0xFQURfMiA9IDB4YmZVOwotCi0JCQlmcHV0YyggVElYTUxfVVRGX0xFQURfMCwgZnAgKTsKLQkJCWZwdXRjKCBUSVhNTF9VVEZfTEVBRF8xLCBmcCApOwotCQkJZnB1dGMoIFRJWE1MX1VURl9MRUFEXzIsIGZwICk7Ci0JCX0KLQkJUHJpbnQoIGZwLCAwICk7Ci0JCWZjbG9zZSggZnAgKTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCXJldHVybiBmYWxzZTsKLX0KLQotCi12b2lkIFRpWG1sRG9jdW1lbnQ6OkNvcHlUbyggVGlYbWxEb2N1bWVudCogdGFyZ2V0ICkgY29uc3QKLXsKLQlUaVhtbE5vZGU6OkNvcHlUbyggdGFyZ2V0ICk7Ci0KLQl0YXJnZXQtPmVycm9yID0gZXJyb3I7Ci0JdGFyZ2V0LT5lcnJvckRlc2MgPSBlcnJvckRlc2MuY19zdHIgKCk7Ci0KLQlUaVhtbE5vZGUqIG5vZGUgPSAwOwotCWZvciAoIG5vZGUgPSBmaXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCi0JewotCQl0YXJnZXQtPkxpbmtFbmRDaGlsZCggbm9kZS0+Q2xvbmUoKSApOwotCX0JCi19Ci0KLQotVGlYbWxOb2RlKiBUaVhtbERvY3VtZW50OjpDbG9uZSgpIGNvbnN0Ci17Ci0JVGlYbWxEb2N1bWVudCogY2xvbmUgPSBuZXcgVGlYbWxEb2N1bWVudCgpOwotCWlmICggIWNsb25lICkKLQkJcmV0dXJuIDA7Ci0KLQlDb3B5VG8oIGNsb25lICk7Ci0JcmV0dXJuIGNsb25lOwotfQotCi0KLXZvaWQgVGlYbWxEb2N1bWVudDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAotewotCWNvbnN0IFRpWG1sTm9kZSogbm9kZTsKLQlmb3IgKCBub2RlPUZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZT1ub2RlLT5OZXh0U2libGluZygpICkKLQl7Ci0JCW5vZGUtPlByaW50KCBjZmlsZSwgZGVwdGggKTsKLQkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKLQl9Ci19Ci0KLXZvaWQgVGlYbWxEb2N1bWVudDo6U3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgY29uc3QKLXsKLQljb25zdCBUaVhtbE5vZGUqIG5vZGU7Ci0JZm9yICggbm9kZT1GaXJzdENoaWxkKCk7IG5vZGU7IG5vZGU9bm9kZS0+TmV4dFNpYmxpbmcoKSApCi0JewotCQlub2RlLT5TdHJlYW1PdXQoIG91dCApOwotCi0JCS8vIFNwZWNpYWwgcnVsZSBmb3Igc3RyZWFtczogc3RvcCBhZnRlciB0aGUgcm9vdCBlbGVtZW50LgotCQkvLyBUaGUgc3RyZWFtIGluIGNvZGUgd2lsbCBvbmx5IHJlYWQgb25lIGVsZW1lbnQsIHNvIGRvbid0Ci0JCS8vIHdyaXRlIG1vcmUgdGhhbiBvbmUuCi0JCWlmICggbm9kZS0+VG9FbGVtZW50KCkgKQotCQkJYnJlYWs7Ci0JfQotfQotCi0KLWNvbnN0IFRpWG1sQXR0cmlidXRlKiBUaVhtbEF0dHJpYnV0ZTo6TmV4dCgpIGNvbnN0Ci17Ci0JLy8gV2UgYXJlIHVzaW5nIGtub3dsZWRnZSBvZiB0aGUgc2VudGluZWwuIFRoZSBzZW50aW5lbAotCS8vIGhhdmUgYSB2YWx1ZSBvciBuYW1lLgotCWlmICggbmV4dC0+dmFsdWUuZW1wdHkoKSAmJiBuZXh0LT5uYW1lLmVtcHR5KCkgKQotCQlyZXR1cm4gMDsKLQlyZXR1cm4gbmV4dDsKLX0KLQotVGlYbWxBdHRyaWJ1dGUqIFRpWG1sQXR0cmlidXRlOjpOZXh0KCkKLXsKLQkvLyBXZSBhcmUgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBzZW50aW5lbC4gVGhlIHNlbnRpbmVsCi0JLy8gaGF2ZSBhIHZhbHVlIG9yIG5hbWUuCi0JaWYgKCBuZXh0LT52YWx1ZS5lbXB0eSgpICYmIG5leHQtPm5hbWUuZW1wdHkoKSApCi0JCXJldHVybiAwOwotCXJldHVybiBuZXh0OwotfQotCi1jb25zdCBUaVhtbEF0dHJpYnV0ZSogVGlYbWxBdHRyaWJ1dGU6OlByZXZpb3VzKCkgY29uc3QKLXsKLQkvLyBXZSBhcmUgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBzZW50aW5lbC4gVGhlIHNlbnRpbmVsCi0JLy8gaGF2ZSBhIHZhbHVlIG9yIG5hbWUuCi0JaWYgKCBwcmV2LT52YWx1ZS5lbXB0eSgpICYmIHByZXYtPm5hbWUuZW1wdHkoKSApCi0JCXJldHVybiAwOwotCXJldHVybiBwcmV2OwotfQotCi1UaVhtbEF0dHJpYnV0ZSogVGlYbWxBdHRyaWJ1dGU6OlByZXZpb3VzKCkKLXsKLQkvLyBXZSBhcmUgdXNpbmcga25vd2xlZGdlIG9mIHRoZSBzZW50aW5lbC4gVGhlIHNlbnRpbmVsCi0JLy8gaGF2ZSBhIHZhbHVlIG9yIG5hbWUuCi0JaWYgKCBwcmV2LT52YWx1ZS5lbXB0eSgpICYmIHByZXYtPm5hbWUuZW1wdHkoKSApCi0JCXJldHVybiAwOwotCXJldHVybiBwcmV2OwotfQotCi12b2lkIFRpWG1sQXR0cmlidXRlOjpQcmludCggRklMRSogY2ZpbGUsIGludCAvKmRlcHRoKi8gKSBjb25zdAotewotCVRJWE1MX1NUUklORyBuLCB2OwotCi0JUHV0U3RyaW5nKCBuYW1lLCAmbiApOwotCVB1dFN0cmluZyggdmFsdWUsICZ2ICk7Ci0KLQlpZiAodmFsdWUuZmluZCAoJ1wiJykgPT0gVElYTUxfU1RSSU5HOjpucG9zKQotCQlmcHJpbnRmIChjZmlsZSwgIiVzPVwiJXNcIiIsIG4uY19zdHIoKSwgdi5jX3N0cigpICk7Ci0JZWxzZQotCQlmcHJpbnRmIChjZmlsZSwgIiVzPSclcyciLCBuLmNfc3RyKCksIHYuY19zdHIoKSApOwotfQotCi0KLXZvaWQgVGlYbWxBdHRyaWJ1dGU6OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Ci17Ci0JaWYgKHZhbHVlLmZpbmQoICdcIicgKSAhPSBUSVhNTF9TVFJJTkc6Om5wb3MpCi0JewotCQlQdXRTdHJpbmcoIG5hbWUsIHN0cmVhbSApOwotCQkoKnN0cmVhbSkgPDwgIj0iIDw8ICInIjsKLQkJUHV0U3RyaW5nKCB2YWx1ZSwgc3RyZWFtICk7Ci0JCSgqc3RyZWFtKSA8PCAiJyI7Ci0JfQotCWVsc2UKLQl7Ci0JCVB1dFN0cmluZyggbmFtZSwgc3RyZWFtICk7Ci0JCSgqc3RyZWFtKSA8PCAiPSIgPDwgIlwiIjsKLQkJUHV0U3RyaW5nKCB2YWx1ZSwgc3RyZWFtICk7Ci0JCSgqc3RyZWFtKSA8PCAiXCIiOwotCX0KLX0KLQotaW50IFRpWG1sQXR0cmlidXRlOjpRdWVyeUludFZhbHVlKCBpbnQqIGl2YWwgKSBjb25zdAotewotCWlmICggc3NjYW5mKCB2YWx1ZS5jX3N0cigpLCAiJWQiLCBpdmFsICkgPT0gMSApCi0JCXJldHVybiBUSVhNTF9TVUNDRVNTOwotCXJldHVybiBUSVhNTF9XUk9OR19UWVBFOwotfQotCi1pbnQgVGlYbWxBdHRyaWJ1dGU6OlF1ZXJ5RG91YmxlVmFsdWUoIGRvdWJsZSogZHZhbCApIGNvbnN0Ci17Ci0JaWYgKCBzc2NhbmYoIHZhbHVlLmNfc3RyKCksICIlbGYiLCBkdmFsICkgPT0gMSApCi0JCXJldHVybiBUSVhNTF9TVUNDRVNTOwotCXJldHVybiBUSVhNTF9XUk9OR19UWVBFOwotfQotCi12b2lkIFRpWG1sQXR0cmlidXRlOjpTZXRJbnRWYWx1ZSggaW50IF92YWx1ZSApCi17Ci0JY2hhciBidWYgWzY0XTsKLQkjaWYgZGVmaW5lZChUSVhNTF9TTlBSSU5URikJCQotCQlUSVhNTF9TTlBSSU5URihidWYsIHNpemVvZihidWYpLCAiJWQiLCBfdmFsdWUpOwotCSNlbHNlCi0JCXNwcmludGYgKGJ1ZiwgIiVkIiwgX3ZhbHVlKTsKLQkjZW5kaWYKLQlTZXRWYWx1ZSAoYnVmKTsKLX0KLQotdm9pZCBUaVhtbEF0dHJpYnV0ZTo6U2V0RG91YmxlVmFsdWUoIGRvdWJsZSBfdmFsdWUgKQotewotCWNoYXIgYnVmIFsyNTZdOwotCSNpZiBkZWZpbmVkKFRJWE1MX1NOUFJJTlRGKQkJCi0JCVRJWE1MX1NOUFJJTlRGKCBidWYsIHNpemVvZihidWYpLCAiJWxmIiwgX3ZhbHVlKTsKLQkjZWxzZQotCQlzcHJpbnRmIChidWYsICIlbGYiLCBfdmFsdWUpOwotCSNlbmRpZgotCVNldFZhbHVlIChidWYpOwotfQotCi1pbnQgVGlYbWxBdHRyaWJ1dGU6OkludFZhbHVlKCkgY29uc3QKLXsKLQlyZXR1cm4gYXRvaSAodmFsdWUuY19zdHIgKCkpOwotfQotCi1kb3VibGUgIFRpWG1sQXR0cmlidXRlOjpEb3VibGVWYWx1ZSgpIGNvbnN0Ci17Ci0JcmV0dXJuIGF0b2YgKHZhbHVlLmNfc3RyICgpKTsKLX0KLQotCi1UaVhtbENvbW1lbnQ6OlRpWG1sQ29tbWVudCggY29uc3QgVGlYbWxDb21tZW50JiBjb3B5ICkgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6Q09NTUVOVCApCi17Ci0JY29weS5Db3B5VG8oIHRoaXMgKTsKLX0KLQotCi12b2lkIFRpWG1sQ29tbWVudDo6b3BlcmF0b3I9KCBjb25zdCBUaVhtbENvbW1lbnQmIGJhc2UgKQotewotCUNsZWFyKCk7Ci0JYmFzZS5Db3B5VG8oIHRoaXMgKTsKLX0KLQotCi12b2lkIFRpWG1sQ29tbWVudDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAotewotCWZvciAoIGludCBpPTA7IGk8ZGVwdGg7IGkrKyApCi0JewotCQlmcHV0cyggIiAgICAiLCBjZmlsZSApOwotCX0KLQlmcHJpbnRmKCBjZmlsZSwgIjwhLS0lcy0tPiIsIHZhbHVlLmNfc3RyKCkgKTsKLX0KLQotdm9pZCBUaVhtbENvbW1lbnQ6OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Ci17Ci0JKCpzdHJlYW0pIDw8ICI8IS0tIjsKLQkvL1B1dFN0cmluZyggdmFsdWUsIHN0cmVhbSApOwotCSgqc3RyZWFtKSA8PCB2YWx1ZTsKLQkoKnN0cmVhbSkgPDwgIi0tPiI7Ci19Ci0KLQotdm9pZCBUaVhtbENvbW1lbnQ6OkNvcHlUbyggVGlYbWxDb21tZW50KiB0YXJnZXQgKSBjb25zdAotewotCVRpWG1sTm9kZTo6Q29weVRvKCB0YXJnZXQgKTsKLX0KLQotCi1UaVhtbE5vZGUqIFRpWG1sQ29tbWVudDo6Q2xvbmUoKSBjb25zdAotewotCVRpWG1sQ29tbWVudCogY2xvbmUgPSBuZXcgVGlYbWxDb21tZW50KCk7Ci0KLQlpZiAoICFjbG9uZSApCi0JCXJldHVybiAwOwotCi0JQ29weVRvKCBjbG9uZSApOwotCXJldHVybiBjbG9uZTsKLX0KLQotCi12b2lkIFRpWG1sVGV4dDo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAotewotCWlmICggY2RhdGEgKQotCXsKLQkJaW50IGk7Ci0JCWZwcmludGYoIGNmaWxlLCAiXG4iICk7Ci0JCWZvciAoIGk9MDsgaTxkZXB0aDsgaSsrICkgewotCQkJZnByaW50ZiggY2ZpbGUsICIgICAgIiApOwotCQl9Ci0JCWZwcmludGYoIGNmaWxlLCAiPCFbQ0RBVEFbXG4iICk7Ci0KLQkJZnByaW50ZiggY2ZpbGUsICIlcyIsIHZhbHVlLmNfc3RyKCkgKTsJLy8gdW5mb3JtYXR0ZWQgb3V0cHV0Ci0KLQkJZnByaW50ZiggY2ZpbGUsICJcbiIgKTsKLQkJZm9yICggaT0wOyBpPGRlcHRoOyBpKysgKSB7Ci0JCQlmcHJpbnRmKCBjZmlsZSwgIiAgICAiICk7Ci0JCX0KLQkJZnByaW50ZiggY2ZpbGUsICJdXT5cbiIgKTsKLQl9Ci0JZWxzZQotCXsKLQkJVElYTUxfU1RSSU5HIGJ1ZmZlcjsKLQkJUHV0U3RyaW5nKCB2YWx1ZSwgJmJ1ZmZlciApOwotCQlmcHJpbnRmKCBjZmlsZSwgIiVzIiwgYnVmZmVyLmNfc3RyKCkgKTsKLQl9Ci19Ci0KLQotdm9pZCBUaVhtbFRleHQ6OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Ci17Ci0JaWYgKCBjZGF0YSApCi0JewotCQkoKnN0cmVhbSkgPDwgIjwhW0NEQVRBWyIgPDwgdmFsdWUgPDwgIl1dPiI7Ci0JfQotCWVsc2UKLQl7Ci0JCVB1dFN0cmluZyggdmFsdWUsIHN0cmVhbSApOwotCX0KLX0KLQotCi12b2lkIFRpWG1sVGV4dDo6Q29weVRvKCBUaVhtbFRleHQqIHRhcmdldCApIGNvbnN0Ci17Ci0JVGlYbWxOb2RlOjpDb3B5VG8oIHRhcmdldCApOwotCXRhcmdldC0+Y2RhdGEgPSBjZGF0YTsKLX0KLQotCi1UaVhtbE5vZGUqIFRpWG1sVGV4dDo6Q2xvbmUoKSBjb25zdAotewkKLQlUaVhtbFRleHQqIGNsb25lID0gMDsKLQljbG9uZSA9IG5ldyBUaVhtbFRleHQoICIiICk7Ci0KLQlpZiAoICFjbG9uZSApCi0JCXJldHVybiAwOwotCi0JQ29weVRvKCBjbG9uZSApOwotCXJldHVybiBjbG9uZTsKLX0KLQotCi1UaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uKCBjb25zdCBjaGFyICogX3ZlcnNpb24sCi0JCQkJCQkJCQljb25zdCBjaGFyICogX2VuY29kaW5nLAotCQkJCQkJCQkJY29uc3QgY2hhciAqIF9zdGFuZGFsb25lICkKLQk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpERUNMQVJBVElPTiApCi17Ci0JdmVyc2lvbiA9IF92ZXJzaW9uOwotCWVuY29kaW5nID0gX2VuY29kaW5nOwotCXN0YW5kYWxvbmUgPSBfc3RhbmRhbG9uZTsKLX0KLQotCi0jaWZkZWYgVElYTUxfVVNFX1NUTAotVGlYbWxEZWNsYXJhdGlvbjo6VGlYbWxEZWNsYXJhdGlvbigJY29uc3Qgc3RkOjpzdHJpbmcmIF92ZXJzaW9uLAotCQkJCQkJCQkJY29uc3Qgc3RkOjpzdHJpbmcmIF9lbmNvZGluZywKLQkJCQkJCQkJCWNvbnN0IHN0ZDo6c3RyaW5nJiBfc3RhbmRhbG9uZSApCi0JOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6REVDTEFSQVRJT04gKQotewotCXZlcnNpb24gPSBfdmVyc2lvbjsKLQllbmNvZGluZyA9IF9lbmNvZGluZzsKLQlzdGFuZGFsb25lID0gX3N0YW5kYWxvbmU7Ci19Ci0jZW5kaWYKLQotCi1UaVhtbERlY2xhcmF0aW9uOjpUaVhtbERlY2xhcmF0aW9uKCBjb25zdCBUaVhtbERlY2xhcmF0aW9uJiBjb3B5ICkKLQk6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpERUNMQVJBVElPTiApCi17Ci0JY29weS5Db3B5VG8oIHRoaXMgKTsJCi19Ci0KLQotdm9pZCBUaVhtbERlY2xhcmF0aW9uOjpvcGVyYXRvcj0oIGNvbnN0IFRpWG1sRGVjbGFyYXRpb24mIGNvcHkgKQotewotCUNsZWFyKCk7Ci0JY29weS5Db3B5VG8oIHRoaXMgKTsKLX0KLQotCi12b2lkIFRpWG1sRGVjbGFyYXRpb246OlByaW50KCBGSUxFKiBjZmlsZSwgaW50IC8qZGVwdGgqLyApIGNvbnN0Ci17Ci0JZnByaW50ZiAoY2ZpbGUsICI8P3htbCAiKTsKLQotCWlmICggIXZlcnNpb24uZW1wdHkoKSApCi0JCWZwcmludGYgKGNmaWxlLCAidmVyc2lvbj1cIiVzXCIgIiwgdmVyc2lvbi5jX3N0ciAoKSk7Ci0JaWYgKCAhZW5jb2RpbmcuZW1wdHkoKSApCi0JCWZwcmludGYgKGNmaWxlLCAiZW5jb2Rpbmc9XCIlc1wiICIsIGVuY29kaW5nLmNfc3RyICgpKTsKLQlpZiAoICFzdGFuZGFsb25lLmVtcHR5KCkgKQotCQlmcHJpbnRmIChjZmlsZSwgInN0YW5kYWxvbmU9XCIlc1wiICIsIHN0YW5kYWxvbmUuY19zdHIgKCkpOwotCWZwcmludGYgKGNmaWxlLCAiPz4iKTsKLX0KLQotdm9pZCBUaVhtbERlY2xhcmF0aW9uOjpTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBzdHJlYW0gKSBjb25zdAotewotCSgqc3RyZWFtKSA8PCAiPD94bWwgIjsKLQotCWlmICggIXZlcnNpb24uZW1wdHkoKSApCi0JewotCQkoKnN0cmVhbSkgPDwgInZlcnNpb249XCIiOwotCQlQdXRTdHJpbmcoIHZlcnNpb24sIHN0cmVhbSApOwotCQkoKnN0cmVhbSkgPDwgIlwiICI7Ci0JfQotCWlmICggIWVuY29kaW5nLmVtcHR5KCkgKQotCXsKLQkJKCpzdHJlYW0pIDw8ICJlbmNvZGluZz1cIiI7Ci0JCVB1dFN0cmluZyggZW5jb2RpbmcsIHN0cmVhbSApOwotCQkoKnN0cmVhbSApIDw8ICJcIiAiOwotCX0KLQlpZiAoICFzdGFuZGFsb25lLmVtcHR5KCkgKQotCXsKLQkJKCpzdHJlYW0pIDw8ICJzdGFuZGFsb25lPVwiIjsKLQkJUHV0U3RyaW5nKCBzdGFuZGFsb25lLCBzdHJlYW0gKTsKLQkJKCpzdHJlYW0pIDw8ICJcIiAiOwotCX0KLQkoKnN0cmVhbSkgPDwgIj8+IjsKLX0KLQotCi12b2lkIFRpWG1sRGVjbGFyYXRpb246OkNvcHlUbyggVGlYbWxEZWNsYXJhdGlvbiogdGFyZ2V0ICkgY29uc3QKLXsKLQlUaVhtbE5vZGU6OkNvcHlUbyggdGFyZ2V0ICk7Ci0KLQl0YXJnZXQtPnZlcnNpb24gPSB2ZXJzaW9uOwotCXRhcmdldC0+ZW5jb2RpbmcgPSBlbmNvZGluZzsKLQl0YXJnZXQtPnN0YW5kYWxvbmUgPSBzdGFuZGFsb25lOwotfQotCi0KLVRpWG1sTm9kZSogVGlYbWxEZWNsYXJhdGlvbjo6Q2xvbmUoKSBjb25zdAotewkKLQlUaVhtbERlY2xhcmF0aW9uKiBjbG9uZSA9IG5ldyBUaVhtbERlY2xhcmF0aW9uKCk7Ci0KLQlpZiAoICFjbG9uZSApCi0JCXJldHVybiAwOwotCi0JQ29weVRvKCBjbG9uZSApOwotCXJldHVybiBjbG9uZTsKLX0KLQotCi12b2lkIFRpWG1sVW5rbm93bjo6UHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdAotewotCWZvciAoIGludCBpPTA7IGk8ZGVwdGg7IGkrKyApCi0JCWZwcmludGYoIGNmaWxlLCAiICAgICIgKTsKLQlmcHJpbnRmKCBjZmlsZSwgIjwlcz4iLCB2YWx1ZS5jX3N0cigpICk7Ci19Ci0KLQotdm9pZCBUaVhtbFVua25vd246OlN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIHN0cmVhbSApIGNvbnN0Ci17Ci0JKCpzdHJlYW0pIDw8ICI8IiA8PCB2YWx1ZSA8PCAiPiI7CQkvLyBEb24ndCB1c2UgZW50aXRpZXMgaGVyZSEgSXQgaXMgdW5rbm93bi4KLX0KLQotCi12b2lkIFRpWG1sVW5rbm93bjo6Q29weVRvKCBUaVhtbFVua25vd24qIHRhcmdldCApIGNvbnN0Ci17Ci0JVGlYbWxOb2RlOjpDb3B5VG8oIHRhcmdldCApOwotfQotCi0KLVRpWG1sTm9kZSogVGlYbWxVbmtub3duOjpDbG9uZSgpIGNvbnN0Ci17Ci0JVGlYbWxVbmtub3duKiBjbG9uZSA9IG5ldyBUaVhtbFVua25vd24oKTsKLQotCWlmICggIWNsb25lICkKLQkJcmV0dXJuIDA7Ci0KLQlDb3B5VG8oIGNsb25lICk7Ci0JcmV0dXJuIGNsb25lOwotfQotCi0KLVRpWG1sQXR0cmlidXRlU2V0OjpUaVhtbEF0dHJpYnV0ZVNldCgpCi17Ci0Jc2VudGluZWwubmV4dCA9ICZzZW50aW5lbDsKLQlzZW50aW5lbC5wcmV2ID0gJnNlbnRpbmVsOwotfQotCi0KLVRpWG1sQXR0cmlidXRlU2V0Ojp+VGlYbWxBdHRyaWJ1dGVTZXQoKQotewotCWFzc2VydCggc2VudGluZWwubmV4dCA9PSAmc2VudGluZWwgKTsKLQlhc3NlcnQoIHNlbnRpbmVsLnByZXYgPT0gJnNlbnRpbmVsICk7Ci19Ci0KLQotdm9pZCBUaVhtbEF0dHJpYnV0ZVNldDo6QWRkKCBUaVhtbEF0dHJpYnV0ZSogYWRkTWUgKQotewotCWFzc2VydCggIUZpbmQoIGFkZE1lLT5OYW1lKCkgKSApOwkvLyBTaG91bGRuJ3QgYmUgbXVsdGlwbHkgYWRkaW5nIHRvIHRoZSBzZXQuCi0KLQlhZGRNZS0+bmV4dCA9ICZzZW50aW5lbDsKLQlhZGRNZS0+cHJldiA9IHNlbnRpbmVsLnByZXY7Ci0KLQlzZW50aW5lbC5wcmV2LT5uZXh0ID0gYWRkTWU7Ci0Jc2VudGluZWwucHJldiAgICAgID0gYWRkTWU7Ci19Ci0KLXZvaWQgVGlYbWxBdHRyaWJ1dGVTZXQ6OlJlbW92ZSggVGlYbWxBdHRyaWJ1dGUqIHJlbW92ZU1lICkKLXsKLQlUaVhtbEF0dHJpYnV0ZSogbm9kZTsKLQotCWZvciggbm9kZSA9IHNlbnRpbmVsLm5leHQ7IG5vZGUgIT0gJnNlbnRpbmVsOyBub2RlID0gbm9kZS0+bmV4dCApCi0JewotCQlpZiAoIG5vZGUgPT0gcmVtb3ZlTWUgKQotCQl7Ci0JCQlub2RlLT5wcmV2LT5uZXh0ID0gbm9kZS0+bmV4dDsKLQkJCW5vZGUtPm5leHQtPnByZXYgPSBub2RlLT5wcmV2OwotCQkJbm9kZS0+bmV4dCA9IDA7Ci0JCQlub2RlLT5wcmV2ID0gMDsKLQkJCXJldHVybjsKLQkJfQotCX0KLQlhc3NlcnQoIDAgKTsJCS8vIHdlIHRyaWVkIHRvIHJlbW92ZSBhIG5vbi1saW5rZWQgYXR0cmlidXRlLgotfQotCi1jb25zdCBUaVhtbEF0dHJpYnV0ZSogVGlYbWxBdHRyaWJ1dGVTZXQ6OkZpbmQoIGNvbnN0IGNoYXIgKiBuYW1lICkgY29uc3QKLXsKLQljb25zdCBUaVhtbEF0dHJpYnV0ZSogbm9kZTsKLQotCWZvciggbm9kZSA9IHNlbnRpbmVsLm5leHQ7IG5vZGUgIT0gJnNlbnRpbmVsOyBub2RlID0gbm9kZS0+bmV4dCApCi0JewotCQlpZiAoIG5vZGUtPm5hbWUgPT0gbmFtZSApCi0JCQlyZXR1cm4gbm9kZTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLVRpWG1sQXR0cmlidXRlKglUaVhtbEF0dHJpYnV0ZVNldDo6RmluZCggY29uc3QgY2hhciAqIG5hbWUgKQotewotCVRpWG1sQXR0cmlidXRlKiBub2RlOwotCi0JZm9yKCBub2RlID0gc2VudGluZWwubmV4dDsgbm9kZSAhPSAmc2VudGluZWw7IG5vZGUgPSBub2RlLT5uZXh0ICkKLQl7Ci0JCWlmICggbm9kZS0+bmFtZSA9PSBuYW1lICkKLQkJCXJldHVybiBub2RlOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotI2lmZGVmIFRJWE1MX1VTRV9TVEwJCi1USVhNTF9JU1RSRUFNICYgb3BlcmF0b3IgPj4gKFRJWE1MX0lTVFJFQU0gJiBpbiwgVGlYbWxOb2RlICYgYmFzZSkKLXsKLQlUSVhNTF9TVFJJTkcgdGFnOwotCXRhZy5yZXNlcnZlKCA4ICogMTAwMCApOwotCWJhc2UuU3RyZWFtSW4oICZpbiwgJnRhZyApOwotCi0JYmFzZS5QYXJzZSggdGFnLmNfc3RyKCksIDAsIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKLQlyZXR1cm4gaW47Ci19Ci0jZW5kaWYKLQotCi1USVhNTF9PU1RSRUFNICYgb3BlcmF0b3I8PCAoVElYTUxfT1NUUkVBTSAmIG91dCwgY29uc3QgVGlYbWxOb2RlICYgYmFzZSkKLXsKLQliYXNlLlN0cmVhbU91dCAoJiBvdXQpOwotCXJldHVybiBvdXQ7Ci19Ci0KLQotI2lmZGVmIFRJWE1MX1VTRV9TVEwJCi1zdGQ6OnN0cmluZyAmIG9wZXJhdG9yPDwgKHN0ZDo6c3RyaW5nJiBvdXQsIGNvbnN0IFRpWG1sTm9kZSYgYmFzZSApCi17Ci0gICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3Nfc3RyZWFtKCBzdGQ6Om9zdHJpbmdzdHJlYW06Om91dCApOwotICAgYmFzZS5TdHJlYW1PdXQoICZvc19zdHJlYW0gKTsKLSAgIAotICAgb3V0LmFwcGVuZCggb3Nfc3RyZWFtLnN0cigpICk7Ci0gICByZXR1cm4gb3V0OwotfQotI2VuZGlmCi0KLQotVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGQoKSBjb25zdAotewotCWlmICggbm9kZSApCi0JewotCQlUaVhtbE5vZGUqIGNoaWxkID0gbm9kZS0+Rmlyc3RDaGlsZCgpOwotCQlpZiAoIGNoaWxkICkKLQkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKLQl9Ci0JcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Ci19Ci0KLQotVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0Ci17Ci0JaWYgKCBub2RlICkKLQl7Ci0JCVRpWG1sTm9kZSogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCB2YWx1ZSApOwotCQlpZiAoIGNoaWxkICkKLQkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKLQl9Ci0JcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Ci19Ci0KLQotVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkZpcnN0Q2hpbGRFbGVtZW50KCkgY29uc3QKLXsKLQlpZiAoIG5vZGUgKQotCXsKLQkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGRFbGVtZW50KCk7Ci0JCWlmICggY2hpbGQgKQotCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOwotCX0KLQlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKLX0KLQotCi1UaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Rmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0Ci17Ci0JaWYgKCBub2RlICkKLQl7Ci0JCVRpWG1sRWxlbWVudCogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkRWxlbWVudCggdmFsdWUgKTsKLQkJaWYgKCBjaGlsZCApCi0JCQlyZXR1cm4gVGlYbWxIYW5kbGUoIGNoaWxkICk7Ci0JfQotCXJldHVybiBUaVhtbEhhbmRsZSggMCApOwotfQotCi0KLVRpWG1sSGFuZGxlIFRpWG1sSGFuZGxlOjpDaGlsZCggaW50IGNvdW50ICkgY29uc3QKLXsKLQlpZiAoIG5vZGUgKQotCXsKLQkJaW50IGk7Ci0JCVRpWG1sTm9kZSogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCk7Ci0JCWZvciAoCWk9MDsKLQkJCQljaGlsZCAmJiBpPGNvdW50OwotCQkJCWNoaWxkID0gY2hpbGQtPk5leHRTaWJsaW5nKCksICsraSApCi0JCXsKLQkJCS8vIG5vdGhpbmcKLQkJfQotCQlpZiAoIGNoaWxkICkKLQkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKLQl9Ci0JcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Ci19Ci0KLQotVGlYbWxIYW5kbGUgVGlYbWxIYW5kbGU6OkNoaWxkKCBjb25zdCBjaGFyKiB2YWx1ZSwgaW50IGNvdW50ICkgY29uc3QKLXsKLQlpZiAoIG5vZGUgKQotCXsKLQkJaW50IGk7Ci0JCVRpWG1sTm9kZSogY2hpbGQgPSBub2RlLT5GaXJzdENoaWxkKCB2YWx1ZSApOwotCQlmb3IgKAlpPTA7Ci0JCQkJY2hpbGQgJiYgaTxjb3VudDsKLQkJCQljaGlsZCA9IGNoaWxkLT5OZXh0U2libGluZyggdmFsdWUgKSwgKytpICkKLQkJewotCQkJLy8gbm90aGluZwotCQl9Ci0JCWlmICggY2hpbGQgKQotCQkJcmV0dXJuIFRpWG1sSGFuZGxlKCBjaGlsZCApOwotCX0KLQlyZXR1cm4gVGlYbWxIYW5kbGUoIDAgKTsKLX0KLQotCi1UaVhtbEhhbmRsZSBUaVhtbEhhbmRsZTo6Q2hpbGRFbGVtZW50KCBpbnQgY291bnQgKSBjb25zdAotewotCWlmICggbm9kZSApCi0JewotCQlpbnQgaTsKLQkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGRFbGVtZW50KCk7Ci0JCWZvciAoCWk9MDsKLQkJCQljaGlsZCAmJiBpPGNvdW50OwotCQkJCWNoaWxkID0gY2hpbGQtPk5leHRTaWJsaW5nRWxlbWVudCgpLCArK2kgKQotCQl7Ci0JCQkvLyBub3RoaW5nCi0JCX0KLQkJaWYgKCBjaGlsZCApCi0JCQlyZXR1cm4gVGlYbWxIYW5kbGUoIGNoaWxkICk7Ci0JfQotCXJldHVybiBUaVhtbEhhbmRsZSggMCApOwotfQotCi0KLVRpWG1sSGFuZGxlIFRpWG1sSGFuZGxlOjpDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQgY291bnQgKSBjb25zdAotewotCWlmICggbm9kZSApCi0JewotCQlpbnQgaTsKLQkJVGlYbWxFbGVtZW50KiBjaGlsZCA9IG5vZGUtPkZpcnN0Q2hpbGRFbGVtZW50KCB2YWx1ZSApOwotCQlmb3IgKAlpPTA7Ci0JCQkJY2hpbGQgJiYgaTxjb3VudDsKLQkJCQljaGlsZCA9IGNoaWxkLT5OZXh0U2libGluZ0VsZW1lbnQoIHZhbHVlICksICsraSApCi0JCXsKLQkJCS8vIG5vdGhpbmcKLQkJfQotCQlpZiAoIGNoaWxkICkKLQkJCXJldHVybiBUaVhtbEhhbmRsZSggY2hpbGQgKTsKLQl9Ci0JcmV0dXJuIFRpWG1sSGFuZGxlKCAwICk7Ci19CmRpZmYgLS1naXQgYS90aW55eG1sLmRzdyBiL3Rpbnl4bWwuZHN3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDlkMGVlLi4wMDAwMDAwCi0tLSBhL3Rpbnl4bWwuZHN3CisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gV29ya3NwYWNlIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jIFdBUk5JTkc6IERPIE5PVCBFRElUIE9SIERFTEVURSBUSElTIFdPUktTUEFDRSBGSUxFIQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAidGlueVhtbFRlc3QiPS5cdGlueVhtbFRlc3QuZHNwIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgICBQcm9qZWN0X0RlcF9OYW1lIHRpbnl4bWwNCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAidGlueVhtbFRlc3RTVEwiPS5cdGlueVhtbFRlc3RTVEwuZHNwIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgICBQcm9qZWN0X0RlcF9OYW1lIHRpbnl4bWxTVEwNCi0gICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAidGlueXhtbCI9Llx0aW55eG1sX2xpYi5kc3AgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogInRpbnl4bWxTVEwiPS5cdGlueXhtbFNUTC5kc3AgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotR2xvYmFsOg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08Mz4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQpkaWZmIC0tZ2l0IGEvdGlueXhtbC5oIGIvdGlueXhtbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGNmOTRmLi4wMDAwMDAwCi0tLSBhL3Rpbnl4bWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MTEgKzAsMCBAQAotLyoKLXd3dy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGlueXhtbAotT3JpZ2luYWwgY29kZSAoMi4wIGFuZCBlYXJsaWVyICljb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBMZWUgVGhvbWFzb24gKHd3dy5ncmlubmluZ2xpemFyZC5jb20pCi0KLVRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi13YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55Ci1kYW1hZ2VzIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi0KLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotcHVycG9zZSwgaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kCi1yZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgotCi0xLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Ci1ub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKLXNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgotd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLQotMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKLW11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLQotMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCi1kaXN0cmlidXRpb24uCi0qLwotCi0KLSNpZm5kZWYgVElOWVhNTF9JTkNMVURFRAotI2RlZmluZSBUSU5ZWE1MX0lOQ0xVREVECi0KLSNpZmRlZiBfTVNDX1ZFUgotI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSNwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQ1MzAgKQotI3ByYWdtYSB3YXJuaW5nKCBkaXNhYmxlIDogNDc4NiApCi0jZW5kaWYKLQotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLQotLy8gSGVscCBvdXQgd2luZG93czoKLSNpZiBkZWZpbmVkKCBfREVCVUcgKSAmJiAhZGVmaW5lZCggREVCVUcgKQotI2RlZmluZSBERUJVRwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBERUJVRyApICYmIGRlZmluZWQoIF9NU0NfVkVSICkKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZGVmaW5lIFRJWE1MX0xPRyBPdXRwdXREZWJ1Z1N0cmluZwotI2Vsc2UKLSNkZWZpbmUgVElYTUxfTE9HIHByaW50ZgotI2VuZGlmCi0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JI2luY2x1ZGUgPHN0cmluZz4KLSAJI2luY2x1ZGUgPGlvc3RyZWFtPgotCSNkZWZpbmUgVElYTUxfU1RSSU5HCXN0ZDo6c3RyaW5nCi0JI2RlZmluZSBUSVhNTF9JU1RSRUFNCXN0ZDo6aXN0cmVhbQotCSNkZWZpbmUgVElYTUxfT1NUUkVBTQlzdGQ6Om9zdHJlYW0KLSNlbHNlCi0JI2luY2x1ZGUgInRpbnlzdHIuaCIKLQkjZGVmaW5lIFRJWE1MX1NUUklORwlUaVhtbFN0cmluZwotCSNkZWZpbmUgVElYTUxfT1NUUkVBTQlUaVhtbE91dFN0cmVhbQotI2VuZGlmCi0KLS8vIERlcHJlY2F0ZWQgbGlicmFyeSBmdW5jdGlvbiBoZWxsLiBDb21waWxlcnMgd2FudCB0byB1c2UgdGhlCi0vLyBuZXcgc2FmZSB2ZXJzaW9ucy4gVGhpcyBwcm9iYWJseSBkb2Vzbid0IGZ1bGx5IGFkZHJlc3MgdGhlIHByb2JsZW0sCi0vLyBidXQgaXQgZ2V0cyBjbG9zZXIuIFRoZXJlIGFyZSB0b28gbWFueSBjb21waWxlcnMgZm9yIG1lIHRvIGZ1bGx5Ci0vLyB0ZXN0LiBJZiB5b3UgZ2V0IGNvbXBpbGF0aW9uIHRyb3VibGVzLCB1bmRlZmluZSBUSVhNTF9TQUZFCi0KLSNkZWZpbmUgVElYTUxfU0FGRQkJLy8gVGlueVhtbCBpc24ndCBmdWxseSBidWZmZXIgb3ZlcnJ1biBwcm90ZWN0ZWQsIHNhZmUgY29kZS4gVGhpcyBpcyB3b3JrIGluIHByb2dyZXNzLgotI2lmZGVmIFRJWE1MX1NBRkUKLQkjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDAgKQotCQkvLyBNaWNyb3NvZnQgdmlzdWFsIHN0dWRpbywgdmVyc2lvbiA2IGFuZCBoaWdoZXIuCi0JCS8vI3ByYWdtYSBtZXNzYWdlKCAiVXNpbmcgX3NuKiBmdW5jdGlvbnMuIiApCi0JCSNkZWZpbmUgVElYTUxfU05QUklOVEYgX3NucHJpbnRmCi0JCSNkZWZpbmUgVElYTUxfU05TQ0FORiAgX3Nuc2NhbmYKLQkjZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gMyApCi0JCS8vIEdDQyB2ZXJzaW9uIDMgYW5kIGhpZ2hlci5zCi0JCS8vI3dhcm5pbmcoICJVc2luZyBzbiogZnVuY3Rpb25zLiIgKQotCQkjZGVmaW5lIFRJWE1MX1NOUFJJTlRGIHNucHJpbnRmCi0JCSNkZWZpbmUgVElYTUxfU05TQ0FORiAgc25zY2FuZgotCSNlbmRpZgotI2VuZGlmCQotCi1jbGFzcyBUaVhtbERvY3VtZW50OwotY2xhc3MgVGlYbWxFbGVtZW50OwotY2xhc3MgVGlYbWxDb21tZW50OwotY2xhc3MgVGlYbWxVbmtub3duOwotY2xhc3MgVGlYbWxBdHRyaWJ1dGU7Ci1jbGFzcyBUaVhtbFRleHQ7Ci1jbGFzcyBUaVhtbERlY2xhcmF0aW9uOwotY2xhc3MgVGlYbWxQYXJzaW5nRGF0YTsKLQotY29uc3QgaW50IFRJWE1MX01BSk9SX1ZFUlNJT04gPSAyOwotY29uc3QgaW50IFRJWE1MX01JTk9SX1ZFUlNJT04gPSA0OwotY29uc3QgaW50IFRJWE1MX1BBVENIX1ZFUlNJT04gPSAwOwotCi0vKglJbnRlcm5hbCBzdHJ1Y3R1cmUgZm9yIHRyYWNraW5nIGxvY2F0aW9uIG9mIGl0ZW1zIAotCWluIHRoZSBYTUwgZmlsZS4KLSovCi1zdHJ1Y3QgVGlYbWxDdXJzb3IKLXsKLQlUaVhtbEN1cnNvcigpCQl7IENsZWFyKCk7IH0KLQl2b2lkIENsZWFyKCkJCXsgcm93ID0gY29sID0gLTE7IH0KLQotCWludCByb3c7CS8vIDAgYmFzZWQuCi0JaW50IGNvbDsJLy8gMCBiYXNlZC4KLX07Ci0KLQotLy8gT25seSB1c2VkIGJ5IEF0dHJpYnV0ZTo6UXVlcnkgZnVuY3Rpb25zCi1lbnVtIAoteyAKLQlUSVhNTF9TVUNDRVNTLAotCVRJWE1MX05PX0FUVFJJQlVURSwKLQlUSVhNTF9XUk9OR19UWVBFCi19OwotCi0KLS8vIFVzZWQgYnkgdGhlIHBhcnNpbmcgcm91dGluZXMuCi1lbnVtIFRpWG1sRW5jb2RpbmcKLXsKLQlUSVhNTF9FTkNPRElOR19VTktOT1dOLAotCVRJWE1MX0VOQ09ESU5HX1VURjgsCi0JVElYTUxfRU5DT0RJTkdfTEVHQUNZCi19OwotCi1jb25zdCBUaVhtbEVuY29kaW5nIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgPSBUSVhNTF9FTkNPRElOR19VTktOT1dOOwotCi0vKiogVGlYbWxCYXNlIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXZlcnkgY2xhc3MgaW4gVGlueVhtbC4KLQlJdCBkb2VzIGxpdHRsZSBleGNlcHQgdG8gZXN0YWJsaXNoIHRoYXQgVGlueVhtbCBjbGFzc2VzCi0JY2FuIGJlIHByaW50ZWQgYW5kIHByb3ZpZGUgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucy4KLQotCUluIFhNTCwgdGhlIGRvY3VtZW50IGFuZCBlbGVtZW50cyBjYW4gY29udGFpbgotCW90aGVyIGVsZW1lbnRzIGFuZCBvdGhlciB0eXBlcyBvZiBub2Rlcy4KLQotCUB2ZXJiYXRpbQotCUEgRG9jdW1lbnQgY2FuIGNvbnRhaW46CUVsZW1lbnQJKGNvbnRhaW5lciBvciBsZWFmKQotCQkJCQkJCUNvbW1lbnQgKGxlYWYpCi0JCQkJCQkJVW5rbm93biAobGVhZikKLQkJCQkJCQlEZWNsYXJhdGlvbiggbGVhZiApCi0KLQlBbiBFbGVtZW50IGNhbiBjb250YWluOglFbGVtZW50IChjb250YWluZXIgb3IgbGVhZikKLQkJCQkJCQlUZXh0CShsZWFmKQotCQkJCQkJCUF0dHJpYnV0ZXMgKG5vdCBvbiB0cmVlKQotCQkJCQkJCUNvbW1lbnQgKGxlYWYpCi0JCQkJCQkJVW5rbm93biAobGVhZikKLQotCUEgRGVjbGVyYXRpb24gY29udGFpbnM6IEF0dHJpYnV0ZXMgKG5vdCBvbiB0cmVlKQotCUBlbmR2ZXJiYXRpbQotKi8KLWNsYXNzIFRpWG1sQmFzZQotewotCWZyaWVuZCBjbGFzcyBUaVhtbE5vZGU7Ci0JZnJpZW5kIGNsYXNzIFRpWG1sRWxlbWVudDsKLQlmcmllbmQgY2xhc3MgVGlYbWxEb2N1bWVudDsKLQotcHVibGljOgotCVRpWG1sQmFzZSgpCToJdXNlckRhdGEoMCkge30KLQl2aXJ0dWFsIH5UaVhtbEJhc2UoKQkJCQkJe30KLQotCS8qKglBbGwgVGlueVhtbCBjbGFzc2VzIGNhbiBwcmludCB0aGVtc2VsdmVzIHRvIGEgZmlsZXN0cmVhbS4KLQkJVGhpcyBpcyBhIGZvcm1hdHRlZCBwcmludCwgYW5kIHdpbGwgaW5zZXJ0IHRhYnMgYW5kIG5ld2xpbmVzLgotCQkKLQkJKEZvciBhbiB1bmZvcm1hdHRlZCBzdHJlYW0sIHVzZSB0aGUgPDwgb3BlcmF0b3IuKQotCSovCi0JdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3QgPSAwOwotCi0JLyoqCVRoZSB3b3JsZCBkb2VzIG5vdCBhZ3JlZSBvbiB3aGV0aGVyIHdoaXRlIHNwYWNlIHNob3VsZCBiZSBrZXB0IG9yCi0JCW5vdC4gSW4gb3JkZXIgdG8gbWFrZSBldmVyeW9uZSBoYXBweSwgdGhlc2UgZ2xvYmFsLCBzdGF0aWMgZnVuY3Rpb25zCi0JCWFyZSBwcm92aWRlZCB0byBzZXQgd2hldGhlciBvciBub3QgVGlueVhtbCB3aWxsIGNvbmRlbnNlIGFsbCB3aGl0ZSBzcGFjZQotCQlpbnRvIGEgc2luZ2xlIHNwYWNlIG9yIG5vdC4gVGhlIGRlZmF1bHQgaXMgdG8gY29uZGVuc2UuIE5vdGUgY2hhbmdpbmcgdGhpcwotCQl2YWx1ZXMgaXMgbm90IHRocmVhZCBzYWZlLgotCSovCi0Jc3RhdGljIHZvaWQgU2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBib29sIGNvbmRlbnNlICkJCXsgY29uZGVuc2VXaGl0ZVNwYWNlID0gY29uZGVuc2U7IH0KLQotCS8vLyBSZXR1cm4gdGhlIGN1cnJlbnQgd2hpdGUgc3BhY2Ugc2V0dGluZy4KLQlzdGF0aWMgYm9vbCBJc1doaXRlU3BhY2VDb25kZW5zZWQoKQkJCQkJCXsgcmV0dXJuIGNvbmRlbnNlV2hpdGVTcGFjZTsgfQotCi0JLyoqIFJldHVybiB0aGUgcG9zaXRpb24sIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb2YgdGhpcyBub2RlIG9yIGF0dHJpYnV0ZS4KLQkJVGhlIHJvdyBhbmQgY29sdW1uIGFyZSAxLWJhc2VkLiAoVGhhdCBpcyB0aGUgZmlyc3Qgcm93IGFuZCBmaXJzdCBjb2x1bW4gaXMKLQkJMSwxKS4gSWYgdGhlIHJldHVybnMgdmFsdWVzIGFyZSAwIG9yIGxlc3MsIHRoZW4gdGhlIHBhcnNlciBkb2VzIG5vdCBoYXZlCi0JCWEgcm93IGFuZCBjb2x1bW4gdmFsdWUuCi0KLQkJR2VuZXJhbGx5LCB0aGUgcm93IGFuZCBjb2x1bW4gdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiB0aGUgVGlYbWxEb2N1bWVudDo6TG9hZCgpLAotCQlUaVhtbERvY3VtZW50OjpMb2FkRmlsZSgpLCBvciBhbnkgVGlYbWxOb2RlOjpQYXJzZSgpIGlzIGNhbGxlZC4gSXQgd2lsbCBOT1QgYmUgc2V0Ci0JCXdoZW4gdGhlIERPTSB3YXMgY3JlYXRlZCBmcm9tIG9wZXJhdG9yPj4uCi0KLQkJVGhlIHZhbHVlcyByZWZsZWN0IHRoZSBpbml0aWFsIGxvYWQuIE9uY2UgdGhlIERPTSBpcyBtb2RpZmllZCBwcm9ncmFtbWF0aWNhbGx5Ci0JCShieSBhZGRpbmcgb3IgY2hhbmdpbmcgbm9kZXMgYW5kIGF0dHJpYnV0ZXMpIHRoZSBuZXcgdmFsdWVzIHdpbGwgTk9UIHVwZGF0ZSB0bwotCQlyZWZsZWN0IGNoYW5nZXMgaW4gdGhlIGRvY3VtZW50LgotCi0JCVRoZXJlIGlzIGEgbWlub3IgcGVyZm9ybWFuY2UgY29zdCB0byBjb21wdXRpbmcgdGhlIHJvdyBhbmQgY29sdW1uLiBDb21wdXRhdGlvbgotCQljYW4gYmUgZGlzYWJsZWQgaWYgVGlYbWxEb2N1bWVudDo6U2V0VGFiU2l6ZSgpIGlzIGNhbGxlZCB3aXRoIDAgYXMgdGhlIHZhbHVlLgotCi0JCUBzYSBUaVhtbERvY3VtZW50OjpTZXRUYWJTaXplKCkKLQkqLwotCWludCBSb3coKSBjb25zdAkJCXsgcmV0dXJuIGxvY2F0aW9uLnJvdyArIDE7IH0KLQlpbnQgQ29sdW1uKCkgY29uc3QJCXsgcmV0dXJuIGxvY2F0aW9uLmNvbCArIDE7IH0JLy8vPCBTZWUgUm93KCkKLQotCXZvaWQgIFNldFVzZXJEYXRhKCB2b2lkKiB1c2VyICkJCQl7IHVzZXJEYXRhID0gdXNlcjsgfQotCXZvaWQqIEdldFVzZXJEYXRhKCkJCQkJCQl7IHJldHVybiB1c2VyRGF0YTsgfQotCi0JLy8gVGFibGUgdGhhdCByZXR1cnMsIGZvciBhIGdpdmVuIGxlYWQgYnl0ZSwgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcwotCS8vIGluIHRoZSBVVEYtOCBzZXF1ZW5jZS4KLQlzdGF0aWMgY29uc3QgaW50IHV0ZjhCeXRlVGFibGVbMjU2XTsKLQotCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoCWNvbnN0IGNoYXIqIHAsIAotCQkJCQkJCQlUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCAKLQkJCQkJCQkJVGlYbWxFbmNvZGluZyBlbmNvZGluZyAvKj0gVElYTUxfRU5DT0RJTkdfVU5LTk9XTiAqLyApID0gMDsKLQotCWVudW0KLQl7Ci0JCVRJWE1MX05PX0VSUk9SID0gMCwKLQkJVElYTUxfRVJST1IsCi0JCVRJWE1MX0VSUk9SX09QRU5JTkdfRklMRSwKLQkJVElYTUxfRVJST1JfT1VUX09GX01FTU9SWSwKLQkJVElYTUxfRVJST1JfUEFSU0lOR19FTEVNRU5ULAotCQlUSVhNTF9FUlJPUl9GQUlMRURfVE9fUkVBRF9FTEVNRU5UX05BTUUsCi0JCVRJWE1MX0VSUk9SX1JFQURJTkdfRUxFTUVOVF9WQUxVRSwKLQkJVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLAotCQlUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLAotCQlUSVhNTF9FUlJPUl9SRUFESU5HX0VORF9UQUcsCi0JCVRJWE1MX0VSUk9SX1BBUlNJTkdfVU5LTk9XTiwKLQkJVElYTUxfRVJST1JfUEFSU0lOR19DT01NRU5ULAotCQlUSVhNTF9FUlJPUl9QQVJTSU5HX0RFQ0xBUkFUSU9OLAotCQlUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSwKLQkJVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwKLQkJVElYTUxfRVJST1JfUEFSU0lOR19DREFUQSwKLQotCQlUSVhNTF9FUlJPUl9TVFJJTkdfQ09VTlQKLQl9OwotCi1wcm90ZWN0ZWQ6Ci0KLQkvLyBTZWUgU1RMX1NUUklOR19CVUcKLQkvLyBVdGlsaXR5IGNsYXNzIHRvIG92ZXJjb21lIGEgYnVnLgotCWNsYXNzIFN0cmluZ1RvQnVmZmVyCi0JewotCSAgcHVibGljOgotCQlTdHJpbmdUb0J1ZmZlciggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIgKTsKLQkJflN0cmluZ1RvQnVmZmVyKCk7Ci0JCWNoYXIqIGJ1ZmZlcjsKLQl9OwotCi0Jc3RhdGljIGNvbnN0IGNoYXIqCVNraXBXaGl0ZVNwYWNlKCBjb25zdCBjaGFyKiwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotCWlubGluZSBzdGF0aWMgYm9vbAlJc1doaXRlU3BhY2UoIGNoYXIgYyApCQkKLQl7IAotCQlyZXR1cm4gKCBpc3NwYWNlKCAodW5zaWduZWQgY2hhcikgYyApIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgKTsgCi0JfQotCi0JdmlydHVhbCB2b2lkIFN0cmVhbU91dCAoVElYTUxfT1NUUkVBTSAqKSBjb25zdCA9IDA7Ci0KLQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCSAgICBzdGF0aWMgYm9vbAlTdHJlYW1XaGl0ZVNwYWNlKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOwotCSAgICBzdGF0aWMgYm9vbCBTdHJlYW1UbyggVElYTUxfSVNUUkVBTSAqIGluLCBpbnQgY2hhcmFjdGVyLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKLQkjZW5kaWYKLQotCS8qCVJlYWRzIGFuIFhNTCBuYW1lIGludG8gdGhlIHN0cmluZyBwcm92aWRlZC4gUmV0dXJucwotCQlhIHBvaW50ZXIganVzdCBwYXN0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgbmFtZSwKLQkJb3IgMCBpZiB0aGUgZnVuY3Rpb24gaGFzIGFuIGVycm9yLgotCSovCi0Jc3RhdGljIGNvbnN0IGNoYXIqIFJlYWROYW1lKCBjb25zdCBjaGFyKiBwLCBUSVhNTF9TVFJJTkcqIG5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLQotCS8qCVJlYWRzIHRleHQuIFJldHVybnMgYSBwb2ludGVyIHBhc3QgdGhlIGdpdmVuIGVuZCB0YWcuCi0JCVdpY2tlZGx5IGNvbXBsZXggb3B0aW9ucywgYnV0IGl0IGtlZXBzIHRoZSAoc2Vuc2l0aXZlKSBjb2RlIGluIG9uZSBwbGFjZS4KLQkqLwotCXN0YXRpYyBjb25zdCBjaGFyKiBSZWFkVGV4dCgJY29uc3QgY2hhciogaW4sCQkJCS8vIHdoZXJlIHRvIHN0YXJ0Ci0JCQkJCQkJCQlUSVhNTF9TVFJJTkcqIHRleHQsCQkJLy8gdGhlIHN0cmluZyByZWFkCi0JCQkJCQkJCQlib29sIGlnbm9yZVdoaXRlU3BhY2UsCQkvLyB3aGV0aGVyIHRvIGtlZXAgdGhlIHdoaXRlIHNwYWNlCi0JCQkJCQkJCQljb25zdCBjaGFyKiBlbmRUYWcsCQkJLy8gd2hhdCBlbmRzIHRoaXMgdGV4dAotCQkJCQkJCQkJYm9vbCBpZ25vcmVDYXNlLAkJCS8vIHdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4gdGhlIGVuZCB0YWcKLQkJCQkJCQkJCVRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsJLy8gdGhlIGN1cnJlbnQgZW5jb2RpbmcKLQotCS8vIElmIGFuIGVudGl0eSBoYXMgYmVlbiBmb3VuZCwgdHJhbnNmb3JtIGl0IGludG8gYSBjaGFyYWN0ZXIuCi0Jc3RhdGljIGNvbnN0IGNoYXIqIEdldEVudGl0eSggY29uc3QgY2hhciogaW4sIGNoYXIqIHZhbHVlLCBpbnQqIGxlbmd0aCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotCi0JLy8gR2V0IGEgY2hhcmFjdGVyLCB3aGlsZSBpbnRlcnByZXRpbmcgZW50aXRpZXMuCi0JLy8gVGhlIGxlbmd0aCBjYW4gYmUgZnJvbSAwIHRvIDQgYnl0ZXMuCi0JaW5saW5lIHN0YXRpYyBjb25zdCBjaGFyKiBHZXRDaGFyKCBjb25zdCBjaGFyKiBwLCBjaGFyKiBfdmFsdWUsIGludCogbGVuZ3RoLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLQl7Ci0JCWFzc2VydCggcCApOwotCQlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQotCQl7Ci0JCQkqbGVuZ3RoID0gdXRmOEJ5dGVUYWJsZVsgKigodW5zaWduZWQgY2hhciopcCkgXTsKLQkJCWFzc2VydCggKmxlbmd0aCA+PSAwICYmICpsZW5ndGggPCA1ICk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkqbGVuZ3RoID0gMTsKLQkJfQotCi0JCWlmICggKmxlbmd0aCA9PSAxICkKLQkJewotCQkJaWYgKCAqcCA9PSAnJicgKQotCQkJCXJldHVybiBHZXRFbnRpdHkoIHAsIF92YWx1ZSwgbGVuZ3RoLCBlbmNvZGluZyApOwotCQkJKl92YWx1ZSA9ICpwOwotCQkJcmV0dXJuIHArMTsKLQkJfQotCQllbHNlIGlmICggKmxlbmd0aCApCi0JCXsKLQkJCS8vc3RybmNweSggX3ZhbHVlLCBwLCAqbGVuZ3RoICk7CS8vIGxvdHMgb2YgY29tcGlsZXJzIGRvbid0IGxpa2UgdGhpcyBmdW5jdGlvbiAodW5zYWZlKSwKLQkJCQkJCQkJCQkJCS8vIGFuZCB0aGUgbnVsbCB0ZXJtaW5hdG9yIGlzbid0IG5lZWRlZAotCQkJZm9yKCBpbnQgaT0wOyBwW2ldICYmIGk8Kmxlbmd0aDsgKytpICkgewotCQkJCV92YWx1ZVtpXSA9IHBbaV07Ci0JCQl9Ci0JCQlyZXR1cm4gcCArICgqbGVuZ3RoKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8vIE5vdCB2YWxpZCB0ZXh0LgotCQkJcmV0dXJuIDA7Ci0JCX0KLQl9Ci0KLQkvLyBQdXRzIGEgc3RyaW5nIHRvIGEgc3RyZWFtLCBleHBhbmRpbmcgZW50aXRpZXMgYXMgaXQgZ29lcy4KLQkvLyBOb3RlIHRoaXMgc2hvdWxkIG5vdCBjb250aWFuIHRoZSAnPCcsICc+JywgZXRjLCBvciB0aGV5IHdpbGwgYmUgdHJhbnNmb3JtZWQgaW50byBlbnRpdGllcyEKLQlzdGF0aWMgdm9pZCBQdXRTdHJpbmcoIGNvbnN0IFRJWE1MX1NUUklORyYgc3RyLCBUSVhNTF9PU1RSRUFNKiBvdXQgKTsKLQotCXN0YXRpYyB2b2lkIFB1dFN0cmluZyggY29uc3QgVElYTUxfU1RSSU5HJiBzdHIsIFRJWE1MX1NUUklORyogb3V0ICk7Ci0KLQkvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJlYW0gYXJlIGFueSBvZiB0aGUgZW5kVGFnIHNlcXVlbmNlcy4KLQkvLyBJZ25vcmUgY2FzZSBvbmx5IHdvcmtzIGZvciBlbmdsaXNoLCBhbmQgc2hvdWxkIG9ubHkgYmUgcmVsaWVkIG9uIHdoZW4gY29tcGFyaW5nCi0JLy8gdG8gRW5nbGlzaCB3b3JkczogU3RyaW5nRXF1YWwoIHAsICJ2ZXJzaW9uIiwgdHJ1ZSApIGlzIGZpbmUuCi0Jc3RhdGljIGJvb2wgU3RyaW5nRXF1YWwoCWNvbnN0IGNoYXIqIHAsCi0JCQkJCQkJCWNvbnN0IGNoYXIqIGVuZFRhZywKLQkJCQkJCQkJYm9vbCBpZ25vcmVDYXNlLAotCQkJCQkJCQlUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci0KLQlzdGF0aWMgY29uc3QgY2hhciogZXJyb3JTdHJpbmdbIFRJWE1MX0VSUk9SX1NUUklOR19DT1VOVCBdOwotCi0JVGlYbWxDdXJzb3IgbG9jYXRpb247Ci0KLSAgICAvLy8gRmllbGQgY29udGFpbmluZyBhIGdlbmVyaWMgdXNlciBwb2ludGVyCi0Jdm9pZCoJCQl1c2VyRGF0YTsKLQkKLQkvLyBOb25lIG9mIHRoZXNlIG1ldGhvZHMgYXJlIHJlbGlhYmxlIGZvciBhbnkgbGFuZ3VhZ2UgZXhjZXB0IEVuZ2xpc2guCi0JLy8gR29vZCBmb3IgYXBwcm94aW1hdGlvbiwgbm90IGdyZWF0IGZvciBhY2N1cmFjeS4KLQlzdGF0aWMgaW50IElzQWxwaGEoIHVuc2lnbmVkIGNoYXIgYW55Qnl0ZSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotCXN0YXRpYyBpbnQgSXNBbHBoYU51bSggdW5zaWduZWQgY2hhciBhbnlCeXRlLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci0JaW5saW5lIHN0YXRpYyBpbnQgVG9Mb3dlciggaW50IHYsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQotCXsKLQkJaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKLQkJewotCQkJaWYgKCB2IDwgMTI4ICkgcmV0dXJuIHRvbG93ZXIoIHYgKTsKLQkJCXJldHVybiB2OwotCQl9Ci0JCWVsc2UKLQkJewotCQkJcmV0dXJuIHRvbG93ZXIoIHYgKTsKLQkJfQotCX0KLQlzdGF0aWMgdm9pZCBDb252ZXJ0VVRGMzJUb1VURjgoIHVuc2lnbmVkIGxvbmcgaW5wdXQsIGNoYXIqIG91dHB1dCwgaW50KiBsZW5ndGggKTsKLQotcHJpdmF0ZToKLQlUaVhtbEJhc2UoIGNvbnN0IFRpWG1sQmFzZSYgKTsJCQkJLy8gbm90IGltcGxlbWVudGVkLgotCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEJhc2UmIGJhc2UgKTsJLy8gbm90IGFsbG93ZWQuCi0KLQlzdHJ1Y3QgRW50aXR5Ci0JewotCQljb25zdCBjaGFyKiAgICAgc3RyOwotCQl1bnNpZ25lZCBpbnQJc3RyTGVuZ3RoOwotCQljaGFyCQkgICAgY2hyOwotCX07Ci0JZW51bQotCXsKLQkJTlVNX0VOVElUWSA9IDUsCi0JCU1BWF9FTlRJVFlfTEVOR1RIID0gNgotCi0JfTsKLQlzdGF0aWMgRW50aXR5IGVudGl0eVsgTlVNX0VOVElUWSBdOwotCXN0YXRpYyBib29sIGNvbmRlbnNlV2hpdGVTcGFjZTsKLX07Ci0KLQotLyoqIFRoZSBwYXJlbnQgY2xhc3MgZm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIERvY3VtZW50IE9iamVjdCBNb2RlbC4KLQkoRXhjZXB0IGZvciBhdHRyaWJ1dGVzKS4KLQlOb2RlcyBoYXZlIHNpYmxpbmdzLCBhIHBhcmVudCwgYW5kIGNoaWxkcmVuLiBBIG5vZGUgY2FuIGJlCi0JaW4gYSBkb2N1bWVudCwgb3Igc3RhbmQgb24gaXRzIG93bi4gVGhlIHR5cGUgb2YgYSBUaVhtbE5vZGUKLQljYW4gYmUgcXVlcmllZCwgYW5kIGl0IGNhbiBiZSBjYXN0IHRvIGl0cyBtb3JlIGRlZmluZWQgdHlwZS4KLSovCi1jbGFzcyBUaVhtbE5vZGUgOiBwdWJsaWMgVGlYbWxCYXNlCi17Ci0JZnJpZW5kIGNsYXNzIFRpWG1sRG9jdW1lbnQ7Ci0JZnJpZW5kIGNsYXNzIFRpWG1sRWxlbWVudDsKLQotcHVibGljOgotCSNpZmRlZiBUSVhNTF9VU0VfU1RMCQotCi0JICAgIC8qKiBBbiBpbnB1dCBzdHJlYW0gb3BlcmF0b3IsIGZvciBldmVyeSBjbGFzcy4gVG9sZXJhbnQgb2YgbmV3bGluZXMgYW5kCi0JCSAgICBmb3JtYXR0aW5nLCBidXQgZG9lc24ndCBleHBlY3QgdGhlbS4KLQkgICAgKi8KLQkgICAgZnJpZW5kIHN0ZDo6aXN0cmVhbSYgb3BlcmF0b3IgPj4gKHN0ZDo6aXN0cmVhbSYgaW4sIFRpWG1sTm9kZSYgYmFzZSk7Ci0KLQkgICAgLyoqIEFuIG91dHB1dCBzdHJlYW0gb3BlcmF0b3IsIGZvciBldmVyeSBjbGFzcy4gTm90ZSB0aGF0IHRoaXMgb3V0cHV0cwotCQkgICAgd2l0aG91dCBhbnkgbmV3bGluZXMgb3IgZm9ybWF0dGluZywgYXMgb3Bwb3NlZCB0byBQcmludCgpLCB3aGljaAotCQkgICAgaW5jbHVkZXMgdGFicyBhbmQgbmV3IGxpbmVzLgotCi0JCSAgICBUaGUgb3BlcmF0b3I8PCBhbmQgb3BlcmF0b3I+PiBhcmUgbm90IGNvbXBsZXRlbHkgc3ltbWV0cmljLiBXcml0aW5nCi0JCSAgICBhIG5vZGUgdG8gYSBzdHJlYW0gaXMgdmVyeSB3ZWxsIGRlZmluZWQuIFlvdSdsbCBnZXQgYSBuaWNlIHN0cmVhbQotCQkgICAgb2Ygb3V0cHV0LCB3aXRob3V0IGFueSBleHRyYSB3aGl0ZXNwYWNlIG9yIG5ld2xpbmVzLgotCQkgICAgCi0JCSAgICBCdXQgcmVhZGluZyBpcyBub3QgYXMgd2VsbCBkZWZpbmVkLiAoQXMgaXQgYWx3YXlzIGlzLikgSWYgeW91IGNyZWF0ZQotCQkgICAgYSBUaVhtbEVsZW1lbnQgKGZvciBleGFtcGxlKSBhbmQgcmVhZCB0aGF0IGZyb20gYW4gaW5wdXQgc3RyZWFtLAotCQkgICAgdGhlIHRleHQgbmVlZHMgdG8gZGVmaW5lIGFuIGVsZW1lbnQgb3IganVuayB3aWxsIHJlc3VsdC4gVGhpcyBpcwotCQkgICAgdHJ1ZSBvZiBhbGwgaW5wdXQgc3RyZWFtcywgYnV0IGl0J3Mgd29ydGgga2VlcGluZyBpbiBtaW5kLgotCi0JCSAgICBBIFRpWG1sRG9jdW1lbnQgd2lsbCByZWFkIG5vZGVzIHVudGlsIGl0IHJlYWRzIGEgcm9vdCBlbGVtZW50LCBhbmQKLQkJCWFsbCB0aGUgY2hpbGRyZW4gb2YgdGhhdCByb290IGVsZW1lbnQuCi0JICAgICovCQotCSAgICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0mIG91dCwgY29uc3QgVGlYbWxOb2RlJiBiYXNlKTsKLQotCQkvLy8gQXBwZW5kcyB0aGUgWE1MIG5vZGUgb3IgYXR0cmlidXRlIHRvIGEgc3RkOjpzdHJpbmcuCi0JCWZyaWVuZCBzdGQ6OnN0cmluZyYgb3BlcmF0b3I8PCAoc3RkOjpzdHJpbmcmIG91dCwgY29uc3QgVGlYbWxOb2RlJiBiYXNlICk7Ci0KLQkjZWxzZQotCSAgICAvLyBVc2VkIGludGVybmFsbHksIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLgotCSAgICBmcmllbmQgVElYTUxfT1NUUkVBTSYgb3BlcmF0b3I8PCAoVElYTUxfT1NUUkVBTSYgb3V0LCBjb25zdCBUaVhtbE5vZGUmIGJhc2UpOwotCSNlbmRpZgotCi0JLyoqIFRoZSB0eXBlcyBvZiBYTUwgbm9kZXMgc3VwcG9ydGVkIGJ5IFRpbnlYbWwuIChBbGwgdGhlCi0JCQl1bnN1cHBvcnRlZCB0eXBlcyBhcmUgcGlja2VkIHVwIGJ5IFVOS05PV04uKQotCSovCi0JZW51bSBOb2RlVHlwZQotCXsKLQkJRE9DVU1FTlQsCi0JCUVMRU1FTlQsCi0JCUNPTU1FTlQsCi0JCVVOS05PV04sCi0JCVRFWFQsCi0JCURFQ0xBUkFUSU9OLAotCQlUWVBFQ09VTlQKLQl9OwotCi0JdmlydHVhbCB+VGlYbWxOb2RlKCk7Ci0KLQkvKiogVGhlIG1lYW5pbmcgb2YgJ3ZhbHVlJyBjaGFuZ2VzIGZvciB0aGUgc3BlY2lmaWMgdHlwZSBvZgotCQlUaVhtbE5vZGUuCi0JCUB2ZXJiYXRpbQotCQlEb2N1bWVudDoJZmlsZW5hbWUgb2YgdGhlIHhtbCBmaWxlCi0JCUVsZW1lbnQ6CW5hbWUgb2YgdGhlIGVsZW1lbnQKLQkJQ29tbWVudDoJdGhlIGNvbW1lbnQgdGV4dAotCQlVbmtub3duOgl0aGUgdGFnIGNvbnRlbnRzCi0JCVRleHQ6CQl0aGUgdGV4dCBzdHJpbmcKLQkJQGVuZHZlcmJhdGltCi0KLQkJVGhlIHN1YmNsYXNzZXMgd2lsbCB3cmFwIHRoaXMgZnVuY3Rpb24uCi0JKi8KLQljb25zdCBjaGFyICpWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlLmNfc3RyICgpOyB9Ci0KLSAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAotCS8qKiBSZXR1cm4gVmFsdWUoKSBhcyBhIHN0ZDo6c3RyaW5nLiBJZiB5b3Ugb25seSB1c2UgU1RMLAotCSAgICB0aGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gY2FsbGluZyBWYWx1ZSgpLgotCQlPbmx5IGF2YWlsYWJsZSBpbiBTVEwgbW9kZS4KLQkqLwotCWNvbnN0IHN0ZDo6c3RyaW5nJiBWYWx1ZVN0cigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9Ci0JI2VuZGlmCi0KLQkvKiogQ2hhbmdlcyB0aGUgdmFsdWUgb2YgdGhlIG5vZGUuIERlZmluZWQgYXM6Ci0JCUB2ZXJiYXRpbQotCQlEb2N1bWVudDoJZmlsZW5hbWUgb2YgdGhlIHhtbCBmaWxlCi0JCUVsZW1lbnQ6CW5hbWUgb2YgdGhlIGVsZW1lbnQKLQkJQ29tbWVudDoJdGhlIGNvbW1lbnQgdGV4dAotCQlVbmtub3duOgl0aGUgdGFnIGNvbnRlbnRzCi0JCVRleHQ6CQl0aGUgdGV4dCBzdHJpbmcKLQkJQGVuZHZlcmJhdGltCi0JKi8KLQl2b2lkIFNldFZhbHVlKGNvbnN0IGNoYXIgKiBfdmFsdWUpIHsgdmFsdWUgPSBfdmFsdWU7fQotCi0gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkvLy8gU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCi0Jdm9pZCBTZXRWYWx1ZSggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApICAgIAotCXsJICAKLQkJU3RyaW5nVG9CdWZmZXIgYnVmKCBfdmFsdWUgKTsKLQkJU2V0VmFsdWUoIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogIiIgKTsgICAgCQotCX0JCi0JI2VuZGlmCi0KLQkvLy8gRGVsZXRlIGFsbCB0aGUgY2hpbGRyZW4gb2YgdGhpcyBub2RlLiBEb2VzIG5vdCBhZmZlY3QgJ3RoaXMnLgotCXZvaWQgQ2xlYXIoKTsKLQotCS8vLyBPbmUgc3RlcCB1cCB0aGUgRE9NLgotCVRpWG1sTm9kZSogUGFyZW50KCkJCQkJCQkJeyByZXR1cm4gcGFyZW50OyB9Ci0JY29uc3QgVGlYbWxOb2RlKiBQYXJlbnQoKSBjb25zdAkJCQl7IHJldHVybiBwYXJlbnQ7IH0KLQotCWNvbnN0IFRpWG1sTm9kZSogRmlyc3RDaGlsZCgpCWNvbnN0CXsgcmV0dXJuIGZpcnN0Q2hpbGQ7IH0JCS8vLzwgVGhlIGZpcnN0IGNoaWxkIG9mIHRoaXMgbm9kZS4gV2lsbCBiZSBudWxsIGlmIHRoZXJlIGFyZSBubyBjaGlsZHJlbi4KLQlUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoKQkJCQkJeyByZXR1cm4gZmlyc3RDaGlsZDsgfQotCWNvbnN0IFRpWG1sTm9kZSogRmlyc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICkgY29uc3Q7CQkJLy8vPCBUaGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBub2RlIHdpdGggdGhlIG1hdGNoaW5nICd2YWx1ZScuIFdpbGwgYmUgbnVsbCBpZiBub25lIGZvdW5kLgotCVRpWG1sTm9kZSogRmlyc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICk7CQkJCQkJLy8vPCBUaGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBub2RlIHdpdGggdGhlIG1hdGNoaW5nICd2YWx1ZScuIFdpbGwgYmUgbnVsbCBpZiBub25lIGZvdW5kLgotCi0JY29uc3QgVGlYbWxOb2RlKiBMYXN0Q2hpbGQoKSBjb25zdAl7IHJldHVybiBsYXN0Q2hpbGQ7IH0JCS8vLyBUaGUgbGFzdCBjaGlsZCBvZiB0aGlzIG5vZGUuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4uCi0JVGlYbWxOb2RlKiBMYXN0Q2hpbGQoKQl7IHJldHVybiBsYXN0Q2hpbGQ7IH0KLQljb25zdCBUaVhtbE5vZGUqIExhc3RDaGlsZCggY29uc3QgY2hhciAqIHZhbHVlICkgY29uc3Q7CQkJLy8vIFRoZSBsYXN0IGNoaWxkIG9mIHRoaXMgbm9kZSBtYXRjaGluZyAndmFsdWUnLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVuLgotCVRpWG1sTm9kZSogTGFzdENoaWxkKCBjb25zdCBjaGFyICogdmFsdWUgKTsJCi0KLSAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAotCWNvbnN0IFRpWG1sTm9kZSogRmlyc3RDaGlsZCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIGNvbnN0CXsJcmV0dXJuIEZpcnN0Q2hpbGQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQlUaVhtbE5vZGUqIEZpcnN0Q2hpbGQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKQkJCQl7CXJldHVybiBGaXJzdENoaWxkIChfdmFsdWUuY19zdHIgKCkpOwl9CS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCi0JY29uc3QgVGlYbWxOb2RlKiBMYXN0Q2hpbGQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSBjb25zdAl7CXJldHVybiBMYXN0Q2hpbGQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQlUaVhtbE5vZGUqIExhc3RDaGlsZCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApCQkJCXsJcmV0dXJuIExhc3RDaGlsZCAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgotCSNlbmRpZgotCi0JLyoqIEFuIGFsdGVybmF0ZSB3YXkgdG8gd2FsayB0aGUgY2hpbGRyZW4gb2YgYSBub2RlLgotCQlPbmUgd2F5IHRvIGl0ZXJhdGUgb3ZlciBub2RlcyBpczoKLQkJQHZlcmJhdGltCi0JCQlmb3IoIGNoaWxkID0gcGFyZW50LT5GaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5OZXh0U2libGluZygpICkKLQkJQGVuZHZlcmJhdGltCi0KLQkJSXRlcmF0ZUNoaWxkcmVuIGRvZXMgdGhlIHNhbWUgdGhpbmcgd2l0aCB0aGUgc3ludGF4OgotCQlAdmVyYmF0aW0KLQkJCWNoaWxkID0gMDsKLQkJCXdoaWxlKCBjaGlsZCA9IHBhcmVudC0+SXRlcmF0ZUNoaWxkcmVuKCBjaGlsZCApICkKLQkJQGVuZHZlcmJhdGltCi0KLQkJSXRlcmF0ZUNoaWxkcmVuIHRha2VzIHRoZSBwcmV2aW91cyBjaGlsZCBhcyBpbnB1dCBhbmQgZmluZHMKLQkJdGhlIG5leHQgb25lLiBJZiB0aGUgcHJldmlvdXMgY2hpbGQgaXMgbnVsbCwgaXQgcmV0dXJucyB0aGUKLQkJZmlyc3QuIEl0ZXJhdGVDaGlsZHJlbiB3aWxsIHJldHVybiBudWxsIHdoZW4gZG9uZS4KLQkqLwotCWNvbnN0IFRpWG1sTm9kZSogSXRlcmF0ZUNoaWxkcmVuKCBjb25zdCBUaVhtbE5vZGUqIHByZXZpb3VzICkgY29uc3Q7Ci0JVGlYbWxOb2RlKiBJdGVyYXRlQ2hpbGRyZW4oIFRpWG1sTm9kZSogcHJldmlvdXMgKTsKLQotCS8vLyBUaGlzIGZsYXZvciBvZiBJdGVyYXRlQ2hpbGRyZW4gc2VhcmNoZXMgZm9yIGNoaWxkcmVuIHdpdGggYSBwYXJ0aWN1bGFyICd2YWx1ZScKLQljb25zdCBUaVhtbE5vZGUqIEl0ZXJhdGVDaGlsZHJlbiggY29uc3QgY2hhciAqIHZhbHVlLCBjb25zdCBUaVhtbE5vZGUqIHByZXZpb3VzICkgY29uc3Q7Ci0JVGlYbWxOb2RlKiBJdGVyYXRlQ2hpbGRyZW4oIGNvbnN0IGNoYXIgKiB2YWx1ZSwgVGlYbWxOb2RlKiBwcmV2aW91cyApOwotCi0gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQljb25zdCBUaVhtbE5vZGUqIEl0ZXJhdGVDaGlsZHJlbiggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSwgY29uc3QgVGlYbWxOb2RlKiBwcmV2aW91cyApIGNvbnN0CXsJcmV0dXJuIEl0ZXJhdGVDaGlsZHJlbiAoX3ZhbHVlLmNfc3RyICgpLCBwcmV2aW91cyk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQlUaVhtbE5vZGUqIEl0ZXJhdGVDaGlsZHJlbiggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSwgVGlYbWxOb2RlKiBwcmV2aW91cyApIHsJcmV0dXJuIEl0ZXJhdGVDaGlsZHJlbiAoX3ZhbHVlLmNfc3RyICgpLCBwcmV2aW91cyk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQkjZW5kaWYKLQotCS8qKiBBZGQgYSBuZXcgbm9kZSByZWxhdGVkIHRvIHRoaXMuIEFkZHMgYSBjaGlsZCBwYXN0IHRoZSBMYXN0Q2hpbGQuCi0JCVJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4KLQkqLwotCVRpWG1sTm9kZSogSW5zZXJ0RW5kQ2hpbGQoIGNvbnN0IFRpWG1sTm9kZSYgYWRkVGhpcyApOwotCi0KLQkvKiogQWRkIGEgbmV3IG5vZGUgcmVsYXRlZCB0byB0aGlzLiBBZGRzIGEgY2hpbGQgcGFzdCB0aGUgTGFzdENoaWxkLgotCi0JCU5PVEU6IHRoZSBub2RlIHRvIGJlIGFkZGVkIGlzIHBhc3NlZCBieSBwb2ludGVyLCBhbmQgd2lsbCBiZQotCQloZW5jZWZvcnRoIG93bmVkIChhbmQgZGVsZXRlZCkgYnkgdGlueVhtbC4gVGhpcyBtZXRob2QgaXMgZWZmaWNpZW50Ci0JCWFuZCBhdm9pZHMgYW4gZXh0cmEgY29weSwgYnV0IHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZSBhcyBpdAotCQl1c2VzIGEgZGlmZmVyZW50IG1lbW9yeSBtb2RlbCB0aGFuIHRoZSBvdGhlciBpbnNlcnQgZnVuY3Rpb25zLgotCi0JCUBzYSBJbnNlcnRFbmRDaGlsZAotCSovCi0JVGlYbWxOb2RlKiBMaW5rRW5kQ2hpbGQoIFRpWG1sTm9kZSogYWRkVGhpcyApOwotCi0JLyoqIEFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gQWRkcyBhIGNoaWxkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIGNoaWxkLgotCQlSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuCi0JKi8KLQlUaVhtbE5vZGUqIEluc2VydEJlZm9yZUNoaWxkKCBUaVhtbE5vZGUqIGJlZm9yZVRoaXMsIGNvbnN0IFRpWG1sTm9kZSYgYWRkVGhpcyApOwotCi0JLyoqIEFkZCBhIG5ldyBub2RlIHJlbGF0ZWQgdG8gdGhpcy4gQWRkcyBhIGNoaWxkIGFmdGVyIHRoZSBzcGVjaWZpZWQgY2hpbGQuCi0JCVJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgb2JqZWN0IG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4KLQkqLwotCVRpWG1sTm9kZSogSW5zZXJ0QWZ0ZXJDaGlsZCggIFRpWG1sTm9kZSogYWZ0ZXJUaGlzLCBjb25zdCBUaVhtbE5vZGUmIGFkZFRoaXMgKTsKLQotCS8qKiBSZXBsYWNlIGEgY2hpbGQgb2YgdGhpcyBub2RlLgotCQlSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VyZWQuCi0JKi8KLQlUaVhtbE5vZGUqIFJlcGxhY2VDaGlsZCggVGlYbWxOb2RlKiByZXBsYWNlVGhpcywgY29uc3QgVGlYbWxOb2RlJiB3aXRoVGhpcyApOwotCi0JLy8vIERlbGV0ZSBhIGNoaWxkIG9mIHRoaXMgbm9kZS4KLQlib29sIFJlbW92ZUNoaWxkKCBUaVhtbE5vZGUqIHJlbW92ZVRoaXMgKTsKLQotCS8vLyBOYXZpZ2F0ZSB0byBhIHNpYmxpbmcgbm9kZS4KLQljb25zdCBUaVhtbE5vZGUqIFByZXZpb3VzU2libGluZygpIGNvbnN0CQkJeyByZXR1cm4gcHJldjsgfQotCVRpWG1sTm9kZSogUHJldmlvdXNTaWJsaW5nKCkJCQkJCQl7IHJldHVybiBwcmV2OyB9Ci0KLQkvLy8gTmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUuCi0JY29uc3QgVGlYbWxOb2RlKiBQcmV2aW91c1NpYmxpbmcoIGNvbnN0IGNoYXIgKiApIGNvbnN0OwotCVRpWG1sTm9kZSogUHJldmlvdXNTaWJsaW5nKCBjb25zdCBjaGFyICogKTsKLQotICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JY29uc3QgVGlYbWxOb2RlKiBQcmV2aW91c1NpYmxpbmcoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKSBjb25zdAl7CXJldHVybiBQcmV2aW91c1NpYmxpbmcgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQlUaVhtbE5vZGUqIFByZXZpb3VzU2libGluZyggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApIAkJCXsJcmV0dXJuIFByZXZpb3VzU2libGluZyAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgotCWNvbnN0IFRpWG1sTm9kZSogTmV4dFNpYmxpbmcoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUpIGNvbnN0CQl7CXJldHVybiBOZXh0U2libGluZyAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgotCVRpWG1sTm9kZSogTmV4dFNpYmxpbmcoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUpIAkJCQkJewlyZXR1cm4gTmV4dFNpYmxpbmcgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQkjZW5kaWYKLQotCS8vLyBOYXZpZ2F0ZSB0byBhIHNpYmxpbmcgbm9kZS4KLQljb25zdCBUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCkgY29uc3QJCQkJeyByZXR1cm4gbmV4dDsgfQotCVRpWG1sTm9kZSogTmV4dFNpYmxpbmcoKQkJCQkJCQl7IHJldHVybiBuZXh0OyB9Ci0KLQkvLy8gTmF2aWdhdGUgdG8gYSBzaWJsaW5nIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gJ3ZhbHVlJy4KLQljb25zdCBUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCBjb25zdCBjaGFyICogKSBjb25zdDsKLQlUaVhtbE5vZGUqIE5leHRTaWJsaW5nKCBjb25zdCBjaGFyICogKTsKLQotCS8qKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4KLQkJQ2FsbHMgTmV4dFNpYmxpbmcgYW5kIFRvRWxlbWVudC4gV2lsbCBza2lwIGFsbCBub24tRWxlbWVudAotCQlub2Rlcy4gUmV0dXJucyAwIGlmIHRoZXJlIGlzIG5vdCBhbm90aGVyIGVsZW1lbnQuCi0JKi8KLQljb25zdCBUaVhtbEVsZW1lbnQqIE5leHRTaWJsaW5nRWxlbWVudCgpIGNvbnN0OwotCVRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCk7Ci0KLQkvKiogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IHRocm91Z2ggZWxlbWVudHMuCi0JCUNhbGxzIE5leHRTaWJsaW5nIGFuZCBUb0VsZW1lbnQuIFdpbGwgc2tpcCBhbGwgbm9uLUVsZW1lbnQKLQkJbm9kZXMuIFJldHVybnMgMCBpZiB0aGVyZSBpcyBub3QgYW5vdGhlciBlbGVtZW50LgotCSovCi0JY29uc3QgVGlYbWxFbGVtZW50KiBOZXh0U2libGluZ0VsZW1lbnQoIGNvbnN0IGNoYXIgKiApIGNvbnN0OwotCVRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBjaGFyICogKTsKLQotICAgICNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JY29uc3QgVGlYbWxFbGVtZW50KiBOZXh0U2libGluZ0VsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUpIGNvbnN0CXsJcmV0dXJuIE5leHRTaWJsaW5nRWxlbWVudCAoX3ZhbHVlLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgotCVRpWG1sRWxlbWVudCogTmV4dFNpYmxpbmdFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlKQkJCQl7CXJldHVybiBOZXh0U2libGluZ0VsZW1lbnQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQkjZW5kaWYKLQotCS8vLyBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgdGhyb3VnaCBlbGVtZW50cy4KLQljb25zdCBUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCkJY29uc3Q7Ci0JVGlYbWxFbGVtZW50KiBGaXJzdENoaWxkRWxlbWVudCgpOwotCi0JLy8vIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCB0aHJvdWdoIGVsZW1lbnRzLgotCWNvbnN0IFRpWG1sRWxlbWVudCogRmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OwotCVRpWG1sRWxlbWVudCogRmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApOwotCi0gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQljb25zdCBUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJewlyZXR1cm4gRmlyc3RDaGlsZEVsZW1lbnQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQlUaVhtbEVsZW1lbnQqIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkJCQkJewlyZXR1cm4gRmlyc3RDaGlsZEVsZW1lbnQgKF92YWx1ZS5jX3N0ciAoKSk7CX0JLy8vPCBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQkjZW5kaWYKLQotCS8qKiBRdWVyeSB0aGUgdHlwZSAoYXMgYW4gZW51bWVyYXRlZCB2YWx1ZSwgYWJvdmUpIG9mIHRoaXMgbm9kZS4KLQkJVGhlIHBvc3NpYmxlIHR5cGVzIGFyZTogRE9DVU1FTlQsIEVMRU1FTlQsIENPTU1FTlQsCi0JCQkJCQkJCVVOS05PV04sIFRFWFQsIGFuZCBERUNMQVJBVElPTi4KLQkqLwotCXZpcnR1YWwgaW50IFR5cGUoKSBjb25zdAl7IHJldHVybiB0eXBlOyB9Ci0KLQkvKiogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgRG9jdW1lbnQgdGhpcyBub2RlIGxpdmVzIGluLgotCQlSZXR1cm5zIG51bGwgaWYgbm90IGluIGEgZG9jdW1lbnQuCi0JKi8KLQljb25zdCBUaVhtbERvY3VtZW50KiBHZXREb2N1bWVudCgpIGNvbnN0OwotCVRpWG1sRG9jdW1lbnQqIEdldERvY3VtZW50KCk7Ci0KLQkvLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBoYXMgbm8gY2hpbGRyZW4uCi0JYm9vbCBOb0NoaWxkcmVuKCkgY29uc3QJCQkJCQl7IHJldHVybiAhZmlyc3RDaGlsZDsgfQotCi0JY29uc3QgVGlYbWxEb2N1bWVudCogVG9Eb2N1bWVudCgpCWNvbnN0CQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBET0NVTUVOVCApID8gKGNvbnN0IFRpWG1sRG9jdW1lbnQqKSB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgotCWNvbnN0IFRpWG1sRWxlbWVudCogIFRvRWxlbWVudCgpIGNvbnN0CQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gRUxFTUVOVCAgKSA/IChjb25zdCBUaVhtbEVsZW1lbnQqKSAgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KLQljb25zdCBUaVhtbENvbW1lbnQqICBUb0NvbW1lbnQoKSBjb25zdAkJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IENPTU1FTlQgICkgPyAoY29uc3QgVGlYbWxDb21tZW50KikgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCi0JY29uc3QgVGlYbWxVbmtub3duKiAgVG9Vbmtub3duKCkgY29uc3QJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBVTktOT1dOICApID8gKGNvbnN0IFRpWG1sVW5rbm93biopICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgotCWNvbnN0IFRpWG1sVGV4dCoJICAgVG9UZXh0KCkgICAgY29uc3QJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IFRFWFQgICAgICkgPyAoY29uc3QgVGlYbWxUZXh0KikgICAgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCi0JY29uc3QgVGlYbWxEZWNsYXJhdGlvbiogVG9EZWNsYXJhdGlvbigpIGNvbnN0CXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IERFQ0xBUkFUSU9OICkgPyAoY29uc3QgVGlYbWxEZWNsYXJhdGlvbiopIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCi0KLQlUaVhtbERvY3VtZW50KiBUb0RvY3VtZW50KCkJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBET0NVTUVOVCApID8gKFRpWG1sRG9jdW1lbnQqKSB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgotCVRpWG1sRWxlbWVudCogIFRvRWxlbWVudCgpCQkJeyByZXR1cm4gKCB0aGlzICYmIHR5cGUgPT0gRUxFTUVOVCAgKSA/IChUaVhtbEVsZW1lbnQqKSAgdGhpcyA6IDA7IH0gLy8vPCBDYXN0IHRvIGEgbW9yZSBkZWZpbmVkIHR5cGUuIFdpbGwgcmV0dXJuIG51bGwgbm90IG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS4KLQlUaVhtbENvbW1lbnQqICBUb0NvbW1lbnQoKQkJCXsgcmV0dXJuICggdGhpcyAmJiB0eXBlID09IENPTU1FTlQgICkgPyAoVGlYbWxDb21tZW50KikgIHRoaXMgOiAwOyB9IC8vLzwgQ2FzdCB0byBhIG1vcmUgZGVmaW5lZCB0eXBlLiBXaWxsIHJldHVybiBudWxsIG5vdCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuCi0JVGlYbWxVbmtub3duKiAgVG9Vbmtub3duKCkJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBVTktOT1dOICApID8gKFRpWG1sVW5rbm93biopICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgotCVRpWG1sVGV4dCoJICAgVG9UZXh0KCkgICAJCQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBURVhUICAgICApID8gKFRpWG1sVGV4dCopICAgICB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgotCVRpWG1sRGVjbGFyYXRpb24qIFRvRGVjbGFyYXRpb24oKQl7IHJldHVybiAoIHRoaXMgJiYgdHlwZSA9PSBERUNMQVJBVElPTiApID8gKFRpWG1sRGVjbGFyYXRpb24qKSB0aGlzIDogMDsgfSAvLy88IENhc3QgdG8gYSBtb3JlIGRlZmluZWQgdHlwZS4gV2lsbCByZXR1cm4gbnVsbCBub3Qgb2YgdGhlIHJlcXVlc3RlZCB0eXBlLgotCi0JLyoqIENyZWF0ZSBhbiBleGFjdCBkdXBsaWNhdGUgb2YgdGhpcyBub2RlIGFuZCByZXR1cm4gaXQuIFRoZSBtZW1vcnkgbXVzdCBiZSBkZWxldGVkCi0JCWJ5IHRoZSBjYWxsZXIuIAotCSovCi0JdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0JVGlYbWxOb2RlKCBOb2RlVHlwZSBfdHlwZSApOwotCi0JLy8gQ29weSB0byB0aGUgYWxsb2NhdGVkIG9iamVjdC4gU2hhcmVkIGZ1bmN0aW9uYWxpdHkgYmV0d2VlbiBDbG9uZSwgQ29weSBjb25zdHJ1Y3RvciwKLQkvLyBhbmQgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0Jdm9pZCBDb3B5VG8oIFRpWG1sTm9kZSogdGFyZ2V0ICkgY29uc3Q7Ci0KLQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCSAgICAvLyBUaGUgcmVhbCB3b3JrIG9mIHRoZSBpbnB1dCBvcGVyYXRvci4KLQkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNKiBpbiwgVElYTUxfU1RSSU5HKiB0YWcgKSA9IDA7Ci0JI2VuZGlmCi0KLQkvLyBGaWd1cmUgb3V0IHdoYXQgaXMgYXQgKnAsIGFuZCBwYXJzZSBpdC4gUmV0dXJucyBudWxsIGlmIGl0IGlzIG5vdCBhbiB4bWwgbm9kZS4KLQlUaVhtbE5vZGUqIElkZW50aWZ5KCBjb25zdCBjaGFyKiBzdGFydCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotCi0JVGlYbWxOb2RlKgkJcGFyZW50OwotCU5vZGVUeXBlCQl0eXBlOwotCi0JVGlYbWxOb2RlKgkJZmlyc3RDaGlsZDsKLQlUaVhtbE5vZGUqCQlsYXN0Q2hpbGQ7Ci0KLQlUSVhNTF9TVFJJTkcJdmFsdWU7Ci0KLQlUaVhtbE5vZGUqCQlwcmV2OwotCVRpWG1sTm9kZSoJCW5leHQ7Ci0KLXByaXZhdGU6Ci0JVGlYbWxOb2RlKCBjb25zdCBUaVhtbE5vZGUmICk7CQkJCS8vIG5vdCBpbXBsZW1lbnRlZC4KLQl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxOb2RlJiBiYXNlICk7CS8vIG5vdCBhbGxvd2VkLgotfTsKLQotCi0vKiogQW4gYXR0cmlidXRlIGlzIGEgbmFtZS12YWx1ZSBwYWlyLiBFbGVtZW50cyBoYXZlIGFuIGFyYml0cmFyeQotCW51bWJlciBvZiBhdHRyaWJ1dGVzLCBlYWNoIHdpdGggYSB1bmlxdWUgbmFtZS4KLQotCUBub3RlIFRoZSBhdHRyaWJ1dGVzIGFyZSBub3QgVGlYbWxOb2Rlcywgc2luY2UgdGhleSBhcmUgbm90Ci0JCSAgcGFydCBvZiB0aGUgdGlueVhNTCBkb2N1bWVudCBvYmplY3QgbW9kZWwuIFRoZXJlIGFyZSBvdGhlcgotCQkgIHN1Z2dlc3RlZCB3YXlzIHRvIGxvb2sgYXQgdGhpcyBwcm9ibGVtLgotKi8KLWNsYXNzIFRpWG1sQXR0cmlidXRlIDogcHVibGljIFRpWG1sQmFzZQotewotCWZyaWVuZCBjbGFzcyBUaVhtbEF0dHJpYnV0ZVNldDsKLQotcHVibGljOgotCS8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgYXR0cmlidXRlLgotCVRpWG1sQXR0cmlidXRlKCkgOiBUaVhtbEJhc2UoKQotCXsKLQkJZG9jdW1lbnQgPSAwOwotCQlwcmV2ID0gbmV4dCA9IDA7Ci0JfQotCi0JI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkvLy8gc3RkOjpzdHJpbmcgY29uc3RydWN0b3IuCi0JVGlYbWxBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSApCi0JewotCQluYW1lID0gX25hbWU7Ci0JCXZhbHVlID0gX3ZhbHVlOwotCQlkb2N1bWVudCA9IDA7Ci0JCXByZXYgPSBuZXh0ID0gMDsKLQl9Ci0JI2VuZGlmCi0KLQkvLy8gQ29uc3RydWN0IGFuIGF0dHJpYnV0ZSB3aXRoIGEgbmFtZSBhbmQgdmFsdWUuCi0JVGlYbWxBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBfbmFtZSwgY29uc3QgY2hhciAqIF92YWx1ZSApCi0JewotCQluYW1lID0gX25hbWU7Ci0JCXZhbHVlID0gX3ZhbHVlOwotCQlkb2N1bWVudCA9IDA7Ci0JCXByZXYgPSBuZXh0ID0gMDsKLQl9Ci0KLQljb25zdCBjaGFyKgkJTmFtZSgpICBjb25zdAkJeyByZXR1cm4gbmFtZS5jX3N0ciAoKTsgfQkJLy8vPCBSZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBhdHRyaWJ1dGUuCi0JY29uc3QgY2hhcioJCVZhbHVlKCkgY29uc3QJCXsgcmV0dXJuIHZhbHVlLmNfc3RyICgpOyB9CQkvLy88IFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUuCi0JaW50CQkJCUludFZhbHVlKCkgY29uc3Q7CQkJCQkJCQkJLy8vPCBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLCBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlci4KLQlkb3VibGUJCQlEb3VibGVWYWx1ZSgpIGNvbnN0OwkJCQkJCQkJLy8vPCBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLCBjb252ZXJ0ZWQgdG8gYSBkb3VibGUuCi0KLQkvKiogUXVlcnlJbnRWYWx1ZSBleGFtaW5lcyB0aGUgdmFsdWUgc3RyaW5nLiBJdCBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUKLQkJSW50VmFsdWUoKSBtZXRob2Qgd2l0aCByaWNoZXIgZXJyb3IgY2hlY2tpbmcuCi0JCUlmIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLCBpdCBpcyBzdG9yZWQgaW4gJ3ZhbHVlJyBhbmQgCi0JCXRoZSBjYWxsIHJldHVybnMgVElYTUxfU1VDQ0VTUy4gSWYgaXQgaXMgbm90Ci0JCWFuIGludGVnZXIsIGl0IHJldHVybnMgVElYTUxfV1JPTkdfVFlQRS4KLQotCQlBIHNwZWNpYWxpemVkIGJ1dCB1c2VmdWwgY2FsbC4gTm90ZSB0aGF0IGZvciBzdWNjZXNzIGl0IHJldHVybnMgMCwKLQkJd2hpY2ggaXMgdGhlIG9wcG9zaXRlIG9mIGFsbW9zdCBhbGwgb3RoZXIgVGlueVhtbCBjYWxscy4KLQkqLwotCWludCBRdWVyeUludFZhbHVlKCBpbnQqIF92YWx1ZSApIGNvbnN0OwotCS8vLyBRdWVyeURvdWJsZVZhbHVlIGV4YW1pbmVzIHRoZSB2YWx1ZSBzdHJpbmcuIFNlZSBRdWVyeUludFZhbHVlKCkuCi0JaW50IFF1ZXJ5RG91YmxlVmFsdWUoIGRvdWJsZSogX3ZhbHVlICkgY29uc3Q7Ci0KLQl2b2lkIFNldE5hbWUoIGNvbnN0IGNoYXIqIF9uYW1lICkJeyBuYW1lID0gX25hbWU7IH0JCQkJLy8vPCBTZXQgdGhlIG5hbWUgb2YgdGhpcyBhdHRyaWJ1dGUuCi0Jdm9pZCBTZXRWYWx1ZSggY29uc3QgY2hhciogX3ZhbHVlICkJeyB2YWx1ZSA9IF92YWx1ZTsgfQkJCQkvLy88IFNldCB0aGUgdmFsdWUuCi0KLQl2b2lkIFNldEludFZhbHVlKCBpbnQgX3ZhbHVlICk7CQkJCQkJCQkJCS8vLzwgU2V0IHRoZSB2YWx1ZSBmcm9tIGFuIGludGVnZXIuCi0Jdm9pZCBTZXREb3VibGVWYWx1ZSggZG91YmxlIF92YWx1ZSApOwkJCQkJCQkJLy8vPCBTZXQgdGhlIHZhbHVlIGZyb20gYSBkb3VibGUuCi0KLSAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAotCS8vLyBTVEwgc3RkOjpzdHJpbmcgZm9ybS4KLQl2b2lkIFNldE5hbWUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfbmFtZSApCQotCXsJCi0JCVN0cmluZ1RvQnVmZmVyIGJ1ZiggX25hbWUgKTsKLQkJU2V0TmFtZSAoIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogImVycm9yIiApOwkKLQl9Ci0JLy8vIFNUTCBzdGQ6OnN0cmluZyBmb3JtLgkKLQl2b2lkIFNldFZhbHVlKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkJCi0JewkKLQkJU3RyaW5nVG9CdWZmZXIgYnVmKCBfdmFsdWUgKTsKLQkJU2V0VmFsdWUoIGJ1Zi5idWZmZXIgPyBidWYuYnVmZmVyIDogImVycm9yIiApOwkKLQl9Ci0JI2VuZGlmCi0KLQkvLy8gR2V0IHRoZSBuZXh0IHNpYmxpbmcgYXR0cmlidXRlIGluIHRoZSBET00uIFJldHVybnMgbnVsbCBhdCBlbmQuCi0JY29uc3QgVGlYbWxBdHRyaWJ1dGUqIE5leHQoKSBjb25zdDsKLQlUaVhtbEF0dHJpYnV0ZSogTmV4dCgpOwotCS8vLyBHZXQgdGhlIHByZXZpb3VzIHNpYmxpbmcgYXR0cmlidXRlIGluIHRoZSBET00uIFJldHVybnMgbnVsbCBhdCBiZWdpbm5pbmcuCi0JY29uc3QgVGlYbWxBdHRyaWJ1dGUqIFByZXZpb3VzKCkgY29uc3Q7Ci0JVGlYbWxBdHRyaWJ1dGUqIFByZXZpb3VzKCk7Ci0KLQlib29sIG9wZXJhdG9yPT0oIGNvbnN0IFRpWG1sQXR0cmlidXRlJiByaHMgKSBjb25zdCB7IHJldHVybiByaHMubmFtZSA9PSBuYW1lOyB9Ci0JYm9vbCBvcGVyYXRvcjwoIGNvbnN0IFRpWG1sQXR0cmlidXRlJiByaHMgKQkgY29uc3QgeyByZXR1cm4gbmFtZSA8IHJocy5uYW1lOyB9Ci0JYm9vbCBvcGVyYXRvcj4oIGNvbnN0IFRpWG1sQXR0cmlidXRlJiByaHMgKSAgY29uc3QgeyByZXR1cm4gbmFtZSA+IHJocy5uYW1lOyB9Ci0KLQkvKglBdHRyaWJ1dGUgcGFyc2luZyBzdGFydHM6IGZpcnN0IGxldHRlciBvZiB0aGUgbmFtZQotCQkJCQkJIHJldHVybnM6IHRoZSBuZXh0IGNoYXIgYWZ0ZXIgdGhlIHZhbHVlIGVuZCBxdW90ZQotCSovCi0JdmlydHVhbCBjb25zdCBjaGFyKiBQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApOwotCi0JLy8gUHJpbnRzIHRoaXMgQXR0cmlidXRlIHRvIGEgRklMRSBzdHJlYW0uCi0JdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7Ci0KLQl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0KCBUSVhNTF9PU1RSRUFNICogb3V0ICkgY29uc3Q7Ci0JLy8gW2ludGVybmFsIHVzZV0KLQkvLyBTZXQgdGhlIGRvY3VtZW50IHBvaW50ZXIgc28gdGhlIGF0dHJpYnV0ZSBjYW4gcmVwb3J0IGVycm9ycy4KLQl2b2lkIFNldERvY3VtZW50KCBUaVhtbERvY3VtZW50KiBkb2MgKQl7IGRvY3VtZW50ID0gZG9jOyB9Ci0KLXByaXZhdGU6Ci0JVGlYbWxBdHRyaWJ1dGUoIGNvbnN0IFRpWG1sQXR0cmlidXRlJiApOwkJCQkvLyBub3QgaW1wbGVtZW50ZWQuCi0Jdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sQXR0cmlidXRlJiBiYXNlICk7CS8vIG5vdCBhbGxvd2VkLgotCi0JVGlYbWxEb2N1bWVudCoJZG9jdW1lbnQ7CS8vIEEgcG9pbnRlciBiYWNrIHRvIGEgZG9jdW1lbnQsIGZvciBlcnJvciByZXBvcnRpbmcuCi0JVElYTUxfU1RSSU5HIG5hbWU7Ci0JVElYTUxfU1RSSU5HIHZhbHVlOwotCVRpWG1sQXR0cmlidXRlKglwcmV2OwotCVRpWG1sQXR0cmlidXRlKgluZXh0OwotfTsKLQotCi0vKglBIGNsYXNzIHVzZWQgdG8gbWFuYWdlIGEgZ3JvdXAgb2YgYXR0cmlidXRlcy4KLQlJdCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgYm90aCBieSB0aGUgRUxFTUVOVCBhbmQgdGhlIERFQ0xBUkFUSU9OLgotCQotCVRoZSBzZXQgY2FuIGJlIGNoYW5nZWQgdHJhbnNwYXJlbnQgdG8gdGhlIEVsZW1lbnQgYW5kIERlY2xhcmF0aW9uCi0JY2xhc3NlcyB0aGF0IHVzZSBpdCwgYnV0IE5PVCB0cmFuc3BhcmVudCB0byB0aGUgQXR0cmlidXRlCi0Jd2hpY2ggaGFzIHRvIGltcGxlbWVudCBhIG5leHQoKSBhbmQgcHJldmlvdXMoKSBtZXRob2QuIFdoaWNoIG1ha2VzCi0JaXQgYSBiaXQgcHJvYmxlbWF0aWMgYW5kIHByZXZlbnRzIHRoZSB1c2Ugb2YgU1RMLgotCi0JVGhpcyB2ZXJzaW9uIGlzIGltcGxlbWVudGVkIHdpdGggY2lyY3VsYXIgbGlzdHMgYmVjYXVzZToKLQkJLSBJIGxpa2UgY2lyY3VsYXIgbGlzdHMKLQkJLSBpdCBkZW1vbnN0cmF0ZXMgc29tZSBpbmRlcGVuZGVuY2UgZnJvbSB0aGUgKHR5cGljYWwpIGRvdWJseSBsaW5rZWQgbGlzdC4KLSovCi1jbGFzcyBUaVhtbEF0dHJpYnV0ZVNldAotewotcHVibGljOgotCVRpWG1sQXR0cmlidXRlU2V0KCk7Ci0JflRpWG1sQXR0cmlidXRlU2V0KCk7Ci0KLQl2b2lkIEFkZCggVGlYbWxBdHRyaWJ1dGUqIGF0dHJpYnV0ZSApOwotCXZvaWQgUmVtb3ZlKCBUaVhtbEF0dHJpYnV0ZSogYXR0cmlidXRlICk7Ci0KLQljb25zdCBUaVhtbEF0dHJpYnV0ZSogRmlyc3QoKQljb25zdAl7IHJldHVybiAoIHNlbnRpbmVsLm5leHQgPT0gJnNlbnRpbmVsICkgPyAwIDogc2VudGluZWwubmV4dDsgfQotCVRpWG1sQXR0cmlidXRlKiBGaXJzdCgpCQkJCQl7IHJldHVybiAoIHNlbnRpbmVsLm5leHQgPT0gJnNlbnRpbmVsICkgPyAwIDogc2VudGluZWwubmV4dDsgfQotCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBMYXN0KCkgY29uc3QJCXsgcmV0dXJuICggc2VudGluZWwucHJldiA9PSAmc2VudGluZWwgKSA/IDAgOiBzZW50aW5lbC5wcmV2OyB9Ci0JVGlYbWxBdHRyaWJ1dGUqIExhc3QoKQkJCQkJeyByZXR1cm4gKCBzZW50aW5lbC5wcmV2ID09ICZzZW50aW5lbCApID8gMCA6IHNlbnRpbmVsLnByZXY7IH0KLQotCWNvbnN0IFRpWG1sQXR0cmlidXRlKglGaW5kKCBjb25zdCBjaGFyICogbmFtZSApIGNvbnN0OwotCVRpWG1sQXR0cmlidXRlKglGaW5kKCBjb25zdCBjaGFyICogbmFtZSApOwotCi1wcml2YXRlOgotCS8vKk1FOglCZWNhdXNlIG9mIGhpZGRlbi9kaXNhYmxlZCBjb3B5LWNvbnN0cnVrdG9yIGluIFRpWG1sQXR0cmlidXRlIChzZW50aW5lbC1lbGVtZW50KSwKLQkvLypNRToJdGhpcyBjbGFzcyBtdXN0IGJlIGFsc28gdXNlIGEgaGlkZGVuL2Rpc2FibGVkIGNvcHktY29uc3RydWN0b3IgISEhCi0JVGlYbWxBdHRyaWJ1dGVTZXQoIGNvbnN0IFRpWG1sQXR0cmlidXRlU2V0JiApOwkvLyBub3QgYWxsb3dlZAotCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEF0dHJpYnV0ZVNldCYgKTsJLy8gbm90IGFsbG93ZWQgKGFzIFRpWG1sQXR0cmlidXRlKQotCi0JVGlYbWxBdHRyaWJ1dGUgc2VudGluZWw7Ci19OwotCi0KLS8qKiBUaGUgZWxlbWVudCBpcyBhIGNvbnRhaW5lciBjbGFzcy4gSXQgaGFzIGEgdmFsdWUsIHRoZSBlbGVtZW50IG5hbWUsCi0JYW5kIGNhbiBjb250YWluIG90aGVyIGVsZW1lbnRzLCB0ZXh0LCBjb21tZW50cywgYW5kIHVua25vd25zLgotCUVsZW1lbnRzIGFsc28gY29udGFpbiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGF0dHJpYnV0ZXMuCi0qLwotY2xhc3MgVGlYbWxFbGVtZW50IDogcHVibGljIFRpWG1sTm9kZQotewotcHVibGljOgotCS8vLyBDb25zdHJ1Y3QgYW4gZWxlbWVudC4KLQlUaVhtbEVsZW1lbnQgKGNvbnN0IGNoYXIgKiBpbl92YWx1ZSk7Ci0KLQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCS8vLyBzdGQ6OnN0cmluZyBjb25zdHJ1Y3Rvci4KLQlUaVhtbEVsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUgKTsKLQkjZW5kaWYKLQotCVRpWG1sRWxlbWVudCggY29uc3QgVGlYbWxFbGVtZW50JiApOwotCi0Jdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sRWxlbWVudCYgYmFzZSApOwotCi0JdmlydHVhbCB+VGlYbWxFbGVtZW50KCk7Ci0KLQkvKiogR2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUsIEF0dHJpYnV0ZSgpIHJldHVybnMgdGhlIHZhbHVlCi0JCWZvciB0aGUgYXR0cmlidXRlIG9mIHRoYXQgbmFtZSwgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4KLQkqLwotCWNvbnN0IGNoYXIqIEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSApIGNvbnN0OwotCi0JLyoqIEdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCBBdHRyaWJ1dGUoKSByZXR1cm5zIHRoZSB2YWx1ZQotCQlmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuCi0JCUlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGludGVnZXIsCi0JCXRoZSBpbnRlZ2VyIHZhbHVlIHdpbGwgYmUgcHV0IGluIHRoZSByZXR1cm4gJ2knLCBpZiAnaScKLQkJaXMgbm9uLW51bGwuCi0JKi8KLQljb25zdCBjaGFyKiBBdHRyaWJ1dGUoIGNvbnN0IGNoYXIqIG5hbWUsIGludCogaSApIGNvbnN0OwotCi0JLyoqIEdpdmVuIGFuIGF0dHJpYnV0ZSBuYW1lLCBBdHRyaWJ1dGUoKSByZXR1cm5zIHRoZSB2YWx1ZQotCQlmb3IgdGhlIGF0dHJpYnV0ZSBvZiB0aGF0IG5hbWUsIG9yIG51bGwgaWYgbm9uZSBleGlzdHMuCi0JCUlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFuZCBjYW4gYmUgY29udmVydGVkIHRvIGFuIGRvdWJsZSwKLQkJdGhlIGRvdWJsZSB2YWx1ZSB3aWxsIGJlIHB1dCBpbiB0aGUgcmV0dXJuICdkJywgaWYgJ2QnCi0JCWlzIG5vbi1udWxsLgotCSovCi0JY29uc3QgY2hhciogQXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUqIGQgKSBjb25zdDsKLQotCS8qKiBRdWVyeUludEF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gaXQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlCi0JCUF0dHJpYnV0ZSgpIG1ldGhvZCB3aXRoIHJpY2hlciBlcnJvciBjaGVja2luZy4KLQkJSWYgdGhlIGF0dHJpYnV0ZSBpcyBhbiBpbnRlZ2VyLCBpdCBpcyBzdG9yZWQgaW4gJ3ZhbHVlJyBhbmQgCi0JCXRoZSBjYWxsIHJldHVybnMgVElYTUxfU1VDQ0VTUy4gSWYgaXQgaXMgbm90Ci0JCWFuIGludGVnZXIsIGl0IHJldHVybnMgVElYTUxfV1JPTkdfVFlQRS4gSWYgdGhlIGF0dHJpYnV0ZQotCQlkb2VzIG5vdCBleGlzdCwgdGhlbiBUSVhNTF9OT19BVFRSSUJVVEUgaXMgcmV0dXJuZWQuCi0JKi8JCi0JaW50IFF1ZXJ5SW50QXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBpbnQqIF92YWx1ZSApIGNvbnN0OwotCS8vLyBRdWVyeURvdWJsZUF0dHJpYnV0ZSBleGFtaW5lcyB0aGUgYXR0cmlidXRlIC0gc2VlIFF1ZXJ5SW50QXR0cmlidXRlKCkuCi0JaW50IFF1ZXJ5RG91YmxlQXR0cmlidXRlKCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUqIF92YWx1ZSApIGNvbnN0OwotCS8vLyBRdWVyeUZsb2F0QXR0cmlidXRlIGV4YW1pbmVzIHRoZSBhdHRyaWJ1dGUgLSBzZWUgUXVlcnlJbnRBdHRyaWJ1dGUoKS4KLQlpbnQgUXVlcnlGbG9hdEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgZmxvYXQqIF92YWx1ZSApIGNvbnN0IHsKLQkJZG91YmxlIGQ7Ci0JCWludCByZXN1bHQgPSBRdWVyeURvdWJsZUF0dHJpYnV0ZSggbmFtZSwgJmQgKTsKLQkJaWYgKCByZXN1bHQgPT0gVElYTUxfU1VDQ0VTUyApIHsKLQkJCSpfdmFsdWUgPSAoZmxvYXQpZDsKLQkJfQotCQlyZXR1cm4gcmVzdWx0OwotCX0KLQotCS8qKiBTZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuIFRoZSBhdHRyaWJ1dGUKLQkJd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBjaGFuZ2VkIGlmIGl0IGRvZXMuCi0JKi8KLQl2b2lkIFNldEF0dHJpYnV0ZSggY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciAqIF92YWx1ZSApOwotCi0gICAgI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQljb25zdCBjaGFyKiBBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lICkgY29uc3QJCQkJeyByZXR1cm4gQXR0cmlidXRlKCBuYW1lLmNfc3RyKCkgKTsgfQotCWNvbnN0IGNoYXIqIEF0dHJpYnV0ZSggY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGludCogaSApIGNvbnN0CQl7IHJldHVybiBBdHRyaWJ1dGUoIG5hbWUuY19zdHIoKSwgaSApOyB9Ci0JY29uc3QgY2hhciogQXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwgZG91YmxlKiBkICkgY29uc3QJeyByZXR1cm4gQXR0cmlidXRlKCBuYW1lLmNfc3RyKCksIGQgKTsgfQotCWludCBRdWVyeUludEF0dHJpYnV0ZSggY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGludCogX3ZhbHVlICkgY29uc3QJeyByZXR1cm4gUXVlcnlJbnRBdHRyaWJ1dGUoIG5hbWUuY19zdHIoKSwgX3ZhbHVlICk7IH0KLQlpbnQgUXVlcnlEb3VibGVBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBkb3VibGUqIF92YWx1ZSApIGNvbnN0IHsgcmV0dXJuIFF1ZXJ5RG91YmxlQXR0cmlidXRlKCBuYW1lLmNfc3RyKCksIF92YWx1ZSApOyB9Ci0KLQkvLy8gU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCi0Jdm9pZCBTZXRBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkJCi0JewkKLQkJU3RyaW5nVG9CdWZmZXIgbiggbmFtZSApOwotCQlTdHJpbmdUb0J1ZmZlciB2KCBfdmFsdWUgKTsKLQkJaWYgKCBuLmJ1ZmZlciAmJiB2LmJ1ZmZlciApCi0JCQlTZXRBdHRyaWJ1dGUgKG4uYnVmZmVyLCB2LmJ1ZmZlciApOwkKLQl9CQotCS8vLzwgU1RMIHN0ZDo6c3RyaW5nIGZvcm0uCi0Jdm9pZCBTZXRBdHRyaWJ1dGUoIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lLCBpbnQgX3ZhbHVlICkJCi0JewkKLQkJU3RyaW5nVG9CdWZmZXIgbiggbmFtZSApOwotCQlpZiAoIG4uYnVmZmVyICkKLQkJCVNldEF0dHJpYnV0ZSAobi5idWZmZXIsIF92YWx1ZSk7CQotCX0JCi0JI2VuZGlmCi0KLQkvKiogU2V0cyBhbiBhdHRyaWJ1dGUgb2YgbmFtZSB0byBhIGdpdmVuIHZhbHVlLiBUaGUgYXR0cmlidXRlCi0JCXdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgY2hhbmdlZCBpZiBpdCBkb2VzLgotCSovCi0Jdm9pZCBTZXRBdHRyaWJ1dGUoIGNvbnN0IGNoYXIgKiBuYW1lLCBpbnQgdmFsdWUgKTsKLQotCS8qKiBTZXRzIGFuIGF0dHJpYnV0ZSBvZiBuYW1lIHRvIGEgZ2l2ZW4gdmFsdWUuIFRoZSBhdHRyaWJ1dGUKLQkJd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBjaGFuZ2VkIGlmIGl0IGRvZXMuCi0JKi8KLQl2b2lkIFNldERvdWJsZUF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUsIGRvdWJsZSB2YWx1ZSApOwotCi0JLyoqIERlbGV0ZXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuCi0JKi8KLQl2b2lkIFJlbW92ZUF0dHJpYnV0ZSggY29uc3QgY2hhciAqIG5hbWUgKTsKLSAgICAjaWZkZWYgVElYTUxfVVNFX1NUTAotCXZvaWQgUmVtb3ZlQXR0cmlidXRlKCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSApCXsJUmVtb3ZlQXR0cmlidXRlIChuYW1lLmNfc3RyICgpKTsJfQkvLy88IFNUTCBzdGQ6OnN0cmluZyBmb3JtLgotCSNlbmRpZgotCi0JY29uc3QgVGlYbWxBdHRyaWJ1dGUqIEZpcnN0QXR0cmlidXRlKCkgY29uc3QJeyByZXR1cm4gYXR0cmlidXRlU2V0LkZpcnN0KCk7IH0JCS8vLzwgQWNjZXNzIHRoZSBmaXJzdCBhdHRyaWJ1dGUgaW4gdGhpcyBlbGVtZW50LgotCVRpWG1sQXR0cmlidXRlKiBGaXJzdEF0dHJpYnV0ZSgpIAkJCQl7IHJldHVybiBhdHRyaWJ1dGVTZXQuRmlyc3QoKTsgfQotCWNvbnN0IFRpWG1sQXR0cmlidXRlKiBMYXN0QXR0cmlidXRlKCkJY29uc3QgCXsgcmV0dXJuIGF0dHJpYnV0ZVNldC5MYXN0KCk7IH0JCS8vLzwgQWNjZXNzIHRoZSBsYXN0IGF0dHJpYnV0ZSBpbiB0aGlzIGVsZW1lbnQuCi0JVGlYbWxBdHRyaWJ1dGUqIExhc3RBdHRyaWJ1dGUoKQkJCQkJeyByZXR1cm4gYXR0cmlidXRlU2V0Lkxhc3QoKTsgfQotCi0JLyoqIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBlYXN5IGFjY2VzcyB0byB0aGUgdGV4dCBpbnNpZGUgYW4gZWxlbWVudC4gQWx0aG91Z2ggZWFzeQotCQlhbmQgY29uY2lzZSwgR2V0VGV4dCgpIGlzIGxpbWl0ZWQgY29tcGFyZWQgdG8gZ2V0dGluZyB0aGUgVGlYbWxUZXh0IGNoaWxkCi0JCWFuZCBhY2Nlc3NpbmcgaXQgZGlyZWN0bHkuCi0JCi0JCUlmIHRoZSBmaXJzdCBjaGlsZCBvZiAndGhpcycgaXMgYSBUaVhtbFRleHQsIHRoZSBHZXRUZXh0KCkKLQkJcmV0dXJzIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIG9mIHRoZSBUZXh0IG5vZGUsIGVsc2UgbnVsbCBpcyByZXR1cm5lZC4KLQotCQlUaGlzIGlzIGEgY29udmVuaWVudCBtZXRob2QgZm9yIGdldHRpbmcgdGhlIHRleHQgb2Ygc2ltcGxlIGNvbnRhaW5lZCB0ZXh0OgotCQlAdmVyYmF0aW0KLQkJPGZvbz5UaGlzIGlzIHRleHQ8L2Zvbz4KLQkJY29uc3QgY2hhciogc3RyID0gZm9vRWxlbWVudC0+R2V0VGV4dCgpOwotCQlAZW5kdmVyYmF0aW0KLQotCQknc3RyJyB3aWxsIGJlIGEgcG9pbnRlciB0byAiVGhpcyBpcyB0ZXh0Ii4gCi0JCQotCQlOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4gYmUgbWlzbGVhZGluZy4gSWYgdGhlIGVsZW1lbnQgZm9vIHdhcyBjcmVhdGVkIGZyb20KLQkJdGhpcyBYTUw6Ci0JCUB2ZXJiYXRpbQotCQk8Zm9vPjxiPlRoaXMgaXMgdGV4dDwvYj48L2Zvbz4gCi0JCUBlbmR2ZXJiYXRpbQotCi0JCXRoZW4gdGhlIHZhbHVlIG9mIHN0ciB3b3VsZCBiZSBudWxsLiBUaGUgZmlyc3QgY2hpbGQgbm9kZSBpc24ndCBhIHRleHQgbm9kZSwgaXQgaXMKLQkJYW5vdGhlciBlbGVtZW50LiBGcm9tIHRoaXMgWE1MOgotCQlAdmVyYmF0aW0KLQkJPGZvbz5UaGlzIGlzIDxiPnRleHQ8L2I+PC9mb28+IAotCQlAZW5kdmVyYmF0aW0KLQkJR2V0VGV4dCgpIHdpbGwgcmV0dXJuICJUaGlzIGlzICIuCi0KLQkJV0FSTklORzogR2V0VGV4dCgpIGFjY2Vzc2VzIGEgY2hpbGQgbm9kZSAtIGRvbid0IGJlY29tZSBjb25mdXNlZCB3aXRoIHRoZSAKLQkJCQkgc2ltaWxhcmx5IG5hbWVkIFRpWG1sSGFuZGxlOjpUZXh0KCkgYW5kIFRpWG1sTm9kZTo6VG9UZXh0KCkgd2hpY2ggYXJlIAotCQkJCSBzYWZlIHR5cGUgY2FzdHMgb24gdGhlIHJlZmVyZW5jZWQgbm9kZS4KLQkqLwotCWNvbnN0IGNoYXIqIEdldFRleHQoKSBjb25zdDsKLQotCS8vLyBDcmVhdGVzIGEgbmV3IEVsZW1lbnQgYW5kIHJldHVybnMgaXQgLSB0aGUgcmV0dXJuZWQgZWxlbWVudCBpcyBhIGNvcHkuCi0JdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7Ci0JLy8gUHJpbnQgdGhlIEVsZW1lbnQgdG8gYSBGSUxFIHN0cmVhbS4KLQl2aXJ0dWFsIHZvaWQgUHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdDsKLQotCS8qCUF0dHJpYnR1ZSBwYXJzaW5nIHN0YXJ0czogbmV4dCBjaGFyIHBhc3QgJzwnCi0JCQkJCQkgcmV0dXJuczogbmV4dCBjaGFyIHBhc3QgJz4nCi0JKi8KLQl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci0KLXByb3RlY3RlZDoKLQotCXZvaWQgQ29weVRvKCBUaVhtbEVsZW1lbnQqIHRhcmdldCApIGNvbnN0OwotCXZvaWQgQ2xlYXJUaGlzKCk7CS8vIGxpa2UgY2xlYXIsIGJ1dCBpbml0aWFsaXplcyAndGhpcycgb2JqZWN0IGFzIHdlbGwKLQotCS8vIFVzZWQgdG8gYmUgcHVibGljIFtpbnRlcm5hbCB1c2VdCi0JI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOwotCSNlbmRpZgotCXZpcnR1YWwgdm9pZCBTdHJlYW1PdXQoIFRJWE1MX09TVFJFQU0gKiBvdXQgKSBjb25zdDsKLQotCS8qCVtpbnRlcm5hbCB1c2VdCi0JCVJlYWRzIHRoZSAidmFsdWUiIG9mIHRoZSBlbGVtZW50IC0tIGFub3RoZXIgZWxlbWVudCwgb3IgdGV4dC4KLQkJVGhpcyBzaG91bGQgdGVybWluYXRlIHdpdGggdGhlIGN1cnJlbnQgZW5kIHRhZy4KLQkqLwotCWNvbnN0IGNoYXIqIFJlYWRWYWx1ZSggY29uc3QgY2hhciogaW4sIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci0KLXByaXZhdGU6Ci0KLQlUaVhtbEF0dHJpYnV0ZVNldCBhdHRyaWJ1dGVTZXQ7Ci19OwotCi0KLS8qKglBbiBYTUwgY29tbWVudC4KLSovCi1jbGFzcyBUaVhtbENvbW1lbnQgOiBwdWJsaWMgVGlYbWxOb2RlCi17Ci1wdWJsaWM6Ci0JLy8vIENvbnN0cnVjdHMgYW4gZW1wdHkgY29tbWVudC4KLQlUaVhtbENvbW1lbnQoKSA6IFRpWG1sTm9kZSggVGlYbWxOb2RlOjpDT01NRU5UICkge30KLQlUaVhtbENvbW1lbnQoIGNvbnN0IFRpWG1sQ29tbWVudCYgKTsKLQl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxDb21tZW50JiBiYXNlICk7Ci0KLQl2aXJ0dWFsIH5UaVhtbENvbW1lbnQoKQl7fQotCi0JLy8vIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgQ29tbWVudC4KLQl2aXJ0dWFsIFRpWG1sTm9kZSogQ2xvbmUoKSBjb25zdDsKLQkvLy8gV3JpdGUgdGhpcyBDb21tZW50IHRvIGEgRklMRSBzdHJlYW0uCi0JdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7Ci0KLQkvKglBdHRyaWJ0dWUgcGFyc2luZyBzdGFydHM6IGF0IHRoZSAhIG9mIHRoZSAhLS0KLQkJCQkJCSByZXR1cm5zOiBuZXh0IGNoYXIgcGFzdCAnPicKLQkqLwotCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLQotcHJvdGVjdGVkOgotCXZvaWQgQ29weVRvKCBUaVhtbENvbW1lbnQqIHRhcmdldCApIGNvbnN0OwotCi0JLy8gdXNlZCB0byBiZSBwdWJsaWMKLQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCSAgICB2aXJ0dWFsIHZvaWQgU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Ci0JI2VuZGlmCi0JdmlydHVhbCB2b2lkIFN0cmVhbU91dCggVElYTUxfT1NUUkVBTSAqIG91dCApIGNvbnN0OwotCi1wcml2YXRlOgotCi19OwotCi0KLS8qKiBYTUwgdGV4dC4gQSB0ZXh0IG5vZGUgY2FuIGhhdmUgMiB3YXlzIHRvIG91dHB1dCB0aGUgbmV4dC4gIm5vcm1hbCIgb3V0cHV0IAotCWFuZCBDREFUQS4gSXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBtb2RlIGl0IHdhcyBwYXJzZWQgZnJvbSB0aGUgWE1MIGZpbGUgYW5kCi0JeW91IGdlbmVyYWxseSB3YW50IHRvIGxlYXZlIGl0IGFsb25lLCBidXQgeW91IGNhbiBjaGFuZ2UgdGhlIG91dHB1dCBtb2RlIHdpdGggCi0JU2V0Q0RBVEEoKSBhbmQgcXVlcnkgaXQgd2l0aCBDREFUQSgpLgotKi8KLWNsYXNzIFRpWG1sVGV4dCA6IHB1YmxpYyBUaVhtbE5vZGUKLXsKLQlmcmllbmQgY2xhc3MgVGlYbWxFbGVtZW50OwotcHVibGljOgotCS8qKiBDb25zdHJ1Y3RvciBmb3IgdGV4dCBlbGVtZW50LiBCeSBkZWZhdWx0LCBpdCBpcyB0cmVhdGVkIGFzIAotCQlub3JtYWwsIGVuY29kZWQgdGV4dC4gSWYgeW91IHdhbnQgaXQgYmUgb3V0cHV0IGFzIGEgQ0RBVEEgdGV4dAotCQllbGVtZW50LCBzZXQgdGhlIHBhcmFtZXRlciBfY2RhdGEgdG8gJ3RydWUnCi0JKi8KLQlUaVhtbFRleHQgKGNvbnN0IGNoYXIgKiBpbml0VmFsdWUgKSA6IFRpWG1sTm9kZSAoVGlYbWxOb2RlOjpURVhUKQotCXsKLQkJU2V0VmFsdWUoIGluaXRWYWx1ZSApOwotCQljZGF0YSA9IGZhbHNlOwotCX0KLQl2aXJ0dWFsIH5UaVhtbFRleHQoKSB7fQotCi0JI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkvLy8gQ29uc3RydWN0b3IuCi0JVGlYbWxUZXh0KCBjb25zdCBzdGQ6OnN0cmluZyYgaW5pdFZhbHVlICkgOiBUaVhtbE5vZGUgKFRpWG1sTm9kZTo6VEVYVCkKLQl7Ci0JCVNldFZhbHVlKCBpbml0VmFsdWUgKTsKLQkJY2RhdGEgPSBmYWxzZTsKLQl9Ci0JI2VuZGlmCi0KLQlUaVhtbFRleHQoIGNvbnN0IFRpWG1sVGV4dCYgY29weSApIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OlRFWFQgKQl7IGNvcHkuQ29weVRvKCB0aGlzICk7IH0KLQl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxUZXh0JiBiYXNlICkJCQkJCQkJIAl7IGJhc2UuQ29weVRvKCB0aGlzICk7IH0KLQotCS8vLyBXcml0ZSB0aGlzIHRleHQgb2JqZWN0IHRvIGEgRklMRSBzdHJlYW0uCi0JdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7Ci0KLQkvLy8gUXVlcmllcyB3aGV0aGVyIHRoaXMgcmVwcmVzZW50cyB0ZXh0IHVzaW5nIGEgQ0RBVEEgc2VjdGlvbi4KLQlib29sIENEQVRBKCkJCQkJCXsgcmV0dXJuIGNkYXRhOyB9Ci0JLy8vIFR1cm5zIG9uIG9yIG9mZiBhIENEQVRBIHJlcHJlc2VudGF0aW9uIG9mIHRleHQuCi0Jdm9pZCBTZXRDREFUQSggYm9vbCBfY2RhdGEgKQl7IGNkYXRhID0gX2NkYXRhOyB9Ci0KLQl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci0KLXByb3RlY3RlZCA6Ci0JLy8vICBbaW50ZXJuYWwgdXNlXSBDcmVhdGVzIGEgbmV3IEVsZW1lbnQgYW5kIHJldHVybnMgaXQuCi0JdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7Ci0Jdm9pZCBDb3B5VG8oIFRpWG1sVGV4dCogdGFyZ2V0ICkgY29uc3Q7Ci0KLQl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCApIGNvbnN0OwotCWJvb2wgQmxhbmsoKSBjb25zdDsJLy8gcmV0dXJucyB0cnVlIGlmIGFsbCB3aGl0ZSBzcGFjZSBhbmQgbmV3IGxpbmVzCi0JLy8gW2ludGVybmFsIHVzZV0KLQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCSAgICB2aXJ0dWFsIHZvaWQgU3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICk7Ci0JI2VuZGlmCi0KLXByaXZhdGU6Ci0JYm9vbCBjZGF0YTsJCQkvLyB0cnVlIGlmIHRoaXMgc2hvdWxkIGJlIGlucHV0IGFuZCBvdXRwdXQgYXMgYSBDREFUQSBzdHlsZSB0ZXh0IGVsZW1lbnQKLX07Ci0KLQotLyoqIEluIGNvcnJlY3QgWE1MIHRoZSBkZWNsYXJhdGlvbiBpcyB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGZpbGUuCi0JQHZlcmJhdGltCi0JCTw/eG1sIHZlcnNpb249IjEuMCIgc3RhbmRhbG9uZT0ieWVzIj8+Ci0JQGVuZHZlcmJhdGltCi0KLQlUaW55WG1sIHdpbGwgaGFwcGlseSByZWFkIG9yIHdyaXRlIGZpbGVzIHdpdGhvdXQgYSBkZWNsYXJhdGlvbiwKLQlob3dldmVyLiBUaGVyZSBhcmUgMyBwb3NzaWJsZSBhdHRyaWJ1dGVzIHRvIHRoZSBkZWNsYXJhdGlvbjoKLQl2ZXJzaW9uLCBlbmNvZGluZywgYW5kIHN0YW5kYWxvbmUuCi0KLQlOb3RlOiBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIGNvZGUsIHRoZSBhdHRyaWJ1dGVzIGFyZQotCWhhbmRsZWQgYXMgc3BlY2lhbCBjYXNlcywgbm90IGdlbmVyaWMgYXR0cmlidXRlcywgc2ltcGx5Ci0JYmVjYXVzZSB0aGVyZSBjYW4gb25seSBiZSBhdCBtb3N0IDMgYW5kIHRoZXkgYXJlIGFsd2F5cyB0aGUgc2FtZS4KLSovCi1jbGFzcyBUaVhtbERlY2xhcmF0aW9uIDogcHVibGljIFRpWG1sTm9kZQotewotcHVibGljOgotCS8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgZGVjbGFyYXRpb24uCi0JVGlYbWxEZWNsYXJhdGlvbigpICAgOiBUaVhtbE5vZGUoIFRpWG1sTm9kZTo6REVDTEFSQVRJT04gKSB7fQotCi0jaWZkZWYgVElYTUxfVVNFX1NUTAotCS8vLyBDb25zdHJ1Y3Rvci4KLQlUaVhtbERlY2xhcmF0aW9uKAljb25zdCBzdGQ6OnN0cmluZyYgX3ZlcnNpb24sCi0JCQkJCQljb25zdCBzdGQ6OnN0cmluZyYgX2VuY29kaW5nLAotCQkJCQkJY29uc3Qgc3RkOjpzdHJpbmcmIF9zdGFuZGFsb25lICk7Ci0jZW5kaWYKLQotCS8vLyBDb25zdHJ1Y3QuCi0JVGlYbWxEZWNsYXJhdGlvbigJY29uc3QgY2hhciogX3ZlcnNpb24sCi0JCQkJCQljb25zdCBjaGFyKiBfZW5jb2RpbmcsCi0JCQkJCQljb25zdCBjaGFyKiBfc3RhbmRhbG9uZSApOwotCi0JVGlYbWxEZWNsYXJhdGlvbiggY29uc3QgVGlYbWxEZWNsYXJhdGlvbiYgY29weSApOwotCXZvaWQgb3BlcmF0b3I9KCBjb25zdCBUaVhtbERlY2xhcmF0aW9uJiBjb3B5ICk7Ci0KLQl2aXJ0dWFsIH5UaVhtbERlY2xhcmF0aW9uKCkJe30KLQotCS8vLyBWZXJzaW9uLiBXaWxsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgaWYgbm9uZSB3YXMgZm91bmQuCi0JY29uc3QgY2hhciAqVmVyc2lvbigpIGNvbnN0CQkJeyByZXR1cm4gdmVyc2lvbi5jX3N0ciAoKTsgfQotCS8vLyBFbmNvZGluZy4gV2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgd2FzIGZvdW5kLgotCWNvbnN0IGNoYXIgKkVuY29kaW5nKCkgY29uc3QJCXsgcmV0dXJuIGVuY29kaW5nLmNfc3RyICgpOyB9Ci0JLy8vIElzIHRoaXMgYSBzdGFuZGFsb25lIGRvY3VtZW50PwotCWNvbnN0IGNoYXIgKlN0YW5kYWxvbmUoKSBjb25zdAkJeyByZXR1cm4gc3RhbmRhbG9uZS5jX3N0ciAoKTsgfQotCi0JLy8vIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgRGVjbGFyYXRpb24gYW5kIHJldHVybnMgaXQuCi0JdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7Ci0JLy8vIFByaW50IHRoaXMgZGVjbGFyYXRpb24gdG8gYSBGSUxFIHN0cmVhbS4KLQl2aXJ0dWFsIHZvaWQgUHJpbnQoIEZJTEUqIGNmaWxlLCBpbnQgZGVwdGggKSBjb25zdDsKLQotCXZpcnR1YWwgY29uc3QgY2hhciogUGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLQotcHJvdGVjdGVkOgotCXZvaWQgQ29weVRvKCBUaVhtbERlY2xhcmF0aW9uKiB0YXJnZXQgKSBjb25zdDsKLQkvLyB1c2VkIHRvIGJlIHB1YmxpYwotCSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JICAgIHZpcnR1YWwgdm9pZCBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKLQkjZW5kaWYKLQl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0KLQlUSVhNTF9TVFJJTkcgdmVyc2lvbjsKLQlUSVhNTF9TVFJJTkcgZW5jb2Rpbmc7Ci0JVElYTUxfU1RSSU5HIHN0YW5kYWxvbmU7Ci19OwotCi0KLS8qKiBBbnkgdGFnIHRoYXQgdGlueVhtbCBkb2Vzbid0IHJlY29nbml6ZSBpcyBzYXZlZCBhcyBhbgotCXVua25vd24uIEl0IGlzIGEgdGFnIG9mIHRleHQsIGJ1dCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLgotCUl0IHdpbGwgYmUgd3JpdHRlbiBiYWNrIHRvIHRoZSBYTUwsIHVuY2hhbmdlZCwgd2hlbiB0aGUgZmlsZQotCWlzIHNhdmVkLgotCi0JRFREIHRhZ3MgZ2V0IHRocm93biBpbnRvIFRpWG1sVW5rbm93bnMuCi0qLwotY2xhc3MgVGlYbWxVbmtub3duIDogcHVibGljIFRpWG1sTm9kZQotewotcHVibGljOgotCVRpWG1sVW5rbm93bigpIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OlVOS05PV04gKQl7fQotCXZpcnR1YWwgflRpWG1sVW5rbm93bigpIHt9Ci0KLQlUaVhtbFVua25vd24oIGNvbnN0IFRpWG1sVW5rbm93biYgY29weSApIDogVGlYbWxOb2RlKCBUaVhtbE5vZGU6OlVOS05PV04gKQkJeyBjb3B5LkNvcHlUbyggdGhpcyApOyB9Ci0Jdm9pZCBvcGVyYXRvcj0oIGNvbnN0IFRpWG1sVW5rbm93biYgY29weSApCQkJCQkJCQkJCXsgY29weS5Db3B5VG8oIHRoaXMgKTsgfQotCi0JLy8vIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgVW5rbm93biBhbmQgcmV0dXJucyBpdC4KLQl2aXJ0dWFsIFRpWG1sTm9kZSogQ2xvbmUoKSBjb25zdDsKLQkvLy8gUHJpbnQgdGhpcyBVbmtub3duIHRvIGEgRklMRSBzdHJlYW0uCi0JdmlydHVhbCB2b2lkIFByaW50KCBGSUxFKiBjZmlsZSwgaW50IGRlcHRoICkgY29uc3Q7Ci0KLQl2aXJ0dWFsIGNvbnN0IGNoYXIqIFBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci0KLXByb3RlY3RlZDoKLQl2b2lkIENvcHlUbyggVGlYbWxVbmtub3duKiB0YXJnZXQgKSBjb25zdDsKLQotCSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JICAgIHZpcnR1YWwgdm9pZCBTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKTsKLQkjZW5kaWYKLQl2aXJ0dWFsIHZvaWQgU3RyZWFtT3V0ICggVElYTUxfT1NUUkVBTSAqIG91dCApIGNvbnN0OwotCi1wcml2YXRlOgotCi19OwotCi0KLS8qKiBBbHdheXMgdGhlIHRvcCBsZXZlbCBub2RlLiBBIGRvY3VtZW50IGJpbmRzIHRvZ2V0aGVyIGFsbCB0aGUKLQlYTUwgcGllY2VzLiBJdCBjYW4gYmUgc2F2ZWQsIGxvYWRlZCwgYW5kIHByaW50ZWQgdG8gdGhlIHNjcmVlbi4KLQlUaGUgJ3ZhbHVlJyBvZiBhIGRvY3VtZW50IG5vZGUgaXMgdGhlIHhtbCBmaWxlIG5hbWUuCi0qLwotY2xhc3MgVGlYbWxEb2N1bWVudCA6IHB1YmxpYyBUaVhtbE5vZGUKLXsKLXB1YmxpYzoKLQkvLy8gQ3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50LCB0aGF0IGhhcyBubyBuYW1lLgotCVRpWG1sRG9jdW1lbnQoKTsKLQkvLy8gQ3JlYXRlIGEgZG9jdW1lbnQgd2l0aCBhIG5hbWUuIFRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudCBpcyBhbHNvIHRoZSBmaWxlbmFtZSBvZiB0aGUgeG1sLgotCVRpWG1sRG9jdW1lbnQoIGNvbnN0IGNoYXIgKiBkb2N1bWVudE5hbWUgKTsKLQotCSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JLy8vIENvbnN0cnVjdG9yLgotCVRpWG1sRG9jdW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBkb2N1bWVudE5hbWUgKTsKLQkjZW5kaWYKLQotCVRpWG1sRG9jdW1lbnQoIGNvbnN0IFRpWG1sRG9jdW1lbnQmIGNvcHkgKTsKLQl2b2lkIG9wZXJhdG9yPSggY29uc3QgVGlYbWxEb2N1bWVudCYgY29weSApOwotCi0JdmlydHVhbCB+VGlYbWxEb2N1bWVudCgpIHt9Ci0KLQkvKiogTG9hZCBhIGZpbGUgdXNpbmcgdGhlIGN1cnJlbnQgZG9jdW1lbnQgdmFsdWUuCi0JCVJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLiBXaWxsIGRlbGV0ZSBhbnkgZXhpc3RpbmcKLQkJZG9jdW1lbnQgZGF0YSBiZWZvcmUgbG9hZGluZy4KLQkqLwotCWJvb2wgTG9hZEZpbGUoIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICk7Ci0JLy8vIFNhdmUgYSBmaWxlIHVzaW5nIHRoZSBjdXJyZW50IGRvY3VtZW50IHZhbHVlLiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KLQlib29sIFNhdmVGaWxlKCkgY29uc3Q7Ci0JLy8vIExvYWQgYSBmaWxlIHVzaW5nIHRoZSBnaXZlbiBmaWxlbmFtZS4gUmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwuCi0JYm9vbCBMb2FkRmlsZSggY29uc3QgY2hhciAqIGZpbGVuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nID0gVElYTUxfREVGQVVMVF9FTkNPRElORyApOwotCS8vLyBTYXZlIGEgZmlsZSB1c2luZyB0aGUgZ2l2ZW4gZmlsZW5hbWUuIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVsLgotCWJvb2wgU2F2ZUZpbGUoIGNvbnN0IGNoYXIgKiBmaWxlbmFtZSApIGNvbnN0OwotCi0JI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQlib29sIExvYWRGaWxlKCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZW5hbWUsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICkJCQkvLy88IFNUTCBzdGQ6OnN0cmluZyB2ZXJzaW9uLgotCXsKLQkJU3RyaW5nVG9CdWZmZXIgZiggZmlsZW5hbWUgKTsKLQkJcmV0dXJuICggZi5idWZmZXIgJiYgTG9hZEZpbGUoIGYuYnVmZmVyLCBlbmNvZGluZyApKTsKLQl9Ci0JYm9vbCBTYXZlRmlsZSggY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVuYW1lICkgY29uc3QJCS8vLzwgU1RMIHN0ZDo6c3RyaW5nIHZlcnNpb24uCi0JewotCQlTdHJpbmdUb0J1ZmZlciBmKCBmaWxlbmFtZSApOwotCQlyZXR1cm4gKCBmLmJ1ZmZlciAmJiBTYXZlRmlsZSggZi5idWZmZXIgKSk7Ci0JfQotCSNlbmRpZgotCi0JLyoqIFBhcnNlIHRoZSBnaXZlbiBudWxsIHRlcm1pbmF0ZWQgYmxvY2sgb2YgeG1sIGRhdGEuIFBhc3NpbmcgaW4gYW4gZW5jb2RpbmcgdG8gdGhpcwotCQltZXRob2QgKGVpdGhlciBUSVhNTF9FTkNPRElOR19MRUdBQ1kgb3IgVElYTUxfRU5DT0RJTkdfVVRGOCB3aWxsIGZvcmNlIFRpbnlYbWwKLQkJdG8gdXNlIHRoYXQgZW5jb2RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBUaW55WG1sIG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8gZGV0ZWN0LgotCSovCi0JdmlydHVhbCBjb25zdCBjaGFyKiBQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSA9IDAsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgPSBUSVhNTF9ERUZBVUxUX0VOQ09ESU5HICk7Ci0KLQkvKiogR2V0IHRoZSByb290IGVsZW1lbnQgLS0gdGhlIG9ubHkgdG9wIGxldmVsIGVsZW1lbnQgLS0gb2YgdGhlIGRvY3VtZW50LgotCQlJbiB3ZWxsIGZvcm1lZCBYTUwsIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZS4gVGlueVhtbCBpcyB0b2xlcmFudCBvZgotCQltdWx0aXBsZSBlbGVtZW50cyBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwuCi0JKi8KLQljb25zdCBUaVhtbEVsZW1lbnQqIFJvb3RFbGVtZW50KCkgY29uc3QJCXsgcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50KCk7IH0KLQlUaVhtbEVsZW1lbnQqIFJvb3RFbGVtZW50KCkJCQkJCXsgcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50KCk7IH0KLQotCS8qKiBJZiBhbiBlcnJvciBvY2N1cnMsIEVycm9yIHdpbGwgYmUgc2V0IHRvIHRydWUuIEFsc28sCi0JCS0gVGhlIEVycm9ySWQoKSB3aWxsIGNvbnRhaW4gdGhlIGludGVnZXIgaWRlbnRpZmllciBvZiB0aGUgZXJyb3IgKG5vdCBnZW5lcmFsbHkgdXNlZnVsKQotCQktIFRoZSBFcnJvckRlc2MoKSBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVycm9yLiAodmVyeSB1c2VmdWwpCi0JCS0gVGhlIEVycm9yUm93KCkgYW5kIEVycm9yQ29sKCkgd2lsbCByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBlcnJvciAoaWYga25vd24pCi0JKi8JCi0JYm9vbCBFcnJvcigpIGNvbnN0CQkJCQkJeyByZXR1cm4gZXJyb3I7IH0KLQotCS8vLyBDb250YWlucyBhIHRleHR1YWwgKGVuZ2xpc2gpIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciBpZiBvbmUgb2NjdXJzLgotCWNvbnN0IGNoYXIgKiBFcnJvckRlc2MoKSBjb25zdAl7IHJldHVybiBlcnJvckRlc2MuY19zdHIgKCk7IH0KLQotCS8qKiBHZW5lcmFsbHksIHlvdSBwcm9iYWJseSB3YW50IHRoZSBlcnJvciBzdHJpbmcgKCBFcnJvckRlc2MoKSApLiBCdXQgaWYgeW91Ci0JCXByZWZlciB0aGUgRXJyb3JJZCwgdGhpcyBmdW5jdGlvbiB3aWxsIGZldGNoIGl0LgotCSovCi0JaW50IEVycm9ySWQoKQljb25zdAkJCQl7IHJldHVybiBlcnJvcklkOyB9Ci0KLQkvKiogUmV0dXJucyB0aGUgbG9jYXRpb24gKGlmIGtub3duKSBvZiB0aGUgZXJyb3IuIFRoZSBmaXJzdCBjb2x1bW4gaXMgY29sdW1uIDEsIAotCQlhbmQgdGhlIGZpcnN0IHJvdyBpcyByb3cgMS4gQSB2YWx1ZSBvZiAwIG1lYW5zIHRoZSByb3cgYW5kIGNvbHVtbiB3YXNuJ3QgYXBwbGljYWJsZQotCQkobWVtb3J5IGVycm9ycywgZm9yIGV4YW1wbGUsIGhhdmUgbm8gcm93L2NvbHVtbikgb3IgdGhlIHBhcnNlciBsb3N0IHRoZSBlcnJvci4gKEFuCi0JCWVycm9yIGluIHRoZSBlcnJvciByZXBvcnRpbmcsIGluIHRoYXQgY2FzZS4pCi0KLQkJQHNhIFNldFRhYlNpemUsIFJvdywgQ29sdW1uCi0JKi8KLQlpbnQgRXJyb3JSb3coKQl7IHJldHVybiBlcnJvckxvY2F0aW9uLnJvdysxOyB9Ci0JaW50IEVycm9yQ29sKCkJeyByZXR1cm4gZXJyb3JMb2NhdGlvbi5jb2wrMTsgfQkvLy88IFRoZSBjb2x1bW4gd2hlcmUgdGhlIGVycm9yIG9jY3VyZWQuIFNlZSBFcnJvclJvdygpCi0KLQkvKiogU2V0VGFiU2l6ZSgpIGFsbG93cyB0aGUgZXJyb3IgcmVwb3J0aW5nIGZ1bmN0aW9ucyAoRXJyb3JSb3coKSBhbmQgRXJyb3JDb2woKSkKLQkJdG8gcmVwb3J0IHRoZSBjb3JyZWN0IHZhbHVlcyBmb3Igcm93IGFuZCBjb2x1bW4uIEl0IGRvZXMgbm90IGNoYW5nZSB0aGUgb3V0cHV0Ci0JCW9yIGlucHV0IGluIGFueSB3YXkuCi0JCQotCQlCeSBjYWxsaW5nIHRoaXMgbWV0aG9kLCB3aXRoIGEgdGFiIHNpemUKLQkJZ3JlYXRlciB0aGFuIDAsIHRoZSByb3cgYW5kIGNvbHVtbiBvZiBlYWNoIG5vZGUgYW5kIGF0dHJpYnV0ZSBpcyBzdG9yZWQKLQkJd2hlbiB0aGUgZmlsZSBpcyBsb2FkZWQuIFZlcnkgdXNlZnVsIGZvciB0cmFja2luZyB0aGUgRE9NIGJhY2sgaW4gdG8KLQkJdGhlIHNvdXJjZSBmaWxlLgotCi0JCVRoZSB0YWIgc2l6ZSBpcyByZXF1aXJlZCBmb3IgY2FsY3VsYXRpbmcgdGhlIGxvY2F0aW9uIG9mIG5vZGVzLiBJZiBub3QKLQkJc2V0LCB0aGUgZGVmYXVsdCBvZiA0IGlzIHVzZWQuIFRoZSB0YWJzaXplIGlzIHNldCBwZXIgZG9jdW1lbnQuIFNldHRpbmcKLQkJdGhlIHRhYnNpemUgdG8gMCBkaXNhYmxlcyByb3cvY29sdW1uIHRyYWNraW5nLgotCi0JCU5vdGUgdGhhdCByb3cgYW5kIGNvbHVtbiB0cmFja2luZyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gdXNpbmcgb3BlcmF0b3I+Pi4KLQotCQlUaGUgdGFiIHNpemUgbmVlZHMgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIHBhcnNlIG9yIGxvYWQuIENvcnJlY3QgdXNhZ2U6Ci0JCUB2ZXJiYXRpbQotCQlUaVhtbERvY3VtZW50IGRvYzsKLQkJZG9jLlNldFRhYlNpemUoIDggKTsKLQkJZG9jLkxvYWQoICJteWZpbGUueG1sIiApOwotCQlAZW5kdmVyYmF0aW0KLQotCQlAc2EgUm93LCBDb2x1bW4KLQkqLwotCXZvaWQgU2V0VGFiU2l6ZSggaW50IF90YWJzaXplICkJCXsgdGFic2l6ZSA9IF90YWJzaXplOyB9Ci0KLQlpbnQgVGFiU2l6ZSgpIGNvbnN0CXsgcmV0dXJuIHRhYnNpemU7IH0KLQotCS8qKiBJZiB5b3UgaGF2ZSBoYW5kbGVkIHRoZSBlcnJvciwgaXQgY2FuIGJlIHJlc2V0IHdpdGggdGhpcyBjYWxsLiBUaGUgZXJyb3IKLQkJc3RhdGUgaXMgYXV0b21hdGljYWxseSBjbGVhcmVkIGlmIHlvdSBQYXJzZSBhIG5ldyBYTUwgYmxvY2suCi0JKi8KLQl2b2lkIENsZWFyRXJyb3IoKQkJCQkJCXsJZXJyb3IgPSBmYWxzZTsgCi0JCQkJCQkJCQkJCQllcnJvcklkID0gMDsgCi0JCQkJCQkJCQkJCQllcnJvckRlc2MgPSAiIjsgCi0JCQkJCQkJCQkJCQllcnJvckxvY2F0aW9uLnJvdyA9IGVycm9yTG9jYXRpb24uY29sID0gMDsgCi0JCQkJCQkJCQkJCQkvL2Vycm9yTG9jYXRpb24ubGFzdCA9IDA7IAotCQkJCQkJCQkJCQl9Ci0KLQkvKiogRHVtcCB0aGUgZG9jdW1lbnQgdG8gc3RhbmRhcmQgb3V0LiAqLwotCXZvaWQgUHJpbnQoKSBjb25zdAkJCQkJCXsgUHJpbnQoIHN0ZG91dCwgMCApOyB9Ci0KLQkvLy8gUHJpbnQgdGhpcyBEb2N1bWVudCB0byBhIEZJTEUgc3RyZWFtLgotCXZpcnR1YWwgdm9pZCBQcmludCggRklMRSogY2ZpbGUsIGludCBkZXB0aCA9IDAgKSBjb25zdDsKLQkvLyBbaW50ZXJuYWwgdXNlXQotCXZvaWQgU2V0RXJyb3IoIGludCBlcnIsIGNvbnN0IGNoYXIqIGVycm9yTG9jYXRpb24sIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICk7Ci0KLXByb3RlY3RlZCA6Ci0JdmlydHVhbCB2b2lkIFN0cmVhbU91dCAoIFRJWE1MX09TVFJFQU0gKiBvdXQpIGNvbnN0OwotCS8vIFtpbnRlcm5hbCB1c2VdCi0JdmlydHVhbCBUaVhtbE5vZGUqIENsb25lKCkgY29uc3Q7Ci0JI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkgICAgdmlydHVhbCB2b2lkIFN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApOwotCSNlbmRpZgotCi1wcml2YXRlOgotCXZvaWQgQ29weVRvKCBUaVhtbERvY3VtZW50KiB0YXJnZXQgKSBjb25zdDsKLQotCWJvb2wgZXJyb3I7Ci0JaW50ICBlcnJvcklkOwotCVRJWE1MX1NUUklORyBlcnJvckRlc2M7Ci0JaW50IHRhYnNpemU7Ci0JVGlYbWxDdXJzb3IgZXJyb3JMb2NhdGlvbjsKLQlib29sIHVzZU1pY3Jvc29mdEJPTTsJCS8vIHRoZSBVVEYtOCBCT00gd2VyZSBmb3VuZCB3aGVuIHJlYWQuIE5vdGUgdGhpcywgYW5kIHRyeSB0byB3cml0ZS4KLX07Ci0KLQotLyoqCi0JQSBUaVhtbEhhbmRsZSBpcyBhIGNsYXNzIHRoYXQgd3JhcHMgYSBub2RlIHBvaW50ZXIgd2l0aCBudWxsIGNoZWNrczsgdGhpcyBpcwotCWFuIGluY3JlZGlibHkgdXNlZnVsIHRoaW5nLiBOb3RlIHRoYXQgVGlYbWxIYW5kbGUgaXMgbm90IHBhcnQgb2YgdGhlIFRpbnlYbWwKLQlET00gc3RydWN0dXJlLiBJdCBpcyBhIHNlcGFyYXRlIHV0aWxpdHkgY2xhc3MuCi0KLQlUYWtlIGFuIGV4YW1wbGU6Ci0JQHZlcmJhdGltCi0JPERvY3VtZW50PgotCQk8RWxlbWVudCBhdHRyaWJ1dGVBID0gInZhbHVlQSI+Ci0JCQk8Q2hpbGQgYXR0cmlidXRlQiA9ICJ2YWx1ZTEiIC8+Ci0JCQk8Q2hpbGQgYXR0cmlidXRlQiA9ICJ2YWx1ZTIiIC8+Ci0JCTwvRWxlbWVudD4KLQk8RG9jdW1lbnQ+Ci0JQGVuZHZlcmJhdGltCi0KLQlBc3N1bWluZyB5b3Ugd2FudCB0aGUgdmFsdWUgb2YgImF0dHJpYnV0ZUIiIGluIHRoZSAybmQgIkNoaWxkIiBlbGVtZW50LCBpdCdzIHZlcnkgCi0JZWFzeSB0byB3cml0ZSBhICpsb3QqIG9mIGNvZGUgdGhhdCBsb29rcyBsaWtlOgotCi0JQHZlcmJhdGltCi0JVGlYbWxFbGVtZW50KiByb290ID0gZG9jdW1lbnQuRmlyc3RDaGlsZEVsZW1lbnQoICJEb2N1bWVudCIgKTsKLQlpZiAoIHJvb3QgKQotCXsKLQkJVGlYbWxFbGVtZW50KiBlbGVtZW50ID0gcm9vdC0+Rmlyc3RDaGlsZEVsZW1lbnQoICJFbGVtZW50IiApOwotCQlpZiAoIGVsZW1lbnQgKQotCQl7Ci0JCQlUaVhtbEVsZW1lbnQqIGNoaWxkID0gZWxlbWVudC0+Rmlyc3RDaGlsZEVsZW1lbnQoICJDaGlsZCIgKTsKLQkJCWlmICggY2hpbGQgKQotCQkJewotCQkJCVRpWG1sRWxlbWVudCogY2hpbGQyID0gY2hpbGQtPk5leHRTaWJsaW5nRWxlbWVudCggIkNoaWxkIiApOwotCQkJCWlmICggY2hpbGQyICkKLQkJCQl7Ci0JCQkJCS8vIEZpbmFsbHkgZG8gc29tZXRoaW5nIHVzZWZ1bC4KLQlAZW5kdmVyYmF0aW0KLQotCUFuZCB0aGF0IGRvZXNuJ3QgZXZlbiBjb3ZlciAiZWxzZSIgY2FzZXMuIFRpWG1sSGFuZGxlIGFkZHJlc3NlcyB0aGUgdmVyYm9zaXR5Ci0Jb2Ygc3VjaCBjb2RlLiBBIFRpWG1sSGFuZGxlIGNoZWNrcyBmb3IgbnVsbAlwb2ludGVycyBzbyBpdCBpcyBwZXJmZWN0bHkgc2FmZSAKLQlhbmQgY29ycmVjdCB0byB1c2U6Ci0KLQlAdmVyYmF0aW0KLQlUaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZkb2N1bWVudCApOwotCVRpWG1sRWxlbWVudCogY2hpbGQyID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGQoICJEb2N1bWVudCIgKS5GaXJzdENoaWxkKCAiRWxlbWVudCIgKS5DaGlsZCggIkNoaWxkIiwgMSApLkVsZW1lbnQoKTsKLQlpZiAoIGNoaWxkMiApCi0JewotCQkvLyBkbyBzb21ldGhpbmcgdXNlZnVsCi0JQGVuZHZlcmJhdGltCi0KLQlXaGljaCBpcyBNVUNIIG1vcmUgY29uY2lzZSBhbmQgdXNlZnVsLgotCi0JSXQgaXMgYWxzbyBzYWZlIHRvIGNvcHkgaGFuZGxlcyAtIGludGVybmFsbHkgdGhleSBhcmUgbm90aGluZyBtb3JlIHRoYW4gbm9kZSBwb2ludGVycy4KLQlAdmVyYmF0aW0KLQlUaVhtbEhhbmRsZSBoYW5kbGVDb3B5ID0gaGFuZGxlOwotCUBlbmR2ZXJiYXRpbQotCi0JV2hhdCB0aGV5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IgaXMgaXRlcmF0aW9uOgotCi0JQHZlcmJhdGltCi0JaW50IGk9MDsgCi0Jd2hpbGUgKCB0cnVlICkKLQl7Ci0JCVRpWG1sRWxlbWVudCogY2hpbGQgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZCggIkRvY3VtZW50IiApLkZpcnN0Q2hpbGQoICJFbGVtZW50IiApLkNoaWxkKCAiQ2hpbGQiLCBpICkuRWxlbWVudCgpOwotCQlpZiAoICFjaGlsZCApCi0JCQlicmVhazsKLQkJLy8gZG8gc29tZXRoaW5nCi0JCSsraTsKLQl9Ci0JQGVuZHZlcmJhdGltCi0KLQlJdCBzZWVtcyByZWFzb25hYmxlLCBidXQgaXQgaXMgaW4gZmFjdCB0d28gZW1iZWRkZWQgd2hpbGUgbG9vcHMuIFRoZSBDaGlsZCBtZXRob2QgaXMgCi0JYSBsaW5lYXIgd2FsayB0byBmaW5kIHRoZSBlbGVtZW50LCBzbyB0aGlzIGNvZGUgd291bGQgaXRlcmF0ZSBtdWNoIG1vcmUgdGhhbiBpdCBuZWVkcyAKLQl0by4gSW5zdGVhZCwgcHJlZmVyOgotCi0JQHZlcmJhdGltCi0JVGlYbWxFbGVtZW50KiBjaGlsZCA9IGRvY0hhbmRsZS5GaXJzdENoaWxkKCAiRG9jdW1lbnQiICkuRmlyc3RDaGlsZCggIkVsZW1lbnQiICkuRmlyc3RDaGlsZCggIkNoaWxkIiApLkVsZW1lbnQoKTsKLQotCWZvciggY2hpbGQ7IGNoaWxkOyBjaGlsZD1jaGlsZC0+TmV4dFNpYmxpbmdFbGVtZW50KCkgKQotCXsKLQkJLy8gZG8gc29tZXRoaW5nCi0JfQotCUBlbmR2ZXJiYXRpbQotKi8KLWNsYXNzIFRpWG1sSGFuZGxlCi17Ci1wdWJsaWM6Ci0JLy8vIENyZWF0ZSBhIGhhbmRsZSBmcm9tIGFueSBub2RlIChhdCBhbnkgZGVwdGggb2YgdGhlIHRyZWUuKSBUaGlzIGNhbiBiZSBhIG51bGwgcG9pbnRlci4KLQlUaVhtbEhhbmRsZSggVGlYbWxOb2RlKiBfbm9kZSApCQkJCQl7IHRoaXMtPm5vZGUgPSBfbm9kZTsgfQotCS8vLyBDb3B5IGNvbnN0cnVjdG9yCi0JVGlYbWxIYW5kbGUoIGNvbnN0IFRpWG1sSGFuZGxlJiByZWYgKQkJCXsgdGhpcy0+bm9kZSA9IHJlZi5ub2RlOyB9Ci0JVGlYbWxIYW5kbGUgb3BlcmF0b3I9KCBjb25zdCBUaVhtbEhhbmRsZSYgcmVmICkgeyB0aGlzLT5ub2RlID0gcmVmLm5vZGU7IHJldHVybiAqdGhpczsgfQotCi0JLy8vIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgbm9kZS4KLQlUaVhtbEhhbmRsZSBGaXJzdENoaWxkKCkgY29uc3Q7Ci0JLy8vIFJldHVybiBhIGhhbmRsZSB0byB0aGUgZmlyc3QgY2hpbGQgbm9kZSB3aXRoIHRoZSBnaXZlbiBuYW1lLgotCVRpWG1sSGFuZGxlIEZpcnN0Q2hpbGQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OwotCS8vLyBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQuCi0JVGlYbWxIYW5kbGUgRmlyc3RDaGlsZEVsZW1lbnQoKSBjb25zdDsKLQkvLy8gUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IHdpdGggdGhlIGdpdmVuIG5hbWUuCi0JVGlYbWxIYW5kbGUgRmlyc3RDaGlsZEVsZW1lbnQoIGNvbnN0IGNoYXIgKiB2YWx1ZSApIGNvbnN0OwotCi0JLyoqIFJldHVybiBhIGhhbmRsZSB0byB0aGUgImluZGV4IiBjaGlsZCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAKLQkJVGhlIGZpcnN0IGNoaWxkIGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLgotCSovCi0JVGlYbWxIYW5kbGUgQ2hpbGQoIGNvbnN0IGNoYXIqIHZhbHVlLCBpbnQgaW5kZXggKSBjb25zdDsKLQkvKiogUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSAiaW5kZXgiIGNoaWxkLiAKLQkJVGhlIGZpcnN0IGNoaWxkIGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLgotCSovCi0JVGlYbWxIYW5kbGUgQ2hpbGQoIGludCBpbmRleCApIGNvbnN0OwotCS8qKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBuYW1lLiAKLQkJVGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgaXMgMCwgdGhlIHNlY29uZCAxLCBldGMuIE5vdGUgdGhhdCBvbmx5IFRpWG1sRWxlbWVudHMKLQkJYXJlIGluZGV4ZWQ6IG90aGVyIHR5cGVzIGFyZSBub3QgY291bnRlZC4KLQkqLwotCVRpWG1sSGFuZGxlIENoaWxkRWxlbWVudCggY29uc3QgY2hhciogdmFsdWUsIGludCBpbmRleCApIGNvbnN0OwotCS8qKiBSZXR1cm4gYSBoYW5kbGUgdG8gdGhlICJpbmRleCIgY2hpbGQgZWxlbWVudC4gCi0JCVRoZSBmaXJzdCBjaGlsZCBlbGVtZW50IGlzIDAsIHRoZSBzZWNvbmQgMSwgZXRjLiBOb3RlIHRoYXQgb25seSBUaVhtbEVsZW1lbnRzCi0JCWFyZSBpbmRleGVkOiBvdGhlciB0eXBlcyBhcmUgbm90IGNvdW50ZWQuCi0JKi8KLQlUaVhtbEhhbmRsZSBDaGlsZEVsZW1lbnQoIGludCBpbmRleCApIGNvbnN0OwotCi0JI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQlUaVhtbEhhbmRsZSBGaXJzdENoaWxkKCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJCQkJeyByZXR1cm4gRmlyc3RDaGlsZCggX3ZhbHVlLmNfc3RyKCkgKTsgfQotCVRpWG1sSGFuZGxlIEZpcnN0Q2hpbGRFbGVtZW50KCBjb25zdCBzdGQ6OnN0cmluZyYgX3ZhbHVlICkgY29uc3QJCXsgcmV0dXJuIEZpcnN0Q2hpbGRFbGVtZW50KCBfdmFsdWUuY19zdHIoKSApOyB9Ci0KLQlUaVhtbEhhbmRsZSBDaGlsZCggY29uc3Qgc3RkOjpzdHJpbmcmIF92YWx1ZSwgaW50IGluZGV4ICkgY29uc3QJCQl7IHJldHVybiBDaGlsZCggX3ZhbHVlLmNfc3RyKCksIGluZGV4ICk7IH0KLQlUaVhtbEhhbmRsZSBDaGlsZEVsZW1lbnQoIGNvbnN0IHN0ZDo6c3RyaW5nJiBfdmFsdWUsIGludCBpbmRleCApIGNvbnN0CXsgcmV0dXJuIENoaWxkRWxlbWVudCggX3ZhbHVlLmNfc3RyKCksIGluZGV4ICk7IH0KLQkjZW5kaWYKLQotCS8vLyBSZXR1cm4gdGhlIGhhbmRsZSBhcyBhIFRpWG1sTm9kZS4gVGhpcyBtYXkgcmV0dXJuIG51bGwuCi0JVGlYbWxOb2RlKiBOb2RlKCkgY29uc3QJCQl7IHJldHVybiBub2RlOyB9IAotCS8vLyBSZXR1cm4gdGhlIGhhbmRsZSBhcyBhIFRpWG1sRWxlbWVudC4gVGhpcyBtYXkgcmV0dXJuIG51bGwuCi0JVGlYbWxFbGVtZW50KiBFbGVtZW50KCkgY29uc3QJeyByZXR1cm4gKCAoIG5vZGUgJiYgbm9kZS0+VG9FbGVtZW50KCkgKSA/IG5vZGUtPlRvRWxlbWVudCgpIDogMCApOyB9Ci0JLy8vIFJldHVybiB0aGUgaGFuZGxlIGFzIGEgVGlYbWxUZXh0LiBUaGlzIG1heSByZXR1cm4gbnVsbC4KLQlUaVhtbFRleHQqIFRleHQoKSBjb25zdAkJCXsgcmV0dXJuICggKCBub2RlICYmIG5vZGUtPlRvVGV4dCgpICkgPyBub2RlLT5Ub1RleHQoKSA6IDAgKTsgfQotCS8vLyBSZXR1cm4gdGhlIGhhbmRsZSBhcyBhIFRpWG1sVW5rbm93bi4gVGhpcyBtYXkgcmV0dXJuIG51bGw7Ci0JVGlYbWxVbmtub3duKiBVbmtub3duKCkgY29uc3QJCQl7IHJldHVybiAoICggbm9kZSAmJiBub2RlLT5Ub1Vua25vd24oKSApID8gbm9kZS0+VG9Vbmtub3duKCkgOiAwICk7IH0KLQotcHJpdmF0ZToKLQlUaVhtbE5vZGUqIG5vZGU7Ci19OwotCi0jaWZkZWYgX01TQ19WRVIKLSNwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvdGlueXhtbFNUTC5kc3AgYi90aW55eG1sU1RMLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5YzE0OS4uMDAwMDAwMAotLS0gYS90aW55eG1sU1RMLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InRpbnl4bWxTVEwiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IiAweDAxMDQNCi0NCi1DRkc9dGlueXhtbFNUTCAtIFdpbjMyIERlYnVnDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ0aW55eG1sU1RMLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ0aW55eG1sU1RMLm1hayIgQ0ZHPSJ0aW55eG1sU1RMIC0gV2luMzIgRGVidWciDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgInRpbnl4bWxTVEwgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCi0hTUVTU0FHRSAidGlueXhtbFNUTCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLUNQUD1jbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAidGlueXhtbFNUTCAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueXhtbFNUTF9fX1dpbjMyX1JlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAidGlueXhtbFNUTF9fX1dpbjMyX1JlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2VfU1RMIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlX1NUTCINCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvRCAiVElYTUxfVVNFX1NUTCIgL0ZSIC9GRCAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJOREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElCMzI9bGluay5leGUgLWxpYg0KLSMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KLSMgQUREIExJQjMyIC9ub2xvZ28gL291dDoiUmVsZWFzZV9TVExcdGlueXhtbF9TVEwubGliIg0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ0aW55eG1sU1RMIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAidGlueXhtbFNUTF9fX1dpbjMyX0RlYnVnMCINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJ0aW55eG1sU1RMX19fV2luMzJfRGVidWcwIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1Z19TVEwiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnX1NUTCINCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9ZWCAvRkQgL0daIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9EICJUSVhNTF9VU0VfU1RMIiAvRkQgL0daIC9jDQotIyBTVUJUUkFDVCBDUFAgL1lYDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDkgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSUIzMj1saW5rLmV4ZSAtbGliDQotIyBBREQgQkFTRSBMSUIzMiAvbm9sb2dvDQotIyBBREQgTElCMzIgL25vbG9nbyAvb3V0OiJEZWJ1Z19TVExcdGlueXhtbGRfU1RMLmxpYiINCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgInRpbnl4bWxTVEwgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAidGlueXhtbFNUTCAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cdGlueXN0ci5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55eG1sLmNwcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXHRpbnl4bWxlcnJvci5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55eG1scGFyc2VyLmNwcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXHRpbnlzdHIuaA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXHRpbnl4bWwuaA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cY2hhbmdlcy50eHQNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9LlxyZWFkbWUudHh0DQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvdGlueXhtbF9saWIuZHNwIGIvdGlueXhtbF9saWIuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGQyOWUxLi4wMDAwMDAwCi0tLSBhL3Rpbnl4bWxfbGliLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InRpbnl4bWwiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IiAweDAxMDQNCi0NCi1DRkc9dGlueXhtbCAtIFdpbjMyIFJlbGVhc2UNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgInRpbnl4bWxfbGliLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJ0aW55eG1sX2xpYi5tYWsiIENGRz0idGlueXhtbCAtIFdpbjMyIFJlbGVhc2UiDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgInRpbnl4bWwgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCi0hTUVTU0FHRSAidGlueXhtbCAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIFN0YXRpYyBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLUNQUD1jbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAidGlueXhtbCAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfTUJDUyIgL0QgIl9MSUIiIC9GRCAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA3IC9kICJOREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA3IC9kICJOREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElCMzI9bGluay5leGUgLWxpYg0KLSMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KLSMgQUREIExJQjMyIC9ub2xvZ28gL291dDoiUmVsZWFzZVx0aW55eG1sLmxpYiINCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAidGlueXhtbCAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX01CQ1MiIC9EICJfTElCIiAvRlIgL0ZEIC9HWiAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA3IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA3IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElCMzI9bGluay5leGUgLWxpYg0KLSMgQUREIEJBU0UgTElCMzIgL25vbG9nbw0KLSMgQUREIExJQjMyIC9ub2xvZ28gL291dDoiRGVidWdcdGlueXhtbGQubGliIg0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAidGlueXhtbCAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJ0aW55eG1sIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cdGlueXN0ci5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55eG1sLmNwcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXHRpbnl4bWxlcnJvci5jcHANCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55eG1scGFyc2VyLmNwcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55c3RyLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Llx0aW55eG1sLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXGNoYW5nZXMudHh0DQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5ccmVhZG1lLnR4dA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXHR1dG9yaWFsX2dldHRpbmdTdGFydGVkLnR4dA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3Rpbnl4bWxlcnJvci5jcHAgYi90aW55eG1sZXJyb3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Nzg4NDM4Li4wMDAwMDAwCi0tLSBhL3Rpbnl4bWxlcnJvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotd3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCi1PcmlnaW5hbCBjb2RlICgyLjAgYW5kIGVhcmxpZXIgKWNvcHlyaWdodCAoYykgMjAwMC0yMDAyIExlZSBUaG9tYXNvbiAod3d3LmdyaW5uaW5nbGl6YXJkLmNvbSkKLQotVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgCi13YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IAotZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgotCi1QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgCi1wdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgCi1yZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgotCi0xLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0Ci1ub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMKLXNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbgotd291bGQgYmUgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLQotMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQKLW11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLQotMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlCi1kaXN0cmlidXRpb24uCi0qLwotCi0jaW5jbHVkZSAidGlueXhtbC5oIgotCi0vLyBUaGUgZ29hbCBvZiB0aGUgc2VwZXJhdGUgZXJyb3IgZmlsZSBpcyB0byBtYWtlIHRoZSBmaXJzdAotLy8gc3RlcCB0b3dhcmRzIGxvY2FsaXphdGlvbi4gdGlueXhtbCAoY3VycmVudGx5KSBvbmx5IHN1cHBvcnRzCi0vLyBlbmdsaXNoIGVycm9yIG1lc3NhZ2VzLCBidXQgdGhlIGNvdWxkIG5vdyBiZSB0cmFuc2xhdGVkLgotLy8KLS8vIEl0IGFsc28gY2xlYW5zIHVwIHRoZSBjb2RlIGEgYml0LgotLy8KLQotY29uc3QgY2hhciogVGlYbWxCYXNlOjplcnJvclN0cmluZ1sgVElYTUxfRVJST1JfU1RSSU5HX0NPVU5UIF0gPQotewotCSJObyBlcnJvciIsCi0JIkVycm9yIiwKLQkiRmFpbGVkIHRvIG9wZW4gZmlsZSIsCi0JIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4iLAotCSJFcnJvciBwYXJzaW5nIEVsZW1lbnQuIiwKLQkiRmFpbGVkIHRvIHJlYWQgRWxlbWVudCBuYW1lIiwKLQkiRXJyb3IgcmVhZGluZyBFbGVtZW50IHZhbHVlLiIsCi0JIkVycm9yIHJlYWRpbmcgQXR0cmlidXRlcy4iLAotCSJFcnJvcjogZW1wdHkgdGFnLiIsCi0JIkVycm9yIHJlYWRpbmcgZW5kIHRhZy4iLAotCSJFcnJvciBwYXJzaW5nIFVua25vd24uIiwKLQkiRXJyb3IgcGFyc2luZyBDb21tZW50LiIsCi0JIkVycm9yIHBhcnNpbmcgRGVjbGFyYXRpb24uIiwKLQkiRXJyb3IgZG9jdW1lbnQgZW1wdHkuIiwKLQkiRXJyb3IgbnVsbCAoMCkgb3IgdW5leHBlY3RlZCBFT0YgZm91bmQgaW4gaW5wdXQgc3RyZWFtLiIsCi0JIkVycm9yIHBhcnNpbmcgQ0RBVEEuIiwKLX07CmRpZmYgLS1naXQgYS90aW55eG1scGFyc2VyLmNwcCBiL3Rpbnl4bWxwYXJzZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2QwYTllLi4wMDAwMDAwCi0tLSBhL3Rpbnl4bWxwYXJzZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3MiArMCwwIEBACi0vKgotd3d3LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90aW55eG1sCi1PcmlnaW5hbCBjb2RlICgyLjAgYW5kIGVhcmxpZXIgKWNvcHlyaWdodCAoYykgMjAwMC0yMDAyIExlZSBUaG9tYXNvbiAod3d3LmdyaW5uaW5nbGl6YXJkLmNvbSkKLQotVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgCi13YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IAotZGFtYWdlcyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgotCi1QZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgCi1wdXJwb3NlLCBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgCi1yZWRpc3RyaWJ1dGUgaXQgZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgotCi0xLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IAotbm90IGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzCi1zb2Z0d2FyZSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24KLXdvdWxkIGJlIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi0KLTIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIAotbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgotCi0zLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgCi1kaXN0cmlidXRpb24uCi0qLwotCi0jaW5jbHVkZSAidGlueXhtbC5oIgotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0KLS8vI2RlZmluZSBERUJVR19QQVJTRVIKLQotLy8gTm90ZSB0aGEgIlB1dFN0cmluZyIgaGFyZGNvZGVzIHRoZSBzYW1lIGxpc3QuIFRoaXMKLS8vIGlzIGxlc3MgZmxleGlibGUgdGhhbiBpdCBhcHBlYXJzLiBDaGFuZ2luZyB0aGUgZW50cmllcwotLy8gb3Igb3JkZXIgd2lsbCBicmVhayBwdXRzdHJpbmcuCQotVGlYbWxCYXNlOjpFbnRpdHkgVGlYbWxCYXNlOjplbnRpdHlbIE5VTV9FTlRJVFkgXSA9IAotewotCXsgIiZhbXA7IiwgIDUsICcmJyB9LAotCXsgIiZsdDsiLCAgIDQsICc8JyB9LAotCXsgIiZndDsiLCAgIDQsICc+JyB9LAotCXsgIiZxdW90OyIsIDYsICdcIicgfSwKLQl7ICImYXBvczsiLCA2LCAnXCcnIH0KLX07Ci0KLS8vIEJ1bmNoIG9mIHVuaWNvZGUgaW5mbyBhdDoKLS8vCQlodHRwOi8vd3d3LnVuaWNvZGUub3JnL2ZhcS91dGZfYm9tLmh0bWwKLS8vIEluY2x1ZGluZyB0aGUgYmFzaWMgb2YgdGhpcyB0YWJsZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgI2J5dGVzIGluIHRoZQotLy8gc2VxdWVuY2UgZnJvbSB0aGUgbGVhZCBieXRlLiAxIHBsYWNlZCBmb3IgaW52YWxpZCBzZXF1ZW5jZXMgLS0KLS8vIGFsdGhvdWdoIHRoZSByZXN1bHQgd2lsbCBiZSBqdW5rLCBwYXNzIGl0IHRocm91Z2ggYXMgbXVjaCBhcyBwb3NzaWJsZS4KLS8vIEJld2FyZSBvZiB0aGUgbm9uLWNoYXJhY3RlcnMgaW4gVVRGLTg6CQotLy8JCQkJZWYgYmIgYmYgKE1pY3Jvc29mdCAibGVhZCBieXRlcyIpCi0vLwkJCQllZiBiZiBiZQotLy8JCQkJZWYgYmYgYmYgCi0KLWNvbnN0IHVuc2lnbmVkIGNoYXIgVElYTUxfVVRGX0xFQURfMCA9IDB4ZWZVOwotY29uc3QgdW5zaWduZWQgY2hhciBUSVhNTF9VVEZfTEVBRF8xID0gMHhiYlU7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIFRJWE1MX1VURl9MRUFEXzIgPSAweGJmVTsKLQotY29uc3QgaW50IFRpWG1sQmFzZTo6dXRmOEJ5dGVUYWJsZVsyNTZdID0gCi17Ci0JLy8JMAkxCTIJMwk0CTUJNgk3CTgJOQlhCWIJYwlkCWUJZgotCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDAwCi0JCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4MTAKLQkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHgyMAotCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDMwCi0JCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4NDAKLQkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHg1MAotCQkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkxLAkvLyAweDYwCi0JCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4NzAJRW5kIG9mIEFTQ0lJIHJhbmdlCi0JCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCS8vIDB4ODAgMHg4MCB0byAweGMxIGludmFsaWQKLQkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHg5MCAKLQkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHhhMCAKLQkJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJMSwJLy8gMHhiMCAKLQkJMSwJMSwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJMiwJLy8gMHhjMCAweGMyIHRvIDB4ZGYgMiBieXRlCi0JCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCTIsCS8vIDB4ZDAKLQkJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJMywJLy8gMHhlMCAweGUwIHRvIDB4ZWYgMyBieXRlCi0JCTQsCTQsCTQsCTQsCTQsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEsCTEJLy8gMHhmMCAweGYwIHRvIDB4ZjQgNCBieXRlLCAweGY1IGFuZCBoaWdoZXIgaW52YWxpZAotfTsKLQotCi12b2lkIFRpWG1sQmFzZTo6Q29udmVydFVURjMyVG9VVEY4KCB1bnNpZ25lZCBsb25nIGlucHV0LCBjaGFyKiBvdXRwdXQsIGludCogbGVuZ3RoICkKLXsKLQljb25zdCB1bnNpZ25lZCBsb25nIEJZVEVfTUFTSyA9IDB4QkY7Ci0JY29uc3QgdW5zaWduZWQgbG9uZyBCWVRFX01BUksgPSAweDgwOwotCWNvbnN0IHVuc2lnbmVkIGxvbmcgRklSU1RfQllURV9NQVJLWzddID0geyAweDAwLCAweDAwLCAweEMwLCAweEUwLCAweEYwLCAweEY4LCAweEZDIH07Ci0KLQlpZiAoaW5wdXQgPCAweDgwKSAKLQkJKmxlbmd0aCA9IDE7Ci0JZWxzZSBpZiAoIGlucHV0IDwgMHg4MDAgKQotCQkqbGVuZ3RoID0gMjsKLQllbHNlIGlmICggaW5wdXQgPCAweDEwMDAwICkKLQkJKmxlbmd0aCA9IDM7Ci0JZWxzZSBpZiAoIGlucHV0IDwgMHgyMDAwMDAgKQotCQkqbGVuZ3RoID0gNDsKLQllbHNlCi0JCXsgKmxlbmd0aCA9IDA7IHJldHVybjsgfQkvLyBUaGlzIGNvZGUgd29uJ3QgY292ZXJ0IHRoaXMgY29ycmVjdGx5IGFueXdheS4KLQotCW91dHB1dCArPSAqbGVuZ3RoOwotCi0JLy8gU2Nhcnkgc2NhcnkgZmFsbCB0aHJvdWdocy4KLQlzd2l0Y2ggKCpsZW5ndGgpIAotCXsKLQkJY2FzZSA0OgotCQkJLS1vdXRwdXQ7IAotCQkJKm91dHB1dCA9IChjaGFyKSgoaW5wdXQgfCBCWVRFX01BUkspICYgQllURV9NQVNLKTsgCi0JCQlpbnB1dCA+Pj0gNjsKLQkJY2FzZSAzOgotCQkJLS1vdXRwdXQ7IAotCQkJKm91dHB1dCA9IChjaGFyKSgoaW5wdXQgfCBCWVRFX01BUkspICYgQllURV9NQVNLKTsgCi0JCQlpbnB1dCA+Pj0gNjsKLQkJY2FzZSAyOgotCQkJLS1vdXRwdXQ7IAotCQkJKm91dHB1dCA9IChjaGFyKSgoaW5wdXQgfCBCWVRFX01BUkspICYgQllURV9NQVNLKTsgCi0JCQlpbnB1dCA+Pj0gNjsKLQkJY2FzZSAxOgotCQkJLS1vdXRwdXQ7IAotCQkJKm91dHB1dCA9IChjaGFyKShpbnB1dCB8IEZJUlNUX0JZVEVfTUFSS1sqbGVuZ3RoXSk7Ci0JfQotfQotCi0KLS8qc3RhdGljKi8gaW50IFRpWG1sQmFzZTo6SXNBbHBoYSggdW5zaWduZWQgY2hhciBhbnlCeXRlLCBUaVhtbEVuY29kaW5nIC8qZW5jb2RpbmcqLyApCi17Ci0JLy8gVGhpcyB3aWxsIG9ubHkgd29yayBmb3IgbG93LWFzY2lpLCBldmVyeXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhIHZhbGlkCi0JLy8gbGV0dGVyLiBJJ20gbm90IHN1cmUgdGhpcyBpcyB0aGUgYmVzdCBhcHByb2FjaCwgYnV0IGl0IGlzIHF1aXRlIHRyaWNreSB0cnlpbmcKLQkvLyB0byBmaWd1cmUgb3V0IGFsaGFiZXRpY2FsIHZzLiBub3QgYWNyb3NzIGVuY29kaW5nLiBTbyB0YWtlIGEgdmVyeSAKLQkvLyBjb25zZXJ2YXRpdmUgYXBwcm9hY2guCi0KLS8vCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCi0vLwl7Ci0JCWlmICggYW55Qnl0ZSA8IDEyNyApCi0JCQlyZXR1cm4gaXNhbHBoYSggYW55Qnl0ZSApOwotCQllbHNlCi0JCQlyZXR1cm4gMTsJLy8gV2hhdCBlbHNlIHRvIGRvPyBUaGUgdW5pY29kZSBzZXQgaXMgaHVnZS4uLmdldCB0aGUgZW5nbGlzaCBvbmVzIHJpZ2h0LgotLy8JfQotLy8JZWxzZQotLy8JewotLy8JCXJldHVybiBpc2FscGhhKCBhbnlCeXRlICk7Ci0vLwl9Ci19Ci0KLQotLypzdGF0aWMqLyBpbnQgVGlYbWxCYXNlOjpJc0FscGhhTnVtKCB1bnNpZ25lZCBjaGFyIGFueUJ5dGUsIFRpWG1sRW5jb2RpbmcgLyplbmNvZGluZyovICkKLXsKLQkvLyBUaGlzIHdpbGwgb25seSB3b3JrIGZvciBsb3ctYXNjaWksIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhc3N1bWVkIHRvIGJlIGEgdmFsaWQKLQkvLyBsZXR0ZXIuIEknbSBub3Qgc3VyZSB0aGlzIGlzIHRoZSBiZXN0IGFwcHJvYWNoLCBidXQgaXQgaXMgcXVpdGUgdHJpY2t5IHRyeWluZwotCS8vIHRvIGZpZ3VyZSBvdXQgYWxoYWJldGljYWwgdnMuIG5vdCBhY3Jvc3MgZW5jb2RpbmcuIFNvIHRha2UgYSB2ZXJ5IAotCS8vIGNvbnNlcnZhdGl2ZSBhcHByb2FjaC4KLQotLy8JaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKLS8vCXsKLQkJaWYgKCBhbnlCeXRlIDwgMTI3ICkKLQkJCXJldHVybiBpc2FsbnVtKCBhbnlCeXRlICk7Ci0JCWVsc2UKLQkJCXJldHVybiAxOwkvLyBXaGF0IGVsc2UgdG8gZG8/IFRoZSB1bmljb2RlIHNldCBpcyBodWdlLi4uZ2V0IHRoZSBlbmdsaXNoIG9uZXMgcmlnaHQuCi0vLwl9Ci0vLwllbHNlCi0vLwl7Ci0vLwkJcmV0dXJuIGlzYWxudW0oIGFueUJ5dGUgKTsKLS8vCX0KLX0KLQotCi1jbGFzcyBUaVhtbFBhcnNpbmdEYXRhCi17Ci0JZnJpZW5kIGNsYXNzIFRpWG1sRG9jdW1lbnQ7Ci0gIHB1YmxpYzoKLQl2b2lkIFN0YW1wKCBjb25zdCBjaGFyKiBub3csIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKTsKLQotCWNvbnN0IFRpWG1sQ3Vyc29yJiBDdXJzb3IoKQl7IHJldHVybiBjdXJzb3I7IH0KLQotICBwcml2YXRlOgotCS8vIE9ubHkgdXNlZCBieSB0aGUgZG9jdW1lbnQhCi0JVGlYbWxQYXJzaW5nRGF0YSggY29uc3QgY2hhciogc3RhcnQsIGludCBfdGFic2l6ZSwgaW50IHJvdywgaW50IGNvbCApCi0JewotCQlhc3NlcnQoIHN0YXJ0ICk7Ci0JCXN0YW1wID0gc3RhcnQ7Ci0JCXRhYnNpemUgPSBfdGFic2l6ZTsKLQkJY3Vyc29yLnJvdyA9IHJvdzsKLQkJY3Vyc29yLmNvbCA9IGNvbDsKLQl9Ci0KLQlUaVhtbEN1cnNvcgkJY3Vyc29yOwotCWNvbnN0IGNoYXIqCQlzdGFtcDsKLQlpbnQJCQkJdGFic2l6ZTsKLX07Ci0KLQotdm9pZCBUaVhtbFBhcnNpbmdEYXRhOjpTdGFtcCggY29uc3QgY2hhciogbm93LCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQlhc3NlcnQoIG5vdyApOwotCi0JLy8gRG8gbm90aGluZyBpZiB0aGUgdGFic2l6ZSBpcyAwLgotCWlmICggdGFic2l6ZSA8IDEgKQotCXsKLQkJcmV0dXJuOwotCX0KLQotCS8vIEdldCB0aGUgY3VycmVudCByb3csIGNvbHVtbi4KLQlpbnQgcm93ID0gY3Vyc29yLnJvdzsKLQlpbnQgY29sID0gY3Vyc29yLmNvbDsKLQljb25zdCBjaGFyKiBwID0gc3RhbXA7Ci0JYXNzZXJ0KCBwICk7Ci0KLQl3aGlsZSAoIHAgPCBub3cgKQotCXsKLQkJLy8gVHJlYXQgcCBhcyB1bnNpZ25lZCwgc28gd2UgaGF2ZSBhIGhhcHB5IGNvbXBpbGVyLgotCQljb25zdCB1bnNpZ25lZCBjaGFyKiBwVSA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilwOwotCi0JCS8vIENvZGUgY29udHJpYnV0ZWQgYnkgRmxldGNoZXIgRHVubjogKG1vZGlmaWVkIGJ5IGxlZSkKLQkJc3dpdGNoICgqcFUpIHsKLQkJCWNhc2UgMDoKLQkJCQkvLyBXZSAqc2hvdWxkKiBuZXZlciBnZXQgaGVyZSwgYnV0IGluIGNhc2Ugd2UgZG8sIGRvbid0Ci0JCQkJLy8gYWR2YW5jZSBwYXN0IHRoZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3RlciwgZXZlcgotCQkJCXJldHVybjsKLQotCQkJY2FzZSAnXHInOgotCQkJCS8vIGJ1bXAgZG93biB0byB0aGUgbmV4dCBsaW5lCi0JCQkJKytyb3c7Ci0JCQkJY29sID0gMDsJCQkJCi0JCQkJLy8gRWF0IHRoZSBjaGFyYWN0ZXIKLQkJCQkrK3A7Ci0KLQkJCQkvLyBDaGVjayBmb3IgXHJcbiBzZXF1ZW5jZSwgYW5kIHRyZWF0IHRoaXMgYXMgYSBzaW5nbGUgY2hhcmFjdGVyCi0JCQkJaWYgKCpwID09ICdcbicpIHsKLQkJCQkJKytwOwotCQkJCX0KLQkJCQlicmVhazsKLQotCQkJY2FzZSAnXG4nOgotCQkJCS8vIGJ1bXAgZG93biB0byB0aGUgbmV4dCBsaW5lCi0JCQkJKytyb3c7Ci0JCQkJY29sID0gMDsKLQotCQkJCS8vIEVhdCB0aGUgY2hhcmFjdGVyCi0JCQkJKytwOwotCi0JCQkJLy8gQ2hlY2sgZm9yIFxuXHIgc2VxdWVuY2UsIGFuZCB0cmVhdCB0aGlzIGFzIGEgc2luZ2xlCi0JCQkJLy8gY2hhcmFjdGVyLiAgKFllcywgdGhpcyBiaXphcnJlIHRoaW5nIGRvZXMgb2NjdXIgc3RpbGwKLQkJCQkvLyBvbiBzb21lIGFyY2FuZSBwbGF0Zm9ybXMuLi4pCi0JCQkJaWYgKCpwID09ICdccicpIHsKLQkJCQkJKytwOwotCQkJCX0KLQkJCQlicmVhazsKLQotCQkJY2FzZSAnXHQnOgotCQkJCS8vIEVhdCB0aGUgY2hhcmFjdGVyCi0JCQkJKytwOwotCi0JCQkJLy8gU2tpcCB0byBuZXh0IHRhYiBzdG9wCi0JCQkJY29sID0gKGNvbCAvIHRhYnNpemUgKyAxKSAqIHRhYnNpemU7Ci0JCQkJYnJlYWs7Ci0KLQkJCWNhc2UgVElYTUxfVVRGX0xFQURfMDoKLQkJCQlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQotCQkJCXsKLQkJCQkJaWYgKCAqKHArMSkgJiYgKihwKzIpICkKLQkJCQkJewotCQkJCQkJLy8gSW4gdGhlc2UgY2FzZXMsIGRvbid0IGFkdmFuY2UgdGhlIGNvbHVtbi4gVGhlc2UgYXJlCi0JCQkJCQkvLyAwLXdpZHRoIHNwYWNlcy4KLQkJCQkJCWlmICggKihwVSsxKT09VElYTUxfVVRGX0xFQURfMSAmJiAqKHBVKzIpPT1USVhNTF9VVEZfTEVBRF8yICkKLQkJCQkJCQlwICs9IDM7CQotCQkJCQkJZWxzZSBpZiAoICoocFUrMSk9PTB4YmZVICYmICoocFUrMik9PTB4YmVVICkKLQkJCQkJCQlwICs9IDM7CQotCQkJCQkJZWxzZSBpZiAoICoocFUrMSk9PTB4YmZVICYmICoocFUrMik9PTB4YmZVICkKLQkJCQkJCQlwICs9IDM7CQotCQkJCQkJZWxzZQotCQkJCQkJCXsgcCArPTM7ICsrY29sOyB9CS8vIEEgbm9ybWFsIGNoYXJhY3Rlci4KLQkJCQkJfQotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQkrK3A7Ci0JCQkJCSsrY29sOwotCQkJCX0KLQkJCQlicmVhazsKLQotCQkJZGVmYXVsdDoKLQkJCQlpZiAoIGVuY29kaW5nID09IFRJWE1MX0VOQ09ESU5HX1VURjggKQotCQkJCXsKLQkJCQkJLy8gRWF0IHRoZSAxIHRvIDQgYnl0ZSB1dGY4IGNoYXJhY3Rlci4KLQkJCQkJaW50IHN0ZXAgPSBUaVhtbEJhc2U6OnV0ZjhCeXRlVGFibGVbKigodW5zaWduZWQgY2hhciopcCldOwotCQkJCQlpZiAoIHN0ZXAgPT0gMCApCi0JCQkJCQlzdGVwID0gMTsJCS8vIEVycm9yIGNhc2UgZnJvbSBiYWQgZW5jb2RpbmcsIGJ1dCBoYW5kbGUgZ3JhY2VmdWxseS4KLQkJCQkJcCArPSBzdGVwOwotCi0JCQkJCS8vIEp1c3QgYWR2YW5jZSBvbmUgY29sdW1uLCBvZiBjb3Vyc2UuCi0JCQkJCSsrY29sOwotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQkrK3A7Ci0JCQkJCSsrY29sOwotCQkJCX0KLQkJCQlicmVhazsKLQkJfQotCX0KLQljdXJzb3Iucm93ID0gcm93OwotCWN1cnNvci5jb2wgPSBjb2w7Ci0JYXNzZXJ0KCBjdXJzb3Iucm93ID49IC0xICk7Ci0JYXNzZXJ0KCBjdXJzb3IuY29sID49IC0xICk7Ci0Jc3RhbXAgPSBwOwotCWFzc2VydCggc3RhbXAgKTsKLX0KLQotCi1jb25zdCBjaGFyKiBUaVhtbEJhc2U6OlNraXBXaGl0ZVNwYWNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQlpZiAoICFwIHx8ICEqcCApCi0JewotCQlyZXR1cm4gMDsKLQl9Ci0JaWYgKCBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VVEY4ICkKLQl7Ci0JCXdoaWxlICggKnAgKQotCQl7Ci0JCQljb25zdCB1bnNpZ25lZCBjaGFyKiBwVSA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilwOwotCQkJCi0JCQkvLyBTa2lwIHRoZSBzdHVwaWQgTWljcm9zb2Z0IFVURi04IEJ5dGUgb3JkZXIgbWFya3MKLQkJCWlmICgJKihwVSswKT09VElYTUxfVVRGX0xFQURfMAotCQkJCSAmJiAqKHBVKzEpPT1USVhNTF9VVEZfTEVBRF8xIAotCQkJCSAmJiAqKHBVKzIpPT1USVhNTF9VVEZfTEVBRF8yICkKLQkJCXsKLQkJCQlwICs9IDM7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0JCQllbHNlIGlmKCoocFUrMCk9PVRJWE1MX1VURl9MRUFEXzAKLQkJCQkgJiYgKihwVSsxKT09MHhiZlUKLQkJCQkgJiYgKihwVSsyKT09MHhiZVUgKQotCQkJewotCQkJCXAgKz0gMzsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJCWVsc2UgaWYoKihwVSswKT09VElYTUxfVVRGX0xFQURfMAotCQkJCSAmJiAqKHBVKzEpPT0weGJmVQotCQkJCSAmJiAqKHBVKzIpPT0weGJmVSApCi0JCQl7Ci0JCQkJcCArPSAzOwotCQkJCWNvbnRpbnVlOwotCQkJfQotCi0JCQlpZiAoIElzV2hpdGVTcGFjZSggKnAgKSB8fCAqcCA9PSAnXG4nIHx8ICpwID09J1xyJyApCQkvLyBTdGlsbCB1c2luZyBvbGQgcnVsZXMgZm9yIHdoaXRlIHNwYWNlLgotCQkJCSsrcDsKLQkJCWVsc2UKLQkJCQlicmVhazsKLQkJfQotCX0KLQllbHNlCi0JewotCQl3aGlsZSAoICpwICYmIElzV2hpdGVTcGFjZSggKnAgKSB8fCAqcCA9PSAnXG4nIHx8ICpwID09J1xyJyApCi0JCQkrK3A7Ci0JfQotCi0JcmV0dXJuIHA7Ci19Ci0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0vKnN0YXRpYyovIGJvb2wgVGlYbWxCYXNlOjpTdHJlYW1XaGl0ZVNwYWNlKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApCi17Ci0JZm9yKCA7OyApCi0JewotCQlpZiAoICFpbi0+Z29vZCgpICkgcmV0dXJuIGZhbHNlOwotCi0JCWludCBjID0gaW4tPnBlZWsoKTsKLQkJLy8gQXQgdGhpcyBzY29wZSwgd2UgY2FuJ3QgZ2V0IHRvIGEgZG9jdW1lbnQuIFNvIGZhaWwgc2lsZW50bHkuCi0JCWlmICggIUlzV2hpdGVTcGFjZSggYyApIHx8IGMgPD0gMCApCi0JCQlyZXR1cm4gdHJ1ZTsKLQotCQkqdGFnICs9IChjaGFyKSBpbi0+Z2V0KCk7Ci0JfQotfQotCi0vKnN0YXRpYyovIGJvb2wgVGlYbWxCYXNlOjpTdHJlYW1UbyggVElYTUxfSVNUUkVBTSAqIGluLCBpbnQgY2hhcmFjdGVyLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQotewotCS8vYXNzZXJ0KCBjaGFyYWN0ZXIgPiAwICYmIGNoYXJhY3RlciA8IDEyOCApOwkvLyBlbHNlIGl0IHdvbid0IHdvcmsgaW4gdXRmLTgKLQl3aGlsZSAoIGluLT5nb29kKCkgKQotCXsKLQkJaW50IGMgPSBpbi0+cGVlaygpOwotCQlpZiAoIGMgPT0gY2hhcmFjdGVyICkKLQkJCXJldHVybiB0cnVlOwotCQlpZiAoIGMgPD0gMCApCQkvLyBTaWxlbnQgZmFpbHVyZTogY2FuJ3QgZ2V0IGRvY3VtZW50IGF0IHRoaXMgc2NvcGUKLQkJCXJldHVybiBmYWxzZTsKLQotCQlpbi0+Z2V0KCk7Ci0JCSp0YWcgKz0gKGNoYXIpIGM7Ci0JfQotCXJldHVybiBmYWxzZTsKLX0KLSNlbmRpZgotCi1jb25zdCBjaGFyKiBUaVhtbEJhc2U6OlJlYWROYW1lKCBjb25zdCBjaGFyKiBwLCBUSVhNTF9TVFJJTkcgKiBuYW1lLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQkqbmFtZSA9ICIiOwotCWFzc2VydCggcCApOwotCi0JLy8gTmFtZXMgc3RhcnQgd2l0aCBsZXR0ZXJzIG9yIHVuZGVyc2NvcmVzLgotCS8vIE9mIGNvdXJzZSwgaW4gdW5pY29kZSwgdGlueXhtbCBoYXMgbm8gaWRlYSB3aGF0IGEgbGV0dGVyICppcyouIFRoZQotCS8vIGFsZ29yaXRobSBpcyBnZW5lcm91cy4KLQkvLwotCS8vIEFmdGVyIHRoYXQsIHRoZXkgY2FuIGJlIGxldHRlcnMsIHVuZGVyc2NvcmVzLCBudW1iZXJzLAotCS8vIGh5cGhlbnMsIG9yIGNvbG9ucy4gKENvbG9ucyBhcmUgdmFsaWQgb255IGZvciBuYW1lc3BhY2VzLAotCS8vIGJ1dCB0aW55eG1sIGNhbid0IHRlbGwgbmFtZXNwYWNlcyBmcm9tIG5hbWVzLikKLQlpZiAoICAgIHAgJiYgKnAgCi0JCSAmJiAoIElzQWxwaGEoICh1bnNpZ25lZCBjaGFyKSAqcCwgZW5jb2RpbmcgKSB8fCAqcCA9PSAnXycgKSApCi0JewotCQl3aGlsZSgJCXAgJiYgKnAKLQkJCQkmJgkoCQlJc0FscGhhTnVtKCAodW5zaWduZWQgY2hhciApICpwLCBlbmNvZGluZyApIAotCQkJCQkJIHx8ICpwID09ICdfJwotCQkJCQkJIHx8ICpwID09ICctJwotCQkJCQkJIHx8ICpwID09ICcuJwotCQkJCQkJIHx8ICpwID09ICc6JyApICkKLQkJewotCQkJKCpuYW1lKSArPSAqcDsKLQkJCSsrcDsKLQkJfQotCQlyZXR1cm4gcDsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLWNvbnN0IGNoYXIqIFRpWG1sQmFzZTo6R2V0RW50aXR5KCBjb25zdCBjaGFyKiBwLCBjaGFyKiB2YWx1ZSwgaW50KiBsZW5ndGgsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQotewotCS8vIFByZXN1bWUgYW4gZW50aXR5LCBhbmQgcHVsbCBpdCBvdXQuCi0gICAgVElYTUxfU1RSSU5HIGVudDsKLQlpbnQgaTsKLQkqbGVuZ3RoID0gMDsKLQotCWlmICggKihwKzEpICYmICoocCsxKSA9PSAnIycgJiYgKihwKzIpICkKLQl7Ci0JCXVuc2lnbmVkIGxvbmcgdWNzID0gMDsKLQkJcHRyZGlmZl90IGRlbHRhID0gMDsKLQkJdW5zaWduZWQgbXVsdCA9IDE7Ci0KLQkJaWYgKCAqKHArMikgPT0gJ3gnICkKLQkJewotCQkJLy8gSGV4YWRlY2ltYWwuCi0JCQlpZiAoICEqKHArMykgKSByZXR1cm4gMDsKLQotCQkJY29uc3QgY2hhciogcSA9IHArMzsKLQkJCXEgPSBzdHJjaHIoIHEsICc7JyApOwotCi0JCQlpZiAoICFxIHx8ICEqcSApIHJldHVybiAwOwotCi0JCQlkZWx0YSA9IHEtcDsKLQkJCS0tcTsKLQotCQkJd2hpbGUgKCAqcSAhPSAneCcgKQotCQkJewotCQkJCWlmICggKnEgPj0gJzAnICYmICpxIDw9ICc5JyApCi0JCQkJCXVjcyArPSBtdWx0ICogKCpxIC0gJzAnKTsKLQkJCQllbHNlIGlmICggKnEgPj0gJ2EnICYmICpxIDw9ICdmJyApCi0JCQkJCXVjcyArPSBtdWx0ICogKCpxIC0gJ2EnICsgMTApOwotCQkJCWVsc2UgaWYgKCAqcSA+PSAnQScgJiYgKnEgPD0gJ0YnICkKLQkJCQkJdWNzICs9IG11bHQgKiAoKnEgLSAnQScgKyAxMCApOwotCQkJCWVsc2UgCi0JCQkJCXJldHVybiAwOwotCQkJCW11bHQgKj0gMTY7Ci0JCQkJLS1xOwotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewotCQkJLy8gRGVjaW1hbC4KLQkJCWlmICggISoocCsyKSApIHJldHVybiAwOwotCi0JCQljb25zdCBjaGFyKiBxID0gcCsyOwotCQkJcSA9IHN0cmNociggcSwgJzsnICk7Ci0KLQkJCWlmICggIXEgfHwgISpxICkgcmV0dXJuIDA7Ci0KLQkJCWRlbHRhID0gcS1wOwotCQkJLS1xOwotCi0JCQl3aGlsZSAoICpxICE9ICcjJyApCi0JCQl7Ci0JCQkJaWYgKCAqcSA+PSAnMCcgJiYgKnEgPD0gJzknICkKLQkJCQkJdWNzICs9IG11bHQgKiAoKnEgLSAnMCcpOwotCQkJCWVsc2UgCi0JCQkJCXJldHVybiAwOwotCQkJCW11bHQgKj0gMTA7Ci0JCQkJLS1xOwotCQkJfQotCQl9Ci0JCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVVRGOCApCi0JCXsKLQkJCS8vIGNvbnZlcnQgdGhlIFVDUyB0byBVVEYtOAotCQkJQ29udmVydFVURjMyVG9VVEY4KCB1Y3MsIHZhbHVlLCBsZW5ndGggKTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCSp2YWx1ZSA9IChjaGFyKXVjczsKLQkJCSpsZW5ndGggPSAxOwotCQl9Ci0JCXJldHVybiBwICsgZGVsdGEgKyAxOwotCX0KLQotCS8vIE5vdyB0cnkgdG8gbWF0Y2ggaXQuCi0JZm9yKCBpPTA7IGk8TlVNX0VOVElUWTsgKytpICkKLQl7Ci0JCWlmICggc3RybmNtcCggZW50aXR5W2ldLnN0ciwgcCwgZW50aXR5W2ldLnN0ckxlbmd0aCApID09IDAgKQotCQl7Ci0JCQlhc3NlcnQoIHN0cmxlbiggZW50aXR5W2ldLnN0ciApID09IGVudGl0eVtpXS5zdHJMZW5ndGggKTsKLQkJCSp2YWx1ZSA9IGVudGl0eVtpXS5jaHI7Ci0JCQkqbGVuZ3RoID0gMTsKLQkJCXJldHVybiAoIHAgKyBlbnRpdHlbaV0uc3RyTGVuZ3RoICk7Ci0JCX0KLQl9Ci0KLQkvLyBTbyBpdCB3YXNuJ3QgYW4gZW50aXR5LCBpdHMgdW5yZWNvZ25pemVkLCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LgotCSp2YWx1ZSA9ICpwOwkvLyBEb24ndCBwdXQgYmFjayB0aGUgbGFzdCBvbmUsIHNpbmNlIHdlIHJldHVybiBpdCEKLQlyZXR1cm4gcCsxOwotfQotCi0KLWJvb2wgVGlYbWxCYXNlOjpTdHJpbmdFcXVhbCggY29uc3QgY2hhciogcCwKLQkJCQkJCQkgY29uc3QgY2hhciogdGFnLAotCQkJCQkJCSBib29sIGlnbm9yZUNhc2UsCi0JCQkJCQkJIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQotewotCWFzc2VydCggcCApOwotCWFzc2VydCggdGFnICk7Ci0JaWYgKCAhcCB8fCAhKnAgKQotCXsKLQkJYXNzZXJ0KCAwICk7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQljb25zdCBjaGFyKiBxID0gcDsKLQotCWlmICggaWdub3JlQ2FzZSApCi0JewotCQl3aGlsZSAoICpxICYmICp0YWcgJiYgVG9Mb3dlciggKnEsIGVuY29kaW5nICkgPT0gVG9Mb3dlciggKnRhZywgZW5jb2RpbmcgKSApCi0JCXsKLQkJCSsrcTsKLQkJCSsrdGFnOwotCQl9Ci0KLQkJaWYgKCAqdGFnID09IDAgKQotCQkJcmV0dXJuIHRydWU7Ci0JfQotCWVsc2UKLQl7Ci0JCXdoaWxlICggKnEgJiYgKnRhZyAmJiAqcSA9PSAqdGFnICkKLQkJewotCQkJKytxOwotCQkJKyt0YWc7Ci0JCX0KLQotCQlpZiAoICp0YWcgPT0gMCApCQkvLyBIYXZlIHdlIGZvdW5kIHRoZSBlbmQgb2YgdGhlIHRhZywgYW5kIGV2ZXJ5dGhpbmcgZXF1YWw/Ci0JCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0JcmV0dXJuIGZhbHNlOwotfQotCi1jb25zdCBjaGFyKiBUaVhtbEJhc2U6OlJlYWRUZXh0KAljb25zdCBjaGFyKiBwLCAKLQkJCQkJCQkJCVRJWE1MX1NUUklORyAqIHRleHQsIAotCQkJCQkJCQkJYm9vbCB0cmltV2hpdGVTcGFjZSwgCi0JCQkJCQkJCQljb25zdCBjaGFyKiBlbmRUYWcsIAotCQkJCQkJCQkJYm9vbCBjYXNlSW5zZW5zaXRpdmUsCi0JCQkJCQkJCQlUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLSAgICAqdGV4dCA9ICIiOwotCWlmICggICAgIXRyaW1XaGl0ZVNwYWNlCQkJLy8gY2VydGFpbiB0YWdzIGFsd2F5cyBrZWVwIHdoaXRlc3BhY2UKLQkJIHx8ICFjb25kZW5zZVdoaXRlU3BhY2UgKQkvLyBpZiB0cnVlLCB3aGl0ZXNwYWNlIGlzIGFsd2F5cyBrZXB0Ci0JewotCQkvLyBLZWVwIGFsbCB0aGUgd2hpdGUgc3BhY2UuCi0JCXdoaWxlICgJICAgcCAmJiAqcAotCQkJCSYmICFTdHJpbmdFcXVhbCggcCwgZW5kVGFnLCBjYXNlSW5zZW5zaXRpdmUsIGVuY29kaW5nICkKLQkJCSAgKQotCQl7Ci0JCQlpbnQgbGVuOwotCQkJY2hhciBjQXJyWzRdID0geyAwLCAwLCAwLCAwIH07Ci0JCQlwID0gR2V0Q2hhciggcCwgY0FyciwgJmxlbiwgZW5jb2RpbmcgKTsKLQkJCXRleHQtPmFwcGVuZCggY0FyciwgbGVuICk7Ci0JCX0KLQl9Ci0JZWxzZQotCXsKLQkJYm9vbCB3aGl0ZXNwYWNlID0gZmFsc2U7Ci0KLQkJLy8gUmVtb3ZlIGxlYWRpbmcgd2hpdGUgc3BhY2U6Ci0JCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQkJd2hpbGUgKAkgICBwICYmICpwCi0JCQkJJiYgIVN0cmluZ0VxdWFsKCBwLCBlbmRUYWcsIGNhc2VJbnNlbnNpdGl2ZSwgZW5jb2RpbmcgKSApCi0JCXsKLQkJCWlmICggKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXG4nICkKLQkJCXsKLQkJCQl3aGl0ZXNwYWNlID0gdHJ1ZTsKLQkJCQkrK3A7Ci0JCQl9Ci0JCQllbHNlIGlmICggSXNXaGl0ZVNwYWNlKCAqcCApICkKLQkJCXsKLQkJCQl3aGl0ZXNwYWNlID0gdHJ1ZTsKLQkJCQkrK3A7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLy8gSWYgd2UndmUgZm91bmQgd2hpdGVzcGFjZSwgYWRkIGl0IGJlZm9yZSB0aGUKLQkJCQkvLyBuZXcgY2hhcmFjdGVyLiBBbnkgd2hpdGVzcGFjZSBqdXN0IGJlY29tZXMgYSBzcGFjZS4KLQkJCQlpZiAoIHdoaXRlc3BhY2UgKQotCQkJCXsKLQkJCQkJKCp0ZXh0KSArPSAnICc7Ci0JCQkJCXdoaXRlc3BhY2UgPSBmYWxzZTsKLQkJCQl9Ci0JCQkJaW50IGxlbjsKLQkJCQljaGFyIGNBcnJbNF0gPSB7IDAsIDAsIDAsIDAgfTsKLQkJCQlwID0gR2V0Q2hhciggcCwgY0FyciwgJmxlbiwgZW5jb2RpbmcgKTsKLQkJCQlpZiAoIGxlbiA9PSAxICkKLQkJCQkJKCp0ZXh0KSArPSBjQXJyWzBdOwkvLyBtb3JlIGVmZmljaWVudAotCQkJCWVsc2UKLQkJCQkJdGV4dC0+YXBwZW5kKCBjQXJyLCBsZW4gKTsKLQkJCX0KLQkJfQotCX0KLQlyZXR1cm4gcCArIHN0cmxlbiggZW5kVGFnICk7Ci19Ci0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0KLXZvaWQgVGlYbWxEb2N1bWVudDo6U3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICkKLXsKLQkvLyBUaGUgYmFzaWMgaXNzdWUgd2l0aCBhIGRvY3VtZW50IGlzIHRoYXQgd2UgZG9uJ3Qga25vdyB3aGF0IHdlJ3JlCi0JLy8gc3RyZWFtaW5nLiBSZWFkIHNvbWV0aGluZyBwcmVzdW1lZCB0byBiZSBhIHRhZyAoYW5kIGhvcGUpLCB0aGVuCi0JLy8gaWRlbnRpZnkgaXQsIGFuZCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBzdHJlYW0gbWV0aG9kIG9uIHRoZSB0YWcuCi0JLy8KLQkvLyBUaGlzICJwcmUtc3RyZWFtaW5nIiB3aWxsIG5ldmVyIHJlYWQgdGhlIGNsb3NpbmcgIj4iIHNvIHRoZQotCS8vIHN1Yi10YWcgY2FuIG9yaWVudCBpdHNlbGYuCi0KLQlpZiAoICFTdHJlYW1UbyggaW4sICc8JywgdGFnICkgKSAKLQl7Ci0JCVNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Ci0JCXJldHVybjsKLQl9Ci0KLQl3aGlsZSAoIGluLT5nb29kKCkgKQotCXsKLQkJaW50IHRhZ0luZGV4ID0gKGludCkgdGFnLT5sZW5ndGgoKTsKLQkJd2hpbGUgKCBpbi0+Z29vZCgpICYmIGluLT5wZWVrKCkgIT0gJz4nICkKLQkJewotCQkJaW50IGMgPSBpbi0+Z2V0KCk7Ci0JCQlpZiAoIGMgPD0gMCApCi0JCQl7Ci0JCQkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKLQkJCQlicmVhazsKLQkJCX0KLQkJCSgqdGFnKSArPSAoY2hhcikgYzsKLQkJfQotCi0JCWlmICggaW4tPmdvb2QoKSApCi0JCXsKLQkJCS8vIFdlIG5vdyBoYXZlIHNvbWV0aGluZyB3ZSBwcmVzdW1lIHRvIGJlIGEgbm9kZSBvZiAKLQkJCS8vIHNvbWUgc29ydC4gSWRlbnRpZnkgaXQsIGFuZCBjYWxsIHRoZSBub2RlIHRvCi0JCQkvLyBjb250aW51ZSBzdHJlYW1pbmcuCi0JCQlUaVhtbE5vZGUqIG5vZGUgPSBJZGVudGlmeSggdGFnLT5jX3N0cigpICsgdGFnSW5kZXgsIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKLQotCQkJaWYgKCBub2RlICkKLQkJCXsKLQkJCQlub2RlLT5TdHJlYW1JbiggaW4sIHRhZyApOwotCQkJCWJvb2wgaXNFbGVtZW50ID0gbm9kZS0+VG9FbGVtZW50KCkgIT0gMDsKLQkJCQlkZWxldGUgbm9kZTsKLQkJCQlub2RlID0gMDsKLQotCQkJCS8vIElmIHRoaXMgaXMgdGhlIHJvb3QgZWxlbWVudCwgd2UncmUgZG9uZS4gUGFyc2luZyB3aWxsIGJlCi0JCQkJLy8gZG9uZSBieSB0aGUgPj4gb3BlcmF0b3IuCi0JCQkJaWYgKCBpc0VsZW1lbnQgKQotCQkJCXsKLQkJCQkJcmV0dXJuOwotCQkJCX0KLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQlTZXRFcnJvciggVElYTUxfRVJST1IsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKLQkJCQlyZXR1cm47Ci0JCQl9Ci0JCX0KLQl9Ci0JLy8gV2Ugc2hvdWxkIGhhdmUgcmV0dXJuZWQgc29vbmVyLgotCVNldEVycm9yKCBUSVhNTF9FUlJPUiwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotfQotCi0jZW5kaWYKLQotY29uc3QgY2hhciogVGlYbWxEb2N1bWVudDo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIHByZXZEYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQlDbGVhckVycm9yKCk7Ci0KLQkvLyBQYXJzZSBhd2F5LCBhdCB0aGUgZG9jdW1lbnQgbGV2ZWwuIFNpbmNlIGEgZG9jdW1lbnQKLQkvLyBjb250YWlucyBub3RoaW5nIGJ1dCBvdGhlciB0YWdzLCBtb3N0IG9mIHdoYXQgaGFwcGVucwotCS8vIGhlcmUgaXMgc2tpcHBpbmcgd2hpdGUgc3BhY2UuCi0JaWYgKCAhcCB8fCAhKnAgKQotCXsKLQkJU2V0RXJyb3IoIFRJWE1MX0VSUk9SX0RPQ1VNRU5UX0VNUFRZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Ci0JCXJldHVybiAwOwotCX0KLQotCS8vIE5vdGUgdGhhdCwgZm9yIGEgZG9jdW1lbnQsIHRoaXMgbmVlZHMgdG8gY29tZQotCS8vIGJlZm9yZSB0aGUgd2hpbGUgc3BhY2Ugc2tpcCwgc28gdGhhdCBwYXJzaW5nCi0JLy8gc3RhcnRzIGZyb20gdGhlIHBvaW50ZXIgd2UgYXJlIGdpdmVuLgotCWxvY2F0aW9uLkNsZWFyKCk7Ci0JaWYgKCBwcmV2RGF0YSApCi0JewotCQlsb2NhdGlvbi5yb3cgPSBwcmV2RGF0YS0+Y3Vyc29yLnJvdzsKLQkJbG9jYXRpb24uY29sID0gcHJldkRhdGEtPmN1cnNvci5jb2w7Ci0JfQotCWVsc2UKLQl7Ci0JCWxvY2F0aW9uLnJvdyA9IDA7Ci0JCWxvY2F0aW9uLmNvbCA9IDA7Ci0JfQotCVRpWG1sUGFyc2luZ0RhdGEgZGF0YSggcCwgVGFiU2l6ZSgpLCBsb2NhdGlvbi5yb3csIGxvY2F0aW9uLmNvbCApOwotCWxvY2F0aW9uID0gZGF0YS5DdXJzb3IoKTsKLQotCWlmICggZW5jb2RpbmcgPT0gVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApCi0JewotCQkvLyBDaGVjayBmb3IgdGhlIE1pY3Jvc29mdCBVVEYtOCBsZWFkIGJ5dGVzLgotCQljb25zdCB1bnNpZ25lZCBjaGFyKiBwVSA9IChjb25zdCB1bnNpZ25lZCBjaGFyKilwOwotCQlpZiAoCSoocFUrMCkgJiYgKihwVSswKSA9PSBUSVhNTF9VVEZfTEVBRF8wCi0JCQkgJiYgKihwVSsxKSAmJiAqKHBVKzEpID09IFRJWE1MX1VURl9MRUFEXzEKLQkJCSAmJiAqKHBVKzIpICYmICoocFUrMikgPT0gVElYTUxfVVRGX0xFQURfMiApCi0JCXsKLQkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfVVRGODsKLQkJCXVzZU1pY3Jvc29mdEJPTSA9IHRydWU7Ci0JCX0KLQl9Ci0KLSAgICBwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7Ci0JaWYgKCAhcCApCi0JewotCQlTZXRFcnJvciggVElYTUxfRVJST1JfRE9DVU1FTlRfRU1QVFksIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0Jd2hpbGUgKCBwICYmICpwICkKLQl7Ci0JCVRpWG1sTm9kZSogbm9kZSA9IElkZW50aWZ5KCBwLCBlbmNvZGluZyApOwotCQlpZiAoIG5vZGUgKQotCQl7Ci0JCQlwID0gbm9kZS0+UGFyc2UoIHAsICZkYXRhLCBlbmNvZGluZyApOwotCQkJTGlua0VuZENoaWxkKCBub2RlICk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlicmVhazsKLQkJfQotCi0JCS8vIERpZCB3ZSBnZXQgZW5jb2RpbmcgaW5mbz8KLQkJaWYgKCAgICBlbmNvZGluZyA9PSBUSVhNTF9FTkNPRElOR19VTktOT1dOCi0JCQkgJiYgbm9kZS0+VG9EZWNsYXJhdGlvbigpICkKLQkJewotCQkJVGlYbWxEZWNsYXJhdGlvbiogZGVjID0gbm9kZS0+VG9EZWNsYXJhdGlvbigpOwotCQkJY29uc3QgY2hhciogZW5jID0gZGVjLT5FbmNvZGluZygpOwotCQkJYXNzZXJ0KCBlbmMgKTsKLQotCQkJaWYgKCAqZW5jID09IDAgKQotCQkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfVVRGODsKLQkJCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggZW5jLCAiVVRGLTgiLCB0cnVlLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICkgKQotCQkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfVVRGODsKLQkJCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggZW5jLCAiVVRGOCIsIHRydWUsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKSApCi0JCQkJZW5jb2RpbmcgPSBUSVhNTF9FTkNPRElOR19VVEY4OwkvLyBpbmNvcnJlY3QsIGJ1dCBiZSBuaWNlCi0JCQllbHNlIAotCQkJCWVuY29kaW5nID0gVElYTUxfRU5DT0RJTkdfTEVHQUNZOwotCQl9Ci0KLQkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOwotCX0KLQotCS8vIFdhcyB0aGlzIGVtcHR5PwotCWlmICggIWZpcnN0Q2hpbGQgKSB7Ci0JCVNldEVycm9yKCBUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSwgMCwgMCwgZW5jb2RpbmcgKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JLy8gQWxsIGlzIHdlbGwuCi0JcmV0dXJuIHA7Ci19Ci0KLXZvaWQgVGlYbWxEb2N1bWVudDo6U2V0RXJyb3IoIGludCBlcnIsIGNvbnN0IGNoYXIqIHBFcnJvciwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCi17CQotCS8vIFRoZSBmaXJzdCBlcnJvciBpbiBhIGNoYWluIGlzIG1vcmUgYWNjdXJhdGUgLSBkb24ndCBzZXQgYWdhaW4hCi0JaWYgKCBlcnJvciApCi0JCXJldHVybjsKLQotCWFzc2VydCggZXJyID4gMCAmJiBlcnIgPCBUSVhNTF9FUlJPUl9TVFJJTkdfQ09VTlQgKTsKLQllcnJvciAgID0gdHJ1ZTsKLQllcnJvcklkID0gZXJyOwotCWVycm9yRGVzYyA9IGVycm9yU3RyaW5nWyBlcnJvcklkIF07Ci0KLQllcnJvckxvY2F0aW9uLkNsZWFyKCk7Ci0JaWYgKCBwRXJyb3IgJiYgZGF0YSApCi0JewotCQlkYXRhLT5TdGFtcCggcEVycm9yLCBlbmNvZGluZyApOwotCQllcnJvckxvY2F0aW9uID0gZGF0YS0+Q3Vyc29yKCk7Ci0JfQotfQotCi0KLVRpWG1sTm9kZSogVGlYbWxOb2RlOjpJZGVudGlmeSggY29uc3QgY2hhciogcCwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCi17Ci0JVGlYbWxOb2RlKiByZXR1cm5Ob2RlID0gMDsKLQotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQlpZiggIXAgfHwgISpwIHx8ICpwICE9ICc8JyApCi0JewotCQlyZXR1cm4gMDsKLQl9Ci0KLQlUaVhtbERvY3VtZW50KiBkb2MgPSBHZXREb2N1bWVudCgpOwotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQotCWlmICggIXAgfHwgISpwICkKLQl7Ci0JCXJldHVybiAwOwotCX0KLQotCS8vIFdoYXQgaXMgdGhpcyB0aGluZz8gCi0JLy8gLSBFbGVtZW50cyBzdGFydCB3aXRoIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmUsIGJ1dCB4bWwgaXMgcmVzZXJ2ZWQuCi0JLy8gLSBDb21tZW50czogPCEtLQotCS8vIC0gRGVjbGVyYXRpb246IDw/eG1sCi0JLy8gLSBFdmVydGhpbmcgZWxzZSBpcyB1bmtub3duIHRvIHRpbnl4bWwuCi0JLy8KLQotCWNvbnN0IGNoYXIqIHhtbEhlYWRlciA9IHsgIjw/eG1sIiB9OwotCWNvbnN0IGNoYXIqIGNvbW1lbnRIZWFkZXIgPSB7ICI8IS0tIiB9OwotCWNvbnN0IGNoYXIqIGR0ZEhlYWRlciA9IHsgIjwhIiB9OwotCWNvbnN0IGNoYXIqIGNkYXRhSGVhZGVyID0geyAiPCFbQ0RBVEFbIiB9OwotCi0JaWYgKCBTdHJpbmdFcXVhbCggcCwgeG1sSGVhZGVyLCB0cnVlLCBlbmNvZGluZyApICkKLQl7Ci0JCSNpZmRlZiBERUJVR19QQVJTRVIKLQkJCVRJWE1MX0xPRyggIlhNTCBwYXJzaW5nIERlY2xhcmF0aW9uXG4iICk7Ci0JCSNlbmRpZgotCQlyZXR1cm5Ob2RlID0gbmV3IFRpWG1sRGVjbGFyYXRpb24oKTsKLQl9Ci0JZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBwLCBjb21tZW50SGVhZGVyLCBmYWxzZSwgZW5jb2RpbmcgKSApCi0JewotCQkjaWZkZWYgREVCVUdfUEFSU0VSCi0JCQlUSVhNTF9MT0coICJYTUwgcGFyc2luZyBDb21tZW50XG4iICk7Ci0JCSNlbmRpZgotCQlyZXR1cm5Ob2RlID0gbmV3IFRpWG1sQ29tbWVudCgpOwotCX0KLQllbHNlIGlmICggU3RyaW5nRXF1YWwoIHAsIGNkYXRhSGVhZGVyLCBmYWxzZSwgZW5jb2RpbmcgKSApCi0JewotCQkjaWZkZWYgREVCVUdfUEFSU0VSCi0JCQlUSVhNTF9MT0coICJYTUwgcGFyc2luZyBDREFUQVxuIiApOwotCQkjZW5kaWYKLQkJVGlYbWxUZXh0KiB0ZXh0ID0gbmV3IFRpWG1sVGV4dCggIiIgKTsKLQkJdGV4dC0+U2V0Q0RBVEEoIHRydWUgKTsKLQkJcmV0dXJuTm9kZSA9IHRleHQ7Ci0JfQotCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggcCwgZHRkSGVhZGVyLCBmYWxzZSwgZW5jb2RpbmcgKSApCi0JewotCQkjaWZkZWYgREVCVUdfUEFSU0VSCi0JCQlUSVhNTF9MT0coICJYTUwgcGFyc2luZyBVbmtub3duKDEpXG4iICk7Ci0JCSNlbmRpZgotCQlyZXR1cm5Ob2RlID0gbmV3IFRpWG1sVW5rbm93bigpOwotCX0KLQllbHNlIGlmICggICAgSXNBbHBoYSggKihwKzEpLCBlbmNvZGluZyApCi0JCQkgIHx8ICoocCsxKSA9PSAnXycgKQotCXsKLQkJI2lmZGVmIERFQlVHX1BBUlNFUgotCQkJVElYTUxfTE9HKCAiWE1MIHBhcnNpbmcgRWxlbWVudFxuIiApOwotCQkjZW5kaWYKLQkJcmV0dXJuTm9kZSA9IG5ldyBUaVhtbEVsZW1lbnQoICIiICk7Ci0JfQotCWVsc2UKLQl7Ci0JCSNpZmRlZiBERUJVR19QQVJTRVIKLQkJCVRJWE1MX0xPRyggIlhNTCBwYXJzaW5nIFVua25vd24oMilcbiIgKTsKLQkJI2VuZGlmCi0JCXJldHVybk5vZGUgPSBuZXcgVGlYbWxVbmtub3duKCk7Ci0JfQotCi0JaWYgKCByZXR1cm5Ob2RlICkKLQl7Ci0JCS8vIFNldCB0aGUgcGFyZW50LCBzbyBpdCBjYW4gcmVwb3J0IGVycm9ycwotCQlyZXR1cm5Ob2RlLT5wYXJlbnQgPSB0aGlzOwotCX0KLQllbHNlCi0JewotCQlpZiAoIGRvYyApCi0JCQlkb2MtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9PVVRfT0ZfTUVNT1JZLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Ci0JfQotCXJldHVybiByZXR1cm5Ob2RlOwotfQotCi0jaWZkZWYgVElYTUxfVVNFX1NUTAotCi12b2lkIFRpWG1sRWxlbWVudDo6U3RyZWFtSW4gKFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnKQotewotCS8vIFdlJ3JlIGNhbGxlZCB3aXRoIHNvbWUgYW1vdW50IG9mIHByZS1wYXJzaW5nLiBUaGF0IGlzLCBzb21lIG9mICJ0aGlzIgotCS8vIGVsZW1lbnQgaXMgaW4gInRhZyIuIEdvIGFoZWFkIGFuZCBzdHJlYW0gdG8gdGhlIGNsb3NpbmcgIj4iCi0Jd2hpbGUoIGluLT5nb29kKCkgKQotCXsKLQkJaW50IGMgPSBpbi0+Z2V0KCk7Ci0JCWlmICggYyA8PSAwICkKLQkJewotCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOwotCQkJaWYgKCBkb2N1bWVudCApCi0JCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJKCp0YWcpICs9IChjaGFyKSBjIDsKLQkJCi0JCWlmICggYyA9PSAnPicgKQotCQkJYnJlYWs7Ci0JfQotCi0JaWYgKCB0YWctPmxlbmd0aCgpIDwgMyApIHJldHVybjsKLQotCS8vIE9rYXkuLi5pZiB3ZSBhcmUgYSAiLz4iIHRhZywgdGhlbiB3ZSdyZSBkb25lLiBXZSd2ZSByZWFkIGEgY29tcGxldGUgdGFnLgotCS8vIElmIG5vdCwgaWRlbnRpZnkgYW5kIHN0cmVhbS4KLQotCWlmICggICAgdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDEgKSA9PSAnPicgCi0JCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMiApID09ICcvJyApCi0JewotCQkvLyBBbGwgZ29vZCEKLQkJcmV0dXJuOwotCX0KLQllbHNlIGlmICggdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDEgKSA9PSAnPicgKQotCXsKLQkJLy8gVGhlcmUgaXMgbW9yZS4gQ291bGQgYmU6Ci0JCS8vCQl0ZXh0Ci0JCS8vCQljbG9zaW5nIHRhZwotCQkvLwkJYW5vdGhlciBub2RlLgotCQlmb3IgKCA7OyApCi0JCXsKLQkJCVN0cmVhbVdoaXRlU3BhY2UoIGluLCB0YWcgKTsKLQotCQkJLy8gRG8gd2UgaGF2ZSB0ZXh0PwotCQkJaWYgKCBpbi0+Z29vZCgpICYmIGluLT5wZWVrKCkgIT0gJzwnICkgCi0JCQl7Ci0JCQkJLy8gWWVwLCB0ZXh0LgotCQkJCVRpWG1sVGV4dCB0ZXh0KCAiIiApOwotCQkJCXRleHQuU3RyZWFtSW4oIGluLCB0YWcgKTsKLQotCQkJCS8vIFdoYXQgZm9sbG93cyB0ZXh0IGlzIGEgY2xvc2luZyB0YWcgb3IgYW5vdGhlciBub2RlLgotCQkJCS8vIEdvIGFyb3VuZCBhZ2FpbiBhbmQgZmlndXJlIGl0IG91dC4KLQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJLy8gV2Ugbm93IGhhdmUgZWl0aGVyIGEgY2xvc2luZyB0YWcuLi5vciBhbm90aGVyIG5vZGUuCi0JCQkvLyBXZSBzaG91bGQgYmUgYXQgYSAiPCIsIHJlZ2FyZGxlc3MuCi0JCQlpZiAoICFpbi0+Z29vZCgpICkgcmV0dXJuOwotCQkJYXNzZXJ0KCBpbi0+cGVlaygpID09ICc8JyApOwotCQkJaW50IHRhZ0luZGV4ID0gKGludCkgdGFnLT5sZW5ndGgoKTsKLQotCQkJYm9vbCBjbG9zaW5nVGFnID0gZmFsc2U7Ci0JCQlib29sIGZpcnN0Q2hhckZvdW5kID0gZmFsc2U7Ci0KLQkJCWZvciggOzsgKQotCQkJewotCQkJCWlmICggIWluLT5nb29kKCkgKQotCQkJCQlyZXR1cm47Ci0KLQkJCQlpbnQgYyA9IGluLT5wZWVrKCk7Ci0JCQkJaWYgKCBjIDw9IDAgKQotCQkJCXsKLQkJCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOwotCQkJCQlpZiAoIGRvY3VtZW50ICkKLQkJCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQkJCQlyZXR1cm47Ci0JCQkJfQotCQkJCQotCQkJCWlmICggYyA9PSAnPicgKQotCQkJCQlicmVhazsKLQotCQkJCSp0YWcgKz0gKGNoYXIpIGM7Ci0JCQkJaW4tPmdldCgpOwotCi0JCQkJaWYgKCAhZmlyc3RDaGFyRm91bmQgJiYgYyAhPSAnPCcgJiYgIUlzV2hpdGVTcGFjZSggYyApICkKLQkJCQl7Ci0JCQkJCWZpcnN0Q2hhckZvdW5kID0gdHJ1ZTsKLQkJCQkJaWYgKCBjID09ICcvJyApCi0JCQkJCQljbG9zaW5nVGFnID0gdHJ1ZTsKLQkJCQl9Ci0JCQl9Ci0JCQkvLyBJZiBpdCB3YXMgYSBjbG9zaW5nIHRhZywgdGhlbiByZWFkIGluIHRoZSBjbG9zaW5nICc+JyB0byBjbGVhbiB1cCB0aGUgaW5wdXQgc3RyZWFtLgotCQkJLy8gSWYgaXQgd2FzIG5vdCwgdGhlIHN0cmVhbWluZyB3aWxsIGJlIGRvbmUgYnkgdGhlIHRhZy4KLQkJCWlmICggY2xvc2luZ1RhZyApCi0JCQl7Ci0JCQkJaWYgKCAhaW4tPmdvb2QoKSApCi0JCQkJCXJldHVybjsKLQotCQkJCWludCBjID0gaW4tPmdldCgpOwotCQkJCWlmICggYyA8PSAwICkKLQkJCQl7Ci0JCQkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKLQkJCQkJaWYgKCBkb2N1bWVudCApCi0JCQkJCQlkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX0VNQkVEREVEX05VTEwsIDAsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKLQkJCQkJcmV0dXJuOwotCQkJCX0KLQkJCQlhc3NlcnQoIGMgPT0gJz4nICk7Ci0JCQkJKnRhZyArPSAoY2hhcikgYzsKLQotCQkJCS8vIFdlIGFyZSBkb25lLCBvbmNlIHdlJ3ZlIGZvdW5kIG91ciBjbG9zaW5nIHRhZy4KLQkJCQlyZXR1cm47Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLy8gSWYgbm90IGEgY2xvc2luZyB0YWcsIGlkIGl0LCBhbmQgc3RyZWFtLgotCQkJCWNvbnN0IGNoYXIqIHRhZ2xvYyA9IHRhZy0+Y19zdHIoKSArIHRhZ0luZGV4OwotCQkJCVRpWG1sTm9kZSogbm9kZSA9IElkZW50aWZ5KCB0YWdsb2MsIFRJWE1MX0RFRkFVTFRfRU5DT0RJTkcgKTsKLQkJCQlpZiAoICFub2RlICkKLQkJCQkJcmV0dXJuOwotCQkJCW5vZGUtPlN0cmVhbUluKCBpbiwgdGFnICk7Ci0JCQkJZGVsZXRlIG5vZGU7Ci0JCQkJbm9kZSA9IDA7Ci0KLQkJCQkvLyBObyByZXR1cm46IGdvIGFyb3VuZCBmcm9tIHRoZSBiZWdpbm5pbmc6IHRleHQsIGNsb3NpbmcgdGFnLCBvciBub2RlLgotCQkJfQotCQl9Ci0JfQotfQotI2VuZGlmCi0KLWNvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQotewotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7Ci0KLQlpZiAoICFwIHx8ICEqcCApCi0JewotCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VMRU1FTlQsIDAsIDAsIGVuY29kaW5nICk7Ci0JCXJldHVybiAwOwotCX0KLQotCWlmICggZGF0YSApCi0JewotCQlkYXRhLT5TdGFtcCggcCwgZW5jb2RpbmcgKTsKLQkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKLQl9Ci0KLQlpZiAoICpwICE9ICc8JyApCi0JewotCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VMRU1FTlQsIHAsIGRhdGEsIGVuY29kaW5nICk7Ci0JCXJldHVybiAwOwotCX0KLQotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCsxLCBlbmNvZGluZyApOwotCi0JLy8gUmVhZCB0aGUgbmFtZS4KLQljb25zdCBjaGFyKiBwRXJyID0gcDsKLQotICAgIHAgPSBSZWFkTmFtZSggcCwgJnZhbHVlLCBlbmNvZGluZyApOwotCWlmICggIXAgfHwgISpwICkKLQl7Ci0JCWlmICggZG9jdW1lbnQgKQlkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX0ZBSUxFRF9UT19SRUFEX0VMRU1FTlRfTkFNRSwgcEVyciwgZGF0YSwgZW5jb2RpbmcgKTsKLQkJcmV0dXJuIDA7Ci0JfQotCi0gICAgVElYTUxfU1RSSU5HIGVuZFRhZyAoIjwvIik7Ci0JZW5kVGFnICs9IHZhbHVlOwotCWVuZFRhZyArPSAiPiI7Ci0KLQkvLyBDaGVjayBmb3IgYW5kIHJlYWQgYXR0cmlidXRlcy4gQWxzbyBsb29rIGZvciBhbiBlbXB0eQotCS8vIHRhZyBvciBhbiBlbmQgdGFnLgotCXdoaWxlICggcCAmJiAqcCApCi0JewotCQlwRXJyID0gcDsKLQkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOwotCQlpZiAoICFwIHx8ICEqcCApCi0JCXsKLQkJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywgcEVyciwgZGF0YSwgZW5jb2RpbmcgKTsKLQkJCXJldHVybiAwOwotCQl9Ci0JCWlmICggKnAgPT0gJy8nICkKLQkJewotCQkJKytwOwotCQkJLy8gRW1wdHkgdGFnLgotCQkJaWYgKCAqcCAgIT0gJz4nICkKLQkJCXsKLQkJCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0VNUFRZLCBwLCBkYXRhLCBlbmNvZGluZyApOwkJCi0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0JCQlyZXR1cm4gKHArMSk7Ci0JCX0KLQkJZWxzZSBpZiAoICpwID09ICc+JyApCi0JCXsKLQkJCS8vIERvbmUgd2l0aCBhdHRyaWJ1dGVzIChpZiB0aGVyZSB3ZXJlIGFueS4pCi0JCQkvLyBSZWFkIHRoZSB2YWx1ZSAtLSB3aGljaCBjYW4gaW5jbHVkZSBvdGhlcgotCQkJLy8gZWxlbWVudHMgLS0gcmVhZCB0aGUgZW5kIHRhZywgYW5kIHJldHVybi4KLQkJCSsrcDsKLQkJCXAgPSBSZWFkVmFsdWUoIHAsIGRhdGEsIGVuY29kaW5nICk7CQkvLyBOb3RlIHRoaXMgaXMgYW4gRWxlbWVudCBtZXRob2QsIGFuZCB3aWxsIHNldCB0aGUgZXJyb3IgaWYgb25lIGhhcHBlbnMuCi0JCQlpZiAoICFwIHx8ICEqcCApCi0JCQkJcmV0dXJuIDA7Ci0KLQkJCS8vIFdlIHNob3VsZCBmaW5kIHRoZSBlbmQgdGFnIG5vdwotCQkJaWYgKCBTdHJpbmdFcXVhbCggcCwgZW5kVGFnLmNfc3RyKCksIGZhbHNlLCBlbmNvZGluZyApICkKLQkJCXsKLQkJCQlwICs9IGVuZFRhZy5sZW5ndGgoKTsKLQkJCQlyZXR1cm4gcDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9SRUFESU5HX0VORF9UQUcsIHAsIGRhdGEsIGVuY29kaW5nICk7Ci0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvLyBUcnkgdG8gcmVhZCBhbiBhdHRyaWJ1dGU6Ci0JCQlUaVhtbEF0dHJpYnV0ZSogYXR0cmliID0gbmV3IFRpWG1sQXR0cmlidXRlKCk7Ci0JCQlpZiAoICFhdHRyaWIgKQotCQkJewotCQkJCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX09VVF9PRl9NRU1PUlksIHBFcnIsIGRhdGEsIGVuY29kaW5nICk7Ci0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0KLQkJCWF0dHJpYi0+U2V0RG9jdW1lbnQoIGRvY3VtZW50ICk7Ci0JCQljb25zdCBjaGFyKiBwRXJyID0gcDsKLQkJCXAgPSBhdHRyaWItPlBhcnNlKCBwLCBkYXRhLCBlbmNvZGluZyApOwotCi0JCQlpZiAoICFwIHx8ICEqcCApCi0JCQl7Ci0JCQkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUEFSU0lOR19FTEVNRU5ULCBwRXJyLCBkYXRhLCBlbmNvZGluZyApOwotCQkJCWRlbGV0ZSBhdHRyaWI7Ci0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0KLQkJCS8vIEhhbmRsZSB0aGUgc3RyYW5nZSBjYXNlIG9mIGRvdWJsZSBhdHRyaWJ1dGVzOgotCQkJVGlYbWxBdHRyaWJ1dGUqIG5vZGUgPSBhdHRyaWJ1dGVTZXQuRmluZCggYXR0cmliLT5OYW1lKCkgKTsKLQkJCWlmICggbm9kZSApCi0JCQl7Ci0JCQkJbm9kZS0+U2V0VmFsdWUoIGF0dHJpYi0+VmFsdWUoKSApOwotCQkJCWRlbGV0ZSBhdHRyaWI7Ci0JCQkJcmV0dXJuIDA7Ci0JCQl9Ci0KLQkJCWF0dHJpYnV0ZVNldC5BZGQoIGF0dHJpYiApOwotCQl9Ci0JfQotCXJldHVybiBwOwotfQotCi0KLWNvbnN0IGNoYXIqIFRpWG1sRWxlbWVudDo6UmVhZFZhbHVlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7Ci0KLQkvLyBSZWFkIGluIHRleHQgYW5kIGVsZW1lbnRzIGluIGFueSBvcmRlci4KLQljb25zdCBjaGFyKiBwV2l0aFdoaXRlU3BhY2UgPSBwOwotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQotCXdoaWxlICggcCAmJiAqcCApCi0JewotCQlpZiAoICpwICE9ICc8JyApCi0JCXsKLQkJCS8vIFRha2Ugd2hhdCB3ZSBoYXZlLCBtYWtlIGEgdGV4dCBlbGVtZW50LgotCQkJVGlYbWxUZXh0KiB0ZXh0Tm9kZSA9IG5ldyBUaVhtbFRleHQoICIiICk7Ci0KLQkJCWlmICggIXRleHROb2RlICkKLQkJCXsKLQkJCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9PVVRfT0ZfTUVNT1JZLCAwLCAwLCBlbmNvZGluZyApOwotCQkJCSAgICByZXR1cm4gMDsKLQkJCX0KLQotCQkJaWYgKCBUaVhtbEJhc2U6OklzV2hpdGVTcGFjZUNvbmRlbnNlZCgpICkKLQkJCXsKLQkJCQlwID0gdGV4dE5vZGUtPlBhcnNlKCBwLCBkYXRhLCBlbmNvZGluZyApOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCS8vIFNwZWNpYWwgY2FzZTogd2Ugd2FudCB0byBrZWVwIHRoZSB3aGl0ZSBzcGFjZQotCQkJCS8vIHNvIHRoYXQgbGVhZGluZyBzcGFjZXMgYXJlbid0IHJlbW92ZWQuCi0JCQkJcCA9IHRleHROb2RlLT5QYXJzZSggcFdpdGhXaGl0ZVNwYWNlLCBkYXRhLCBlbmNvZGluZyApOwotCQkJfQotCi0JCQlpZiAoICF0ZXh0Tm9kZS0+QmxhbmsoKSApCi0JCQkJTGlua0VuZENoaWxkKCB0ZXh0Tm9kZSApOwotCQkJZWxzZQotCQkJCWRlbGV0ZSB0ZXh0Tm9kZTsKLQkJfSAKLQkJZWxzZSAKLQkJewotCQkJLy8gV2UgaGl0IGEgJzwnCi0JCQkvLyBIYXZlIHdlIGhpdCBhIG5ldyBlbGVtZW50IG9yIGFuIGVuZCB0YWc/IFRoaXMgY291bGQgYWxzbyBiZQotCQkJLy8gYSBUaVhtbFRleHQgaW4gdGhlICJDREFUQSIgc3R5bGUuCi0JCQlpZiAoIFN0cmluZ0VxdWFsKCBwLCAiPC8iLCBmYWxzZSwgZW5jb2RpbmcgKSApCi0JCQl7Ci0JCQkJcmV0dXJuIHA7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJVGlYbWxOb2RlKiBub2RlID0gSWRlbnRpZnkoIHAsIGVuY29kaW5nICk7Ci0JCQkJaWYgKCBub2RlICkKLQkJCQl7Ci0JCQkJCXAgPSBub2RlLT5QYXJzZSggcCwgZGF0YSwgZW5jb2RpbmcgKTsKLQkJCQkJTGlua0VuZENoaWxkKCBub2RlICk7Ci0JCQkJfQkJCQkKLQkJCQllbHNlCi0JCQkJewotCQkJCQlyZXR1cm4gMDsKLQkJCQl9Ci0JCQl9Ci0JCX0KLQkJcFdpdGhXaGl0ZVNwYWNlID0gcDsKLQkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOwotCX0KLQotCWlmICggIXAgKQotCXsKLQkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUkVBRElOR19FTEVNRU5UX1ZBTFVFLCAwLCAwLCBlbmNvZGluZyApOwotCX0JCi0JcmV0dXJuIHA7Ci19Ci0KLQotI2lmZGVmIFRJWE1MX1VTRV9TVEwKLXZvaWQgVGlYbWxVbmtub3duOjpTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQotewotCXdoaWxlICggaW4tPmdvb2QoKSApCi0JewotCQlpbnQgYyA9IGluLT5nZXQoKTsJCi0JCWlmICggYyA8PSAwICkKLQkJewotCQkJVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOwotCQkJaWYgKCBkb2N1bWVudCApCi0JCQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9FTUJFRERFRF9OVUxMLCAwLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Ci0JCQlyZXR1cm47Ci0JCX0KLQkJKCp0YWcpICs9IChjaGFyKSBjOwotCi0JCWlmICggYyA9PSAnPicgKQotCQl7Ci0JCQkvLyBBbGwgaXMgd2VsbC4KLQkJCXJldHVybjsJCQotCQl9Ci0JfQotfQotI2VuZGlmCi0KLQotY29uc3QgY2hhciogVGlYbWxVbmtub3duOjpQYXJzZSggY29uc3QgY2hhciogcCwgVGlYbWxQYXJzaW5nRGF0YSogZGF0YSwgVGlYbWxFbmNvZGluZyBlbmNvZGluZyApCi17Ci0JVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOwotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQotCWlmICggZGF0YSApCi0JewotCQlkYXRhLT5TdGFtcCggcCwgZW5jb2RpbmcgKTsKLQkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKLQl9Ci0JaWYgKCAhcCB8fCAhKnAgfHwgKnAgIT0gJzwnICkKLQl7Ci0JCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1BBUlNJTkdfVU5LTk9XTiwgcCwgZGF0YSwgZW5jb2RpbmcgKTsKLQkJcmV0dXJuIDA7Ci0JfQotCSsrcDsKLSAgICB2YWx1ZSA9ICIiOwotCi0Jd2hpbGUgKCBwICYmICpwICYmICpwICE9ICc+JyApCi0JewotCQl2YWx1ZSArPSAqcDsKLQkJKytwOwotCX0KLQotCWlmICggIXAgKQotCXsKLQkJaWYgKCBkb2N1bWVudCApCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUEFSU0lOR19VTktOT1dOLCAwLCAwLCBlbmNvZGluZyApOwotCX0KLQlpZiAoICpwID09ICc+JyApCi0JCXJldHVybiBwKzE7Ci0JcmV0dXJuIHA7Ci19Ci0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi12b2lkIFRpWG1sQ29tbWVudDo6U3RyZWFtSW4oIFRJWE1MX0lTVFJFQU0gKiBpbiwgVElYTUxfU1RSSU5HICogdGFnICkKLXsKLQl3aGlsZSAoIGluLT5nb29kKCkgKQotCXsKLQkJaW50IGMgPSBpbi0+Z2V0KCk7CQotCQlpZiAoIGMgPD0gMCApCi0JCXsKLQkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKLQkJCWlmICggZG9jdW1lbnQgKQotCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJKCp0YWcpICs9IChjaGFyKSBjOwotCi0JCWlmICggYyA9PSAnPicgCi0JCQkgJiYgdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDIgKSA9PSAnLScKLQkJCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMyApID09ICctJyApCi0JCXsKLQkJCS8vIEFsbCBpcyB3ZWxsLgotCQkJcmV0dXJuOwkJCi0JCX0KLQl9Ci19Ci0jZW5kaWYKLQotCi1jb25zdCBjaGFyKiBUaVhtbENvbW1lbnQ6OlBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7Ci0JdmFsdWUgPSAiIjsKLQotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQotCWlmICggZGF0YSApCi0JewotCQlkYXRhLT5TdGFtcCggcCwgZW5jb2RpbmcgKTsKLQkJbG9jYXRpb24gPSBkYXRhLT5DdXJzb3IoKTsKLQl9Ci0JY29uc3QgY2hhciogc3RhcnRUYWcgPSAiPCEtLSI7Ci0JY29uc3QgY2hhciogZW5kVGFnICAgPSAiLS0+IjsKLQotCWlmICggIVN0cmluZ0VxdWFsKCBwLCBzdGFydFRhZywgZmFsc2UsIGVuY29kaW5nICkgKQotCXsKLQkJZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0NPTU1FTlQsIHAsIGRhdGEsIGVuY29kaW5nICk7Ci0JCXJldHVybiAwOwotCX0KLQlwICs9IHN0cmxlbiggc3RhcnRUYWcgKTsKLQlwID0gUmVhZFRleHQoIHAsICZ2YWx1ZSwgZmFsc2UsIGVuZFRhZywgZmFsc2UsIGVuY29kaW5nICk7Ci0JcmV0dXJuIHA7Ci19Ci0KLQotY29uc3QgY2hhciogVGlYbWxBdHRyaWJ1dGU6OlBhcnNlKCBjb25zdCBjaGFyKiBwLCBUaVhtbFBhcnNpbmdEYXRhKiBkYXRhLCBUaVhtbEVuY29kaW5nIGVuY29kaW5nICkKLXsKLQlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIGVuY29kaW5nICk7Ci0JaWYgKCAhcCB8fCAhKnAgKSByZXR1cm4gMDsKLQotCWludCB0YWJzaXplID0gNDsKLQlpZiAoIGRvY3VtZW50ICkKLQkJdGFic2l6ZSA9IGRvY3VtZW50LT5UYWJTaXplKCk7Ci0KLQlpZiAoIGRhdGEgKQotCXsKLQkJZGF0YS0+U3RhbXAoIHAsIGVuY29kaW5nICk7Ci0JCWxvY2F0aW9uID0gZGF0YS0+Q3Vyc29yKCk7Ci0JfQotCS8vIFJlYWQgdGhlIG5hbWUsIHRoZSAnPScgYW5kIHRoZSB2YWx1ZS4KLQljb25zdCBjaGFyKiBwRXJyID0gcDsKLQlwID0gUmVhZE5hbWUoIHAsICZuYW1lLCBlbmNvZGluZyApOwotCWlmICggIXAgfHwgISpwICkKLQl7Ci0JCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywgcEVyciwgZGF0YSwgZW5jb2RpbmcgKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXAgPSBTa2lwV2hpdGVTcGFjZSggcCwgZW5jb2RpbmcgKTsKLQlpZiAoICFwIHx8ICEqcCB8fCAqcCAhPSAnPScgKQotCXsKLQkJaWYgKCBkb2N1bWVudCApIGRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUkVBRElOR19BVFRSSUJVVEVTLCBwLCBkYXRhLCBlbmNvZGluZyApOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQkrK3A7CS8vIHNraXAgJz0nCi0JcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBlbmNvZGluZyApOwotCWlmICggIXAgfHwgISpwICkKLQl7Ci0JCWlmICggZG9jdW1lbnQgKSBkb2N1bWVudC0+U2V0RXJyb3IoIFRJWE1MX0VSUk9SX1JFQURJTkdfQVRUUklCVVRFUywgcCwgZGF0YSwgZW5jb2RpbmcgKTsKLQkJcmV0dXJuIDA7Ci0JfQotCQotCWNvbnN0IGNoYXIqIGVuZDsKLQotCWlmICggKnAgPT0gJ1wnJyApCi0JewotCQkrK3A7Ci0JCWVuZCA9ICJcJyI7Ci0JCXAgPSBSZWFkVGV4dCggcCwgJnZhbHVlLCBmYWxzZSwgZW5kLCBmYWxzZSwgZW5jb2RpbmcgKTsKLQl9Ci0JZWxzZSBpZiAoICpwID09ICciJyApCi0JewotCQkrK3A7Ci0JCWVuZCA9ICJcIiI7Ci0JCXAgPSBSZWFkVGV4dCggcCwgJnZhbHVlLCBmYWxzZSwgZW5kLCBmYWxzZSwgZW5jb2RpbmcgKTsKLQl9Ci0JZWxzZQotCXsKLQkJLy8gQWxsIGF0dHJpYnV0ZSB2YWx1ZXMgc2hvdWxkIGJlIGluIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzLgotCQkvLyBCdXQgdGhpcyBpcyBzdWNoIGEgY29tbW9uIGVycm9yIHRoYXQgdGhlIHBhcnNlciB3aWxsIHRyeQotCQkvLyBpdHMgYmVzdCwgZXZlbiB3aXRob3V0IHRoZW0uCi0JCXZhbHVlID0gIiI7Ci0JCXdoaWxlICggICAgcCAmJiAqcAkJCQkJCQkJCQkvLyBleGlzdGVuY2UKLQkJCQkmJiAhSXNXaGl0ZVNwYWNlKCAqcCApICYmICpwICE9ICdcbicgJiYgKnAgIT0gJ1xyJwkvLyB3aGl0ZXNwYWNlCi0JCQkJJiYgKnAgIT0gJy8nICYmICpwICE9ICc+JyApCQkJCQkJLy8gdGFnIGVuZAotCQl7Ci0JCQl2YWx1ZSArPSAqcDsKLQkJCSsrcDsKLQkJfQotCX0KLQlyZXR1cm4gcDsKLX0KLQotI2lmZGVmIFRJWE1MX1VTRV9TVEwKLXZvaWQgVGlYbWxUZXh0OjpTdHJlYW1JbiggVElYTUxfSVNUUkVBTSAqIGluLCBUSVhNTF9TVFJJTkcgKiB0YWcgKQotewotCWlmICggY2RhdGEgKQotCXsKLQkJaW50IGMgPSBpbi0+Z2V0KCk7CQotCQlpZiAoIGMgPD0gMCApCi0JCXsKLQkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKLQkJCWlmICggZG9jdW1lbnQgKQotCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQkJcmV0dXJuOwotCQl9Ci0KLQkJKCp0YWcpICs9IChjaGFyKSBjOwotCi0JCWlmICggYyA9PSAnPicgCi0JCQkgJiYgdGFnLT5hdCggdGFnLT5sZW5ndGgoKSAtIDIgKSA9PSAnXScKLQkJCSAmJiB0YWctPmF0KCB0YWctPmxlbmd0aCgpIC0gMyApID09ICddJyApCi0JCXsKLQkJCS8vIEFsbCBpcyB3ZWxsLgotCQkJcmV0dXJuOwkJCi0JCX0KLQl9Ci0JZWxzZQotCXsKLQkJd2hpbGUgKCBpbi0+Z29vZCgpICkKLQkJewotCQkJaW50IGMgPSBpbi0+cGVlaygpOwkKLQkJCWlmICggYyA9PSAnPCcgKQotCQkJCXJldHVybjsKLQkJCWlmICggYyA8PSAwICkKLQkJCXsKLQkJCQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7Ci0JCQkJaWYgKCBkb2N1bWVudCApCi0JCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQkJCXJldHVybjsKLQkJCX0KLQotCQkJKCp0YWcpICs9IChjaGFyKSBjOwotCQkJaW4tPmdldCgpOwotCQl9Ci0JfQotfQotI2VuZGlmCi0KLWNvbnN0IGNoYXIqIFRpWG1sVGV4dDo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgZW5jb2RpbmcgKQotewotCXZhbHVlID0gIiI7Ci0JVGlYbWxEb2N1bWVudCogZG9jdW1lbnQgPSBHZXREb2N1bWVudCgpOwotCi0JaWYgKCBkYXRhICkKLQl7Ci0JCWRhdGEtPlN0YW1wKCBwLCBlbmNvZGluZyApOwotCQlsb2NhdGlvbiA9IGRhdGEtPkN1cnNvcigpOwotCX0KLQotCWNvbnN0IGNoYXIqIGNvbnN0IHN0YXJ0VGFnID0gIjwhW0NEQVRBWyI7Ci0JY29uc3QgY2hhciogY29uc3QgZW5kVGFnICAgPSAiXV0+IjsKLQotCWlmICggY2RhdGEgfHwgU3RyaW5nRXF1YWwoIHAsIHN0YXJ0VGFnLCBmYWxzZSwgZW5jb2RpbmcgKSApCi0JewotCQljZGF0YSA9IHRydWU7Ci0KLQkJaWYgKCAhU3RyaW5nRXF1YWwoIHAsIHN0YXJ0VGFnLCBmYWxzZSwgZW5jb2RpbmcgKSApCi0JCXsKLQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfUEFSU0lOR19DREFUQSwgcCwgZGF0YSwgZW5jb2RpbmcgKTsKLQkJCXJldHVybiAwOwotCQl9Ci0JCXAgKz0gc3RybGVuKCBzdGFydFRhZyApOwotCi0JCS8vIEtlZXAgYWxsIHRoZSB3aGl0ZSBzcGFjZSwgaWdub3JlIHRoZSBlbmNvZGluZywgZXRjLgotCQl3aGlsZSAoCSAgIHAgJiYgKnAKLQkJCQkmJiAhU3RyaW5nRXF1YWwoIHAsIGVuZFRhZywgZmFsc2UsIGVuY29kaW5nICkKLQkJCSAgKQotCQl7Ci0JCQl2YWx1ZSArPSAqcDsKLQkJCSsrcDsKLQkJfQotCi0JCVRJWE1MX1NUUklORyBkdW1teTsgCi0JCXAgPSBSZWFkVGV4dCggcCwgJmR1bW15LCBmYWxzZSwgZW5kVGFnLCBmYWxzZSwgZW5jb2RpbmcgKTsKLQkJcmV0dXJuIHA7Ci0JfQotCWVsc2UKLQl7Ci0JCWJvb2wgaWdub3JlV2hpdGUgPSB0cnVlOwotCi0JCWNvbnN0IGNoYXIqIGVuZCA9ICI8IjsKLQkJcCA9IFJlYWRUZXh0KCBwLCAmdmFsdWUsIGlnbm9yZVdoaXRlLCBlbmQsIGZhbHNlLCBlbmNvZGluZyApOwotCQlpZiAoIHAgKQotCQkJcmV0dXJuIHAtMTsJLy8gZG9uJ3QgdHJ1bmNhdGUgdGhlICc8JwotCQlyZXR1cm4gMDsKLQl9Ci19Ci0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi12b2lkIFRpWG1sRGVjbGFyYXRpb246OlN0cmVhbUluKCBUSVhNTF9JU1RSRUFNICogaW4sIFRJWE1MX1NUUklORyAqIHRhZyApCi17Ci0Jd2hpbGUgKCBpbi0+Z29vZCgpICkKLQl7Ci0JCWludCBjID0gaW4tPmdldCgpOwotCQlpZiAoIGMgPD0gMCApCi0JCXsKLQkJCVRpWG1sRG9jdW1lbnQqIGRvY3VtZW50ID0gR2V0RG9jdW1lbnQoKTsKLQkJCWlmICggZG9jdW1lbnQgKQotCQkJCWRvY3VtZW50LT5TZXRFcnJvciggVElYTUxfRVJST1JfRU1CRURERURfTlVMTCwgMCwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQkJcmV0dXJuOwotCQl9Ci0JCSgqdGFnKSArPSAoY2hhcikgYzsKLQotCQlpZiAoIGMgPT0gJz4nICkKLQkJewotCQkJLy8gQWxsIGlzIHdlbGwuCi0JCQlyZXR1cm47Ci0JCX0KLQl9Ci19Ci0jZW5kaWYKLQotY29uc3QgY2hhciogVGlYbWxEZWNsYXJhdGlvbjo6UGFyc2UoIGNvbnN0IGNoYXIqIHAsIFRpWG1sUGFyc2luZ0RhdGEqIGRhdGEsIFRpWG1sRW5jb2RpbmcgX2VuY29kaW5nICkKLXsKLQlwID0gU2tpcFdoaXRlU3BhY2UoIHAsIF9lbmNvZGluZyApOwotCS8vIEZpbmQgdGhlIGJlZ2lubmluZywgZmluZCB0aGUgZW5kLCBhbmQgbG9vayBmb3IKLQkvLyB0aGUgc3R1ZmYgaW4tYmV0d2Vlbi4KLQlUaVhtbERvY3VtZW50KiBkb2N1bWVudCA9IEdldERvY3VtZW50KCk7Ci0JaWYgKCAhcCB8fCAhKnAgfHwgIVN0cmluZ0VxdWFsKCBwLCAiPD94bWwiLCB0cnVlLCBfZW5jb2RpbmcgKSApCi0JewotCQlpZiAoIGRvY3VtZW50ICkgZG9jdW1lbnQtPlNldEVycm9yKCBUSVhNTF9FUlJPUl9QQVJTSU5HX0RFQ0xBUkFUSU9OLCAwLCAwLCBfZW5jb2RpbmcgKTsKLQkJcmV0dXJuIDA7Ci0JfQotCWlmICggZGF0YSApCi0JewotCQlkYXRhLT5TdGFtcCggcCwgX2VuY29kaW5nICk7Ci0JCWxvY2F0aW9uID0gZGF0YS0+Q3Vyc29yKCk7Ci0JfQotCXAgKz0gNTsKLQotCXZlcnNpb24gPSAiIjsKLQllbmNvZGluZyA9ICIiOwotCXN0YW5kYWxvbmUgPSAiIjsKLQotCXdoaWxlICggcCAmJiAqcCApCi0JewotCQlpZiAoICpwID09ICc+JyApCi0JCXsKLQkJCSsrcDsKLQkJCXJldHVybiBwOwotCQl9Ci0KLQkJcCA9IFNraXBXaGl0ZVNwYWNlKCBwLCBfZW5jb2RpbmcgKTsKLQkJaWYgKCBTdHJpbmdFcXVhbCggcCwgInZlcnNpb24iLCB0cnVlLCBfZW5jb2RpbmcgKSApCi0JCXsKLQkJCVRpWG1sQXR0cmlidXRlIGF0dHJpYjsKLQkJCXAgPSBhdHRyaWIuUGFyc2UoIHAsIGRhdGEsIF9lbmNvZGluZyApOwkJCi0JCQl2ZXJzaW9uID0gYXR0cmliLlZhbHVlKCk7Ci0JCX0KLQkJZWxzZSBpZiAoIFN0cmluZ0VxdWFsKCBwLCAiZW5jb2RpbmciLCB0cnVlLCBfZW5jb2RpbmcgKSApCi0JCXsKLQkJCVRpWG1sQXR0cmlidXRlIGF0dHJpYjsKLQkJCXAgPSBhdHRyaWIuUGFyc2UoIHAsIGRhdGEsIF9lbmNvZGluZyApOwkJCi0JCQllbmNvZGluZyA9IGF0dHJpYi5WYWx1ZSgpOwotCQl9Ci0JCWVsc2UgaWYgKCBTdHJpbmdFcXVhbCggcCwgInN0YW5kYWxvbmUiLCB0cnVlLCBfZW5jb2RpbmcgKSApCi0JCXsKLQkJCVRpWG1sQXR0cmlidXRlIGF0dHJpYjsKLQkJCXAgPSBhdHRyaWIuUGFyc2UoIHAsIGRhdGEsIF9lbmNvZGluZyApOwkJCi0JCQlzdGFuZGFsb25lID0gYXR0cmliLlZhbHVlKCk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvLyBSZWFkIG92ZXIgd2hhdGV2ZXIgaXQgaXMuCi0JCQl3aGlsZSggcCAmJiAqcCAmJiAqcCAhPSAnPicgJiYgIUlzV2hpdGVTcGFjZSggKnAgKSApCi0JCQkJKytwOwotCQl9Ci0JfQotCXJldHVybiAwOwotfQotCi1ib29sIFRpWG1sVGV4dDo6QmxhbmsoKSBjb25zdAotewotCWZvciAoIHVuc2lnbmVkIGk9MDsgaTx2YWx1ZS5sZW5ndGgoKTsgaSsrICkKLQkJaWYgKCAhSXNXaGl0ZVNwYWNlKCB2YWx1ZVtpXSApICkKLQkJCXJldHVybiBmYWxzZTsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQpkaWZmIC0tZ2l0IGEvdXRmOHRlc3QuZ2lmIGIvdXRmOHRlc3QuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTExMDcwLi4wMDAwMDAwCi0tLSBhL3V0Zjh0ZXN0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3V0Zjh0ZXN0LnhtbCBiL3V0Zjh0ZXN0LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkNzFjZS4uMDAwMDAwMAotLS0gYS91dGY4dGVzdC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGRvY3VtZW50PgotICAgIDxFbmdsaXNoIG5hbWU9Im5hbWUiIHZhbHVlPSJ2YWx1ZSI+VGhlIHdvcmxkIGhhcyBtYW55IGxhbmd1YWdlczwvRW5nbGlzaD4KLSAgICA8UnVzc2lhbiBuYW1lPSLQvdCw0LfQstCw0L3QuNC1KNC40LzRjykiIHZhbHVlPSLRhtC10L3QvdC+0YHRgtGMIj7QnNC40YAg0LjQvNC10LXRgiDQvNC90L7Qs9C+INGP0LfRi9C60L7QsjwvUnVzc2lhbj4KLSAgICA8U3BhbmlzaCBuYW1lPSJlbCBub21icmUiIHZhbHVlPSJlbCB2YWxvciI+ZWwgbXVuZG8gdGllbmUgbXVjaG9zIGlkaW9tYXM8L1NwYW5pc2g+Ci0gICAgPFNpbXBsaWZpZWRDaGluZXNlIG5hbWU9IuWQjeWtlyIgdmFsdWU9IuS7t+WAvCI+5LiW55WM5pyJ5b6I5aSa6K+t6KiAPC9TaW1wbGlmaWVkQ2hpbmVzZT4KLSAgICA80KDRg9GB0YHQutC40Lkg0L3QsNC30LLQsNC90LjQtT0ibmFtZSIg0YbQtdC90L3QvtGB0YLRjD0idmFsdWUiPiZsdDvQuNC80LXQtdGCJmd0Ozwv0KDRg9GB0YHQutC40Lk+Ci0gICAgPOaxieivrSDlkI3lrZc9Im5hbWUiIOS7t+WAvD0idmFsdWUiPuS4lueVjOacieW+iOWkmuivreiogDwv5rGJ6K+tPgotICAgIDxIZWF2eT4iTSYjeDBlQjt0JiMyMzA7bCEiPC9IZWF2eT4KLSAgICA8w6Q+VW1sYXV0IEVsZW1lbnQ8L8OkPgotPC9kb2N1bWVudD4KZGlmZiAtLWdpdCBhL3V0Zjh0ZXN0dmVyaWZ5LnhtbCBiL3V0Zjh0ZXN0dmVyaWZ5LnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFhMzE5ZC4uMDAwMDAwMAotLS0gYS91dGY4dGVzdHZlcmlmeS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KLTxkb2N1bWVudD4KLSAgICA8RW5nbGlzaCBuYW1lPSJuYW1lIiB2YWx1ZT0idmFsdWUiPlRoZSB3b3JsZCBoYXMgbWFueSBsYW5ndWFnZXM8L0VuZ2xpc2g+Ci0gICAgPFJ1c3NpYW4gbmFtZT0i0L3QsNC30LLQsNC90LjQtSjQuNC80Y8pIiB2YWx1ZT0i0YbQtdC90L3QvtGB0YLRjCI+0JzQuNGAINC40LzQtdC10YIg0LzQvdC+0LPQviDRj9C30YvQutC+0LI8L1J1c3NpYW4+Ci0gICAgPFNwYW5pc2ggbmFtZT0iZWwgbm9tYnJlIiB2YWx1ZT0iZWwgdmFsb3IiPmVsIG11bmRvIHRpZW5lIG11Y2hvcyBpZGlvbWFzPC9TcGFuaXNoPgotICAgIDxTaW1wbGlmaWVkQ2hpbmVzZSBuYW1lPSLlkI3lrZciIHZhbHVlPSLku7flgLwiPuS4lueVjOacieW+iOWkmuivreiogDwvU2ltcGxpZmllZENoaW5lc2U+Ci0gICAgPNCg0YPRgdGB0LrQuNC5INC90LDQt9Cy0LDQvdC40LU9Im5hbWUiINGG0LXQvdC90L7RgdGC0Yw9InZhbHVlIj4mbHQ70LjQvNC10LXRgiZndDs8L9Cg0YPRgdGB0LrQuNC5PgotICAgIDzmsYnor60g5ZCN5a2XPSJuYW1lIiDku7flgLw9InZhbHVlIj7kuJbnlYzmnInlvojlpJror63oqIA8L+axieivrT4KLSAgICA8SGVhdnk+JnF1b3Q7TcOrdMOmbCEmcXVvdDs8L0hlYXZ5PgotICAgIDzDpD5VbWxhdXQgRWxlbWVudDwvw6Q+Ci08L2RvY3VtZW50PgpkaWZmIC0tZ2l0IGEveG1sdGVzdC5jcHAgYi94bWx0ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFhMzUwZS4uMDAwMDAwMAotLS0gYS94bWx0ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNTIgKzAsMCBAQAotLyoKLSAgIFRlc3QgcHJvZ3JhbSBmb3IgVGlueVhNTC4KLSovCi0KLQotI2luY2x1ZGUgInRpbnl4bWwuaCIKLQotI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkjaW5jbHVkZSA8aW9zdHJlYW0+Ci0JI2luY2x1ZGUgPHNzdHJlYW0+Ci0JdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSNlbHNlCi0JI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoIFdJTjMyICkgJiYgZGVmaW5lZCggVFVORSApCi0JI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQkvLyBBcG9sb2dpZXMgdG8gbm9uLXdpbmRvd3MgdXNlcnMhIEJ1dCBJIG5lZWQgc29tZSBnb29kIHRpbWVycyBmb3IKLQkvLyBwcm9maWxpbmcsIGFuZCB0aGVzZSBhcmUgdmVyeSBwbGF0Zm9ybSBzcGVjaWZpYy4KLQlfX2ludDY0IHN0YXJ0OwotCV9faW50NjQgZW5kOwotCV9faW50NjQgZnJlcTsKLSNlbmRpZgotCi1zdGF0aWMgaW50IGdQYXNzID0gMDsKLXN0YXRpYyBpbnQgZ0ZhaWwgPSAwOwotCi0KLWJvb2wgWG1sVGVzdCAoY29uc3QgY2hhciogdGVzdFN0cmluZywgY29uc3QgY2hhciogZXhwZWN0ZWQsIGNvbnN0IGNoYXIqIGZvdW5kLCBib29sIG5vRWNobyA9IGZhbHNlKQotewotCWJvb2wgcGFzcyA9ICFzdHJjbXAoIGV4cGVjdGVkLCBmb3VuZCApOwotCWlmICggcGFzcyApCi0JCXByaW50ZiAoIltwYXNzXSIpOwotCWVsc2UKLQkJcHJpbnRmICgiW2ZhaWxdIik7Ci0KLQlpZiAoIG5vRWNobyApCi0JCXByaW50ZiAoIiAlc1xuIiwgdGVzdFN0cmluZyk7Ci0JZWxzZQotCQlwcmludGYgKCIgJXMgWyVzXVslc11cbiIsIHRlc3RTdHJpbmcsIGV4cGVjdGVkLCBmb3VuZCk7Ci0KLQlpZiAoIHBhc3MgKQotCQkrK2dQYXNzOwotCWVsc2UKLQkJKytnRmFpbDsKLQlyZXR1cm4gcGFzczsKLX0KLQotCi1ib29sIFhtbFRlc3QoIGNvbnN0IGNoYXIqIHRlc3RTdHJpbmcsIGludCBleHBlY3RlZCwgaW50IGZvdW5kLCBib29sIG5vRWNobyA9IGZhbHNlICkKLXsKLQlib29sIHBhc3MgPSAoIGV4cGVjdGVkID09IGZvdW5kICk7Ci0JaWYgKCBwYXNzICkKLQkJcHJpbnRmICgiW3Bhc3NdIik7Ci0JZWxzZQotCQlwcmludGYgKCJbZmFpbF0iKTsKLQotCWlmICggbm9FY2hvICkKLQkJcHJpbnRmICgiICVzXG4iLCB0ZXN0U3RyaW5nKTsKLQllbHNlCi0JCXByaW50ZiAoIiAlcyBbJWRdWyVkXVxuIiwgdGVzdFN0cmluZywgZXhwZWN0ZWQsIGZvdW5kKTsKLQotCWlmICggcGFzcyApCi0JCSsrZ1Bhc3M7Ci0JZWxzZQotCQkrK2dGYWlsOwotCXJldHVybiBwYXNzOwotfQotCi0KLS8vCi0vLyBUaGlzIGZpbGUgZGVtb25zdHJhdGVzIHNvbWUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBUaW55WG1sLgotLy8gTm90ZSB0aGF0IHRoZSBleGFtcGxlIGlzIHZlcnkgY29udHJpdmVkLiBJdCBwcmVzdW1lcyB5b3Uga25vdwotLy8gd2hhdCBpcyBpbiB0aGUgWE1MIGZpbGUuIEJ1dCBpdCBkb2VzIHRlc3QgdGhlIGJhc2ljIG9wZXJhdGlvbnMsCi0vLyBhbmQgc2hvdyBob3cgdG8gYWRkIGFuZCByZW1vdmUgbm9kZXMuCi0vLwotCi1pbnQgbWFpbigpCi17Ci0JLy8KLQkvLyBXZSBzdGFydCB3aXRoIHRoZSAnZGVtb1N0YXJ0JyB0b2RvIGxpc3QuIFByb2Nlc3MgaXQuIEFuZAotCS8vIHNob3VsZCBob3BlZnVsbHkgZW5kIHVwIHdpdGggdGhlIHRvZG8gbGlzdCBhcyBpbGx1c3RyYXRlZC4KLQkvLwotCWNvbnN0IGNoYXIqIGRlbW9TdGFydCA9Ci0JCSI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgIHN0YW5kYWxvbmU9J25vJyA+XG4iCi0JCSI8IS0tIE91ciB0byBkbyBsaXN0IGRhdGEgLS0+IgotCQkiPFRvRG8+XG4iCi0JCSI8IS0tIERvIEkgbmVlZCBhIHNlY3VyZSBQREE/IC0tPlxuIgotCQkiPEl0ZW0gcHJpb3JpdHk9XCIxXCIgZGlzdGFuY2U9J2Nsb3NlJz4gR28gdG8gdGhlIDxib2xkPlRveSBzdG9yZSE8L2JvbGQ+PC9JdGVtPiIKLQkJIjxJdGVtIHByaW9yaXR5PVwiMlwiIGRpc3RhbmNlPSdub25lJz4gRG8gYmlsbHMgICA8L0l0ZW0+IgotCQkiPEl0ZW0gcHJpb3JpdHk9XCIyXCIgZGlzdGFuY2U9J2ZhciAmYW1wOyBiYWNrJz4gTG9vayBmb3IgRXZpbCBEaW5vc2F1cnMhIDwvSXRlbT4iCi0JCSI8L1RvRG8+IjsKLQotI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkvKglXaGF0IHRoZSB0b2RvIGxpc3Qgc2hvdWxkIGxvb2sgbGlrZSBhZnRlciBwcm9jZXNzaW5nLgotCQlJbiBzdHJlYW0gKG5vIGZvcm1hdHRpbmcpIHJlcHJlc2VudGF0aW9uLiAqLwotCWNvbnN0IGNoYXIqIGRlbW9FbmQgPQotCQkiPD94bWwgdmVyc2lvbj1cIjEuMFwiIHN0YW5kYWxvbmU9XCJub1wiID8+IgotCQkiPCEtLSBPdXIgdG8gZG8gbGlzdCBkYXRhIC0tPiIKLQkJIjxUb0RvPiIKLQkJIjwhLS0gRG8gSSBuZWVkIGEgc2VjdXJlIFBEQT8gLS0+IgotCQkiPEl0ZW0gcHJpb3JpdHk9XCIyXCIgZGlzdGFuY2U9XCJjbG9zZVwiPkdvIHRvIHRoZSIKLQkJIjxib2xkPlRveSBzdG9yZSEiCi0JCSI8L2JvbGQ+IgotCQkiPC9JdGVtPiIKLQkJIjxJdGVtIHByaW9yaXR5PVwiMVwiIGRpc3RhbmNlPVwiZmFyXCI+VGFsayB0bzoiCi0JCSI8TWVldGluZyB3aGVyZT1cIlNjaG9vbFwiPiIKLQkJIjxBdHRlbmRlZSBuYW1lPVwiTWFycGxlXCIgcG9zaXRpb249XCJ0ZWFjaGVyXCIgLz4iCi0JCSI8QXR0ZW5kZWUgbmFtZT1cIlZvZWxcIiBwb3NpdGlvbj1cImNvdW5zZWxvclwiIC8+IgotCQkiPC9NZWV0aW5nPiIKLQkJIjxNZWV0aW5nIHdoZXJlPVwiTHVuY2hcIiAvPiIKLQkJIjwvSXRlbT4iCi0JCSI8SXRlbSBwcmlvcml0eT1cIjJcIiBkaXN0YW5jZT1cImhlcmVcIj5EbyBiaWxscyIKLQkJIjwvSXRlbT4iCi0JCSI8L1RvRG8+IjsKLSNlbmRpZgotCi0JLy8gVGhlIGV4YW1wbGUgcGFyc2VzIGZyb20gdGhlIGNoYXJhY3RlciBzdHJpbmcgKGFib3ZlKToKLQkjaWYgZGVmaW5lZCggV0lOMzIgKSAmJiBkZWZpbmVkKCBUVU5FICkKLQlRdWVyeVBlcmZvcm1hbmNlQ291bnRlciggKExBUkdFX0lOVEVHRVIqKSAoJnN0YXJ0KSApOwotCSNlbmRpZgkKLQotCXsKLQkJLy8gV3JpdGUgdG8gYSBmaWxlIGFuZCByZWFkIGl0IGJhY2ssIHRvIGNoZWNrIGZpbGUgSS9PLgotCi0JCVRpWG1sRG9jdW1lbnQgZG9jKCAiZGVtb3Rlc3QueG1sIiApOwotCQlkb2MuUGFyc2UoIGRlbW9TdGFydCApOwotCi0JCWlmICggZG9jLkVycm9yKCkgKQotCQl7Ci0JCQlwcmludGYoICJFcnJvciBpbiAlczogJXNcbiIsIGRvYy5WYWx1ZSgpLCBkb2MuRXJyb3JEZXNjKCkgKTsKLQkJCWV4aXQoIDEgKTsKLQkJfQotCQlkb2MuU2F2ZUZpbGUoKTsKLQl9Ci0KLQlUaVhtbERvY3VtZW50IGRvYyggImRlbW90ZXN0LnhtbCIgKTsKLQlib29sIGxvYWRPa2F5ID0gZG9jLkxvYWRGaWxlKCk7Ci0KLQlpZiAoICFsb2FkT2theSApCi0JewotCQlwcmludGYoICJDb3VsZCBub3QgbG9hZCB0ZXN0IGZpbGUgJ2RlbW90ZXN0LnhtbCcuIEVycm9yPSclcycuIEV4aXRpbmcuXG4iLCBkb2MuRXJyb3JEZXNjKCkgKTsKLQkJZXhpdCggMSApOwotCX0KLQotCXByaW50ZiggIioqIERlbW8gZG9jIHJlYWQgZnJvbSBkaXNrOiAqKiBcblxuIiApOwotCWRvYy5QcmludCggc3Rkb3V0ICk7Ci0KLQlUaVhtbE5vZGUqIG5vZGUgPSAwOwotCVRpWG1sRWxlbWVudCogdG9kb0VsZW1lbnQgPSAwOwotCVRpWG1sRWxlbWVudCogaXRlbUVsZW1lbnQgPSAwOwotCi0KLQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCS8vIEFuIGV4YW1wbGUgb2YgY2hhbmdpbmcgZXhpc3RpbmcgYXR0cmlidXRlcywgYW5kIHJlbW92aW5nCi0JLy8gYW4gZWxlbWVudCBmcm9tIHRoZSBkb2N1bWVudC4KLQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0JLy8gR2V0IHRoZSAiVG9EbyIgZWxlbWVudC4KLQkvLyBJdCBpcyBhIGNoaWxkIG9mIHRoZSBkb2N1bWVudCwgYW5kIGNhbiBiZSBzZWxlY3RlZCBieSBuYW1lLgotCW5vZGUgPSBkb2MuRmlyc3RDaGlsZCggIlRvRG8iICk7Ci0JYXNzZXJ0KCBub2RlICk7Ci0JdG9kb0VsZW1lbnQgPSBub2RlLT5Ub0VsZW1lbnQoKTsKLQlhc3NlcnQoIHRvZG9FbGVtZW50ICApOwotCi0JLy8gR29pbmcgdG8gdGhlIHRveSBzdG9yZSBpcyBub3cgb3VyIHNlY29uZCBwcmlvcml0eS4uLgotCS8vIFNvIHNldCB0aGUgInByaW9yaXR5IiBhdHRyaWJ1dGUgb2YgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QuCi0Jbm9kZSA9IHRvZG9FbGVtZW50LT5GaXJzdENoaWxkRWxlbWVudCgpOwkvLyBUaGlzIHNraXBzIHRoZSAiUERBIiBjb21tZW50LgotCWFzc2VydCggbm9kZSApOwotCWl0ZW1FbGVtZW50ID0gbm9kZS0+VG9FbGVtZW50KCk7Ci0JYXNzZXJ0KCBpdGVtRWxlbWVudCAgKTsKLQlpdGVtRWxlbWVudC0+U2V0QXR0cmlidXRlKCAicHJpb3JpdHkiLCAyICk7Ci0KLQkvLyBDaGFuZ2UgdGhlIGRpc3RhbmNlIHRvICJkb2luZyBiaWxscyIgZnJvbQotCS8vICJub25lIiB0byAiaGVyZSIuIEl0J3MgdGhlIG5leHQgc2libGluZyBlbGVtZW50LgotCWl0ZW1FbGVtZW50ID0gaXRlbUVsZW1lbnQtPk5leHRTaWJsaW5nRWxlbWVudCgpOwotCWFzc2VydCggaXRlbUVsZW1lbnQgKTsKLQlpdGVtRWxlbWVudC0+U2V0QXR0cmlidXRlKCAiZGlzdGFuY2UiLCAiaGVyZSIgKTsKLQotCS8vIFJlbW92ZSB0aGUgIkxvb2sgZm9yIEV2aWwgRGlub3NhdXJzISIgaXRlbS4KLQkvLyBJdCBpcyAxIG1vcmUgc2libGluZyBhd2F5LiBXZSBhc2sgdGhlIHBhcmVudCB0byByZW1vdmUKLQkvLyBhIHBhcnRpY3VsYXIgY2hpbGQuCi0JaXRlbUVsZW1lbnQgPSBpdGVtRWxlbWVudC0+TmV4dFNpYmxpbmdFbGVtZW50KCk7Ci0JdG9kb0VsZW1lbnQtPlJlbW92ZUNoaWxkKCBpdGVtRWxlbWVudCApOwotCi0JaXRlbUVsZW1lbnQgPSAwOwotCi0JLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkvLyBXaGF0IGZvbGxvd3MgaXMgYW4gZXhhbXBsZSBvZiBjcmVhdGVkIGVsZW1lbnRzIGFuZCB0ZXh0Ci0JLy8gbm9kZXMgYW5kIGFkZGluZyB0aGVtIHRvIHRoZSBkb2N1bWVudC4KLQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0JLy8gQWRkIHNvbWUgbWVldGluZ3MuCi0JVGlYbWxFbGVtZW50IGl0ZW0oICJJdGVtIiApOwotCWl0ZW0uU2V0QXR0cmlidXRlKCAicHJpb3JpdHkiLCAiMSIgKTsKLQlpdGVtLlNldEF0dHJpYnV0ZSggImRpc3RhbmNlIiwgImZhciIgKTsKLQotCVRpWG1sVGV4dCB0ZXh0KCAiVGFsayB0bzoiICk7Ci0KLQlUaVhtbEVsZW1lbnQgbWVldGluZzEoICJNZWV0aW5nIiApOwotCW1lZXRpbmcxLlNldEF0dHJpYnV0ZSggIndoZXJlIiwgIlNjaG9vbCIgKTsKLQotCVRpWG1sRWxlbWVudCBtZWV0aW5nMiggIk1lZXRpbmciICk7Ci0JbWVldGluZzIuU2V0QXR0cmlidXRlKCAid2hlcmUiLCAiTHVuY2giICk7Ci0KLQlUaVhtbEVsZW1lbnQgYXR0ZW5kZWUxKCAiQXR0ZW5kZWUiICk7Ci0JYXR0ZW5kZWUxLlNldEF0dHJpYnV0ZSggIm5hbWUiLCAiTWFycGxlIiApOwotCWF0dGVuZGVlMS5TZXRBdHRyaWJ1dGUoICJwb3NpdGlvbiIsICJ0ZWFjaGVyIiApOwotCi0JVGlYbWxFbGVtZW50IGF0dGVuZGVlMiggIkF0dGVuZGVlIiApOwotCWF0dGVuZGVlMi5TZXRBdHRyaWJ1dGUoICJuYW1lIiwgIlZvZWwiICk7Ci0JYXR0ZW5kZWUyLlNldEF0dHJpYnV0ZSggInBvc2l0aW9uIiwgImNvdW5zZWxvciIgKTsKLQotCS8vIEFzc2VtYmxlIHRoZSBub2RlcyB3ZSd2ZSBjcmVhdGVkOgotCW1lZXRpbmcxLkluc2VydEVuZENoaWxkKCBhdHRlbmRlZTEgKTsKLQltZWV0aW5nMS5JbnNlcnRFbmRDaGlsZCggYXR0ZW5kZWUyICk7Ci0KLQlpdGVtLkluc2VydEVuZENoaWxkKCB0ZXh0ICk7Ci0JaXRlbS5JbnNlcnRFbmRDaGlsZCggbWVldGluZzEgKTsKLQlpdGVtLkluc2VydEVuZENoaWxkKCBtZWV0aW5nMiApOwotCi0JLy8gQW5kIGFkZCB0aGUgbm9kZSB0byB0aGUgZXhpc3RpbmcgbGlzdCBhZnRlciB0aGUgZmlyc3QgY2hpbGQuCi0Jbm9kZSA9IHRvZG9FbGVtZW50LT5GaXJzdENoaWxkKCAiSXRlbSIgKTsKLQlhc3NlcnQoIG5vZGUgKTsKLQlpdGVtRWxlbWVudCA9IG5vZGUtPlRvRWxlbWVudCgpOwotCWFzc2VydCggaXRlbUVsZW1lbnQgKTsKLQotCXRvZG9FbGVtZW50LT5JbnNlcnRBZnRlckNoaWxkKCBpdGVtRWxlbWVudCwgaXRlbSApOwotCi0JcHJpbnRmKCAiXG4qKiBEZW1vIGRvYyBwcm9jZXNzZWQ6ICoqIFxuXG4iICk7Ci0JZG9jLlByaW50KCBzdGRvdXQgKTsKLQotCi0jaWZkZWYgVElYTUxfVVNFX1NUTAotCXByaW50ZiggIioqIERlbW8gZG9jIHByb2Nlc3NlZCB0byBzdHJlYW06ICoqIFxuXG4iICk7Ci0JY291dCA8PCBkb2MgPDwgZW5kbCA8PCBlbmRsOwotI2VuZGlmCi0KLQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCS8vIERpZmZlcmVudCB0ZXN0cy4uLmRvIHdlIGhhdmUgd2hhdCB3ZSBleHBlY3Q/Ci0JLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCWludCBjb3VudCA9IDA7Ci0JVGlYbWxFbGVtZW50KgllbGVtZW50OwotCi0JLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JY291dCA8PCAiKiogQmFzaWMgc3RydWN0dXJlLiAqKlxuIjsKLQlvc3RyaW5nc3RyZWFtIG91dHB1dFN0cmVhbSggb3N0cmluZ3N0cmVhbTo6b3V0ICk7Ci0Jb3V0cHV0U3RyZWFtIDw8IGRvYzsKLQlYbWxUZXN0KCAiT3V0cHV0IHN0cmVhbSBjb3JyZWN0LiIsCXN0cmluZyggZGVtb0VuZCApLmNfc3RyKCksCi0JCQkJCQkJCQkJb3V0cHV0U3RyZWFtLnN0cigpLmNfc3RyKCksIHRydWUgKTsKLSNlbmRpZgotCi0Jbm9kZSA9IGRvYy5Sb290RWxlbWVudCgpOwotCVhtbFRlc3QoICJSb290IGVsZW1lbnQgZXhpc3RzLiIsIHRydWUsICggbm9kZSAhPSAwICYmIG5vZGUtPlRvRWxlbWVudCgpICkgKTsKLQlYbWxUZXN0ICggIlJvb3QgZWxlbWVudCB2YWx1ZSBpcyAnVG9EbycuIiwgIlRvRG8iLCAgbm9kZS0+VmFsdWUoKSk7Ci0KLQlub2RlID0gbm9kZS0+Rmlyc3RDaGlsZCgpOwotCVhtbFRlc3QoICJGaXJzdCBjaGlsZCBleGlzdHMgJiBpcyBhIGNvbW1lbnQuIiwgdHJ1ZSwgKCBub2RlICE9IDAgJiYgbm9kZS0+VG9Db21tZW50KCkgKSApOwotCW5vZGUgPSBub2RlLT5OZXh0U2libGluZygpOwotCVhtbFRlc3QoICJTaWJsaW5nIGVsZW1lbnQgZXhpc3RzICYgaXMgYW4gZWxlbWVudC4iLCB0cnVlLCAoIG5vZGUgIT0gMCAmJiBub2RlLT5Ub0VsZW1lbnQoKSApICk7Ci0JWG1sVGVzdCAoICJWYWx1ZSBpcyAnSXRlbScuIiwgIkl0ZW0iLCBub2RlLT5WYWx1ZSgpICk7Ci0KLQlub2RlID0gbm9kZS0+Rmlyc3RDaGlsZCgpOwotCVhtbFRlc3QgKCAiRmlyc3QgY2hpbGQgZXhpc3RzLiIsIHRydWUsICggbm9kZSAhPSAwICYmIG5vZGUtPlRvVGV4dCgpICkgKTsKLQlYbWxUZXN0ICggIlZhbHVlIGlzICdHbyB0byB0aGUnLiIsICJHbyB0byB0aGUiLCBub2RlLT5WYWx1ZSgpICk7Ci0KLQotCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCXByaW50ZiAoIlxuKiogSXRlcmF0b3JzLiAqKlxuIik7Ci0KLQkvLyBXYWxrIGFsbCB0aGUgdG9wIGxldmVsIG5vZGVzIG9mIHRoZSBkb2N1bWVudC4KLQljb3VudCA9IDA7Ci0JZm9yKCBub2RlID0gZG9jLkZpcnN0Q2hpbGQoKTsKLQkJIG5vZGU7Ci0JCSBub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoKSApCi0JewotCQljb3VudCsrOwotCX0KLQlYbWxUZXN0KCAiVG9wIGxldmVsIG5vZGVzLCB1c2luZyBGaXJzdCAvIE5leHQuIiwgMywgY291bnQgKTsKLQotCWNvdW50ID0gMDsKLQlmb3IoIG5vZGUgPSBkb2MuTGFzdENoaWxkKCk7Ci0JCSBub2RlOwotCQkgbm9kZSA9IG5vZGUtPlByZXZpb3VzU2libGluZygpICkKLQl7Ci0JCWNvdW50Kys7Ci0JfQotCVhtbFRlc3QoICJUb3AgbGV2ZWwgbm9kZXMsIHVzaW5nIExhc3QgLyBQcmV2aW91cy4iLCAzLCBjb3VudCApOwotCi0JLy8gV2FsayBhbGwgdGhlIHRvcCBsZXZlbCBub2RlcyBvZiB0aGUgZG9jdW1lbnQsCi0JLy8gdXNpbmcgYSBkaWZmZXJlbnQgc3ludGF4LgotCWNvdW50ID0gMDsKLQlmb3IoIG5vZGUgPSBkb2MuSXRlcmF0ZUNoaWxkcmVuKCAwICk7Ci0JCSBub2RlOwotCQkgbm9kZSA9IGRvYy5JdGVyYXRlQ2hpbGRyZW4oIG5vZGUgKSApCi0JewotCQljb3VudCsrOwotCX0KLQlYbWxUZXN0KCAiVG9wIGxldmVsIG5vZGVzLCB1c2luZyBJdGVyYXRlQ2hpbGRyZW4uIiwgMywgY291bnQgKTsKLQotCS8vIFdhbGsgYWxsIHRoZSBlbGVtZW50cyBpbiBhIG5vZGUuCi0JY291bnQgPSAwOwotCWZvciggZWxlbWVudCA9IHRvZG9FbGVtZW50LT5GaXJzdENoaWxkRWxlbWVudCgpOwotCQkgZWxlbWVudDsKLQkJIGVsZW1lbnQgPSBlbGVtZW50LT5OZXh0U2libGluZ0VsZW1lbnQoKSApCi0JewotCQljb3VudCsrOwotCX0KLQlYbWxUZXN0KCAiQ2hpbGRyZW4gb2YgdGhlICdUb0RvJyBlbGVtZW50LCB1c2luZyBGaXJzdCAvIE5leHQuIiwKLQkJMywgY291bnQgKTsKLQotCS8vIFdhbGsgYWxsIHRoZSBlbGVtZW50cyBpbiBhIG5vZGUgYnkgdmFsdWUuCi0JY291bnQgPSAwOwotCWZvciggbm9kZSA9IHRvZG9FbGVtZW50LT5GaXJzdENoaWxkKCAiSXRlbSIgKTsKLQkJIG5vZGU7Ci0JCSBub2RlID0gbm9kZS0+TmV4dFNpYmxpbmcoICJJdGVtIiApICkKLQl7Ci0JCWNvdW50Kys7Ci0JfQotCVhtbFRlc3QoICInSXRlbScgY2hpbGRyZW4gb2YgdGhlICdUb0RvJyBlbGVtZW50LCB1c2luZyBGaXJzdC9OZXh0LiIsIDMsIGNvdW50ICk7Ci0KLQljb3VudCA9IDA7Ci0JZm9yKCBub2RlID0gdG9kb0VsZW1lbnQtPkxhc3RDaGlsZCggIkl0ZW0iICk7Ci0JCSBub2RlOwotCQkgbm9kZSA9IG5vZGUtPlByZXZpb3VzU2libGluZyggIkl0ZW0iICkgKQotCXsKLQkJY291bnQrKzsKLQl9Ci0JWG1sVGVzdCggIidJdGVtJyBjaGlsZHJlbiBvZiB0aGUgJ1RvRG8nIGVsZW1lbnQsIHVzaW5nIExhc3QvUHJldmlvdXMuIiwgMywgY291bnQgKTsKLQotI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQl7Ci0JCWNvdXQgPDwgIlxuKiogUGFyc2luZy4gKipcbiI7Ci0JCWlzdHJpbmdzdHJlYW0gcGFyc2UwKCAiPEVsZW1lbnQwIGF0dHJpYnV0ZTA9J2ZvbzAnIGF0dHJpYnV0ZTE9IG5vcXVvdGVzIGF0dHJpYnV0ZTIgPSAnJmd0OycgLz4iICk7Ci0JCVRpWG1sRWxlbWVudCBlbGVtZW50MCggImRlZmF1bHQiICk7Ci0JCXBhcnNlMCA+PiBlbGVtZW50MDsKLQotCQlYbWxUZXN0ICggIkVsZW1lbnQgcGFyc2VkLCB2YWx1ZSBpcyAnRWxlbWVudDAnLiIsICJFbGVtZW50MCIsIGVsZW1lbnQwLlZhbHVlKCkgKTsKLQkJWG1sVGVzdCAoICJSZWFkcyBhdHRyaWJ1dGUgJ2F0dHJpYnV0ZTA9XCJmb28wXCInLiIsICJmb28wIiwgZWxlbWVudDAuQXR0cmlidXRlKCAiYXR0cmlidXRlMCIgKSk7Ci0JCVhtbFRlc3QgKCAiUmVhZHMgaW5jb3JyZWN0bHkgZm9ybWF0dGVkICdhdHRyaWJ1dGUxPW5vcXVvdGVzJy4iLCAibm9xdW90ZXMiLCBlbGVtZW50MC5BdHRyaWJ1dGUoICJhdHRyaWJ1dGUxIiApICk7Ci0JCVhtbFRlc3QgKCAiUmVhZCBhdHRyaWJ1dGUgd2l0aCBlbnRpdHkgdmFsdWUgJz4nLiIsICI+IiwgZWxlbWVudDAuQXR0cmlidXRlKCAiYXR0cmlidXRlMiIgKSApOwotCX0KLSNlbmRpZgotCi0JewotCQljb25zdCBjaGFyKiBlcnJvciA9CSI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgc3RhbmRhbG9uZT1cIm5vXCIgPz5cbiIKLQkJCQkJCQkiPHBhc3NhZ2VzIGNvdW50PVwiMDA2XCIgZm9ybWF0dmVyc2lvbj1cIjIwMDIwNjIwXCI+XG4iCi0JCQkJCQkJIiAgICA8d3JvbmcgZXJyb3I+XG4iCi0JCQkJCQkJIjwvcGFzc2FnZXM+IjsKLQotICAgICAgICBUaVhtbERvY3VtZW50IGRvYzsKLQkJZG9jLlBhcnNlKCBlcnJvciApOwotCQlYbWxUZXN0KCAiRXJyb3Igcm93IiwgZG9jLkVycm9yUm93KCksIDMgKTsKLQkJWG1sVGVzdCggIkVycm9yIGNvbHVtbiIsIGRvYy5FcnJvckNvbCgpLCAxNyApOwotCQkvL3ByaW50ZiggImVycm9yPSVkIGlkPSclcycgcm93ICVkIGNvbCVkXG4iLCAoaW50KSBkb2MuRXJyb3IoKSwgZG9jLkVycm9yRGVzYygpLCBkb2MuRXJyb3JSb3coKSsxLCBkb2MuRXJyb3JDb2woKSArIDEgKTsKLQotCX0KLQl7Ci0JCWNvbnN0IGNoYXIqIHN0ciA9CSJcdDw/eG1sIHZlcnNpb249XCIxLjBcIiBzdGFuZGFsb25lPVwibm9cIiA/Plx0PHJvb20gZG9vcnM9JzInPlxuIgotCQkJCQkJCSIgIDwhLS0gU2lsbHkgZXhhbXBsZSAtLT5cbiIKLQkJCQkJCQkiICAgIDxkb29yIHdhbGw9J25vcnRoJz5BIGdyZWF0IGRvb3IhPC9kb29yPlxuIgotCQkJCQkJCSJcdDxkb29yIHdhbGw9J2Vhc3QnLz4iCi0JCQkJCQkJIjwvcm9vbT4iOwotCi0gICAgICAgIFRpWG1sRG9jdW1lbnQgZG9jOwotCQlkb2MuUGFyc2UoIHN0ciApOwotCi0JCVRpWG1sSGFuZGxlIGRvY0hhbmRsZSggJmRvYyApOwotCQlUaVhtbEhhbmRsZSByb29tSGFuZGxlID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGRFbGVtZW50KCAicm9vbSIgKTsKLQkJVGlYbWxIYW5kbGUgY29tbWVudEhhbmRsZSA9IGRvY0hhbmRsZS5GaXJzdENoaWxkRWxlbWVudCggInJvb20iICkuRmlyc3RDaGlsZCgpOwotCQlUaVhtbEhhbmRsZSB0ZXh0SGFuZGxlID0gZG9jSGFuZGxlLkZpcnN0Q2hpbGRFbGVtZW50KCAicm9vbSIgKS5DaGlsZEVsZW1lbnQoICJkb29yIiwgMCApLkZpcnN0Q2hpbGQoKTsKLQkJVGlYbWxIYW5kbGUgZG9vcjBIYW5kbGUgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZEVsZW1lbnQoICJyb29tIiApLkNoaWxkRWxlbWVudCggMCApOwotCQlUaVhtbEhhbmRsZSBkb29yMUhhbmRsZSA9IGRvY0hhbmRsZS5GaXJzdENoaWxkRWxlbWVudCggInJvb20iICkuQ2hpbGRFbGVtZW50KCAxICk7Ci0KLQkJYXNzZXJ0KCBkb2NIYW5kbGUuTm9kZSgpICk7Ci0JCWFzc2VydCggcm9vbUhhbmRsZS5FbGVtZW50KCkgKTsKLQkJYXNzZXJ0KCBjb21tZW50SGFuZGxlLk5vZGUoKSApOwotCQlhc3NlcnQoIHRleHRIYW5kbGUuVGV4dCgpICk7Ci0JCWFzc2VydCggZG9vcjBIYW5kbGUuRWxlbWVudCgpICk7Ci0JCWFzc2VydCggZG9vcjFIYW5kbGUuRWxlbWVudCgpICk7Ci0KLQkJVGlYbWxEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24gPSBkb2MuRmlyc3RDaGlsZCgpLT5Ub0RlY2xhcmF0aW9uKCk7Ci0JCWFzc2VydCggZGVjbGFyYXRpb24gKTsKLQkJVGlYbWxFbGVtZW50KiByb29tID0gcm9vbUhhbmRsZS5FbGVtZW50KCk7Ci0JCWFzc2VydCggcm9vbSApOwotCQlUaVhtbEF0dHJpYnV0ZSogZG9vcnMgPSByb29tLT5GaXJzdEF0dHJpYnV0ZSgpOwotCQlhc3NlcnQoIGRvb3JzICk7Ci0JCVRpWG1sVGV4dCogdGV4dCA9IHRleHRIYW5kbGUuVGV4dCgpOwotCQlUaVhtbENvbW1lbnQqIGNvbW1lbnQgPSBjb21tZW50SGFuZGxlLk5vZGUoKS0+VG9Db21tZW50KCk7Ci0JCWFzc2VydCggY29tbWVudCApOwotCQlUaVhtbEVsZW1lbnQqIGRvb3IwID0gZG9vcjBIYW5kbGUuRWxlbWVudCgpOwotCQlUaVhtbEVsZW1lbnQqIGRvb3IxID0gZG9vcjFIYW5kbGUuRWxlbWVudCgpOwotCi0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogRGVjbGFyYXRpb24gcm93IiwgZGVjbGFyYXRpb24tPlJvdygpLCAxICk7Ci0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogRGVjbGFyYXRpb24gY29sIiwgZGVjbGFyYXRpb24tPkNvbHVtbigpLCA1ICk7Ci0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogcm9vbSByb3ciLCByb29tLT5Sb3coKSwgMSApOwotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IHJvb20gY29sIiwgcm9vbS0+Q29sdW1uKCksIDQ1ICk7Ci0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogZG9vcnMgcm93IiwgZG9vcnMtPlJvdygpLCAxICk7Ci0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogZG9vcnMgY29sIiwgZG9vcnMtPkNvbHVtbigpLCA1MSApOwotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IENvbW1lbnQgcm93IiwgY29tbWVudC0+Um93KCksIDIgKTsKLQkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiBDb21tZW50IGNvbCIsIGNvbW1lbnQtPkNvbHVtbigpLCAzICk7Ci0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogdGV4dCByb3ciLCB0ZXh0LT5Sb3coKSwgMyApOyAKLQkJWG1sVGVzdCggIkxvY2F0aW9uIHRyYWNraW5nOiB0ZXh0IGNvbCIsIHRleHQtPkNvbHVtbigpLCAyNCApOwotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IGRvb3IwIHJvdyIsIGRvb3IwLT5Sb3coKSwgMyApOwotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IGRvb3IwIGNvbCIsIGRvb3IwLT5Db2x1bW4oKSwgNSApOwotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IGRvb3IxIHJvdyIsIGRvb3IxLT5Sb3coKSwgNCApOwotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IGRvb3IxIGNvbCIsIGRvb3IxLT5Db2x1bW4oKSwgNSApOwotCX0KLQl7Ci0JCWNvbnN0IGNoYXIqIHN0ciA9CSJcdDw/eG1sIHZlcnNpb249XCIxLjBcIiBzdGFuZGFsb25lPVwibm9cIiA/Plx0PHJvb20gZG9vcnM9JzInPlxuIgotCQkJCQkJCSI8L3Jvb20+IjsKLQotICAgICAgICBUaVhtbERvY3VtZW50IGRvYzsKLQkJZG9jLlNldFRhYlNpemUoIDggKTsKLQkJZG9jLlBhcnNlKCBzdHIgKTsKLQotCQlUaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZkb2MgKTsKLQkJVGlYbWxIYW5kbGUgcm9vbUhhbmRsZSA9IGRvY0hhbmRsZS5GaXJzdENoaWxkRWxlbWVudCggInJvb20iICk7Ci0KLQkJYXNzZXJ0KCBkb2NIYW5kbGUuTm9kZSgpICk7Ci0JCWFzc2VydCggcm9vbUhhbmRsZS5FbGVtZW50KCkgKTsKLQotCQlUaVhtbEVsZW1lbnQqIHJvb20gPSByb29tSGFuZGxlLkVsZW1lbnQoKTsKLQkJYXNzZXJ0KCByb29tICk7Ci0JCVRpWG1sQXR0cmlidXRlKiBkb29ycyA9IHJvb20tPkZpcnN0QXR0cmlidXRlKCk7Ci0JCWFzc2VydCggZG9vcnMgKTsKLQotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IFRhYiA4OiByb29tIHJvdyIsIHJvb20tPlJvdygpLCAxICk7Ci0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogVGFiIDg6IHJvb20gY29sIiwgcm9vbS0+Q29sdW1uKCksIDQ5ICk7Ci0JCVhtbFRlc3QoICJMb2NhdGlvbiB0cmFja2luZzogVGFiIDg6IGRvb3JzIHJvdyIsIGRvb3JzLT5Sb3coKSwgMSApOwotCQlYbWxUZXN0KCAiTG9jYXRpb24gdHJhY2tpbmc6IFRhYiA4OiBkb29ycyBjb2wiLCBkb29ycy0+Q29sdW1uKCksIDU1ICk7Ci0JfQotCi0JewotCQljb25zdCBjaGFyKiBzdHIgPSAiPGRvYyBhdHRyMD0nMScgYXR0cjE9JzIuMCcgYXR0cjI9J2ZvbycgLz4iOwotCi0JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQlkb2MuUGFyc2UoIHN0ciApOwotCi0JCVRpWG1sRWxlbWVudCogZWxlID0gZG9jLkZpcnN0Q2hpbGRFbGVtZW50KCk7Ci0KLQkJaW50IGlWYWwsIHJlc3VsdDsKLQkJZG91YmxlIGRWYWw7Ci0KLQkJcmVzdWx0ID0gZWxlLT5RdWVyeURvdWJsZUF0dHJpYnV0ZSggImF0dHIwIiwgJmRWYWwgKTsKLQkJWG1sVGVzdCggIlF1ZXJ5IGF0dHJpYnV0ZTogaW50IGFzIGRvdWJsZSIsIHJlc3VsdCwgVElYTUxfU1VDQ0VTUyApOwotCQlYbWxUZXN0KCAiUXVlcnkgYXR0cmlidXRlOiBpbnQgYXMgZG91YmxlIiwgKGludClkVmFsLCAxICk7Ci0JCXJlc3VsdCA9IGVsZS0+UXVlcnlEb3VibGVBdHRyaWJ1dGUoICJhdHRyMSIsICZkVmFsICk7Ci0JCVhtbFRlc3QoICJRdWVyeSBhdHRyaWJ1dGU6IGRvdWJsZSBhcyBkb3VibGUiLCAoaW50KWRWYWwsIDIgKTsKLQkJcmVzdWx0ID0gZWxlLT5RdWVyeUludEF0dHJpYnV0ZSggImF0dHIxIiwgJmlWYWwgKTsKLQkJWG1sVGVzdCggIlF1ZXJ5IGF0dHJpYnV0ZTogZG91YmxlIGFzIGludCIsIHJlc3VsdCwgVElYTUxfU1VDQ0VTUyApOwotCQlYbWxUZXN0KCAiUXVlcnkgYXR0cmlidXRlOiBkb3VibGUgYXMgaW50IiwgaVZhbCwgMiApOwotCQlyZXN1bHQgPSBlbGUtPlF1ZXJ5SW50QXR0cmlidXRlKCAiYXR0cjIiLCAmaVZhbCApOwotCQlYbWxUZXN0KCAiUXVlcnkgYXR0cmlidXRlOiBub3QgYSBudW1iZXIiLCByZXN1bHQsIFRJWE1MX1dST05HX1RZUEUgKTsKLQkJcmVzdWx0ID0gZWxlLT5RdWVyeUludEF0dHJpYnV0ZSggImJhciIsICZpVmFsICk7Ci0JCVhtbFRlc3QoICJRdWVyeSBhdHRyaWJ1dGU6IGRvZXMgbm90IGV4aXN0IiwgcmVzdWx0LCBUSVhNTF9OT19BVFRSSUJVVEUgKTsKLQl9Ci0KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JewotCQkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQkJY291dCA8PCAiXG4qKiBTdHJlYW1pbmcuICoqXG4iOwotCi0JCS8vIFJvdW5kIHRyaXAgY2hlY2s6IHN0cmVhbSBpbiwgdGhlbiBzdHJlYW0gYmFjayBvdXQgdG8gdmVyaWZ5LiBUaGUgc3RyZWFtCi0JCS8vIG91dCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQsIGFib3ZlLiBXZSB1c2UgdGhlIG91dHB1dAotCi0JCWlzdHJpbmdzdHJlYW0gaW5wdXRTdHJpbmdTdHJlYW0oIG91dHB1dFN0cmVhbS5zdHIoKSApOwotCQlUaVhtbERvY3VtZW50IGRvY3VtZW50MDsKLQotCQlpbnB1dFN0cmluZ1N0cmVhbSA+PiBkb2N1bWVudDA7Ci0KLQkJb3N0cmluZ3N0cmVhbSBvdXRwdXRTdHJlYW0wKCBvc3RyaW5nc3RyZWFtOjpvdXQgKTsKLQkJb3V0cHV0U3RyZWFtMCA8PCBkb2N1bWVudDA7Ci0KLQkJWG1sVGVzdCggIlN0cmVhbSByb3VuZCB0cmlwIGNvcnJlY3QuIiwJc3RyaW5nKCBkZW1vRW5kICkuY19zdHIoKSwgCi0JCQkJCQkJCQkJCQlvdXRwdXRTdHJlYW0wLnN0cigpLmNfc3RyKCksIHRydWUgKTsKLQotCQlzdGQ6OnN0cmluZyBzdHI7Ci0JCXN0ciA8PCBkb2N1bWVudDA7Ci0KLQkJWG1sVGVzdCggIlN0cmluZyBwcmludGluZyBjb3JyZWN0LiIsIHN0cmluZyggZGVtb0VuZCApLmNfc3RyKCksIAotCQkJCQkJCQkJCQkgc3RyLmNfc3RyKCksIHRydWUgKTsKLQl9Ci0jZW5kaWYKLQotCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JLy8gVVRGLTggdGVzdGluZy4gSXQgaXMgaW1wb3J0YW50IHRvIHRlc3Q6Ci0JLy8JMS4gTWFraW5nIHN1cmUgbmFtZSwgdmFsdWUsIGFuZCB0ZXh0IHJlYWQgY29ycmVjdGx5Ci0JLy8JMi4gUm93LCBDb2wgZnVuY3Rpb25hbGl0eQotCS8vCTMuIENvcnJlY3Qgb3V0cHV0Ci0JLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlwcmludGYgKCJcbioqIFVURi04ICoqXG4iKTsKLQl7Ci0JCVRpWG1sRG9jdW1lbnQgZG9jKCAidXRmOHRlc3QueG1sIiApOwotCQlkb2MuTG9hZEZpbGUoKTsKLQkJaWYgKCBkb2MuRXJyb3IoKSAmJiBkb2MuRXJyb3JJZCgpID09IFRpWG1sQmFzZTo6VElYTUxfRVJST1JfT1BFTklOR19GSUxFICkgewotCQkJcHJpbnRmKCAiV0FSTklORzogRmlsZSAndXRmOHRlc3QueG1sJyBub3QgZm91bmQuXG4iCi0JCQkJCSIoQXJlIHlvdSBydW5uaW5nIHRoZSB0ZXN0IGZyb20gdGhlIHdyb25nIGRpcmVjdG9yeT8pXG4iCi0JCQkJICAgICJDb3VsZCBub3QgdGVzdCBVVEYtOCBmdW5jdGlvbmFsaXR5LlxuIiApOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJVGlYbWxIYW5kbGUgZG9jSCggJmRvYyApOwotCQkJLy8gR2V0IHRoZSBhdHRyaWJ1dGUgInZhbHVlIiBmcm9tIHRoZSAiUnVzc2lhbiIgZWxlbWVudCBhbmQgY2hlY2sgaXQuCi0JCQlUaVhtbEVsZW1lbnQqIGVsZW1lbnQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZG9jdW1lbnQiICkuRmlyc3RDaGlsZEVsZW1lbnQoICJSdXNzaWFuIiApLkVsZW1lbnQoKTsKLQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgY29ycmVjdFZhbHVlW10gPSB7CTB4ZDFVLCAweDg2VSwgMHhkMFUsIDB4YjVVLCAweGQwVSwgMHhiZFUsIDB4ZDBVLCAweGJkVSwgCi0JCQkJCQkJCQkJCQkJMHhkMFUsIDB4YmVVLCAweGQxVSwgMHg4MVUsIDB4ZDFVLCAweDgyVSwgMHhkMVUsIDB4OGNVLCAwIH07Ci0KLQkJCVhtbFRlc3QoICJVVEYtODogUnVzc2lhbiB2YWx1ZS4iLCAoY29uc3QgY2hhciopY29ycmVjdFZhbHVlLCBlbGVtZW50LT5BdHRyaWJ1dGUoICJ2YWx1ZSIgKSwgdHJ1ZSApOwotCQkJWG1sVGVzdCggIlVURi04OiBSdXNzaWFuIHZhbHVlIHJvdy4iLCA0LCBlbGVtZW50LT5Sb3coKSApOwotCQkJWG1sVGVzdCggIlVURi04OiBSdXNzaWFuIHZhbHVlIGNvbHVtbi4iLCA1LCBlbGVtZW50LT5Db2x1bW4oKSApOwotCi0JCQljb25zdCB1bnNpZ25lZCBjaGFyIHJ1c3NpYW5FbGVtZW50TmFtZVtdID0gewkweGQwVSwgMHhhMFUsIDB4ZDFVLCAweDgzVSwKLQkJCQkJCQkJCQkJCQkJCTB4ZDFVLCAweDgxVSwgMHhkMVUsIDB4ODFVLAotCQkJCQkJCQkJCQkJCQkJMHhkMFUsIDB4YmFVLCAweGQwVSwgMHhiOFUsCi0JCQkJCQkJCQkJCQkJCQkweGQwVSwgMHhiOVUsIDAgfTsKLQkJCWNvbnN0IGNoYXIgcnVzc2lhblRleHRbXSA9ICI8XHhEMFx4QjhceEQwXHhCQ1x4RDBceEI1XHhEMFx4QjVceEQxXHg4Mj4iOwotCi0JCQlUaVhtbFRleHQqIHRleHQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZG9jdW1lbnQiICkuRmlyc3RDaGlsZEVsZW1lbnQoIChjb25zdCBjaGFyKikgcnVzc2lhbkVsZW1lbnROYW1lICkuQ2hpbGQoIDAgKS5UZXh0KCk7Ci0JCQlYbWxUZXN0KCAiVVRGLTg6IEJyb3dzaW5nIHJ1c3NpYW4gZWxlbWVudCBuYW1lLiIsCi0JCQkJCSBydXNzaWFuVGV4dCwKLQkJCQkJIHRleHQtPlZhbHVlKCksCi0JCQkJCSB0cnVlICk7Ci0JCQlYbWxUZXN0KCAiVVRGLTg6IFJ1c3NpYW4gZWxlbWVudCBuYW1lIHJvdy4iLCA3LCB0ZXh0LT5Sb3coKSApOwotCQkJWG1sVGVzdCggIlVURi04OiBSdXNzaWFuIGVsZW1lbnQgbmFtZSBjb2x1bW4uIiwgNDcsIHRleHQtPkNvbHVtbigpICk7Ci0KLQkJCVRpWG1sRGVjbGFyYXRpb24qIGRlYyA9IGRvY0guQ2hpbGQoIDAgKS5Ob2RlKCktPlRvRGVjbGFyYXRpb24oKTsKLQkJCVhtbFRlc3QoICJVVEYtODogRGVjbGFyYXRpb24gY29sdW1uLiIsIDEsIGRlYy0+Q29sdW1uKCkgKTsKLQkJCVhtbFRlc3QoICJVVEYtODogRG9jdW1lbnQgY29sdW1uLiIsIDEsIGRvYy5Db2x1bW4oKSApOwotCi0JCQkvLyBOb3cgdHJ5IGZvciBhIHJvdW5kIHRyaXAuCi0JCQlkb2MuU2F2ZUZpbGUoICJ1dGY4dGVzdG91dC54bWwiICk7Ci0KLQkJCS8vIENoZWNrIHRoZSByb3VuZCB0cmlwLgotCQkJY2hhciBzYXZlZEJ1ZlsyNTZdOwotCQkJY2hhciB2ZXJpZnlCdWZbMjU2XTsKLQkJCWludCBva2F5ID0gMTsKLQotCQkJRklMRSogc2F2ZWQgID0gZm9wZW4oICJ1dGY4dGVzdG91dC54bWwiLCAiciIgKTsKLQkJCUZJTEUqIHZlcmlmeSA9IGZvcGVuKCAidXRmOHRlc3R2ZXJpZnkueG1sIiwgInIiICk7Ci0JCQlpZiAoIHNhdmVkICYmIHZlcmlmeSApCi0JCQl7Ci0JCQkJd2hpbGUgKCBmZ2V0cyggdmVyaWZ5QnVmLCAyNTYsIHZlcmlmeSApICkKLQkJCQl7Ci0JCQkJCWZnZXRzKCBzYXZlZEJ1ZiwgMjU2LCBzYXZlZCApOwotCQkJCQlpZiAoIHN0cmNtcCggdmVyaWZ5QnVmLCBzYXZlZEJ1ZiApICkKLQkJCQkJewotCQkJCQkJb2theSA9IDA7Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCX0KLQkJCQlmY2xvc2UoIHNhdmVkICk7Ci0JCQkJZmNsb3NlKCB2ZXJpZnkgKTsKLQkJCX0KLQkJCVhtbFRlc3QoICJVVEYtODogVmVyaWZpZWQgbXVsdGktbGFuZ3VhZ2Ugcm91bmQgdHJpcC4iLCAxLCBva2F5ICk7Ci0KLQkJCS8vIE9uIG1vc3QgV2VzdGVybiBtYWNoaW5lcywgdGhpcyBpcyBhbiBlbGVtZW50IHRoYXQgY29udGFpbnMKLQkJCS8vIHRoZSB3b3JkICJyZXN1bWUiIHdpdGggdGhlIGNvcnJlY3QgYWNjZW50cywgaW4gYSBsYXRpbiBlbmNvZGluZy4KLQkJCS8vIEl0IHdpbGwgYmUgc29tZXRoaW5nIGVsc2UgY29tcGxldGVseSBvbiBub24td2VzdGVyIG1hY2hpbmVzLAotCQkJLy8gd2hpY2ggaXMgd2h5IFRpbnlYbWwgaXMgc3dpdGNoaW5nIHRvIFVURi04LgotCQkJY29uc3QgY2hhciBsYXRpbltdID0gIjxlbGVtZW50PnJceDgyc3VtXHg4MjwvZWxlbWVudD4iOwotCi0JCQlUaVhtbERvY3VtZW50IGxhdGluRG9jOwotCQkJbGF0aW5Eb2MuUGFyc2UoIGxhdGluLCAwLCBUSVhNTF9FTkNPRElOR19MRUdBQ1kgKTsKLQotCQkJdGV4dCA9IGxhdGluRG9jLkZpcnN0Q2hpbGRFbGVtZW50KCktPkZpcnN0Q2hpbGQoKS0+VG9UZXh0KCk7Ci0JCQlYbWxUZXN0KCAiTGVnYWN5IGVuY29kaW5nOiBWZXJpZnkgdGV4dCBlbGVtZW50LiIsICJyXHg4MnN1bVx4ODIiLCB0ZXh0LT5WYWx1ZSgpICk7Ci0JCX0KLQl9CQkKLQotCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQkvLyBDb3B5IGFuZCBhc3NpZ25tZW50Ci0JLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCXByaW50ZiAoIlxuKiogQ29weSBhbmQgQXNzaWdubWVudCAqKlxuIik7Ci0JewotCQlUaVhtbEVsZW1lbnQgZWxlbWVudCggImZvbyIgKTsKLQkJZWxlbWVudC5QYXJzZSggIjxlbGVtZW50IG5hbWU9J3ZhbHVlJyAvPiIsIDAsIFRJWE1MX0VOQ09ESU5HX1VOS05PV04gKTsKLQotCQlUaVhtbEVsZW1lbnQgZWxlbWVudENvcHkoIGVsZW1lbnQgKTsKLQkJVGlYbWxFbGVtZW50IGVsZW1lbnRBc3NpZ24oICJmb28iICk7Ci0JCWVsZW1lbnRBc3NpZ24uUGFyc2UoICI8aW5jb3JyZWN0IGZvbz0nYmFyJy8+IiwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQllbGVtZW50QXNzaWduID0gZWxlbWVudDsKLQotCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGVsZW1lbnQgY29weSAjMS4iLCAiZWxlbWVudCIsIGVsZW1lbnRDb3B5LlZhbHVlKCkgKTsKLQkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBlbGVtZW50IGNvcHkgIzIuIiwgInZhbHVlIiwgZWxlbWVudENvcHkuQXR0cmlidXRlKCAibmFtZSIgKSApOwotCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGVsZW1lbnQgYXNzaWduICMxLiIsICJlbGVtZW50IiwgZWxlbWVudEFzc2lnbi5WYWx1ZSgpICk7Ci0JCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZWxlbWVudCBhc3NpZ24gIzIuIiwgInZhbHVlIiwgZWxlbWVudEFzc2lnbi5BdHRyaWJ1dGUoICJuYW1lIiApICk7Ci0JCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZWxlbWVudCBhc3NpZ24gIzMuIiwgMCwgKGludCkgZWxlbWVudEFzc2lnbi5BdHRyaWJ1dGUoICJmb28iICkgKTsKLQotCQlUaVhtbENvbW1lbnQgY29tbWVudDsKLQkJY29tbWVudC5QYXJzZSggIjwhLS1jb21tZW50LS0+IiwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQlUaVhtbENvbW1lbnQgY29tbWVudENvcHkoIGNvbW1lbnQgKTsKLQkJVGlYbWxDb21tZW50IGNvbW1lbnRBc3NpZ247Ci0JCWNvbW1lbnRBc3NpZ24gPSBjb21tZW50Q29weTsKLQkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBjb21tZW50IGNvcHkuIiwgImNvbW1lbnQiLCBjb21tZW50Q29weS5WYWx1ZSgpICk7Ci0JCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogY29tbWVudCBhc3NpZ24uIiwgImNvbW1lbnQiLCBjb21tZW50QXNzaWduLlZhbHVlKCkgKTsKLQotCQlUaVhtbFVua25vd24gdW5rbm93bjsKLQkJdW5rbm93bi5QYXJzZSggIjxbdW5rbm93bl0+IiwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQlUaVhtbFVua25vd24gdW5rbm93bkNvcHkoIHVua25vd24gKTsKLQkJVGlYbWxVbmtub3duIHVua25vd25Bc3NpZ247Ci0JCXVua25vd25Bc3NpZ24uUGFyc2UoICJpbmNvcnJlY3QiLCAwLCBUSVhNTF9FTkNPRElOR19VTktOT1dOICk7Ci0JCXVua25vd25Bc3NpZ24gPSB1bmtub3duQ29weTsKLQkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiB1bmtub3duIGNvcHkuIiwgIlt1bmtub3duXSIsIHVua25vd25Db3B5LlZhbHVlKCkgKTsKLQkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiB1bmtub3duIGFzc2lnbi4iLCAiW3Vua25vd25dIiwgdW5rbm93bkFzc2lnbi5WYWx1ZSgpICk7Ci0JCQotCQlUaVhtbFRleHQgdGV4dCggIlRleHROb2RlIiApOwotCQlUaVhtbFRleHQgdGV4dENvcHkoIHRleHQgKTsKLQkJVGlYbWxUZXh0IHRleHRBc3NpZ24oICJpbmNvcnJlY3QiICk7Ci0JCXRleHRBc3NpZ24gPSB0ZXh0OwotCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IHRleHQgY29weS4iLCAiVGV4dE5vZGUiLCB0ZXh0Q29weS5WYWx1ZSgpICk7Ci0JCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogdGV4dCBhc3NpZ24uIiwgIlRleHROb2RlIiwgdGV4dEFzc2lnbi5WYWx1ZSgpICk7Ci0KLQkJVGlYbWxEZWNsYXJhdGlvbiBkZWM7Ci0JCWRlYy5QYXJzZSggIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+IiwgMCwgVElYTUxfRU5DT0RJTkdfVU5LTk9XTiApOwotCQlUaVhtbERlY2xhcmF0aW9uIGRlY0NvcHkoIGRlYyApOwotCQlUaVhtbERlY2xhcmF0aW9uIGRlY0Fzc2lnbjsKLQkJZGVjQXNzaWduID0gZGVjOwotCi0JCVhtbFRlc3QoICJDb3B5L0Fzc2lnbjogZGVjbGFyYXRpb24gY29weS4iLCAiVVRGLTgiLCBkZWNDb3B5LkVuY29kaW5nKCkgKTsKLQkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiB0ZXh0IGFzc2lnbi4iLCAiVVRGLTgiLCBkZWNBc3NpZ24uRW5jb2RpbmcoKSApOwotCi0JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQllbGVtZW50Q29weS5JbnNlcnRFbmRDaGlsZCggdGV4dENvcHkgKTsKLQkJZG9jLkluc2VydEVuZENoaWxkKCBkZWNBc3NpZ24gKTsKLQkJZG9jLkluc2VydEVuZENoaWxkKCBlbGVtZW50Q29weSApOwotCQlkb2MuSW5zZXJ0RW5kQ2hpbGQoIHVua25vd25Bc3NpZ24gKTsKLQotCQlUaVhtbERvY3VtZW50IGRvY0NvcHkoIGRvYyApOwotCQlUaVhtbERvY3VtZW50IGRvY0Fzc2lnbjsKLQkJZG9jQXNzaWduID0gZG9jQ29weTsKLQotCQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCQlzdGQ6OnN0cmluZyBvcmlnaW5hbCwgY29weSwgYXNzaWduOwotCQlvcmlnaW5hbCA8PCBkb2M7Ci0JCWNvcHkgPDwgZG9jQ29weTsKLQkJYXNzaWduIDw8IGRvY0Fzc2lnbjsKLQkJWG1sVGVzdCggIkNvcHkvQXNzaWduOiBkb2N1bWVudCBjb3B5LiIsIG9yaWdpbmFsLmNfc3RyKCksIGNvcHkuY19zdHIoKSwgdHJ1ZSApOwotCQlYbWxUZXN0KCAiQ29weS9Bc3NpZ246IGRvY3VtZW50IGFzc2lnbi4iLCBvcmlnaW5hbC5jX3N0cigpLCBhc3NpZ24uY19zdHIoKSwgdHJ1ZSApOwotCi0JCSNlbmRpZgotCX0JCi0KLQkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JcHJpbnRmICgiXG4qKiBQYXJzaW5nLCBubyBDb25kZW5zZSBXaGl0ZXNwYWNlICoqXG4iKTsKLQlUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggZmFsc2UgKTsKLQotCWlzdHJpbmdzdHJlYW0gcGFyc2UxKCAiPHN0YXJ0PlRoaXMgIGlzICAgIFxudGV4dDwvc3RhcnQ+IiApOwotCVRpWG1sRWxlbWVudCB0ZXh0MSggInRleHQiICk7Ci0JcGFyc2UxID4+IHRleHQxOwotCi0JWG1sVGVzdCAoICJDb25kZW5zZSB3aGl0ZSBzcGFjZSBPRkYuIiwgIlRoaXMgIGlzICAgIFxudGV4dCIsCi0JCQkJdGV4dDEuRmlyc3RDaGlsZCgpLT5WYWx1ZSgpLAotCQkJCXRydWUgKTsKLQotCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCB0cnVlICk7Ci0jZW5kaWYKLQotCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCS8vIEdldFRleHQoKTsKLQl7Ci0JCWNvbnN0IGNoYXIqIHN0ciA9ICI8Zm9vPlRoaXMgaXMgdGV4dDwvZm9vPiI7Ci0JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQlkb2MuUGFyc2UoIHN0ciApOwotCQljb25zdCBUaVhtbEVsZW1lbnQqIGVsZW1lbnQgPSBkb2MuUm9vdEVsZW1lbnQoKTsKLQotCQlYbWxUZXN0KCAiR2V0VGV4dCgpIG5vcm1hbCB1c2UuIiwgIlRoaXMgaXMgdGV4dCIsIGVsZW1lbnQtPkdldFRleHQoKSApOwotCi0JCXN0ciA9ICI8Zm9vPjxiPlRoaXMgaXMgdGV4dDwvYj48L2Zvbz4iOwotCQlkb2MuQ2xlYXIoKTsKLQkJZG9jLlBhcnNlKCBzdHIgKTsKLQkJZWxlbWVudCA9IGRvYy5Sb290RWxlbWVudCgpOwotCi0JCVhtbFRlc3QoICJHZXRUZXh0KCkgY29udGFpbmVkIGVsZW1lbnQuIiwgZWxlbWVudC0+R2V0VGV4dCgpID09IDAsIHRydWUgKTsKLQotCQlzdHIgPSAiPGZvbz5UaGlzIGlzIDxiPnRleHQ8L2I+PC9mb28+IjsKLQkJZG9jLkNsZWFyKCk7Ci0JCVRpWG1sQmFzZTo6U2V0Q29uZGVuc2VXaGl0ZVNwYWNlKCBmYWxzZSApOwotCQlkb2MuUGFyc2UoIHN0ciApOwotCQlUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggdHJ1ZSApOwotCQllbGVtZW50ID0gZG9jLlJvb3RFbGVtZW50KCk7Ci0KLQkJWG1sVGVzdCggIkdldFRleHQoKSBwYXJ0aWFsLiIsICJUaGlzIGlzICIsIGVsZW1lbnQtPkdldFRleHQoKSApOwotCX0KLQotCi0JLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0JLy8gQ0RBVEEKLQl7Ci0JCWNvbnN0IGNoYXIqIHN0ciA9CSI8eG1sRWxlbWVudD4iCi0JCQkJCQkJCSI8IVtDREFUQVsiCi0JCQkJCQkJCQkiSSBhbSA+IHRoZSBydWxlcyFcbiIKLQkJCQkJCQkJCSIuLi5zaW5jZSBJIG1ha2Ugc3ltYm9saWMgcHVucyIKLQkJCQkJCQkJIl1dPiIKLQkJCQkJCQkiPC94bWxFbGVtZW50PiI7Ci0JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQlkb2MuUGFyc2UoIHN0ciApOwotCQkvL2RvYy5QcmludCgpOwotCi0JCVhtbFRlc3QoICJDREFUQSBwYXJzZS4iLCBkb2MuRmlyc3RDaGlsZEVsZW1lbnQoKS0+Rmlyc3RDaGlsZCgpLT5WYWx1ZSgpLCAKLQkJCQkJCQkJICJJIGFtID4gdGhlIHJ1bGVzIVxuLi4uc2luY2UgSSBtYWtlIHN5bWJvbGljIHB1bnMiLAotCQkJCQkJCQkgdHJ1ZSApOwotCi0JCSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JCS8vY291dCA8PCBkb2MgPDwgJ1xuJzsKLQotCQlkb2MuQ2xlYXIoKTsKLQotCQlpc3RyaW5nc3RyZWFtIHBhcnNlMCggc3RyICk7Ci0JCXBhcnNlMCA+PiBkb2M7Ci0JCS8vY291dCA8PCBkb2MgPDwgJ1xuJzsKLQotCQlYbWxUZXN0KCAiQ0RBVEEgc3RyZWFtLiIsIGRvYy5GaXJzdENoaWxkRWxlbWVudCgpLT5GaXJzdENoaWxkKCktPlZhbHVlKCksIAotCQkJCQkJCQkgIkkgYW0gPiB0aGUgcnVsZXMhXG4uLi5zaW5jZSBJIG1ha2Ugc3ltYm9saWMgcHVucyIsCi0JCQkJCQkJCSB0cnVlICk7Ci0JCSNlbmRpZgotCi0JCVRpWG1sRG9jdW1lbnQgZG9jMSA9IGRvYzsKLQkJLy9kb2MuUHJpbnQoKTsKLQotCQlYbWxUZXN0KCAiQ0RBVEEgY29weS4iLCBkb2MxLkZpcnN0Q2hpbGRFbGVtZW50KCktPkZpcnN0Q2hpbGQoKS0+VmFsdWUoKSwgCi0JCQkJCQkJCSAiSSBhbSA+IHRoZSBydWxlcyFcbi4uLnNpbmNlIEkgbWFrZSBzeW1ib2xpYyBwdW5zIiwKLQkJCQkJCQkJIHRydWUgKTsKLQl9Ci0KLQotCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCXByaW50ZiAoIlxuKiogQnVnIHJlZ3Jlc3Npb24gdGVzdHMgKipcbiIpOwotCi0JLy8gSW5zZXJ0QmVmb3JlQ2hpbGQgYW5kIEluc2VydEFmdGVyQ2hpbGQgY2F1c2VzIGNyYXNoLgotCXsKLQkJVGlYbWxFbGVtZW50IHBhcmVudCggIlBhcmVudCIgKTsKLQkJVGlYbWxFbGVtZW50IGNoaWxkVGV4dDAoICJjaGlsZFRleHQwIiApOwotCQlUaVhtbEVsZW1lbnQgY2hpbGRUZXh0MSggImNoaWxkVGV4dDEiICk7Ci0JCVRpWG1sTm9kZSogY2hpbGROb2RlMCA9IHBhcmVudC5JbnNlcnRFbmRDaGlsZCggY2hpbGRUZXh0MCApOwotCQlUaVhtbE5vZGUqIGNoaWxkTm9kZTEgPSBwYXJlbnQuSW5zZXJ0QmVmb3JlQ2hpbGQoIGNoaWxkTm9kZTAsIGNoaWxkVGV4dDEgKTsKLQotCQlYbWxUZXN0KCAiVGVzdCBJbnNlcnRCZWZvcmVDaGlsZCBvbiBlbXB0eSBub2RlLiIsICggY2hpbGROb2RlMSA9PSBwYXJlbnQuRmlyc3RDaGlsZCgpICksIHRydWUgKTsKLQl9Ci0KLQl7Ci0JCS8vIEluc2VydEJlZm9yZUNoaWxkIGFuZCBJbnNlcnRBZnRlckNoaWxkIGNhdXNlcyBjcmFzaC4KLQkJVGlYbWxFbGVtZW50IHBhcmVudCggIlBhcmVudCIgKTsKLQkJVGlYbWxFbGVtZW50IGNoaWxkVGV4dDAoICJjaGlsZFRleHQwIiApOwotCQlUaVhtbEVsZW1lbnQgY2hpbGRUZXh0MSggImNoaWxkVGV4dDEiICk7Ci0JCVRpWG1sTm9kZSogY2hpbGROb2RlMCA9IHBhcmVudC5JbnNlcnRFbmRDaGlsZCggY2hpbGRUZXh0MCApOwotCQlUaVhtbE5vZGUqIGNoaWxkTm9kZTEgPSBwYXJlbnQuSW5zZXJ0QWZ0ZXJDaGlsZCggY2hpbGROb2RlMCwgY2hpbGRUZXh0MSApOwotCi0JCVhtbFRlc3QoICJUZXN0IEluc2VydEFmdGVyQ2hpbGQgb24gZW1wdHkgbm9kZS4gIiwgKCBjaGlsZE5vZGUxID09IHBhcmVudC5MYXN0Q2hpbGQoKSApLCB0cnVlICk7Ci0JfQotCi0JLy8gUmVwb3J0cyBvZiBtaXNzaW5nIGNvbnN0cnVjdG9ycywgaXJyZWd1bGFyIHN0cmluZyBwcm9ibGVtcy4KLQl7Ci0JCS8vIE1pc3NpbmcgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb24uIE5vIHRlc3QgLS0ganVzdCBjb21waWxlcy4KLQkJVGlYbWxUZXh0IHRleHQoICJNaXNzaW5nIiApOwotCi0JCSNpZmRlZiBUSVhNTF9VU0VfU1RMCi0JCQkvLyBNaXNzaW5nIGltcGxlbWVudGF0aW9uOgotCQkJVGlYbWxEb2N1bWVudCBkb2M7Ci0JCQlzdHJpbmcgbmFtZSA9ICJtaXNzaW5nIjsKLQkJCWRvYy5Mb2FkRmlsZSggbmFtZSApOwotCi0JCQlUaVhtbFRleHQgdGV4dFNUTCggbmFtZSApOwotCQkjZWxzZQotCQkJLy8gdmVyaWZ5aW5nIHNvbWUgYmFzaWMgc3RyaW5nIGZ1bmN0aW9uczoKLQkJCVRpWG1sU3RyaW5nIGE7Ci0JCQlUaVhtbFN0cmluZyBiKCAiSGVsbG8iICk7Ci0JCQlUaVhtbFN0cmluZyBjKCAib29nYSIgKTsKLQotCQkJYyA9ICIgV29ybGQhIjsKLQkJCWEgPSBiOwotCQkJYSArPSBjOwotCQkJYSA9IGE7Ci0KLQkJCVhtbFRlc3QoICJCYXNpYyBUaVhtbFN0cmluZyB0ZXN0LiAiLCAiSGVsbG8gV29ybGQhIiwgYS5jX3N0cigpICk7Ci0JCSNlbmRpZgotIAl9Ci0KLQkvLyBMb25nIGZpbGVuYW1lcyBjcmFzaGluZyBTVEwgdmVyc2lvbgotCXsKLQkJVGlYbWxEb2N1bWVudCBkb2MoICJtaWRzdW1tZXJOaWdodHNEcmVhbVdpdGhBVmVyeUxvbmdGaWxlbmFtZVRvQ29uZnVzZVRoZVN0cmluZ0hhbmRsaW5nUm91dGluZXMueG1sIiApOwotCQlib29sIGxvYWRPa2F5ID0gZG9jLkxvYWRGaWxlKCk7Ci0JCWxvYWRPa2F5ID0gdHJ1ZTsJLy8gZ2V0IHJpZCBvZiBjb21waWxlciB3YXJuaW5nLgotCQkvLyBXb24ndCBwYXNzIG9uIG5vbi1kZXYgc3lzdGVtcy4gSnVzdCBhICJubyBjcmFzaCIgY2hlY2suCi0JCS8vWG1sVGVzdCggIkxvbmcgZmlsZW5hbWUuICIsIHRydWUsIGxvYWRPa2F5ICk7Ci0JfQotCi0JewotCQkvLyBFbnRpdGllcyBub3QgYmVpbmcgd3JpdHRlbiBjb3JyZWN0bHkuCi0JCS8vIEZyb20gTHlubiBBbGxlbgotCi0JCWNvbnN0IGNoYXIqIHBhc3NhZ2VzID0KLQkJCSI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgc3RhbmRhbG9uZT1cIm5vXCIgPz4iCi0JCQkiPHBhc3NhZ2VzIGNvdW50PVwiMDA2XCIgZm9ybWF0dmVyc2lvbj1cIjIwMDIwNjIwXCI+IgotCQkJCSI8cHNnIGNvbnRleHQ9XCJMaW5lIDUgaGFzICZxdW90O3F1b3RhdGlvbiBtYXJrcyZxdW90OyBhbmQgJmFwb3M7YXBvc3Ryb3BoZSBtYXJrcyZhcG9zOy4iCi0JCQkJIiBJdCBhbHNvIGhhcyAmbHQ7LCAmZ3Q7LCBhbmQgJmFtcDssIGFzIHdlbGwgYXMgYSBmYWtlIGNvcHlyaWdodCAmI3hBOTsuXCI+IDwvcHNnPiIKLQkJCSI8L3Bhc3NhZ2VzPiI7Ci0KLQkJVGlYbWxEb2N1bWVudCBkb2MoICJwYXNzYWdlcy54bWwiICk7Ci0JCWRvYy5QYXJzZSggcGFzc2FnZXMgKTsKLQkJVGlYbWxFbGVtZW50KiBwc2cgPSBkb2MuUm9vdEVsZW1lbnQoKS0+Rmlyc3RDaGlsZEVsZW1lbnQoKTsKLQkJY29uc3QgY2hhciogY29udGV4dCA9IHBzZy0+QXR0cmlidXRlKCAiY29udGV4dCIgKTsKLQkJY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiTGluZSA1IGhhcyBcInF1b3RhdGlvbiBtYXJrc1wiIGFuZCAnYXBvc3Ryb3BoZSBtYXJrcycuIEl0IGFsc28gaGFzIDwsID4sIGFuZCAmLCBhcyB3ZWxsIGFzIGEgZmFrZSBjb3B5cmlnaHQgXHhDMlx4QTkuIjsKLQotCQlYbWxUZXN0KCAiRW50aXR5IHRyYW5zZm9ybWF0aW9uOiByZWFkLiAiLCBleHBlY3RlZCwgY29udGV4dCwgdHJ1ZSApOwotCi0JCUZJTEUqIHRleHRmaWxlID0gZm9wZW4oICJ0ZXh0ZmlsZS50eHQiLCAidyIgKTsKLQkJaWYgKCB0ZXh0ZmlsZSApCi0JCXsKLQkJCXBzZy0+UHJpbnQoIHRleHRmaWxlLCAwICk7Ci0JCQlmY2xvc2UoIHRleHRmaWxlICk7Ci0JCX0KLQkJdGV4dGZpbGUgPSBmb3BlbiggInRleHRmaWxlLnR4dCIsICJyIiApOwotCQlhc3NlcnQoIHRleHRmaWxlICk7Ci0JCWlmICggdGV4dGZpbGUgKQotCQl7Ci0JCQljaGFyIGJ1ZlsgMTAyNCBdOwotCQkJZmdldHMoIGJ1ZiwgMTAyNCwgdGV4dGZpbGUgKTsKLQkJCVhtbFRlc3QoICJFbnRpdHkgdHJhbnNmb3JtYXRpb246IHdyaXRlLiAiLAotCQkJCQkgIjxwc2cgY29udGV4dD1cJ0xpbmUgNSBoYXMgJnF1b3Q7cXVvdGF0aW9uIG1hcmtzJnF1b3Q7IGFuZCAmYXBvczthcG9zdHJvcGhlIG1hcmtzJmFwb3M7LiIKLQkJCQkJICIgSXQgYWxzbyBoYXMgJmx0OywgJmd0OywgYW5kICZhbXA7LCBhcyB3ZWxsIGFzIGEgZmFrZSBjb3B5cmlnaHQgXHhDMlx4QTkuJyAvPiIsCi0JCQkJCSBidWYsCi0JCQkJCSB0cnVlICk7Ci0JCX0KLQkJZmNsb3NlKCB0ZXh0ZmlsZSApOwotCX0KLQotICAgIHsKLQkJRklMRSogdGV4dGZpbGUgPSBmb3BlbiggInRlc3Q1LnhtbCIsICJ3IiApOwotCQlpZiAoIHRleHRmaWxlICkKLQkJewotICAgICAgICAgICAgZnB1dHMoIjw/eG1sIHZlcnNpb249JzEuMCc/PjxhLmVsZW0geG1pLnZlcnNpb249JzIuMCcvPiIsIHRleHRmaWxlKTsKLSAgICAgICAgICAgIGZjbG9zZSh0ZXh0ZmlsZSk7Ci0KLQkJCVRpWG1sRG9jdW1lbnQgZG9jOwotICAgICAgICAgICAgZG9jLkxvYWRGaWxlKCAidGVzdDUueG1sIiApOwotICAgICAgICAgICAgWG1sVGVzdCggImRvdCBpbiBlbGVtZW50IGF0dHJpYnV0ZXMgYW5kIG5hbWVzIiwgZG9jLkVycm9yKCksIDApOwotCQl9Ci0gICAgfQotCi0JewotCQlGSUxFKiB0ZXh0ZmlsZSA9IGZvcGVuKCAidGVzdDYueG1sIiwgInciICk7Ci0JCWlmICggdGV4dGZpbGUgKQotCQl7Ci0gICAgICAgICAgICBmcHV0cygiPGVsZW1lbnQ+PE5hbWU+MS4xIFN0YXJ0IGVhc3kgaWdub3JlIGZpbiB0aGlja25lc3MmI3hBOzwvTmFtZT48L2VsZW1lbnQ+IiwgdGV4dGZpbGUgKTsKLSAgICAgICAgICAgIGZjbG9zZSh0ZXh0ZmlsZSk7Ci0KLSAgICAgICAgICAgIFRpWG1sRG9jdW1lbnQgZG9jOwotICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBkb2MuTG9hZEZpbGUoICJ0ZXN0Ni54bWwiICk7Ci0gICAgICAgICAgICBYbWxUZXN0KCAiRW50aXR5IHdpdGggb25lIGRpZ2l0LiIsIHJlc3VsdCwgdHJ1ZSApOwotCi0JCQlUaVhtbFRleHQqIHRleHQgPSBkb2MuRmlyc3RDaGlsZEVsZW1lbnQoKS0+Rmlyc3RDaGlsZEVsZW1lbnQoKS0+Rmlyc3RDaGlsZCgpLT5Ub1RleHQoKTsKLQkJCVhtbFRlc3QoICJFbnRpdHkgd2l0aCBvbmUgZGlnaXQuIiwKLQkJCQkJCXRleHQtPlZhbHVlKCksICIxLjEgU3RhcnQgZWFzeSBpZ25vcmUgZmluIHRoaWNrbmVzc1xuIiApOwotCQl9Ci0gICAgfQotCi0JewotCQkvLyBET0NUWVBFIG5vdCBwcmVzZXJ2ZWQgKDk1MDE3MSkKLQkJLy8gCi0JCWNvbnN0IGNoYXIqIGRvY3R5cGUgPQotCQkJIjw/eG1sIHZlcnNpb249XCIxLjBcIiA/PiIKLQkJCSI8IURPQ1RZUEUgUExBWSBTWVNURU0gJ3BsYXkuZHRkJz4iCi0JCQkiPCFFTEVNRU5UIHRpdGxlICgjUENEQVRBKT4iCi0JCQkiPCFFTEVNRU5UIGJvb2tzICh0aXRsZSxhdXRob3JzKT4iCi0JCQkiPGVsZW1lbnQgLz4iOwotCi0JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQlkb2MuUGFyc2UoIGRvY3R5cGUgKTsKLQkJZG9jLlNhdmVGaWxlKCAidGVzdDcueG1sIiApOwotCQlkb2MuQ2xlYXIoKTsKLQkJZG9jLkxvYWRGaWxlKCAidGVzdDcueG1sIiApOwotCQkKLQkJVGlYbWxIYW5kbGUgZG9jSCggJmRvYyApOwotCQlUaVhtbFVua25vd24qIHVua25vd24gPSBkb2NILkNoaWxkKCAxICkuVW5rbm93bigpOwotCQlYbWxUZXN0KCAiQ29ycmVjdCB2YWx1ZSBvZiB1bmtub3duLiIsICIhRE9DVFlQRSBQTEFZIFNZU1RFTSAncGxheS5kdGQnIiwgdW5rbm93bi0+VmFsdWUoKSApOwotCQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCQlUaVhtbE5vZGUqIG5vZGUgPSBkb2NILkNoaWxkKCAyICkuTm9kZSgpOwotCQlzdGQ6OnN0cmluZyBzdHI7Ci0JCXN0ciA8PCAoKm5vZGUpOwotCQlYbWxUZXN0KCAiQ29ycmVjdCBzdHJlYW1pbmcgb2YgdW5rbm93bi4iLCAiPCFFTEVNRU5UIHRpdGxlICgjUENEQVRBKT4iLCBzdHIuY19zdHIoKSApOwotCQkjZW5kaWYKLQl9Ci0KLQl7Ci0JCS8vIFsgNzkxNDExIF0gRm9ybWF0dGluZyBidWcKLQkJLy8gQ29tbWVudHMgZG8gbm90IHN0cmVhbSBvdXQgY29ycmVjdGx5LgotCQljb25zdCBjaGFyKiBkb2N0eXBlID0gCi0JCQkiPCEtLSBTb21ld2hhdDxldmlsPiAtLT4iOwotCQlUaVhtbERvY3VtZW50IGRvYzsKLQkJZG9jLlBhcnNlKCBkb2N0eXBlICk7Ci0KLQkJVGlYbWxIYW5kbGUgZG9jSCggJmRvYyApOwotCQlUaVhtbENvbW1lbnQqIGNvbW1lbnQgPSBkb2NILkNoaWxkKCAwICkuTm9kZSgpLT5Ub0NvbW1lbnQoKTsKLQotCQlYbWxUZXN0KCAiQ29tbWVudCBmb3JtYXR0aW5nLiIsICIgU29tZXdoYXQ8ZXZpbD4gIiwgY29tbWVudC0+VmFsdWUoKSApOwotCQkjaWZkZWYgVElYTUxfVVNFX1NUTAotCQlzdGQ6OnN0cmluZyBzdHI7Ci0JCXN0ciA8PCAoKmNvbW1lbnQpOwotCQlYbWxUZXN0KCAiQ29tbWVudCBzdHJlYW1pbmcuIiwgIjwhLS0gU29tZXdoYXQ8ZXZpbD4gLS0+Iiwgc3RyLmNfc3RyKCkgKTsKLQkJI2VuZGlmCi0JfQotCi0JewotCQkvLyBbIDg3MDUwMiBdIFdoaXRlIHNwYWNlIGlzc3VlcwotCQlUaVhtbERvY3VtZW50IGRvYzsKLQkJVGlYbWxUZXh0KiB0ZXh0OwotCQlUaVhtbEhhbmRsZSBkb2NIKCAmZG9jICk7Ci0JCi0JCWNvbnN0IGNoYXIqIGRvY3R5cGUwID0gIjxlbGVtZW50PiBUaGlzIGhhcyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZSA8L2VsZW1lbnQ+IjsKLQkJY29uc3QgY2hhciogZG9jdHlwZTEgPSAiPGVsZW1lbnQ+VGhpcyBoYXMgIGludGVybmFsIHNwYWNlPC9lbGVtZW50PiI7Ci0JCWNvbnN0IGNoYXIqIGRvY3R5cGUyID0gIjxlbGVtZW50PiBUaGlzIGhhcyBsZWFkaW5nLCB0cmFpbGluZywgYW5kICBpbnRlcm5hbCBzcGFjZSA8L2VsZW1lbnQ+IjsKLQotCQlUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggZmFsc2UgKTsKLQkJZG9jLkNsZWFyKCk7Ci0JCWRvYy5QYXJzZSggZG9jdHlwZTAgKTsKLQkJdGV4dCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJlbGVtZW50IiApLkNoaWxkKCAwICkuVGV4dCgpOwotCQlYbWxUZXN0KCAiV2hpdGUgc3BhY2Uga2VwdC4iLCAiIFRoaXMgaGFzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlICIsIHRleHQtPlZhbHVlKCkgKTsKLQotCQlkb2MuQ2xlYXIoKTsKLQkJZG9jLlBhcnNlKCBkb2N0eXBlMSApOwotCQl0ZXh0ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImVsZW1lbnQiICkuQ2hpbGQoIDAgKS5UZXh0KCk7Ci0JCVhtbFRlc3QoICJXaGl0ZSBzcGFjZSBrZXB0LiIsICJUaGlzIGhhcyAgaW50ZXJuYWwgc3BhY2UiLCB0ZXh0LT5WYWx1ZSgpICk7Ci0KLQkJZG9jLkNsZWFyKCk7Ci0JCWRvYy5QYXJzZSggZG9jdHlwZTIgKTsKLQkJdGV4dCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJlbGVtZW50IiApLkNoaWxkKCAwICkuVGV4dCgpOwotCQlYbWxUZXN0KCAiV2hpdGUgc3BhY2Uga2VwdC4iLCAiIFRoaXMgaGFzIGxlYWRpbmcsIHRyYWlsaW5nLCBhbmQgIGludGVybmFsIHNwYWNlICIsIHRleHQtPlZhbHVlKCkgKTsKLQotCQlUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZSggdHJ1ZSApOwotCQlkb2MuQ2xlYXIoKTsKLQkJZG9jLlBhcnNlKCBkb2N0eXBlMCApOwotCQl0ZXh0ID0gZG9jSC5GaXJzdENoaWxkRWxlbWVudCggImVsZW1lbnQiICkuQ2hpbGQoIDAgKS5UZXh0KCk7Ci0JCVhtbFRlc3QoICJXaGl0ZSBzcGFjZSBjb25kZW5zZWQuIiwgIlRoaXMgaGFzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlIiwgdGV4dC0+VmFsdWUoKSApOwotCi0JCWRvYy5DbGVhcigpOwotCQlkb2MuUGFyc2UoIGRvY3R5cGUxICk7Ci0JCXRleHQgPSBkb2NILkZpcnN0Q2hpbGRFbGVtZW50KCAiZWxlbWVudCIgKS5DaGlsZCggMCApLlRleHQoKTsKLQkJWG1sVGVzdCggIldoaXRlIHNwYWNlIGNvbmRlbnNlZC4iLCAiVGhpcyBoYXMgaW50ZXJuYWwgc3BhY2UiLCB0ZXh0LT5WYWx1ZSgpICk7Ci0KLQkJZG9jLkNsZWFyKCk7Ci0JCWRvYy5QYXJzZSggZG9jdHlwZTIgKTsKLQkJdGV4dCA9IGRvY0guRmlyc3RDaGlsZEVsZW1lbnQoICJlbGVtZW50IiApLkNoaWxkKCAwICkuVGV4dCgpOwotCQlYbWxUZXN0KCAiV2hpdGUgc3BhY2UgY29uZGVuc2VkLiIsICJUaGlzIGhhcyBsZWFkaW5nLCB0cmFpbGluZywgYW5kIGludGVybmFsIHNwYWNlIiwgdGV4dC0+VmFsdWUoKSApOwotCX0KLQotCXsKLQkJLy8gRG91YmxlIGF0dHJpYnV0ZXMKLQkJY29uc3QgY2hhciogZG9jdHlwZSA9ICI8ZWxlbWVudCBhdHRyPSdyZWQnIGF0dHI9J2JsdWUnIC8+IjsKLQotCQlUaVhtbERvY3VtZW50IGRvYzsKLQkJZG9jLlBhcnNlKCBkb2N0eXBlICk7Ci0JCQotCQlYbWxUZXN0KCAiUGFyc2luZyByZXBlYXRlZCBhdHRyaWJ1dGVzLiIsIDAsIChpbnQpZG9jLkVycm9yKCkgKTsJLy8gbm90IGFuICBlcnJvciB0byB0aW55eG1sCi0JCVhtbFRlc3QoICJQYXJzaW5nIHJlcGVhdGVkIGF0dHJpYnV0ZXMuIiwgImJsdWUiLCBkb2MuRmlyc3RDaGlsZEVsZW1lbnQoICJlbGVtZW50IiApLT5BdHRyaWJ1dGUoICJhdHRyIiApICk7Ci0JfQotCi0JewotCQkvLyBFbWJlZGRlZCBudWxsIGluIHN0cmVhbS4KLQkJY29uc3QgY2hhciogZG9jdHlwZSA9ICI8ZWxlbWVudCBhdHRcMHI9J3JlZCcgYXR0cj0nYmx1ZScgLz4iOwotCi0JCVRpWG1sRG9jdW1lbnQgZG9jOwotCQlkb2MuUGFyc2UoIGRvY3R5cGUgKTsKLQkJWG1sVGVzdCggIkVtYmVkZGVkIG51bGwgdGhyb3dzIGVycm9yLiIsIHRydWUsIGRvYy5FcnJvcigpICk7Ci0KLQkJI2lmZGVmIFRJWE1MX1VTRV9TVEwKLQkJaXN0cmluZ3N0cmVhbSBzdHJtKCBkb2N0eXBlICk7Ci0JCWRvYy5DbGVhcigpOwotCQlkb2MuQ2xlYXJFcnJvcigpOwotCQlzdHJtID4+IGRvYzsKLQkJWG1sVGVzdCggIkVtYmVkZGVkIG51bGwgdGhyb3dzIGVycm9yLiIsIHRydWUsIGRvYy5FcnJvcigpICk7Ci0JCSNlbmRpZgotCX0KLQotICAgIHsKLSAgICAgICAgICAgIC8vIExlZ2FjeSBtb2RlIHRlc3QuIChUaGlzIHRlc3QgbWF5IG9ubHkgcGFzcyBvbiBhIHdlc3Rlcm4gc3lzdGVtKQotICAgICAgICAgICAgY29uc3QgY2hhciogc3RyID0KLSAgICAgICAgICAgICAgICAgICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJJU08tODg1OS0xXCI/PiIKLSAgICAgICAgICAgICAgICAgICAgICAgICI85D4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ/ZudORudN/k9vzE1twiCi0gICAgICAgICAgICAgICAgICAgICAgICAiPC/kPiI7Ci0KLSAgICAgICAgICAgIFRpWG1sRG9jdW1lbnQgZG9jOwotICAgICAgICAgICAgZG9jLlBhcnNlKCBzdHIgKTsKLQotCQkJLy9kb2MuUHJpbnQoIHN0ZG91dCwgMCApOwotCi0gICAgICAgICAgICBUaVhtbEhhbmRsZSBkb2NIYW5kbGUoICZkb2MgKTsKLSAgICAgICAgICAgIFRpWG1sSGFuZGxlIGFIYW5kbGUgPSBkb2NIYW5kbGUuRmlyc3RDaGlsZEVsZW1lbnQoICLkIiApOwotICAgICAgICAgICAgVGlYbWxIYW5kbGUgdEhhbmRsZSA9IGFIYW5kbGUuQ2hpbGQoIDAgKTsKLSAgICAgICAgICAgIGFzc2VydCggYUhhbmRsZS5FbGVtZW50KCkgKTsKLSAgICAgICAgICAgIGFzc2VydCggdEhhbmRsZS5UZXh0KCkgKTsKLSAgICAgICAgICAgIFhtbFRlc3QoICJJU08tODg1OS0xIFBhcnNpbmcuIiwgIkP2bnTkbnTf5Pb8xNbcIiwgdEhhbmRsZS5UZXh0KCktPlZhbHVlKCkgKTsKLSAgICB9Ci0KLQl7Ci0JCS8vIEVtcHR5IGRvY3VtZW50cyBzaG91bGQgcmV0dXJuIFRJWE1MX0VSUk9SX1BBUlNJTkdfRU1QVFksIGJ1ZyAxMDcwNzE3Ci0JCWNvbnN0IGNoYXIqIHN0ciA9ICIgICAgIjsKLQkJVGlYbWxEb2N1bWVudCBkb2M7Ci0JCWRvYy5QYXJzZSggc3RyICk7Ci0JCVhtbFRlc3QoICJFbXB0eSBkb2N1bWVudCBlcnJvciBUSVhNTF9FUlJPUl9ET0NVTUVOVF9FTVBUWSIsIFRpWG1sQmFzZTo6VElYTUxfRVJST1JfRE9DVU1FTlRfRU1QVFksIGRvYy5FcnJvcklkKCkgKTsKLQl9Ci0JI2lmbmRlZiBUSVhNTF9VU0VfU1RMCi0JewotCQkvLyBTdHJpbmcgZXF1YWxpdHkuIFsgMTAwNjQwOSBdIHN0cmluZyBvcGVyYXRvcj09LyE9IG5vIHdvcmt5IGluIGFsbCBjYXNlcwotCQlUaVhtbFN0cmluZyB0ZW1wOwotCQlYbWxUZXN0KCAiRW1wdHkgdGlueXhtbCBzdHJpbmcgY29tcGFyZSBlcXVhbCIsICggdGVtcCA9PSAiIiApLCB0cnVlICk7Ci0KLQkJVGlYbWxTdHJpbmcgICAgZm9vOwotCQlUaVhtbFN0cmluZyAgICBiYXIoICIiICk7Ci0JCVhtbFRlc3QoICJFbXB0eSB0aW55eG1sIHN0cmluZyBjb21wYXJlIGVxdWFsIiwgKCBmb28gPT0gYmFyICksIHRydWUgKTsKLQl9Ci0KLQkjZW5kaWYKLQl7Ci0JCS8vIEJ1ZyBbIDExOTU2OTYgXSBmcm9tIG1hcmxvbmlzbQotCQlUaVhtbEJhc2U6OlNldENvbmRlbnNlV2hpdGVTcGFjZShmYWxzZSk7IAotCQlUaVhtbERvY3VtZW50IHhtbDsgCi0JCXhtbC5QYXJzZSgiPHRleHQ+PGJyZWFrLz5UaGlzIGhhbmdzPC90ZXh0PiIpOyAKLQkJWG1sVGVzdCggIlRlc3Qgc2FmZSBlcnJvciByZXR1cm4uIiwgeG1sLkVycm9yKCksIGZhbHNlICk7Ci0JfQotCi0JewotCQkvLyBCdWcgWyAxMjQzOTkyIF0gLSBhbm90aGVyIGluZmluaXRlIGxvb3AKLQkJVGlYbWxEb2N1bWVudCBkb2M7Ci0JCWRvYy5TZXRDb25kZW5zZVdoaXRlU3BhY2UoZmFsc2UpOwotCQlkb2MuUGFyc2UoIjxwPjxwYj48L3BiPnRlc3Q8L3A+Iik7Ci0JfSAKLQl7Ci0JCS8vIExvdyBlbnRpdGllcwotCQlUaVhtbERvY3VtZW50IHhtbDsKLQkJeG1sLlBhcnNlKCAiPHRlc3Q+JiN4MGU7PC90ZXN0PiIgKTsKLQkJY29uc3QgY2hhciByZXN1bHRbXSA9IHsgMHgwZSwgMCB9OwotCQlYbWxUZXN0KCAiTG93IGVudGl0aWVzLiIsIHhtbC5GaXJzdENoaWxkRWxlbWVudCgpLT5HZXRUZXh0KCksIHJlc3VsdCApOwotCQl4bWwuUHJpbnQoKTsKLQl9Ci0KLQkjaWYgZGVmaW5lZCggV0lOMzIgKSAmJiBkZWZpbmVkKCBUVU5FICkKLQlRdWVyeVBlcmZvcm1hbmNlQ291bnRlciggKExBUkdFX0lOVEVHRVIqKSAoJmVuZCkgKTsKLQlRdWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCAoTEFSR0VfSU5URUdFUiopICgmZnJlcSkgKTsKLQlwcmludGYoICJUaW1lIGZvciBydW46ICVmXG4iLCAoIGRvdWJsZSApKCBlbmQtc3RhcnQgKSAvIChkb3VibGUpIGZyZXEgKTsKLQkjZW5kaWYKLQotCXByaW50ZiAoIlxuUGFzcyAlZCwgRmFpbCAlZFxuIiwgZ1Bhc3MsIGdGYWlsKTsKLQlyZXR1cm4gZ0ZhaWw7Ci19Ci0KLQo=